<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0.20200218">
    <xs:element name="component">
        <xs:annotation>
            <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The &lt;component\&gt; element defines all aspects of the component defined in a SceneGraph XML component file. Every SceneGraph XML component file must have exactly one &lt;component\&gt; element that contains all other XML elements in the file, which may include:
an &lt;interface\&gt; element that defines the interface fields of the component

zero or more &lt;script\&gt; elements that define the BrightScript code used by the component

a &lt;children\&gt; element that contains the child &lt;node\&gt; elements (either the built-in node classes or node classes extended from them) for the component, declared in XML markup&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/xml-elements/component.md"&gt;https://developer.roku.com/docs/references/scenegraph/xml-elements/component.md&lt;/a&gt;</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence minOccurs="0">
                <xs:element maxOccurs="1" minOccurs="0" name="interface">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The &lt;interface\&gt; element defines a set of fields to be exposed by a component, to allow instances of the component to be manipulated externally to the component, while hiding details of the component implementation, in much the same way that C++ classes provide a public interface to objects. For example, a XML component might define a sprite object, and have an integer interface field that specifies which sprite bitmap to be displayed.
The &lt;interface\&gt; element may include one or more &lt;field\&gt; XML elements. Each &lt;field\&gt; XML element defines a top-level field for the XML component. These top-level fields define an interface that allow users of the component to read, write, and observe the fields.
As of the 7.5 Roku OS release, the &lt;interface\&gt; element may also include one or more &lt;function\&gt; elements. This provides a mechanism for Roku channels to call functions synchronously, directly from a component. See Functional Fields for more details.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/xml-elements/interface.md"&gt;https://developer.roku.com/docs/references/scenegraph/xml-elements/interface.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:sequence minOccurs="0">
                            <xs:element maxOccurs="unbounded" minOccurs="0" name="field">
                                <xs:annotation>
                                    <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="null"&gt;null&lt;/a&gt;</xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
                                    <xs:attribute name="alias">
                                        <xs:annotation>
                                            <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Allows a top-level component field to be declared as an alias of a field in one of the component child nodes. This allows a field of an internal component node to be exposed to users of the component. The attribute is set to a string with format _node_._field_, where node is the ID of a SceneGraph node element, and field is the name of one of the node fields. The type of the component child node field must match the type attribute.</xs:documentation>
                                        </xs:annotation>
                                    </xs:attribute>
                                    <xs:attribute name="alwaysNotify">
                                        <xs:annotation>
                                            <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;A string with the value true or false that indicates whether the field observer functions should be notified every time the field value is set, or only when the field value changes. By default, the attribute is false, so the observer functions are only notified when the field value changes. Set this attribute to true if the observer function should be notified every time the field value is set even though it doesn't necessarily change.</xs:documentation>
                                        </xs:annotation>
                                    </xs:attribute>
                                    <xs:attribute name="id" use="required">
                                        <xs:annotation>
                                            <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;A string containing the name of the field</xs:documentation>
                                        </xs:annotation>
                                    </xs:attribute>
                                    <xs:attribute name="onChange">
                                        <xs:annotation>
                                            <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets an observer call-back function to be added for the top-level field. The value of the attribute is a call-back function name in BrightScript code associated with the component. This attribute is provided as a quick way to set up an observer call-back function for top-level fields. It is equivalent to calling the ifSGNodeField observeField() method in BrightScript code associated with the component as follows:  m.top.ObserveField(fieldName, functionName)</xs:documentation>
                                        </xs:annotation>
                                    </xs:attribute>
                                    <xs:attribute name="type" use="required">
                                        <xs:annotation>
                                            <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;A case-insensitive string containing the type of the field. The allowable types are BrightScript fundamental types, a SceneGraph node object reference, and a URL identifier type, as follows:Type Description integer, int BrightScript integer type longinteger BrightScript longinteger type float BrightScript float type string, str BrightScript string type Boolean, bool BrightScript Boolean type vector2d X/Y coordinate array color Color type time Time type uri A URL identifier node SceneGraph node object reference floatarray Array of float intarray Array of integer boolarray Array of Boolean stringarray Array of string vector2darray Array of vector2d colorarray Array of color timearray Array of time nodearray Array of SceneGraph node object reference assocarray Associative array array Array of objects - type specifier can be either array or roArray rect2D An associative array with 4 float values: (x, y, width, height)x and y represent the coordinates of the top left corner of the rectangle rect2DArray Array of rect2D associative arraysThe type for an  XML element is case insensitive. For example, "Boolean" or "boolean" may be used in a type declaration.</xs:documentation>
                                        </xs:annotation>
                                        <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                                <xs:enumeration value="Boolean, bool">
                                                    <xs:annotation>
                                                        <xs:documentation>BrightScript Boolean type</xs:documentation>
                                                    </xs:annotation>
                                                </xs:enumeration>
                                                <xs:enumeration value="array">
                                                    <xs:annotation>
                                                        <xs:documentation>Array of objects - type specifier can be either array or roArray</xs:documentation>
                                                    </xs:annotation>
                                                </xs:enumeration>
                                                <xs:enumeration value="assocarray">
                                                    <xs:annotation>
                                                        <xs:documentation>Associative array</xs:documentation>
                                                    </xs:annotation>
                                                </xs:enumeration>
                                                <xs:enumeration value="boolarray">
                                                    <xs:annotation>
                                                        <xs:documentation>Array of Boolean</xs:documentation>
                                                    </xs:annotation>
                                                </xs:enumeration>
                                                <xs:enumeration value="color">
                                                    <xs:annotation>
                                                        <xs:documentation>Color type</xs:documentation>
                                                    </xs:annotation>
                                                </xs:enumeration>
                                                <xs:enumeration value="colorarray">
                                                    <xs:annotation>
                                                        <xs:documentation>Array of color</xs:documentation>
                                                    </xs:annotation>
                                                </xs:enumeration>
                                                <xs:enumeration value="float">
                                                    <xs:annotation>
                                                        <xs:documentation>BrightScript float type</xs:documentation>
                                                    </xs:annotation>
                                                </xs:enumeration>
                                                <xs:enumeration value="floatarray">
                                                    <xs:annotation>
                                                        <xs:documentation>Array of float</xs:documentation>
                                                    </xs:annotation>
                                                </xs:enumeration>
                                                <xs:enumeration value="intarray">
                                                    <xs:annotation>
                                                        <xs:documentation>Array of integer</xs:documentation>
                                                    </xs:annotation>
                                                </xs:enumeration>
                                                <xs:enumeration value="integer, int">
                                                    <xs:annotation>
                                                        <xs:documentation>BrightScript integer type</xs:documentation>
                                                    </xs:annotation>
                                                </xs:enumeration>
                                                <xs:enumeration value="longinteger">
                                                    <xs:annotation>
                                                        <xs:documentation>BrightScript longinteger type</xs:documentation>
                                                    </xs:annotation>
                                                </xs:enumeration>
                                                <xs:enumeration value="node">
                                                    <xs:annotation>
                                                        <xs:documentation>SceneGraph node object reference</xs:documentation>
                                                    </xs:annotation>
                                                </xs:enumeration>
                                                <xs:enumeration value="nodearray">
                                                    <xs:annotation>
                                                        <xs:documentation>Array of SceneGraph node object reference</xs:documentation>
                                                    </xs:annotation>
                                                </xs:enumeration>
                                                <xs:enumeration value="rect2D">
                                                    <xs:annotation>
                                                        <xs:documentation>An associative array with 4 float values: (x, y, width, height)x and y represent the coordinates of the top left corner of the rectangle</xs:documentation>
                                                    </xs:annotation>
                                                </xs:enumeration>
                                                <xs:enumeration value="rect2DArray">
                                                    <xs:annotation>
                                                        <xs:documentation>Array of rect2D associative arrays</xs:documentation>
                                                    </xs:annotation>
                                                </xs:enumeration>
                                                <xs:enumeration value="string, str">
                                                    <xs:annotation>
                                                        <xs:documentation>BrightScript string type</xs:documentation>
                                                    </xs:annotation>
                                                </xs:enumeration>
                                                <xs:enumeration value="stringarray">
                                                    <xs:annotation>
                                                        <xs:documentation>Array of string</xs:documentation>
                                                    </xs:annotation>
                                                </xs:enumeration>
                                                <xs:enumeration value="time">
                                                    <xs:annotation>
                                                        <xs:documentation>Time type</xs:documentation>
                                                    </xs:annotation>
                                                </xs:enumeration>
                                                <xs:enumeration value="timearray">
                                                    <xs:annotation>
                                                        <xs:documentation>Array of time</xs:documentation>
                                                    </xs:annotation>
                                                </xs:enumeration>
                                                <xs:enumeration value="uri">
                                                    <xs:annotation>
                                                        <xs:documentation>A URL identifier</xs:documentation>
                                                    </xs:annotation>
                                                </xs:enumeration>
                                                <xs:enumeration value="vector2d">
                                                    <xs:annotation>
                                                        <xs:documentation>X/Y coordinate array</xs:documentation>
                                                    </xs:annotation>
                                                </xs:enumeration>
                                                <xs:enumeration value="vector2darray">
                                                    <xs:annotation>
                                                        <xs:documentation>Array of vector2d</xs:documentation>
                                                    </xs:annotation>
                                                </xs:enumeration>
                                            </xs:restriction>
                                        </xs:simpleType>
                                    </xs:attribute>
                                    <xs:attribute name="value">
                                        <xs:annotation>
                                            <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;A string representing the initial value of the top-level field. If not specified, the default value for the field type is used (such as, zero for numeric fields, an empty string to string fields, and so forth).</xs:documentation>
                                        </xs:annotation>
                                    </xs:attribute>
                                </xs:complexType>
                            </xs:element>
                            <xs:element maxOccurs="unbounded" minOccurs="0" name="function">
                                <xs:annotation>
                                    <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="null"&gt;null&lt;/a&gt;</xs:documentation>
                                </xs:annotation>
                                <xs:complexType>
                                    <xs:attribute name="name" use="required">
                                        <xs:annotation>
                                            <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;A string containing the name of the function which can be called using the callFunc function.</xs:documentation>
                                        </xs:annotation>
                                    </xs:attribute>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element maxOccurs="unbounded" minOccurs="0" name="script">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The &lt;script\&gt; element allows the definition of functions to initialize the component, and to respond to events (including key events) and field value changes. The BrightScript interfaces for the SceneGraph nodes used by BrightScript are the same interfaces defined for roSGNode objects.
You can include any type of BrightScript object declarations, definitions, and creation, and the related functions to operate on the BrightScript objects, in a &lt;script\&gt; element, except for certain objects and functions that must be used asynchronously in a Task node (see BrightScript support). In addition, there are two functions that are declared specifically for use in SceneGraph component &lt;script\&gt; elements:
init()

onKeyEvent()&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/xml-elements/script.md"&gt;https://developer.roku.com/docs/references/scenegraph/xml-elements/script.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:attribute fixed="text/brightscript" name="type" use="required">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;A string defining the type of the script. This should be set to "text/brightscript" for BrightScript code.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute name="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;A string specifying an external file that contains script code associated with the component. This file must be located in the pkg:/components directory of the application, and have the .brs extension for BrightScript code.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element maxOccurs="1" minOccurs="0" name="children">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The &lt;children\&gt; element contains the SceneGraph node XML markup elements. The &lt;children\&gt; element allows XML schema validation of your SceneGraph XML components using XSD by wrapping them in a container element (XSD requires that the order of elements be deterministic, and so for validation to work, SceneGraph node elements must be contained in an element themselves).
The SceneGraph node markup elements contained in the &lt;children\&gt; element may include a special XML element attribute, role. The role attribute allows a node element to be defined as a child node of a parent node, and the child node to be assigned as the value of the parent node field identified by the role attribute value:
&lt;ParentNode &gt;
  &lt;ChildNode 
    role = "parentnode_fieldname" 
    ... /&gt;
&lt;/ParentNode&gt;
&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/xml-elements/children.md"&gt;https://developer.roku.com/docs/references/scenegraph/xml-elements/children.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
            <xs:attribute name="extends">
                <xs:annotation>
                    <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the name of the built-in or extended SceneGraph scene or node class whose functionality is extended by this component. For example, extends="Group" specifies that the component has all of the functionality of the Group node class (it can have child nodes, has translation/scale/rotation fields, and so forth).By default, a component extends the Group node class.</xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="Animation"/>
                        <xs:enumeration value="AnimationBase"/>
                        <xs:enumeration value="ArrayGrid"/>
                        <xs:enumeration value="Audio"/>
                        <xs:enumeration value="BusySpinner"/>
                        <xs:enumeration value="Button"/>
                        <xs:enumeration value="ButtonGroup"/>
                        <xs:enumeration value="ChannelStore"/>
                        <xs:enumeration value="CheckList"/>
                        <xs:enumeration value="ColorFieldInterpolator"/>
                        <xs:enumeration value="ComponentLibrary"/>
                        <xs:enumeration value="ContentNode"/>
                        <xs:enumeration value="Dialog"/>
                        <xs:enumeration value="FloatFieldInterpolator"/>
                        <xs:enumeration value="Font"/>
                        <xs:enumeration value="GridPanel"/>
                        <xs:enumeration value="Group"/>
                        <xs:enumeration value="Keyboard"/>
                        <xs:enumeration value="KeyboardDialog"/>
                        <xs:enumeration value="Label"/>
                        <xs:enumeration value="LabelList"/>
                        <xs:enumeration value="LayoutGroup"/>
                        <xs:enumeration value="ListPanel"/>
                        <xs:enumeration value="MarkupGrid"/>
                        <xs:enumeration value="MarkupList"/>
                        <xs:enumeration value="MaskGroup"/>
                        <xs:enumeration value="MiniKeyboard"/>
                        <xs:enumeration value="Node"/>
                        <xs:enumeration value="Overhang"/>
                        <xs:enumeration value="OverhangPanelSetScene"/>
                        <xs:enumeration value="Panel"/>
                        <xs:enumeration value="PanelSet"/>
                        <xs:enumeration value="ParallelAnimation"/>
                        <xs:enumeration value="ParentalControlPinPad"/>
                        <xs:enumeration value="PinDialog"/>
                        <xs:enumeration value="PinPad"/>
                        <xs:enumeration value="Poster"/>
                        <xs:enumeration value="PosterGrid"/>
                        <xs:enumeration value="ProgressDialog"/>
                        <xs:enumeration value="RadioButtonList"/>
                        <xs:enumeration value="Rectangle"/>
                        <xs:enumeration value="RowList"/>
                        <xs:enumeration value="Scene"/>
                        <xs:enumeration value="ScrollableText"/>
                        <xs:enumeration value="ScrollingLabel"/>
                        <xs:enumeration value="SequentialAnimation"/>
                        <xs:enumeration value="SimpleLabel"/>
                        <xs:enumeration value="SoundEffect"/>
                        <xs:enumeration value="TargetGroup"/>
                        <xs:enumeration value="TargetList"/>
                        <xs:enumeration value="TargetSet"/>
                        <xs:enumeration value="Task"/>
                        <xs:enumeration value="TextEditBox"/>
                        <xs:enumeration value="TimeGrid"/>
                        <xs:enumeration value="Timer"/>
                        <xs:enumeration value="Vector2DFieldInterpolator"/>
                        <xs:enumeration value="Video"/>
                        <xs:enumeration value="ZoomRowList"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:attribute>
            <xs:attribute name="initialFocus">
                <xs:annotation>
                    <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the ID of a node declared in the XML file to have the initial remote control focus when the component is instantiated.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="name" use="required">
                <xs:annotation>
                    <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the name of the component, that allows you to create the component in your application. For example, if the name of the component is CastMemberInfo, you could create instances of the component declaratively in a child node element of a component &lt;children\&gt; element (&lt;CastMemberInfo/&gt;), or using BrightScript in a &lt;script\&gt; element (createObject("roSGNode","CastMemberInfo")).  The name attribute is case-sensitive. You cannot successfully create or declare a component unless the component name exactly matches the name attribute, including case. Also be aware that two components with the exact same name in the same application components directory will have undefined and generally undesirable results if you attempt to create a component object with that name in the application.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="version">
                <xs:annotation>
                    <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the version of the SceneGraph API. The default is 1.0 if not specified.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    <xs:simpleType name="option_string">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="time">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="Time">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="NA">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="ContentNode">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="array_of_strings">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="color">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="option_as_string">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="array_of_float">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="Poster_node">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="vector2d">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="uri">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="Font">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="array_of_floats">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="associative_array">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="array_of_Boolean">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="font">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="rect2d">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="array_of_colors">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="array_of_string">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="ButtonGroup">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="Event">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="Node">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="URI_string">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="assocarray">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="BusySpinner">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="color_string_containing_hex_value_eg_RGBA">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="array_of_integer">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="array_of_vector2d">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="TargetSet">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="int">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="array_of_TargetSet_nodes">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="Color">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="array_of_rectangles">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="vector2d_width_height">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="BifDisplay_node">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="ProgressBar_node">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:simpleType name="TrickPlayBar_node">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:group name="allNodes">
        <xs:choice>
            <xs:choice maxOccurs="unbounded" minOccurs="0">
                <xs:element name="Animation">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;AnimationBase&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The Animation node class provides animations of renderable nodes, by applying interpolator functions to the values in specified renderable node fields. For an animation to take effect, an Animation node definition must include a child field interpolator node (FloatFieldInterpolator, Vector2DFieldInterpolator, ColorFieldInterpolator) definition for each renderable node field that is animated.
The Animation node class provides a simple linear interpolator function, where the animation takes place smoothly and simply from beginning to end. The Animation node class also provides several more complex interpolator functions to allow custom animation effects. For example, you can move a graphic image around the screen at differing speeds and curved trajectories at different times in the animation by specifying the appropriate function in the easeFunction field (quadratic and exponential are two examples of functions that can be specified). The interpolator functions are divided into two parts: the beginning of the animation (ease-in), and the end of the animation (ease-out). You can apply a specified interpolator function to either or both ease-in and ease-out, or specify no function for either or both (which is the linear function). You can also change the portion of the animation that is ease-in and ease-out to arbitrary fractional values for a quadratic interpolator function applied to both ease-in and ease-out.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/animation-nodes/animation.md"&gt;https://developer.roku.com/docs/references/scenegraph/animation-nodes/animation.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="none" name="control" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Controls the animation. Supported options include: Option Effect none Initial state with no associated action start Always plays the animation from the beginning stop Stops the animation in its current state pause Pauses the animation in its current state resume If paused, resumes the animation from its current state. If the animation is not paused, plays the animation from the beginning. finish Jumps to the end of the animation, then stops. All animated fields will be immediately set to their final values as if the animation had completed.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="delay" type="time">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Delays the start of the animation by the specified number of seconds</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="duration" type="Time">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the duration of the animation in seconds</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;inOutCubic&quot;" name="easeFunction" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the interpolator function to be used for the animation: Value Ease-In/Ease-Out Function linear No ease-in or ease-out inQuad Quadratic ease-in function, no ease-out inCubic Cubic ease-in function, no ease-out inQuartic Quartic ease-in function, no ease-out inQuintic Quintic ease-in function, no ease-out inExpo Exponential ease-in function, no ease-out outQuad Quadratic ease-out function, no ease-in outCubic Cubic ease-out function, no ease-in outQuartic Quartic ease-out function, no ease-in outQuintic Quintic ease-out function, no ease-in outExpo Exponential ease-out function, no ease-in inOutQuad Quadratic ease-in and ease-out function inOutCubic Cubic ease-in and ease-out function inOutQuartic Quartic ease-in and ease-out function inOutQuintic Quintic ease-in and ease-out function inOutExpo Exponential ease-in and ease-out function piecewise Quadratic ease-in and ease-out function with extra control over the percentage of the duration during which ease-in and ease-out occurs. The extra control is specified using the easeInPercent and easeOutPercent fields.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.5" name="easeInPercent" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If easeFunction is set to piecewise, easeInPercent sets the percentage of the animation duration during which ease-in is applied. Note that the values of easeInPercent plus easeOutPercent must be less than or equal to 1. For all other values of easeFunction, easeInPercent is ignored</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.5" name="easeOutPercent" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If easeFunction is set to piecewise, easeOutPercent sets the percentage of the animation duration during which ease-out is applied. Note that the values of easeInPercent plus easeOutPercent must be less than or equal to 1. For all other values of easeFunction, easeOutPercent is ignored</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="optional" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to skip animations on lower performing Roku devices (Paolo, Giga, Jackson, Tyler, and Sugarland). See Roku Devices for model numbers and code names. When an Animation has optional set to true, setting the control field to start will cause the state field to change to running and immediately change again to finished. These state changes allow any logic tied to state field observers that run at the start and end of the Animation to be properly called</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="repeat" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Controls whether the animation stops when it finishes (false) or repeats from the beginning (true)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Audio">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Node&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The Audio node class plays streaming audio.
The Audio node class has no built-in visual UI, but you can build your own UI for the node, including trick play, or showing an album cover or similar graphical image for each song selected by a user.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/media-playback-nodes/audio.md"&gt;https://developer.roku.com/docs/references/scenegraph/media-playback-nodes/audio.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="NULL" name="content" type="ContentNode">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The ContentNode node with the Content Meta-Data for the audio or audio playlist (a sequence of audios) to be played. If a audio playlist is to be played, the ContentNode node must include complete child ContentNode nodes for each audio in the playlist, with all attributes required to play that audio.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="contentIsPlaylist" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If set to true, enables audio playlists (a sequence of audios to be played). To enable audio playlists, the ContentNode node set in the content field must have children ContentNode nodes for each audio in the playlist. When audio playback is started, all of the audios in the playlist will be played in sequence.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="none" name="control" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the desired play state for the audio, such as starting or stopping the audio play. Getting the value of this field returns the most recent value set, or none if no value has been set. In order to dynamically monitor the actual state of the audio, see the state field.Option Effect none No play state set play Start audio play start Start audio play stop Stop audio play pause Pause audio play resume Resume audio play after a pause replay Replay audio prebuffer Starts buffering the audio stream before the Audio node actually begins playback. Only one audio stream can be buffering in the application at any time. Setting the control field to prebuffer for another audio stream after setting prebuffer for a previous audio stream stops the buffering of the previous audio stream. skipcontent Skip the currently-playing content, and begin playing the next content in the playlist. If the content is not a playlist, or if the current content is the end of the playlist, this will end playback.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain.Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="loop" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If set to true, the audio or audio playlist (if the contentIsPlaylist field is set to true to enable audio playlists) will be restarted from the beginning after the end is reached.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="-1" name="nextContentIndex" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the contentIsPlaylist field is set to true to enable audio playlists, sets the index of the next audio in the playlist to be played. Setting this field does not immediately change the audio being played, but takes effect when the current audio is completed or skipped. By default, this value is -1, which performs the default index increment operation. After the audio specified by the index in this field begins playing, the field is set to the default -1 again, so the next audio played will be set by the default index increment operation, unless the field is set again to a different index.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.5" name="notificationInterval" type="time">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The interval between notifications to observers of the position field, specified as the number of seconds. If the value is 0, no notifications are delivered. This value may be read or modified at any time.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="invalid" name="seek" type="time">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the current position in the audio. The value is the number seconds from the beginning of the stream, specified as a double.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="timedMetaDataSelectionKeys" type="array_of_strings">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the audio stream contains timed meta data such as ID3 tags, any meta data with a key matching an entry in this array will be set into the timedMetaData field. If any entry in this array is "*", then all timed meta data will be selected.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="BusySpinner">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Poster&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The BusySpinner node class is a simple widget that displays a continuously rotating bitmap. Since the BusySpinner node class uses an internal Poster node instance, the busy spinner bitmap can be specified by setting the internal Poster node uri field.
SimpleBusySpinner.zip is a sample channel that demonstrates usage of the BusySpinner.
Not all Roku Player hardware versions support arbitrary rotations. In particular, some hardware versions only support 90 degree rotation increments. In those cases, the icon will step through 90 degree, 180 degree, 270 degree and back to 0 degree rotations, rather than spin smoothly.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/widget-nodes/busyspinner.md"&gt;https://developer.roku.com/docs/references/scenegraph/widget-nodes/busyspinner.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default=" " name="audioGuideText" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If muteAudioGuide is false, this string will be spoken when the poster is focused</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xFFFFFFFF" name="blendColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Can be used to tint the image by multiplying the color of each pixel by the specified value. If this value is not set to a value other than the default value, no color blending will be performed</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="clockwise" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether the bitmap rotates in a clockwise or counterclockwise direction</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="none" name="control" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the operational state of the busy spinner Option Effect none No operational state set. The busy spinner will run if not set to "stop". start Starts the busy spinner if not running stop Stops the busy spinner if running</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="failedBitmapOpacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used to control the rendering opacity of the graphical image that indicates a bitmap failed to load. This value multiplies the Poster node opacity</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="failedBitmapUri" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a bitmap file to display when the poster image failed to load</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="height" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of the image in local coordinates. If set to 0.0, the height of the bitmap from the image file is used. If set to a value greater than 0.0, the bitmap is scaled to that height</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="noScale" name="loadDisplayMode" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides automatic scaling of graphical images after loading. If you intend to load very large graphical images, such as larger than the user interface resolution, you must set one of the scaling options other than noScale, otherwise the image may fail to load. The following are the possible field values: Option Effect limitSize Scale the image while loading it into texture memory so that the maximum width and height in either dimension does not exceed the specified loadWidth or loadHeight values. If the image is smaller in both dimensions than the specified values, the image is loaded at its regular size. Aspect ratio is preserved. noScale The bitmap will be loaded at the image's original resolution. If the Poster's width and height differ from the bitmap's resolution, it will be scaled to fill the Poster's dimensions. Aspect ratio is not preserved. scaleToFit Scale the image to fit into the target screen element area, preserving the aspect ratio but "letterboxing" or "pillarboxing" the image (background-color bars at the top/bottom or left/right of the image). scaleToFill Stretch the image dimensions to fill the target screen element area, distorting the image if the target screen element area has a different aspect ratio than the image. scaleToZoom Scale the image to fill the target screen element area, preserving the aspect ratio but not "letterboxing" or "pillarboxing" the image, with some of the image cropped out.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="loadHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Scale the graphical image to the specified height when loaded, preserving aspect ratio. If set to the default, no load-time scaling occurs. If the height field is not set, the loadHeight field is used as the default height of the displayed image</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="loadSync" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Controls whether the image is loaded synchronously in the render thread, and appears immediately, or loaded asynchronously in a background thread, and may not appear immediately. If set to true, and the uri field specifies a local file (in the pkg:/images directory), the image is loaded synchronously, and appears immediately. If set to false, or if the uri field specifies a file from a remote server (a URL starting with http: or https:), the image is loaded asynchronously in a background thread, and may not appear immediately. Be careful when setting this field to true, as it might cause brief glitches in the rendering while the image is being fetched and loaded</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="loadWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Scale the graphical image to the specified width when loaded, preserving aspect ratio. If set to the default, no load-time scaling occurs. If the width field is not set, the loadWidth field is used as the default width of the displayed image</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="loadingBitmapOpacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used to control the rendering opacity of the graphical image that indicates a bitmap is loading. This value multiplies the Poster node opacity</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="loadingBitmapUri" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a bitmap file to display while the poster image is loading.To execute a seamless cross-fade transition between posters, set the loadingBitmapUri of the next poster to be shown to the uri of the currently displayed poster.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="internal instance default" name="poster" type="Poster_node">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set the uri field of the Poster node to select the bitmap for the busy spinner</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1" name="spinInterval" type="time">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The number of seconds to complete a 360-degree rotation of the spinner image. A value of 0 will cause the spinner to remain stationary and not spin</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="uri" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the URI of the image file. Images included as part of the application package can be referenced using the pkg:/images prefix. Images included as part of the application package that are to be localized can be referenced using the pkg:/locale/images/ prefix (see Localizing Graphical Images in the Application Package)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="width" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the width of the image in local coordinates. If set to 0.0, the width of the bitmap from the image file is used. If set to a value greater than 0.0, the bitmap is scaled to that width</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Button">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Group&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The Button node is a simple widget that generates a buttonSelected event when the user selects it. The button can display a label and/or an icon, as well as a background image. Fields are provided to customize the label text and color depending on whether or not the button has the key focus. Similarly, the bitmaps used for the icon and background can be specified for both focused and unfocused button states.
By default, the background of the button is only shown when the button has the key focus. Buttons are typically used in a ButtonGroup node that manages which button in the group will have the key focus when the ButtonGroup node receives the focus. When the ButtonGroup node has the focus, the button in the group that has the focus will display the focusBitmapUri bitmap as its background. When the ButtonGroup node does not have the focus, it remembers which button in the group had the focus and sets that button showFocusFootprint field to true, causing it to a render a "footprint" bitmap as a visual indicator that it will be the focused button when the ButtonGroup node receives the focus again. All other buttons in the ButtonGroup node do not display a background image.
When a Button node is created that is not a child of a ButtonGroup node, typically the showFootprintfield field should be set to true, so that the button always displays a background image.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/widget-nodes/button.md"&gt;https://developer.roku.com/docs/references/scenegraph/widget-nodes/button.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="focusBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the button background bitmap file to display when the button has the key focus. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="focusFootprintBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the button focus "footprint" bitmap file to display when the button does not have key focus. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap. By default the "footprint" bitmap is not displayed when the button does not have the key focus. To display the background when the button is unfocused, the showFocusFootprint field must be set to true</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="focusedIconUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a bitmap file for the button icon when the button has the key focus. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap. For a button with no icon, set this field to an empty string (iconUri="")</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0x262626ff" name="focusedTextColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the color of the button label when the button has the key focus</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="focusedTextFont" type="Font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the font of the button label when the button has the key focus</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="64" name="height" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of the button</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="iconUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a bitmap file for the button icon when the button does not have the key focus. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap. For a button with no icon, set this field to an empty string (iconUri="")</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="32767" name="maxWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the maximum width of the button. The maxWidth field must be greater than or equal to the minWidth field</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="minWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the minimum width of the button. The minWidth field must be less than or equal to the maxWidth field</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="showFocusFootprint" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Controls whether the focus "footprint" bitmap is displayed when the button does not have the key focus. Since the default value of the showFocusFootprint field is false, the "footprint" bitmap is not displayed by default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="text" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the text to be displayed as the button label</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xddddddff" name="textColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the color of the button label when the button does not have the key focus</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="textFont" type="Font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the font of the button label when the button does not have the key focus</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="ButtonGroup">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;LayoutGroup&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The ButtonGroup node class manages the layout, visual attributes, and focus management of a vertical list of Button nodes. When the ButtonGroup node has focus, it sets the key focus on a single one of its child Button nodes.
The buttons can be easily created using default button appearances by setting the buttons field to an array of strings containing the labels for each button.

A single observer can watch for any of the Button nodes in the group to be selected by observing the buttonSelected field.

By default, Button nodes added to the group will have the default button appearance. Several fields exist that allow you to change an attribute of the appearance of all Button nodes in the group.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/buttongroup.md"&gt;https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/buttongroup.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="true" name="addItemSpacingAfterChild" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Controls how the spaces specified in the itemSpacings field are inserted. By default, the field value is set to true. This causes the specified spaces to be inserted after the child is positioned. If the field value is set to false, the specified item space is inserted before the child is positioned</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="buttonHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of each Button node in the group. Only set to override the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="buttons" type="array_of_strings">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Allows a set of Button nodes to be easily created by providing an array of button labels. Each string in the array will result in a Button node to be added to the ButtonGroup node, using the string as the button label</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="focusBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap to be used as the background for the Button node that has focus. Only set to override the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="focusButton" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Causes the button with the specified index to receive the focus when the ButtonGroup node has the key focus. Note that if the ButtonGroup node does not have the key focus when the focusButton field is set, the specified button will display the focus "footprint" as its background</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="focusFootprintBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap to be used as the focus footprint background, when focus is not on the ButtonGroup node. The focus footprint is a visual indicator of the button that will take focus when focus moves back onto the ButtonGroup node. Only set to override the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="focusedIconUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap for the focused button icon. Only set to override the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xffffffff" name="focusedTextColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the button label color for the Button node that has focus, if any. Only set to override the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system: MediumBoldSystemFont" name="focusedTextFont" type="Font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the Font node for the Button node that has focus, if any. Only set to override the system default. See Font  for a list of all system fonts available</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="left" name="horizAlignment" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the alignment point in the horizontal direction. The effect of the value set depends on the whether the layoutDirection field value is set to either horiz or vert Value layoutDirection Use left vert Aligns the left edges of each child in the column, and sets the LayoutGroup node local x-coordinate origin at the left edge of the children left horiz Sets the LayoutGroup node local x-coordinate origin at the left edge of the first child center vert Aligns the centers of each child in the column, and sets the LayoutGroup node local x-coordinate origin at the center alignment point center horiz Sets the LayoutGroup node local x-coordinate origin at the center of the horizontal row of children right vert Aligns the right edges of each child in the column, and sets the LayoutGroup node local x-coordinate origin is at the right edge of the children right horiz Sets the LayoutGroup node local x-coordinate origin at the right edge of the last child custom vert Explicitly set the x translation of each child of the LayoutGroup. If the layoutDirection is "horiz", custom will not be a valid setting. Instead, "left" will be used to do the child layout.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="iconUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap for the button icon for all unfocused Button nodes in the group. Only set to override the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="itemSpacings" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Controls the spacing before or after each child in the layout direction. By default, no space is added between the children</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="vert" name="layoutDirection" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Controls the layout direction Value Use horiz Positions the children in a row from left to right vert Positions the children in a column from top to bottom</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="32767" name="maxWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, specifies the maximum width for the Button nodes in the group. The maxWidth field must be greater than or equal to the minWidth field</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="minWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the minimum width for the Button nodes in the group. The minWidth field must be less than or equal to the maxWidth field. Only set to override the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="rightJustify" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether the button labels and icons should be right- or left-justified. When right-justified and there is an icon, it appears to the right of the button label</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xffffffff" name="textColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the button label color for all unfocused Button nodes in the group. Only set to override the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system: MediumSystemFont" name="textFont" type="Font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the Font node for all unfocused Button nodes in the group. Only set to override the system default. See Font for a list of all system fonts available</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="top" name="vertAlignment" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the alignment point in the vertical direction. The effect of the value set depends on the whether the layoutDirection field value is set to either horiz or vert Value layoutDirection Use top horiz Aligns the top edges of each child in the row, and sets the LayoutGroup node local y-coordinate origin at the top edge of the children top vert Sets the LayoutGroup node local y-coordinate origin at the top edge of the first child center horiz Aligns the centers of each child in the row, and sets the LayoutGroup node local y-coordinate origin at the center alignment point vert vert Sets the LayoutGroup node local y-coordinate origin at the center of the vertical column of children bottom horiz Aligns the bottom edges of each child in the row, and sets the LayoutGroup node local y-coordinate origin at the bottom edge of the children bottom vert Sets the LayoutGroup node local y-coordinate origin at the bottom edge of the last child custom horiz Explicitly set the y translation of each child of the LayoutGroup. If the layoutDirection is "vert", custom will not be a valid setting. Instead, "top" will be used to do the child layout.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="ChannelStore">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Node&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The ChannelStore node class provides an interface to the Roku Channel Store. It provides functionality equivalent to the roChannelStore component.
In general, the ChannelStore node class allows developers to issue one of several commands. Issuing each of these commands involves three steps:
(optional) Set some field(s) containing data needed by the command

Set up an observer of the result field associated with the command

Set the command field to the appropriate string to start the command execution

At some point in the future, the field associated with the command will be set to a ContentNode object containing the results of the command
Each of the commands starts a sequence of actions associated with the financial transaction that are handled by the Roku OS outside of control or monitoring by the channel SceneGraph markup. The SceneGraph markup merely initiates the purchase and receives a final result. This will engender trust with users, and give them confidence that they are dealing with the Roku Channel Store.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/control-nodes/channelstore.md"&gt;https://developer.roku.com/docs/references/scenegraph/control-nodes/channelstore.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="invalid" name="catalog" type="ContentNode">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The getCatalog command causes this field to be set to a ContentNode containing the results of the command. See below for more details.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="command" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a command to execute. The available commands include:- getUserData- getCatalog- getStoreCatalog- doOrder- getPurchases- requestPartnerOrder - confirmPartnerOrder- getAllPurchases (Available since Roku OS 9.1)- storeChannelCredData (Available since Roku OS 9.1)- getChannelCred (Available since Roku OS 9.1)Each of these commands is described in Command Descriptions below.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="invalid" name="confirmPartnerOrderStatus" type="ContentNode">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The confirmPartnerOrder command causes this field to be set to a ContentNode containing the results of the command. See Command Descriptions for more details.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="{}" name="deltaOrder" type="associative_array">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Write-Only  Allows the order field to be populated incrementally. Each time the deltaOrder field is set, the order field is modified. The deltaOrder associative array should contain a "code" string that identifies an available item, and a "qty" integer value to indicate how the children of the order field ContentNode should be modified.  For example, if the order is invalid, setting the deltaOrder field to the following associative array:    { "code": "Merchandise1", "qty": 1 }  Would cause an order field to be set to a ContentNode, with one child ContentNode with a "code" field set to "Merchandise1", and a "qty" field set to 1.  If the deltaOrder field was then set to:    { "code": "MyItem2", "qty": 1 }  The order field ContentNode would have a second ContentNode child appended to it, with the specified "code" and "qty" field values.  The "qty" field can be set to a negative value to remove an item from an order. For example, if the order field was set as above, and the deltaOrder field was set to:    { "code" MyItem2", "qty": -1 }  The order field ContentNode would have the second child ContentNode removed.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="fakeServer" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to true in a development channel, enables a test mode for the ChannelStore node. The test mode disables communication by the ChannelStore node with the Roku Channel Store server, and causes responses to asynchronous queries and operations to come from test configuration files rather than the server.  The fakeServer field must be set to false in a published channel to allow actual In-Channel Product purchases by users.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="invalid" name="order" type="ContentNode">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Contains a ContentNode describing an order to be filled when the doOrder command is executed. The ContentNode contains one child ContentNode for each of the items to be purchases.To set an order, create a ContentNode with one child ContentNode for each item to be ordered. Each child ContentNode should have two fields:  "code" - a string that identifies the item to be purchased    "qty" - an integer that specifies the quantify of the item to be purchased.To clear the order, set the order field to invalid.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="invalid" name="orderStatus" type="ContentNode">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The doOrder command causes this field to be set to a ContentNode containing the results of the command. See below for more details.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="invalid" name="purchases" type="ContentNode">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The getPurchases and getAllPurchases commands cause this field to be set to a ContentNode containing the results of the command. See below for more details.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="invalid" name="requestPartnerOrderStatus" type="ContentNode">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The requestPartnerOrder command causes this field to be set to a ContentNode containing the results of the command. See Command Descriptions for more details.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="all" name="requestedUserData" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used to specify what user data to retrieve when the getUserData command is executed. The default value, "all", causes a ContentNode object to be returned from getUserData that includes all of the available user data stored in fields. This field can also be set to a comma separated list of strings to request specific pieces of user data. The requested data includes:  - firstname- lastname- email- street- city- state- zip- country- phoneTo request the user city, state, and ZIP code, set requestedUserData to "city,state,zip", then set the command field to "getUserData".  Invoking this command results in the Roku account details sharing screen being displayed with the specific requested account information. This dialog also includes "OK" and "Cancel" buttons allowing the user to opt into or out of the purchase. If the "OK" button is pressed, the userData field is populated with the shared account information. If the "Cancel" button is pressed, the userData field is set to invalid. A channel uses the value of the userData field to decide whether to proceed with the purchase, by invoking the doOrder command.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="invalid" name="storeCatalog" type="ContentNode">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The getStoreCatalog command causes this field to be set to a ContentNode containing the results of the command. See below for more details.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="invalid" name="userData" type="ContentNode">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The getUserData command causes this field to be set to a ContentNode containing the results of the command. Invoking this command results in the Roku account details sharing screen being displayed with all account information.This dialog also includes "OK" and "Cancel" buttons allowing the user to opt into or out of the purchase:- If the "OK" button is pressed, the userData field is populated with the shared account information.- If the "Cancel" button is pressed, the userData field is set to invalid. A channel uses the value of the userData field to decide whether to proceed with the purchase, by invoking the doOrder command. See below for more details.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="CheckList">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;LabelList&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The CheckList node class is a simple list class that displays a list of items, some of which include checkboxes that allow the user to select or unselect that item. Each item in the list displays a text string and an optional checkbox icon positioned to the left of the text string.
If the checkbox is displayed, it is shown as either:
an empty box,

or a box with a checkmark indicator inside indicating whether the item is in the checked or unchecked state.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/checklist.md"&gt;https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/checklist.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="0" name="animateToItem" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Write-OnlyWhen set to a valid item index, this causes the list to quickly scroll so that the specified index moves into the focus position.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="checkOnSelect" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Controls whether or not pressing the remote control OK key causes the checkedState field to automatically toggle the checked state of the currently focused list item. By default, field value is set to true, but there are use cases where other behavior may be desired. In those cases, it is up to the developer to manage the checked state of the list items by setting the checkedState field to the desired index.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="checkedIconUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the checkbox icon to use for list items that are in the checked state when that list item does not the key focus. Typically, the icon will include the outline of a box with a checkmark indicator inside. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="all false" name="checkedState" type="array_of_Boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the checked state of each item in the list. A value of true indicates the item is in the checked state. A value of false indicates that the item is in the unchecked state. When reading the value of the field, note that the field array will always include one value for each item in the list.When writing the value of the field, if the specified array includes fewer values than items in the list, the list items that are unspecified will remain in their current state. For example, if there are 10 items in the list and the field value is set to true, true, items 0 and 1 will have their checked state set to true, and the checked state of the remaining items (items 3 to 9) will be unchanged.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xddddddff" name="color" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the text color for unfocused list items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="columnSpacings" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies differing spaces between each grid column, to allow the spacing between columns to vary from column to column. This field is not used by lists. The specified values override the itemSpacing field vector2d X-value for each grid column corresponding to its position in the array, in left to right order. If the array contains fewer elements than the number of columns needed to display all the items in the grid, the itemSpacing field vector2d X-value is used for any unspecified columns</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="columnWidths" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies differing widths for each grid column, to allow the width of each column to vary from column to column. This field is not used by lists. The specified values override the itemSize field vector2d X-value for each grid column corresponding to its position in the array, in left to right order. If the array contains fewer elements than the number of columns needed to display all the items in the grid, the itemSize field vector2d X-value is used for any unspecified columns</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="none" name="content" type="ContentNode">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the content for the list. See Data bindings below for more details.If the data contains section markers, section dividers will be drawn between each section. These section dividers may contain an icon and/or a string.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="currFocusColumn" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Gives access to which column of a grid is in the focus position as the items scrolling around. So, currFocusColumn = 3.7 would mean that item 3 occupies 30% of the focus position while item 4 occupies 70% of the focus position. To maximize performance, the field should be kept to a minimum, as these scripts will run once during each render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="read-only" name="currFocusFeedbackOpacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;This field provides access to the current opacity of the focus feedback indicator. It can be used to have other items on the screen fade in/out when the focus feedback indicator fades in/out.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="currFocusRow" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Gives access to which row of a grid is in the focus position as the items scrolling around. So, currFocusRow = 3.7 would mean that item 3 occupies 30% of the focus position while item 4 occupies 70% of the focus position. To maximize performance, the field should be kept to a minimum, as these scripts will run once during each render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="currFocusSection" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Gives access to which section of a grid is in the focus position as the items scrolling around. So, currFocusSection = 3.7 would mean that item 3 occupies 30% of the focus position while item 4 occupies 70% of the focus position. To maximize performance, the field should be kept to a minimum, as these scripts will run once during each render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="drawFocusFeedback" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether or not the focus indicator bitmap is displayed</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="drawFocusFeedbackOnTop" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether the focus indicator bitmap is drawn below or on top of the list items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="fadeFocusFeedbackWhenAutoScrolling" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to true, the focus feedback indicator will quickly fade out when scrolling multiple items and fade back in when the scrolling ends. The focus feedback indicator will also after in and out when using the FFW/Rewind keys to scroll a page at a time. Additionally, the focus behavior has been modified for situations where all the items in a RowList row are visible on screen at once. In the past, the focus would step once, then begin to scroll smoothly. Now, the focus steps one-by-one through each itemcurrFocusFeedbackOpacityfloatread-onlyREAD_WRITEThis field provides access to the current opacity of the focus feedback indicator. It can be used to have other items on the screen fade in/out when the focus feedback indicator fades in/out. Additionally, the focus behavior has been modified for situations where all the items in a RowList row are visible on screen at once. In the past, the focus would step once, then begin to scroll smoothly. Now, the focus steps one-by-one through each item</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="fixedLayout" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies that a grid will have a layout of items of different widths configured by parameters included in a ContentNode node for the grid. This field is not used by lists</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xFFFFFFFF" name="focusBitmapBlendColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Blend the graphic image specified by focusBitmapUri with the specified color. If set to the default, 0xFFFFFFFF, no color blending will occur. Set this field to show a focus indicator graphic image with a different color than the image specified by focusBitmapUri.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="focusBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap file used for the focus indicator when the list has focus. In most cases, this should be a 9-patch image that specifies both expandable regions as well as margins. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="focusColumn" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the column that will have fixed focus for grids if the horizFocusAnimationStyle field value is set to fixedFocusWrap. This field is not used for lists</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="focusFootprintBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap file used for the focus indicator when the list does not have focus. In most cases, this should be a 9-patch image that specifies both expandable regions as well as margins. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xFFFFFFFF" name="focusFootprintBlendColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Blend the graphic image specified by focusFootprintBitmapUri with the specified color. If set to the default, 0xFFFFFFFF, no color blending will occur. Set this field to show a focus footprint indicator graphic image with a different color than the image specified by focusFootprintBitmapUri.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="focusRow" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the row that will have fixed focus if the vertFocusAnimationStyle field value is set to fixedFocusWrap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="focusedCheckedIconUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the checkbox icon to use for list items that are in the checked state when that list item has the key focus. Typically, the icon will include the outline of a box with a checkmark indicator inside. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0x262626ff" name="focusedColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the text color for focused list items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="focusedFont" type="font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the font for focused list items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="focusedUncheckedIconUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the checkbox icon to use for list items that are in the unchecked state when that list item has the key focus. Typically, the icon will include the outline of an empty box. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="font" type="font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the font for unfocused list items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="floatingFocus" name="horizFocusAnimationStyle" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the how the focus indicator moves in a row of grid items in response to the remote direction pad Left and Right key presses. This field is not used for lists. The possible values are: Option Effect floatingFocus Causes the focus indicator to float left or right until it reaches the end of the row, at which point the focus indicator will stay fixed on the first or last item in the row, and the items will scroll left or right if there were items that were not visible. fixedFocusWrap Causes the row to wrap around when the focus indicator reaches the first or last item in the row, as long as the row contains enough items to fill the row. If the row does not contain enough items to fill the row, the focus indicator will float left and right.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="itemClippingRect" type="rect2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a clipping region for the list or grid items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0,0" name="itemSize" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the width and height of each item in the list</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0,0" name="itemSpacing" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The second value of the vector specifies the vertical spacing between items in the list. The first value of the vector is ignored.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="jumpToItem" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Write-OnlyWhen set to a valid item index, this causes the list to immediately update so that the specified index moves into the focus position.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="numColumns" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of columns in a grid. This field is not used for lists</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1" name="numRenderPasses" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of rendering operations to display a complex list or grid. This allows you to achieve a performance increase by specifying that individual sub-elements of the list or grid items occur on sequential rendering operations, rather than all of the item sub-elements being rendered in one rendering operation, which is the default. If you set this field to a value greater than 1, you must specify the rendering operation number for each of the item sub-elements as the renderPass field value for that sub-element. No sub-element that has a renderPass field value of 0 (the default), or has a renderPass field value greater than the value of the numRenderPasses field, will render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="12" name="numRows" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of visible rows displayed. The actual number of rows may be more or less than the number of visible rows specified depending on the number of items in the list content.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="rowHeights" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies differing heights for each list or grid row, to allow the height of each row to vary from row to row. The specified values override the itemSize field vector2d Y-value for each list or grid row corresponding to its position in the array, in top to bottom order. If the array contains fewer elements than the number of rows needed to display all the items in the list or grid, the itemSize field vector2d Y-value is used for any unspecified rows</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="rowSpacings" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies differing spaces between each list or grid row, to allow the spacing between rows to vary from row to row. The specified values override the itemSpacing field vector2d Y-value for each list or grid row corresponding to its position in the array, in top to bottom order. If the array contains fewer elements than the number of rows needed to display all the items in the list or grid, the itemSpacing field vector2d Y-value is used for any unspecified rows</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="sectionDividerBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies a custom bitmap to use as a visual divider between the sections of the list or grid. Only set this field to use a bitmap with a different appearance than the system default. For sections that do not include an icon or a title, the system default or custom bitmap specified as the wrapDividerBitmapUri field value is used for the section dividers. In most cases, you will want to use a 9-patch PNG bitmap with both expandable regions, which is the type of bitmap used as the system default.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="sectionDividerFont" type="font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the font for section divider labels</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="40" name="sectionDividerHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of the section dividers. The width of the section dividers is determined by the width of the list items as specified by the itemSize field width value.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="sectionDividerLeftOffset" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Number of pixels to offset the left edge of the section divider relative to the left edge of the list items.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="117" name="sectionDividerMinWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the minimum width of the section divider bitmap. The section divider label will be ellipsized if necessary in order to ensure that the section divider bitmap meets the minimum width.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="10" name="sectionDividerSpacing" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, and the section dividers are specified to include an icon and/or a label, specifies the spacing between the icon, label, and section divider bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xddddddff" name="sectionDividerTextColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the text color for section divider labels</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="sectionDividerWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies the width of the section divider bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="left" name="textHorizAlign" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the horizontal alignment of the text in the list item area specified by the itemSize field value (the text is always centered vertically in the list item area). The possible options are:Option Effect left Text is left-aligned right Text is right-aligned center Text is center-aligned</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="uncheckedIconUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the checkbox icon to use for list items that are in the unchecked state when that list item does not have the key focus. Typically, the icon will include the outline of an empty box. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="fixedFocusWrap" name="vertFocusAnimationStyle" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the how the focus indicator moves in a list of items in response to the remote direction pad Up and Down key presses. The possible values are:Option Effect fixedFocusWrap Causes the focus indicator to float up or down until it reaches the end of the list, at which point the focus indicator will stay fixed on the first or last item in the list, and the items will scroll up or down if there are items that were not visible. floatingFocus Causes the list to wrap around when the focus indicator reaches the first or last item in the list, as long as the list contains enough items to fill the list. If the list does not contain enough items to fill the list, the focus indicator will float up and down.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="wrapDividerBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap file to use as a wrap divider, the visual separator between the last and first list items when the list wraps. In most cases, this should be a 9-patch image that specifies both expandable regions. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="wrapDividerHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of the wrap divider, the visual separator between the last and first list items when the list wraps. The bitmap for the wrap divider is scaled to this height. The width of the wrap divider is set to the width of the list items as specified by the itemSize field width value.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="wrapDividerWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Additionally, the focus behavior has been modified for situations where all the items in a RowList row are visible on screen at once. In the past, the focus would step once, then begin to scroll smoothly. Now, the focus steps one-by-one through each item.If the vertFocusAnimationStyle field value is set to fixedFocusWrap, specifies the width of a bitmap used as a visual divider between the last and first list or grid items when the list or grid wraps. Only set this field to use a value with a different appearance than the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="ColorFieldInterpolator">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Node&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The ColorFieldInterpolator node class specifies a keyframe animation sequence to be applied to the color field of a node (such as the color field of a Label node).
All field interpolators include a set of key/keyValue field pairs that define a keyframe of the animation. Field interpolators are generally used as children of an Animation node. As the animation progresses, it sets the fraction field of its field interpolators to a value between 0 and 1, indicating the fraction of the animation progress. The keyframe fields of the interpolator are key, the percentage where the keyframe should occur, and keyValue, the value that the field should have at that fraction of the animation.
For example, if a ColorFieldInterpolator node had three keyframes:
0.0, 0xFF0000FF (red)

0.4, 0x00FF00FF (green)

1.0, 0x0000FFFF (blue)
When the interpolator fraction field value was 0.0 (that is, 0%), the color field value would be set to red. When the fraction field value was 0.4 (that is, 40%), the color field value would be set to green. When the fraction field value was 1.0 (that is, 100%), the color field value would be set to blue.
For values of the fraction field between 0.0 and 0.4 (such as 0.2 or 20%), the field value is determined by linearly interpolating the keyValue field values for the first two keyframes. In this case, since the key of 0.2 is halfway between the key at 0.0 and the key at 0.4, the field would be set to a color halfway between red and green. Similarly, when the fraction field value is between the second and third keys (that is, between 0.4 and 1.0), the field value is determined by linearly interpolating the keyValue field values of the second and third keyframes.
If the first keyframe has a key field fraction value greater than zero, then the field value is equal to the keyValue field value of the first keyframe until the fraction field value reaches the first keyframe key field fraction value. Similarly, if the last keyframe has a key field fraction value less than one, the color field value is set to the keyValue field value of the last keyframe, from when the fraction field value equals the last keyframe key field fraction value percentage, and will not change as the fraction field value increases from that value to 1.0.
The ColorFieldInterpolator node class works in the HSV color space. Doing the interpolation in the HSV color space produces the most intuitive, visually pleasing results when animating color values.
While linear interpolation is used to compute the keyValue field values for fraction field values between successive keys, non-linear easing functions may be applied to the fraction field values computed by the Animation node, so the overall animation may vary in speed.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/animation-nodes/colorfieldinterpolator.md"&gt;https://developer.roku.com/docs/references/scenegraph/animation-nodes/colorfieldinterpolator.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="&quot;&quot;" name="fieldToInterp" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the field to interpolate. This generally refers to the field on a SceneGraph node that contains the color to animate, such as testRectangle.color field in the example below</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="fraction" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the fraction to be used to compute a value for the field</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="key" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the key fractions for the interpolator keyframes. Each key fraction should be a unique value from 0 to 1 indicating the fraction of the animation where the keyValue field value should occur. Behavior is undefined if the number of values in the key field does not match the number of values in the keyValue field</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="keyValue" type="array_of_colors">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the key values for the interpolator keyframes. Each value in the keyValue field array corresponds to a value in the key field array. Behavior is undefined if the number of values in the key field does not match the number of values in the keyValue field</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="reverse" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Enables animation to be played in reverse</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="ComponentLibrary">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Node&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The ComponentLibrary node class downloads a library of custom SceneGraph components to be used in an application. The ComponentLibrary node should be used in a Scene node, such as Scene or OverhangPanelSetScene. One way to ensure that the library downloads before the SceneGraph application begins to compile the components for the application, is to begin the download in the main.brs file that creates the Scene node, by adding an  field to the Scene node that can be used to monitor the download, and starts the application when the download is complete.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/control-nodes/componentlibrary.md"&gt;https://developer.roku.com/docs/references/scenegraph/control-nodes/componentlibrary.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="no default" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to a unique ID for the library for the application</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="no default" name="uri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The URL of the library to be downloaded</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="ContentNode">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Node&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The ContentNode node class allows you to specify the data used to configure a node or component. Many nodes and components require a ContentNode node as the specification of their content field in order to be properly configured. In general, lists, grids, and panels require a ContentNode node for configuration. The data included in a ContentNode node can be data such as the text for labels in the node or component, and the spacing between items in a list, grid, or panel, including data to create custom lists, grids, and panels. The reference information for every node or component that requires a ContentNode node includes a section that details the requirements of the ContentNode node for that node or component.
ContentNode nodes defined as the specification for a node or component content field are typically structured as one ContentNode parent node, with a hierarchy of child nodes that specify the actual data, and sections of data if needed. For example, a LabelList node can have several sections that divide the entire list, each with their own section heading, and specific items in that section of the list. The ContentNode node for that LabelList node should have two levels of child ContentNode nodes, one level for the data to configure the list sections, and then another level of child ContentNode nodes for the data for each item in that list section.
A ContentNode node can also be used to specify the data for custom components with defined interfaces, and for nodes and components that require Content Meta-Data. Also, you should use a ContentNode node for complex structures of data for your application rather than associative arrays. ContentNode node objects are passed by reference in the application, while associative array objects are copied. For large complex data structures, passing ContentNode node objects is much quicker than passing the equivalent associative array object. You can use associative arrays for simpler data structures with just a few fixed members.
All of the attributes listed in Content Meta-Data can be set as fields in a Content node. However, when creating a Content node, the fields themselves are not created until the valid attributes are set as fields, using either assignment (=), or set using setField() or setFields()&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/control-nodes/contentnode.md"&gt;https://developer.roku.com/docs/references/scenegraph/control-nodes/contentnode.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Dialog">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Group&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The Dialog node class defines a modal pop-up dialog used to present the user with information requiring their immediate attention.
Setting the dialog field of the current Scene node to a Dialog node causes the dialog to be displayed.
The Dialog node is configured to have up to five regions: the title, message, bullet text, graphic, and button regions. All of these are optional except for the title.
The title region consists of a an icon and a title label, along with a horizontal divider that visually separates the title from the rest of the dialog.

The message region consist of a string that is displayed below the title divider.

The bullet  text region contains a set of zero or more bullet points. It is displayed below the message.

The graphic region consists of a single bitmap displayed center-aligned below the message and bullet text and above the button region.

The button region contains a ButtonGroup node that contains zero or more Button nodes, arranged vertically.
Dialogs are modal and intercept all key events except pressing the Home key. Dialogs are closed automatically when the user presses the Home key or the Back key. If the optionsDialog field is set to true, pressing the Options key also closes the dialog.
Only a single dialog may appear at any time. If a second dialog is shown, the previous dialog is closed automatically.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/dialog-nodes/dialog.md"&gt;https://developer.roku.com/docs/references/scenegraph/dialog-nodes/dialog.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="&quot;&quot;" name="backgroundUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap to be displayed as the dialog background. Usually this is a 9-patch image to support dynamic resizing. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="bulletText" type="array_of_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;An array of strings to be displayed as a list of bullet points</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="bulletTextColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, the color of the bullet point text</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="bulletTextFont" type="Font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, the font of the bullet point text</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="buttonGroup" type="ButtonGroup">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The dialog internal ButtonGroup node. This allows the appearance attributes of all the Button nodes in the dialog to be easily modified. Since the ButtonGroup node class is derived from the LayoutGroup node class, additional non-Button node children can also be added</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="buttons" type="array_of_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Allows a set of Button nodes to be easily created by providing an array of Button labels. Each string in the array will result in a Button node to be added to the ButtonGroup, using the string as the Button label</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="close" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Causes the dialog to be dismissed. The dialog is dismissed whenever the close field is set, regardless of whether the field is set to true or false</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="dividerUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a bitmap to be displayed as the divider between the title region and the remainder of the dialog. Usually this is a 9-patch image to support dynamic resizing. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="focusButton" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Causes the button with the specified index to receive the focus when the ButtonGroup node has the key focus. Note that if the ButtonGroup node does not have the key focus when the focusButton field is set, the specified button will display the focus footprint as its background</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="graphicHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of the bitmap graphic in local coordinates. If set to 0.0, the height of the bitmap from the image file is used. If set to a value greater than 0.0, the bitmap is scaled to that height</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="graphicUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a bitmap to be displayed in the dialog. The bitmap is displayed below the bullet text region and above the buttons. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="graphicWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the width of the bitmap graphic in local coordinates. If set to 0.0, the width of the bitmap from the image file is used. If set to a value greater than 0.0, the bitmap is scaled to that width</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="iconUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a bitmap to be displayed as a small icon next to the dialog title. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="-1.0" name="maxHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the maximum height of the dialog. By default, the Dialog will scale the height based on the contents but never larger than the height of the display resolution. Setting maxHeight smaller than the contents will switch to a scrollable text region</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="message" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The string to be displayed in the message region of the dialog. Newline and carriage return characters in the string result in the message being displayed as several lines of text. In BrightScript, to include a newline in a string, use chr(10). For example: message = "First line" + chr(10) + "Second line"</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="messageColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, the color of the message text</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="messageFont" type="Font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, the font of the message text</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="numberedBullets" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If set to true, the bulletText will be displayed with numbers rather than bullets</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="optionsDialog" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If set to true, the dialog is automatically dismissed when the Options key is pressed</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="title" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Title of the dialog box</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="titleColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, the color of the title</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="titleFont" type="Font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, the font of the title</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="wasClosed" type="Event">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set when the dialog has been closed. The field is set when the dialog close field is set, when the Back or Home key has been pressed, when the Options key has been pressed if the optionsDialog field is set to true, and when the dialog is dismissed because another dialog was displayed</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="-1.0" name="width" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the width of the dialog. By default, this value is pulled from the system theme</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="FloatFieldInterpolator">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Node&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The FloatFieldInterpolator node class specifies a keyframe animation sequence to be applied to a floating point field of a node (such as, an opacity, width or height value.)
All field interpolators include a set of key/keyValue pairs that define a keyframe of the animation. Field interpolators are generally used as children of an Animation node. As the animation progresses, it sets the fraction field of its field interpolators to a value between 0 and 1, indicating the percentage of the Animation's progress. The keyframes of the interpolator include a "key", the percentage where the keyframe should occur, and a "keyValue", the value that the field should have at that percentage.
For example, if a FloatFieldInterpolator had three keyframes, (0.0, 10.0), (0.4, 200.0) and (1.0, 87.0), then when the interpolator's fraction field was 0.0 (i.e. 0%), the field would be set to 10.0. When fraction was 0.4 (i.e. 40%), the field would be set to 200.0. When fraction was 1.0 (i.e. 100%), the field would be set to 87.0.
For values of fraction between 0.0 and 0.4 (e.g. 0.2 or 20%), the field value is determined by linearly interpolating the keyValues for the first two keyframes. In this case, since the key of 0.2 is halfway between the key at 0.0 and the key at 0.4, the field would be set to 10.0 + 0.5 * (10.0 + 200.0) = 105.0. Similarly, when fraction is between the second and third keys (i.e. between 0.4 and 1.0), the field value is determined by linearly interpolating the keyValues of the second and third keyframes.
If the first keyframe has a key percentage greater than zero, then the field value will be equal to the keyValue of the first keyframe until fraction reaches the first keyframe's key percentage. Similarly, if the last keyframe has a key percentage less than one, the field value will be set to the keyValue of the last keyframe from when fraction equals the the last keyframe's key percentage and will not change as fraction increases from that value to 1.0.
While linearly interpolation is used to compute the keyValue's for fraction values between successive keys, non-linear easing functions may be applied to the fraction values computed by the Animation node, so the overall animation may vary in speed.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/animation-nodes/floatfieldinterpolator.md"&gt;https://developer.roku.com/docs/references/scenegraph/animation-nodes/floatfieldinterpolator.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="&quot;&quot;" name="fieldToInterp" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the field to interpolate. The string should contain the ID of a node in the scene and the name of a field of that node, separated by a dot ".". For example, "title.width" would indicate that the interpolator should be applied to the width field of a node whose id field was "title". The specified field must be of type float</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="fraction" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the percentage to be used to compute a value for the field</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="key" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the key percentages for the interpolator's keyframes. Each key percentage should be a unique value from 0 to 1 indicating the percentage of the animation where the keyValue should occur. Behavior is undefined if the number of values in the key field does not match the number of values in the keyValue field</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="keyValue" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the key values or the interpolator's keyframes. Each value in the keyValue array corresponds to a value in the key field's array. The interpolator's behavior is undefined if the number of values in the key field does not match the number of values in the keyValue field</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="reverse" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Enables animation to be played in reverse.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Font">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Node&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The Font node class specifies the font to be used by a Label node, or any other nodes that render text.
Nodes that use fonts include a field that stores a Font node. The font to use is specified by creating a Font node, and setting its uri and size fields.
The uri field can be set to any TrueType/OpenType font file. For example, to specify a font in XML markup:
&lt;Label&gt;
  &lt;Font role = "font" uri = "pkg:/fonts/font.ttf" size = "24" /&gt;
&lt;/Label&gt;

A default system font can also be specified, such as in the following:
&lt;Label id = "myLabel"
  width = "200"
  height = "200"
  text = "Hello Label"
  font = "font:MediumBoldSystemFont" 
  /&gt;

Below is the list of all the possible system font values:
SmallestSystemFont

SmallestBoldSystemFont

SmallSystemFont

SmallBoldSystemFont

MediumSystemFont

MediumBoldSystemFont

LargeSystemFont

LargeBoldSystemFont
The font can also be specified in BrightScript, for example:
label = CreateObject("roSGNode", "Label")
font  = CreateObject("roSGNode", "Font")
font.uri = "pkg:/fonts/font.ttf"
font.size = 24
label.font = font
&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/typographic-nodes/font.md"&gt;https://developer.roku.com/docs/references/scenegraph/typographic-nodes/font.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="&quot;&quot;" name="fallbackGlyph" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;String representation of a Unicode character to display when an unsupported glyph is encountered. For example, "u0020" would render a space for any unrenderable characters</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1" name="size" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the size of the font in points</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="uri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a TrueType or OpenType font file. Currently only font files included in the application can be specified</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="GridPanel">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Panel&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The GridPanel node class allows you to easily create a Panel that adheres to the Roku layout and behavior for panels that contain a PosterGrid or MarkupGrid node. The GridPanel node class provides the following functionality:
Resolution appropriate positioning and sizing of the grid node

Automatic key focus handling (i.e. the grid node is set to receive key events when the GridPanel is given the key focus by the PanelSet)

Left-justified and right-justified labels that can be used to provide descriptive information about the grid (e.g. "1 of N", etc.). These labels are automatically positioned and sized appropriately.

Simple mechanism for setting up the case where focusing any item in the grid triggers the creation of a new panel to add to the PanelSet

Default fade in/out animation of the next panel when the simple mechanism is used

Default fade out mask effect applied to the grid items at the bottom of the panel&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/sliding-panels-nodes/gridpanel.md"&gt;https://developer.roku.com/docs/references/scenegraph/sliding-panels-nodes/gridpanel.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="clockText" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="createNextPanelOnItemFocus" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to true, the Create Next Panel mechanism is enabled (i.e. the createNextPanelIndex field will be set when a new grid item receives the focus). When set to false, the Create Next Panel mechanism is disabled (i.e. the createNextPanelIndex field will not be set when a new grid item receives the focus).</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1" name="goBackCount" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="NULL" name="grid" type="Node">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The grid field should be set to either a PosterGrid or MarkupGrid node to be displayed in the Panel. In general, because the layout of any grid is usually custom, you will generally need to set the grid's itemSize, itemSpacing, numRows and numColumns fields. The GridPanel will position the grid appropriately.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="hasNextPanel" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="-1" name="height" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="isFullScreen" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="isOffscreenLeft" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="Label node" name="leftLabel" type="Node">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The leftLabel field is set to a Label node that is positioned just above the left/top corner of the grid. Setting the Label node's text field will cause that text string to be displayed. Setting other fields of the Label node can be used to adjust the Label's text color and other visual attributes.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="leftOnly" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="leftOrientation" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="105" name="leftPosition" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="nextPanel" type="Node">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When the createNextPanlOnItemFocus field is true, the nextPanel field should be set to a Panel node to the next panel to add to the PanelSet in response to the createNextPanelIndex field being set. It must be set immediately in repsonse to the createNextPanelIndex field being set.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="optionsAvailable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="overhangTitle" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="narrow" name="panelSize" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="Label node" name="rightLabel" type="Node">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The rightLabel field is set to a Label node that is positioned just above the right/top corner of the grid. Setting the Label node's text field will cause that text string to be displayed. Setting other fields of the Label node can be used to adjust the Label's text color and other visual attributes.The rightLabel is often used to display a "1 of N" message that reflects the index of the grid's focused item.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="selectButtonMovesPanelForward" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="showSectionLabels" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If showSectionLabels is set to true and the data for the grid node is divided into sections, the Title attribute of the current section will be displayed as the leftLabel of the grid. As the grid items scroll, the leftLabel will smoothly transition as each section of the grid reaches the focus position.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="388" name="width" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Group">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Node&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Group is the base class of all renderable nodes. Group also provides fields that control the transformation, visibility and opacity of themselves and all of their children.
Each Group defines a local coordinate system relative to the coordinate system of its parent node. A 2D matrix that describes how points in the local coordinate system can be transformed into the parent node coordinate system is constructed from the values of the translation, rotation, scale, and scaleRotateCenter fields.
The 2D matrix is computed using the values of these four fields in the following order:
translating by the negative of the scaleRotateCenter field value

scaling by the the scale field value

rotating by the rotation field value

translating by the the scaleRotateCenter field value

translating by the translation field value
In matrix math terms, the overall 2D matrix is:
M = C(-1) S R C T
Where:
M is the total matrix

C is a 2D translation matrix that describes the location of the scale/rotation center in the node's local coordinate system

C(-1) is the inverse of C

S is a 2D scaling matrix

R is a 2D rotation matrix

T is a 2D translation matrix
In nearly all cases, either the default values for these four fields will be used (in which case, the local coordinate system of the node is the same as the parent node coordinate system), or only a translation will be specified (in which, the local coordinate system is a simple offset from the parent node coordinate system).&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md"&gt;https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Keyboard">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Group&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The Keyboard node class allows a user to enter a string of alphanumeric characters. The string entered is displayed in a TextEditBox node that is part of the Keyboard node.
The Keyboard node must have the key focus in order to work properly. By default, a Keyboard node toggles between uppercase and lowercase letters when the Options remote key is pressed, to speed the entry of mixed-case strings by the user. It is important not to override this behavior, particularly if a Keyboard node is used as an internal node for a KeyboardDialog node.
The default appearance of a Keyboard node is very transparent, allowing the keyboard to pick up most of its color from what is rendered underneath it. The appearance can be customized by changing the keyboardBitmapUri and other fields.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/widget-nodes/keyboard.md"&gt;https://developer.roku.com/docs/references/scenegraph/widget-nodes/keyboard.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="focusBitmapUri" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the URI of an image file to be loaded to replace the keyboard focus indicator. This should be a 9-patch image so that it can be stretched to the appropriate size for the double width keys</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xffffffff" name="focusedKeyColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the color of the key labels and icons when the Keyboard node has the focus</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xffffffff" name="keyColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the color of the key labels and icons when the Keyboard node does not have the focus</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="keyboardBitmapUri" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the URI of an image file to be loaded to replace the default keyboard image drawn underneath the key label and icons.This image must be carefully designed so that the key positions match the default image. Template images for SD, HD and FHD resolutions are provided below.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="showTextEditBox" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether or not the Keyboard node internal TextEditBox node is displayed. In most cases, it is desirable to display the TextEditBox node so that the user can see the string as it is entered. In some cases though, you might want to show only the keyboard part of the Keyboard node. In those cases, the text field of the node will still contain the string entered by the user, so it can displayed in some different manner</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="text" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Contains the string of characters that has been entered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="KeyboardDialog">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Dialog&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The KeyboardDialog node class is a special type of Dialog node that prompts the user to enter an alphanumeric text string. The KeyboardDialog node class includes an interrnal Keyboard node to allow the user to enter the string.
The KeyboardDialog allows you to add a title (by setting the Dialog title field), a help message (by setting the Dialog message field), and a set of action buttons (by setting the Dialog node buttons field). The bulletText and graphicUrl fields of the Dialog node should not be set. If those Dialog node fields are set, the layout of the dialog will likely not look correct.
Also, the KeyboardDialog node class inherits the behavior of the interrnal Keyboard node when the Options remote key is pressed. The Keyboard node class toggles between uppercase and lowercase letters when the Options remote key is pressed, to speed the entry of mixed-case strings by the user. Therefore, the optionsDialog field of the Dialog node class should not be set to true.
Typically, you will want to set the KeyboardDialog node title field to prompt the user to enter the string, and add "OK" and "Cancel" buttons by setting the Dialog node buttons field to "OK", "Cancel", then observe the Dialog node class buttonSelected field to react when the user presses one of those buttons. At any time, the text field can be accessed to obtain the string entered by the user.
Another typical usage of the KeyboardDialog node class adds a "Hide Text" button, with an observer function set up to toggle the secureMode field of the Keyboard node internal TextEditBox node (that is, by toggling the value of the keyboard.textEditBox.secureMode field).&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/dialog-nodes/keyboarddialog.md"&gt;https://developer.roku.com/docs/references/scenegraph/dialog-nodes/keyboarddialog.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="&quot;&quot;" name="backgroundUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap to be displayed as the dialog background. Usually this is a 9-patch image to support dynamic resizing. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="bulletText" type="array_of_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;An array of strings to be displayed as a list of bullet points</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="bulletTextColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, the color of the bullet point text</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="bulletTextFont" type="Font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, the font of the bullet point text</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="buttonGroup" type="ButtonGroup">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The dialog internal ButtonGroup node. This allows the appearance attributes of all the Button nodes in the dialog to be easily modified. Since the ButtonGroup node class is derived from the LayoutGroup node class, additional non-Button node children can also be added</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="buttons" type="array_of_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Allows a set of Button nodes to be easily created by providing an array of Button labels. Each string in the array will result in a Button node to be added to the ButtonGroup, using the string as the Button label</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="close" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Causes the dialog to be dismissed. The dialog is dismissed whenever the close field is set, regardless of whether the field is set to true or false</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="dividerUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a bitmap to be displayed as the divider between the title region and the remainder of the dialog. Usually this is a 9-patch image to support dynamic resizing. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="focusButton" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Causes the button with the specified index to receive the focus when the ButtonGroup node has the key focus. Note that if the ButtonGroup node does not have the key focus when the focusButton field is set, the specified button will display the focus footprint as its background</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="graphicHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of the bitmap graphic in local coordinates. If set to 0.0, the height of the bitmap from the image file is used. If set to a value greater than 0.0, the bitmap is scaled to that height</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="graphicUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a bitmap to be displayed in the dialog. The bitmap is displayed below the bullet text region and above the buttons. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="graphicWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the width of the bitmap graphic in local coordinates. If set to 0.0, the width of the bitmap from the image file is used. If set to a value greater than 0.0, the bitmap is scaled to that width</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="iconUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a bitmap to be displayed as a small icon next to the dialog title. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="-1.0" name="maxHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the maximum height of the dialog. By default, the Dialog will scale the height based on the contents but never larger than the height of the display resolution. Setting maxHeight smaller than the contents will switch to a scrollable text region</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="message" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The string to be displayed in the message region of the dialog. Newline and carriage return characters in the string result in the message being displayed as several lines of text. In BrightScript, to include a newline in a string, use chr(10). For example: message = "First line" + chr(10) + "Second line"</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="messageColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, the color of the message text</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="messageFont" type="Font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, the font of the message text</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="numberedBullets" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If set to true, the bulletText will be displayed with numbers rather than bullets</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="optionsDialog" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If set to true, the dialog is automatically dismissed when the Options key is pressed</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="text" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Can be used to explicitly set the internal Keyboard node text string, as well as to access the string entered by the user</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="title" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Title of the dialog box</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="titleColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, the color of the title</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="titleFont" type="Font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, the font of the title</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="wasClosed" type="Event">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set when the dialog has been closed. The field is set when the dialog close field is set, when the Back or Home key has been pressed, when the Options key has been pressed if the optionsDialog field is set to true, and when the dialog is dismissed because another dialog was displayed</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="-1.0" name="width" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the width of the dialog. By default, this value is pulled from the system theme</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Label">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Group&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The Label node class is used to display a string of text. The Label node class supports many options including:
Specifying the color of the font

Specifying the font to be used by specifying a TrueType/OpenType font file

Single line and multi-line text

Horizontal and vertical alignment

Justification

Automatic ellipsizing of the text based on the specified width and number of lines&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/renderable-nodes/label.md"&gt;https://developer.roku.com/docs/references/scenegraph/renderable-nodes/label.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xddddddff" name="color" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the text color</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="displayPartialLines" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the height field value is greater than zero, used to determine whether or not the last line of visible text is displayed if it would be clipped vertically</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="ellipsisText" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;By default, three dots (...) are used to ellipsize the last line of text that extends beyond the bounding rectangle. This field specifies alternate characters to be displayed when the last line of text is ellipsized</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="ellipsizeOnBoundary" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the width field value is greater than zero, controls whether or not the last line of text displayed should be ellipsized if it extends beyonds the specified width. It is ignored if the truncateOnDelimiter field value is set to a non-empty string ${ellipsizeOnBoundary}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="font" type="Font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the Font node to be used</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="height" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of the label. If set to zero, the actual height is determined by the value of the numLines field if it is greater than zero. See Vertical Alignment and Wrapping( /docs/references/scenegraph/renderable-nodes/label.md#wrapping-text “Wrapping”) for more details</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="left" name="horizAlign" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;See Horizontal Alignment</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="lineSpacing" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the text is displayed on more than one line, specifies the amount of additional space added between lines</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="maxLines" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the height and numLines field values are both zero, specifies the maximum number of lines of text to be displayed. See Vertical Alignment and Wrapping( /docs/references/scenegraph/renderable-nodes/label.md#wrapping-text “Wrapping”) for more details</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="numLines" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the height field value is zero, provides an alternate way to specify the height of the bounding rectangle of the label. See Vertical Alignment and Wrapping( /docs/references/scenegraph/renderable-nodes/label.md#wrapping-text “Wrapping”) for more details</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="text" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the text to be displayed</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="truncateOnDelimiter" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the width field value is greater than zero, provides a set of characters that are used to determine how to truncate the last line of text that is displayed if it extends beyond the specified width. If none of the characters in the last line of text are included in the truncateOnDelimiter field value string, the entire last line is not displayed. When the value is set to a non-empty string, the ellipsizeOnBoundary field value is ignored</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="top" name="vertAlign" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;See Vertical Alignment(/docs/references/scenegraph/renderable-nodes/label.md#wrapping-text “Wrapping”)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="width" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the width of the label. If set to zero, the text is always displayed as a single line</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="wordBreakChars" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;By default, space and hyphen characters are used to determine where lines can be divided. In addition, this field can specify additional characters to be used to determine where the text can be broken into lines</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="wrap" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;See Wrapping</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="LabelList">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;ArrayGrid&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The LabelList node class is a simple list class that can be used to display a list of items. Each item can include a text string and an optional icon positioned to the left of the text string.
The list items can be organized into sections that are demarcated by labelled horizontal divider lines between the sections.
In most cases, you will want to populate the content of a LabelList (or other similar components like PosterGrids, etc.) from a content feed, web service API, or some other dynamic data source.  However, to illustrate the basics of how a LabelList is constructed and used, here is a simple example of creating a LabelList and populating it with static data.  Static data in a LabelList may be useful for channel screens such as settings or menus with fixed items.
Static LabelList configuration

&lt;LabelList
  id = "moviemenu"
  translation = "[160,92]"
  itemSize = "[440,48]" &gt;

  &lt;ContentNode id = "moviemenucontent" role = "content" &gt;

    &lt;ContentNode title = "Drama" /&gt;
    &lt;ContentNode title = "Action" /&gt;
    &lt;ContentNode title = "Horror" /&gt;
    &lt;ContentNode title = "Comedy" /&gt;

  &lt;/ContentNode&gt;

&lt;/LabelList&gt;

Example
This code renders the LabelList shown below.
In this screen shot, the user has scrolled down one item to highlight "Drama" showing the separator after the last list item.
LabelList-example1&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/labellist.md"&gt;https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/labellist.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="0" name="animateToItem" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Write-OnlyWhen set to a valid item index, this causes the list to quickly scroll so that the specified index moves into the focus position.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xddddddff" name="color" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the text color for unfocused list items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="columnSpacings" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies differing spaces between each grid column, to allow the spacing between columns to vary from column to column. This field is not used by lists. The specified values override the itemSpacing field vector2d X-value for each grid column corresponding to its position in the array, in left to right order. If the array contains fewer elements than the number of columns needed to display all the items in the grid, the itemSpacing field vector2d X-value is used for any unspecified columns</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="columnWidths" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies differing widths for each grid column, to allow the width of each column to vary from column to column. This field is not used by lists. The specified values override the itemSize field vector2d X-value for each grid column corresponding to its position in the array, in left to right order. If the array contains fewer elements than the number of columns needed to display all the items in the grid, the itemSize field vector2d X-value is used for any unspecified columns</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="none" name="content" type="ContentNode">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the content for the list. See Data bindings below for more details.If the data contains section markers, section dividers will be drawn between each section. These section dividers may contain an icon and/or a string.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="currFocusColumn" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Gives access to which column of a grid is in the focus position as the items scrolling around. So, currFocusColumn = 3.7 would mean that item 3 occupies 30% of the focus position while item 4 occupies 70% of the focus position. To maximize performance, the field should be kept to a minimum, as these scripts will run once during each render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="read-only" name="currFocusFeedbackOpacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;This field provides access to the current opacity of the focus feedback indicator. It can be used to have other items on the screen fade in/out when the focus feedback indicator fades in/out.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="currFocusRow" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Gives access to which row of a grid is in the focus position as the items scrolling around. So, currFocusRow = 3.7 would mean that item 3 occupies 30% of the focus position while item 4 occupies 70% of the focus position. To maximize performance, the field should be kept to a minimum, as these scripts will run once during each render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="currFocusSection" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Gives access to which section of a grid is in the focus position as the items scrolling around. So, currFocusSection = 3.7 would mean that item 3 occupies 30% of the focus position while item 4 occupies 70% of the focus position. To maximize performance, the field should be kept to a minimum, as these scripts will run once during each render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="drawFocusFeedback" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether or not the focus indicator bitmap is displayed</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="drawFocusFeedbackOnTop" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether the focus indicator bitmap is drawn below or on top of the list items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="fadeFocusFeedbackWhenAutoScrolling" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to true, the focus feedback indicator will quickly fade out when scrolling multiple items and fade back in when the scrolling ends. The focus feedback indicator will also after in and out when using the FFW/Rewind keys to scroll a page at a time. Additionally, the focus behavior has been modified for situations where all the items in a RowList row are visible on screen at once. In the past, the focus would step once, then begin to scroll smoothly. Now, the focus steps one-by-one through each itemcurrFocusFeedbackOpacityfloatread-onlyREAD_WRITEThis field provides access to the current opacity of the focus feedback indicator. It can be used to have other items on the screen fade in/out when the focus feedback indicator fades in/out. Additionally, the focus behavior has been modified for situations where all the items in a RowList row are visible on screen at once. In the past, the focus would step once, then begin to scroll smoothly. Now, the focus steps one-by-one through each item</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="fixedLayout" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies that a grid will have a layout of items of different widths configured by parameters included in a ContentNode node for the grid. This field is not used by lists</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xFFFFFFFF" name="focusBitmapBlendColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Blend the graphic image specified by focusBitmapUri with the specified color. If set to the default, 0xFFFFFFFF, no color blending will occur. Set this field to show a focus indicator graphic image with a different color than the image specified by focusBitmapUri.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="focusBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap file used for the focus indicator when the list has focus. In most cases, this should be a 9-patch image that specifies both expandable regions as well as margins. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="focusColumn" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the column that will have fixed focus for grids if the horizFocusAnimationStyle field value is set to fixedFocusWrap. This field is not used for lists</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="focusFootprintBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap file used for the focus indicator when the list does not have focus. In most cases, this should be a 9-patch image that specifies both expandable regions as well as margins. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xFFFFFFFF" name="focusFootprintBlendColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Blend the graphic image specified by focusFootprintBitmapUri with the specified color. If set to the default, 0xFFFFFFFF, no color blending will occur. Set this field to show a focus footprint indicator graphic image with a different color than the image specified by focusFootprintBitmapUri.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="focusRow" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the row that will have fixed focus if the vertFocusAnimationStyle field value is set to fixedFocusWrap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0x262626ff" name="focusedColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the text color for focused list items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="focusedFont" type="font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the font for focused list items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="font" type="font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the font for unfocused list items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="floatingFocus" name="horizFocusAnimationStyle" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the how the focus indicator moves in a row of grid items in response to the remote direction pad Left and Right key presses. This field is not used for lists. The possible values are: Option Effect floatingFocus Causes the focus indicator to float left or right until it reaches the end of the row, at which point the focus indicator will stay fixed on the first or last item in the row, and the items will scroll left or right if there were items that were not visible. fixedFocusWrap Causes the row to wrap around when the focus indicator reaches the first or last item in the row, as long as the row contains enough items to fill the row. If the row does not contain enough items to fill the row, the focus indicator will float left and right.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="itemClippingRect" type="rect2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a clipping region for the list or grid items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0,0" name="itemSize" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the width and height of each item in the list</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0,0" name="itemSpacing" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The second value of the vector specifies the vertical spacing between items in the list. The first value of the vector is ignored.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="jumpToItem" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Write-OnlyWhen set to a valid item index, this causes the list to immediately update so that the specified index moves into the focus position.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="numColumns" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of columns in a grid. This field is not used for lists</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1" name="numRenderPasses" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of rendering operations to display a complex list or grid. This allows you to achieve a performance increase by specifying that individual sub-elements of the list or grid items occur on sequential rendering operations, rather than all of the item sub-elements being rendered in one rendering operation, which is the default. If you set this field to a value greater than 1, you must specify the rendering operation number for each of the item sub-elements as the renderPass field value for that sub-element. No sub-element that has a renderPass field value of 0 (the default), or has a renderPass field value greater than the value of the numRenderPasses field, will render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="12" name="numRows" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of visible rows displayed. The actual number of rows may be more or less than the number of visible rows specified depending on the number of items in the list content.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="rowHeights" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies differing heights for each list or grid row, to allow the height of each row to vary from row to row. The specified values override the itemSize field vector2d Y-value for each list or grid row corresponding to its position in the array, in top to bottom order. If the array contains fewer elements than the number of rows needed to display all the items in the list or grid, the itemSize field vector2d Y-value is used for any unspecified rows</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="rowSpacings" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies differing spaces between each list or grid row, to allow the spacing between rows to vary from row to row. The specified values override the itemSpacing field vector2d Y-value for each list or grid row corresponding to its position in the array, in top to bottom order. If the array contains fewer elements than the number of rows needed to display all the items in the list or grid, the itemSpacing field vector2d Y-value is used for any unspecified rows</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="sectionDividerBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies a custom bitmap to use as a visual divider between the sections of the list or grid. Only set this field to use a bitmap with a different appearance than the system default. For sections that do not include an icon or a title, the system default or custom bitmap specified as the wrapDividerBitmapUri field value is used for the section dividers. In most cases, you will want to use a 9-patch PNG bitmap with both expandable regions, which is the type of bitmap used as the system default.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="sectionDividerFont" type="font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the font for section divider labels</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="40" name="sectionDividerHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of the section dividers. The width of the section dividers is determined by the width of the list items as specified by the itemSize field width value.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="sectionDividerLeftOffset" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Number of pixels to offset the left edge of the section divider relative to the left edge of the list items.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="117" name="sectionDividerMinWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the minimum width of the section divider bitmap. The section divider label will be ellipsized if necessary in order to ensure that the section divider bitmap meets the minimum width.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="10" name="sectionDividerSpacing" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, and the section dividers are specified to include an icon and/or a label, specifies the spacing between the icon, label, and section divider bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xddddddff" name="sectionDividerTextColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the text color for section divider labels</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="sectionDividerWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies the width of the section divider bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="left" name="textHorizAlign" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the horizontal alignment of the text in the list item area specified by the itemSize field value (the text is always centered vertically in the list item area). The possible options are:Option Effect left Text is left-aligned right Text is right-aligned center Text is center-aligned</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="fixedFocusWrap" name="vertFocusAnimationStyle" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the how the focus indicator moves in a list of items in response to the remote direction pad Up and Down key presses. The possible values are:Option Effect fixedFocusWrap Causes the focus indicator to float up or down until it reaches the end of the list, at which point the focus indicator will stay fixed on the first or last item in the list, and the items will scroll up or down if there are items that were not visible. floatingFocus Causes the list to wrap around when the focus indicator reaches the first or last item in the list, as long as the list contains enough items to fill the list. If the list does not contain enough items to fill the list, the focus indicator will float up and down.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="wrapDividerBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap file to use as a wrap divider, the visual separator between the last and first list items when the list wraps. In most cases, this should be a 9-patch image that specifies both expandable regions. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="wrapDividerHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of the wrap divider, the visual separator between the last and first list items when the list wraps. The bitmap for the wrap divider is scaled to this height. The width of the wrap divider is set to the width of the list items as specified by the itemSize field width value.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="wrapDividerWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Additionally, the focus behavior has been modified for situations where all the items in a RowList row are visible on screen at once. In the past, the focus would step once, then begin to scroll smoothly. Now, the focus steps one-by-one through each item.If the vertFocusAnimationStyle field value is set to fixedFocusWrap, specifies the width of a bitmap used as a visual divider between the last and first list or grid items when the list or grid wraps. Only set this field to use a value with a different appearance than the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="LayoutGroup">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Group&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The LayoutGroup node class manages the position of its child nodes by arranging them in a row from left to right (horizontal layout), or in a column from top to bottom (vertical layout). Fields provide options to control the spacing between children, the horizontal and vertical alignment, and the margins around the edges of the group.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/layoutgroup.md"&gt;https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/layoutgroup.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="true" name="addItemSpacingAfterChild" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Controls how the spaces specified in the itemSpacings field are inserted. By default, the field value is set to true. This causes the specified spaces to be inserted after the child is positioned. If the field value is set to false, the specified item space is inserted before the child is positioned</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="left" name="horizAlignment" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the alignment point in the horizontal direction. The effect of the value set depends on the whether the layoutDirection field value is set to either horiz or vert Value layoutDirection Use left vert Aligns the left edges of each child in the column, and sets the LayoutGroup node local x-coordinate origin at the left edge of the children left horiz Sets the LayoutGroup node local x-coordinate origin at the left edge of the first child center vert Aligns the centers of each child in the column, and sets the LayoutGroup node local x-coordinate origin at the center alignment point center horiz Sets the LayoutGroup node local x-coordinate origin at the center of the horizontal row of children right vert Aligns the right edges of each child in the column, and sets the LayoutGroup node local x-coordinate origin is at the right edge of the children right horiz Sets the LayoutGroup node local x-coordinate origin at the right edge of the last child custom vert Explicitly set the x translation of each child of the LayoutGroup. If the layoutDirection is "horiz", custom will not be a valid setting. Instead, "left" will be used to do the child layout.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="itemSpacings" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Controls the spacing before or after each child in the layout direction. By default, no space is added between the children</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="vert" name="layoutDirection" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Controls the layout direction Value Use horiz Positions the children in a row from left to right vert Positions the children in a column from top to bottom</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="top" name="vertAlignment" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the alignment point in the vertical direction. The effect of the value set depends on the whether the layoutDirection field value is set to either horiz or vert Value layoutDirection Use top horiz Aligns the top edges of each child in the row, and sets the LayoutGroup node local y-coordinate origin at the top edge of the children top vert Sets the LayoutGroup node local y-coordinate origin at the top edge of the first child center horiz Aligns the centers of each child in the row, and sets the LayoutGroup node local y-coordinate origin at the center alignment point vert vert Sets the LayoutGroup node local y-coordinate origin at the center of the vertical column of children bottom horiz Aligns the bottom edges of each child in the row, and sets the LayoutGroup node local y-coordinate origin at the bottom edge of the children bottom vert Sets the LayoutGroup node local y-coordinate origin at the bottom edge of the last child custom horiz Explicitly set the y translation of each child of the LayoutGroup. If the layoutDirection is "vert", custom will not be a valid setting. Instead, "top" will be used to do the child layout.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="ListPanel">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Panel&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The ListPanel node class allows you to easily create a Panel that adheres to the Roku layout and behavior for panels that contain a LabelList or MarkupList node. The ListPanel provides the following functionality:
Resolution appropriate positioning and sizing of the list node

Automatic key focus handling (i.e. the list node is set to receive key events when the ListPanel is given the key focus by the PanelSet)

Left-justified and right-justified labels that can be used to provide descriptive information about the list (e.g. "1 of N", etc.). These labels are automatically positioned and sized appropriately.

Simple mechanism for setting up the case where focusing any item in the grid triggers the creation of a new panel to add to the PanelSet

Default fade in/out animation of the next panel when the simple mechanism is used

Default fade out mask effect applied to the list items at the bottom of the panel&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/sliding-panels-nodes/listpanel.md"&gt;https://developer.roku.com/docs/references/scenegraph/sliding-panels-nodes/listpanel.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="clockText" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="createNextPanelOnItemFocus" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to true, the Create Next Panel mechanism is enabled (i.e. the createNextPanelIndex field will be set when a new list item receives the focus). When set to false, the Create Next Panel mechanism is disabled (i.e. the createNextPanelIndex field will not be set when a new list item receives the focus).</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1" name="goBackCount" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="hasNextPanel" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="-1" name="height" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="isFullScreen" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="isOffscreenLeft" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="Label node" name="leftLabel" type="Node">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The leftLabel field is set to a Label node that is positioned just above the left/top corner of the list. Setting the Label node's text field will cause that text string to be displayed. Setting other fields of the Label node can be used to adjust the Label's text color and other visual attributes.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="leftOnly" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="leftOrientation" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="105" name="leftPosition" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="NULL" name="list" type="Node">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The list field should be set to either a LabelList or MarkupList node to be displayed in the Panel. See the LabelList and MarkupList notes above about setting up the list's layout.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="nextPanel" type="Node">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When the createNextPanlOnItemFocus field is true, the nextPanel field should be set to a Panel node to the next panel to add to the PanelSet in response to the createNextPanelIndex field being set. It must be set immediately in repsonse to the createNextPanelIndex field being set.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="optionsAvailable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="overhangTitle" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="narrow" name="panelSize" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="Label node" name="rightLabel" type="Node">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The rightLabel field is set to a Label node that is positioned just above the right/top corner of the list. Setting the Label node's text field will cause that text string to be displayed. Setting other fields of the Label node can be used to adjust the Label's text color and other visual attributes.The rightLabel is often used to display a "1 of N" message that reflects the index of the list's focused item.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="selectButtonMovesPanelForward" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="showSectionLabels" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If showSectionLabels is set to true and the data for the list node is divided into sections, the Title attribute of the current section will be displayed as the leftLabel of the list. As the list items scroll, the leftLabel will smoothly transition as each section of the list reaches the focus position.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="388" name="width" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="MarkupGrid">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;ArrayGrid&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The MarkupGrid node class is a  is a generic grid class that can be used to display a set of items arranged into a 2D grid. The contents of each grid item is an instance of an XML component specified by the itemComponentName field. An instance of the XML component is used to display the data for each item in the grid data model. The appearance of the grid item as it enters/exits the grid focus position can be customized using scripting. SimpleMarkupList.zip is a sample channel containing a MarkupGrid where each item is an instance of an XML component. See the section MarkupGrid XML component for details.
The number of columns in the MarkupGrid node is fixed and the number of rows varies as needed to display all of the items in the grid data model. The items in the grid fill each row from left to right, then top to bottom. For example, if the grid data contains 8 items and the number of columns is set to 3, then items 1, 2 and 3 will be in the first row. Items 4, 5 and 6 will be in the second row. The third row will contain items 7 and 8 in the leftmost two columns and blank space in the right column.
The layout of rows and columns in the grid is very flexible. Possible layouts include:
a simple layout with all items in the grid having the same size

a layout with the items in some rows having varying heights and/or the items in some columns having varying widths

a layout with varying width rows and columns and items that occupy one or more rows and columns
The grid items can be organized into sections that are demarcated by labelled horizontal divider lines between the sections.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/markupgrid.md"&gt;https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/markupgrid.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="0" name="animateToItem" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to a valid item index, this causes the list to quickly scroll so that the specified index moves into the focus position.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="columnSpacings" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When specified, the columnSpacings field specifies the spacing after each column of the grid. This allows the spacing between columns to vary from column to column.The columnSpacings values override the horizontal spacing specified in element 0 of the itemSpacing field. If the columnSpacings array contains fewer elements than the number of columns specified by the numColumns field, element 0 of the itemSpacing field is used as the spacing after the excess columns.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="columnWidths" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When specified, the columnWidths field specifies the widths of the poster for each column of the grid. This allows the width of each column of the grid to vary from column to column.The columnWidths values override the width specified in element 0 of the basePosterSize field. If the columnWidths array contains fewer elements than the number of columns specified by the numColumns field, element 0 of the basePosterSize field is used as the width of the excess columns.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="none" name="content" type="ContentNode">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the content for the list. See Data bindings below for more details.If the data contains section markers, section dividers will be drawn between each section. These section dividers may contain an icon and/or a string.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="currFocusColumn" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Gives access to which column of a grid is in the focus position as the items scrolling around. So, currFocusColumn = 3.7 would mean that item 3 occupies 30% of the focus position while item 4 occupies 70% of the focus position. To maximize performance, the field should be kept to a minimum, as these scripts will run once during each render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="read-only" name="currFocusFeedbackOpacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;This field provides access to the current opacity of the focus feedback indicator. It can be used to have other items on the screen fade in/out when the focus feedback indicator fades in/out.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="currFocusRow" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Gives access to which row of a grid is in the focus position as the items scrolling around. So, currFocusRow = 3.7 would mean that item 3 occupies 30% of the focus position while item 4 occupies 70% of the focus position. To maximize performance, the field should be kept to a minimum, as these scripts will run once during each render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="currFocusSection" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Gives access to which section of a grid is in the focus position as the items scrolling around. So, currFocusSection = 3.7 would mean that item 3 occupies 30% of the focus position while item 4 occupies 70% of the focus position. To maximize performance, the field should be kept to a minimum, as these scripts will run once during each render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="drawFocusFeedback" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether or not the focus indicator bitmap is displayed</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="drawFocusFeedbackOnTop" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether the focus indicator bitmap is drawn below or on top of the list items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="fadeFocusFeedbackWhenAutoScrolling" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to true, the focus feedback indicator will quickly fade out when scrolling multiple items and fade back in when the scrolling ends. The focus feedback indicator will also after in and out when using the FFW/Rewind keys to scroll a page at a time. Additionally, the focus behavior has been modified for situations where all the items in a RowList row are visible on screen at once. In the past, the focus would step once, then begin to scroll smoothly. Now, the focus steps one-by-one through each itemcurrFocusFeedbackOpacityfloatread-onlyREAD_WRITEThis field provides access to the current opacity of the focus feedback indicator. It can be used to have other items on the screen fade in/out when the focus feedback indicator fades in/out. Additionally, the focus behavior has been modified for situations where all the items in a RowList row are visible on screen at once. In the past, the focus would step once, then begin to scroll smoothly. Now, the focus steps one-by-one through each item</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="fixedLayout" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When fixedLayout is false, the PosterGrid assigns each item in the data model to sequential cells in the grid (or the section if the data model includes section information). When fixedLayout is false, the data models using the X, Y, W and H attributes to specify which cells of the grid each item should occupy, where X is the column number, Y is the row number, W is the number of columns the item occupies and H is the number of rows the item occupies.Fixed layout should only be set to true for cases where one or more items in the grid should span multiple rows or columns.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xFFFFFFFF" name="focusBitmapBlendColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Blend the graphic image specified by focusBitmapUri with the specified color. If set to the default, 0xFFFFFFFF, no color blending will occur. Set this field to show a focus indicator graphic image with a different color than the image specified by focusBitmapUri.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="focusBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap file used for the focus indicator when the list has focus. In most cases, this should be a 9-patch image that specifies both expandable regions as well as margins. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="focusColumn" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the column that will have fixed focus for grids if the horizFocusAnimationStyle field value is set to fixedFocusWrap. This field is not used for lists</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="focusFootprintBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap file used for the focus indicator when the list does not have focus. In most cases, this should be a 9-patch image that specifies both expandable regions as well as margins. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xFFFFFFFF" name="focusFootprintBlendColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Blend the graphic image specified by focusFootprintBitmapUri with the specified color. If set to the default, 0xFFFFFFFF, no color blending will occur. Set this field to show a focus footprint indicator graphic image with a different color than the image specified by focusFootprintBitmapUri.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="focusRow" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the row that will have fixed focus if the vertFocusAnimationStyle field value is set to fixedFocusWrap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="floatingFocus" name="horizFocusAnimationStyle" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the how the focus indicator moves in a row of grid items in response to the remote direction pad Left and Right key presses. This field is not used for lists. The possible values are: Option Effect floatingFocus Causes the focus indicator to float left or right until it reaches the end of the row, at which point the focus indicator will stay fixed on the first or last item in the row, and the items will scroll left or right if there were items that were not visible. fixedFocusWrap Causes the row to wrap around when the focus indicator reaches the first or last item in the row, as long as the row contains enough items to fill the row. If the row does not contain enough items to fill the row, the focus indicator will float left and right.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="imageWellBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap file to use to suggest where images would appear for empty grids and empty sections of grids. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="itemClippingRect" type="rect2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a clipping region for the list or grid items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="itemComponentName" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the name of a XML component for the grid items. An instance of this component is created on demand for each visible item of the grid. The XML component must define a specific interface as detailed in MarkupGrid XML component below.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0,0" name="itemSize" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the width and height of the default size for the grid items.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0,0" name="itemSpacing" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the horizontal and vertical spacing between the list or grid items. For lists, the vector2d Y-value specifies the vertical spacing between items in the list, and the vector2d X-value is ignored</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="jumpToItem" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to a valid item index, this causes the list to immediately update so that the specified index moves into the focus position.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="numColumns" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of columns in the grid</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1" name="numRenderPasses" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of rendering operations to display a complex list or grid. This allows you to achieve a performance increase by specifying that individual sub-elements of the list or grid items occur on sequential rendering operations, rather than all of the item sub-elements being rendered in one rendering operation, which is the default. If you set this field to a value greater than 1, you must specify the rendering operation number for each of the item sub-elements as the renderPass field value for that sub-element. No sub-element that has a renderPass field value of 0 (the default), or has a renderPass field value greater than the value of the numRenderPasses field, will render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="12" name="numRows" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of visible rows displayed. The actual number of rows may be more or less than the number of visible rows specified depending on the number of items in the list content.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="rowHeights" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When specified, the rowHeights field specifies the heights of the poster for each row of the grid. This allows the height of each row of the grid to vary from row to row.The rowHeights values override the height specified in element 1 of the basePosterSize field. If the rowHeights array contains fewer elements than the number of rows needed to display all the items in the grid, element 1 of the basePosterSize field is used as the height of the excess rows.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="rowSpacings" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When specified, the rowSpacings field specifies the spacing after each row of the grid. This allows the spacing between rows to vary from row to row.The rowSpacings values override the vertical spacing specified in element 1 of the itemSpacing field. If the rowSpacings array contains fewer elements than the number of rows needed to display all the items in the grid, element 1 of the itemSpacing field is used as the spacing after the excess rows.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="sectionDividerBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies a custom bitmap to use as a visual divider between the sections of the list or grid. Only set this field to use a bitmap with a different appearance than the system default. For sections that do not include an icon or a title, the system default or custom bitmap specified as the wrapDividerBitmapUri field value is used for the section dividers. In most cases, you will want to use a 9-patch PNG bitmap with both expandable regions, which is the type of bitmap used as the system default.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="sectionDividerFont" type="font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the font for section divider labels</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="40" name="sectionDividerHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of the section dividers. The width of the section dividers is determined by the width of the list items as specified by the itemSize field width value.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="sectionDividerLeftOffset" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Number of pixels to offset the left edge of the section divider relative to the left edge of the list items.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="117" name="sectionDividerMinWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the minimum width of the section divider bitmap. The section divider label will be ellipsized if necessary in order to ensure that the section divider bitmap meets the minimum width.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="10" name="sectionDividerSpacing" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the spacing between the items appearing in the section divider (e.g. the spacing between the section divider icon, the section divider label, and the section divider bitmap). Note the section divider does not always include an icon and/or a title.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xddddddff" name="sectionDividerTextColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the text color for section divider labels</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="sectionDividerWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies the width of the section divider bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="floatingFocus" name="vertFocusAnimationStyle" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the how the focus indicator moves in a list or a column of grid items in response to the remote direction pad Up and Down key presses. The possible values are: Option Effect floatingFocus Causes the focus indicator to float up or down until it reaches the end of the list or grid column, at which point the focus indicator will stay fixed on the first or last item in the list or grid column, and the items will scroll up or down if there are items that were not visible. Note that when this style is set, section dividers are not rendered. fixedFocusWrap Causes the column to wrap around when the focus indicator reaches the first or last item in the list or grid column, as long as the list or grid column contains enough items to fill the list or grid column. If the list or grid column does not contain enough items to fill the list or grid column, the focus indicator will float up and down. fixedFocus Causes the focus to stay fixed on the upper leftmost item. As the user scrolls down, the row containing the previously selected item scrolls up off screen. Scrolling continues until the last row is reached.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="wrapDividerBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap file to use as a wrap divider, the visual separator between the last and first list items when the list wraps. In most cases, this should be a 9-patch image that specifies both expandable regions. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="wrapDividerHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of the wrap divider, the visual separator between the last and first list items when the list wraps. The bitmap for the wrap divider is scaled to this height. The width of the wrap divider is set to the width of the list items as specified by the itemSize field width value.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="wrapDividerWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Additionally, the focus behavior has been modified for situations where all the items in a RowList row are visible on screen at once. In the past, the focus would step once, then begin to scroll smoothly. Now, the focus steps one-by-one through each item.If the vertFocusAnimationStyle field value is set to fixedFocusWrap, specifies the width of a bitmap used as a visual divider between the last and first list or grid items when the list or grid wraps. Only set this field to use a value with a different appearance than the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="MarkupList">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;ArrayGrid&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The MarkupList node class is a generic list class that can be used to display a list of items.
The contents of each list item is an instance of an XML component specified by the itemComponentName field value. An instance of the XML component is used to display the data for each item in the list data model. The appearance of the list item as it enters/exits the list focus position can be customized using BrightScript.
SimpleMarkupList.zip is a sample channel containing a MarkupList where each item is an instance of an XML component. See the MarkupList XML component section for details.
Example
The following example displays the use of the MarkupList node.
markuplist-node&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/markuplist.md"&gt;https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/markuplist.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="0" name="animateToItem" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Write-OnlyWhen set to a valid item index, this causes the list to quickly scroll so that the specified index moves into the focus position.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="columnSpacings" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies differing spaces between each grid column, to allow the spacing between columns to vary from column to column. This field is not used by lists. The specified values override the itemSpacing field vector2d X-value for each grid column corresponding to its position in the array, in left to right order. If the array contains fewer elements than the number of columns needed to display all the items in the grid, the itemSpacing field vector2d X-value is used for any unspecified columns</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="columnWidths" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies differing widths for each grid column, to allow the width of each column to vary from column to column. This field is not used by lists. The specified values override the itemSize field vector2d X-value for each grid column corresponding to its position in the array, in left to right order. If the array contains fewer elements than the number of columns needed to display all the items in the grid, the itemSize field vector2d X-value is used for any unspecified columns</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="none" name="content" type="ContentNode">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the content for the list. See Data bindings below for more details.If the data contains section markers, section dividers will be drawn between each section. These section dividers may contain an icon and/or a string.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="currFocusColumn" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Gives access to which column of a grid is in the focus position as the items scrolling around. So, currFocusColumn = 3.7 would mean that item 3 occupies 30% of the focus position while item 4 occupies 70% of the focus position. To maximize performance, the field should be kept to a minimum, as these scripts will run once during each render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="read-only" name="currFocusFeedbackOpacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;This field provides access to the current opacity of the focus feedback indicator. It can be used to have other items on the screen fade in/out when the focus feedback indicator fades in/out.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="currFocusRow" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Gives access to which row of a grid is in the focus position as the items scrolling around. So, currFocusRow = 3.7 would mean that item 3 occupies 30% of the focus position while item 4 occupies 70% of the focus position. To maximize performance, the field should be kept to a minimum, as these scripts will run once during each render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="currFocusSection" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Gives access to which section of a grid is in the focus position as the items scrolling around. So, currFocusSection = 3.7 would mean that item 3 occupies 30% of the focus position while item 4 occupies 70% of the focus position. To maximize performance, the field should be kept to a minimum, as these scripts will run once during each render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="drawFocusFeedback" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether or not the focus indicator bitmap is displayed</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="drawFocusFeedbackOnTop" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether the focus indicator bitmap is drawn below or on top of the list items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="fadeFocusFeedbackWhenAutoScrolling" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to true, the focus feedback indicator will quickly fade out when scrolling multiple items and fade back in when the scrolling ends. The focus feedback indicator will also after in and out when using the FFW/Rewind keys to scroll a page at a time. Additionally, the focus behavior has been modified for situations where all the items in a RowList row are visible on screen at once. In the past, the focus would step once, then begin to scroll smoothly. Now, the focus steps one-by-one through each itemcurrFocusFeedbackOpacityfloatread-onlyREAD_WRITEThis field provides access to the current opacity of the focus feedback indicator. It can be used to have other items on the screen fade in/out when the focus feedback indicator fades in/out. Additionally, the focus behavior has been modified for situations where all the items in a RowList row are visible on screen at once. In the past, the focus would step once, then begin to scroll smoothly. Now, the focus steps one-by-one through each item</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="fixedLayout" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies that a grid will have a layout of items of different widths configured by parameters included in a ContentNode node for the grid. This field is not used by lists</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xFFFFFFFF" name="focusBitmapBlendColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Blend the graphic image specified by focusBitmapUri with the specified color. If set to the default, 0xFFFFFFFF, no color blending will occur. Set this field to show a focus indicator graphic image with a different color than the image specified by focusBitmapUri.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="focusBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap file used for the focus indicator when the list has focus. In most cases, this should be a 9-patch image that specifies both expandable regions as well as margins. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="focusColumn" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the column that will have fixed focus for grids if the horizFocusAnimationStyle field value is set to fixedFocusWrap. This field is not used for lists</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="focusFootprintBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap file used for the focus indicator when the list does not have focus. In most cases, this should be a 9-patch image that specifies both expandable regions as well as margins. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xFFFFFFFF" name="focusFootprintBlendColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Blend the graphic image specified by focusFootprintBitmapUri with the specified color. If set to the default, 0xFFFFFFFF, no color blending will occur. Set this field to show a focus footprint indicator graphic image with a different color than the image specified by focusFootprintBitmapUri.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="focusRow" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the row that will have fixed focus if the vertFocusAnimationStyle field value is set to fixedFocusWrap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="floatingFocus" name="horizFocusAnimationStyle" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the how the focus indicator moves in a row of grid items in response to the remote direction pad Left and Right key presses. This field is not used for lists. The possible values are: Option Effect floatingFocus Causes the focus indicator to float left or right until it reaches the end of the row, at which point the focus indicator will stay fixed on the first or last item in the row, and the items will scroll left or right if there were items that were not visible. fixedFocusWrap Causes the row to wrap around when the focus indicator reaches the first or last item in the row, as long as the row contains enough items to fill the row. If the row does not contain enough items to fill the row, the focus indicator will float left and right.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="itemClippingRect" type="rect2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a clipping region for the list or grid items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="itemComponentName" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the name of a XML component for the list items. An instance of this component is created on demand for each visible item of the list. The XML component must define a specific interface as detailed in MarkupList XML component below.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0,0" name="itemSize" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the width and height of each item in the list</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0,0" name="itemSpacing" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The second value of the vector specifies the vertical spacing between items in the list. The first value of the vector is ignored.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="jumpToItem" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Write-OnlyWhen set to a valid item index, this causes the list to immediately update so that the specified index moves into the focus position.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="numColumns" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of columns in a grid. This field is not used for lists</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1" name="numRenderPasses" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of rendering operations to display a complex list or grid. This allows you to achieve a performance increase by specifying that individual sub-elements of the list or grid items occur on sequential rendering operations, rather than all of the item sub-elements being rendered in one rendering operation, which is the default. If you set this field to a value greater than 1, you must specify the rendering operation number for each of the item sub-elements as the renderPass field value for that sub-element. No sub-element that has a renderPass field value of 0 (the default), or has a renderPass field value greater than the value of the numRenderPasses field, will render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="12" name="numRows" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of visible rows displayed. The actual number of rows may be more or less than the number of visible rows specified depending on the number of items in the list content.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="rowHeights" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies differing heights for each list or grid row, to allow the height of each row to vary from row to row. The specified values override the itemSize field vector2d Y-value for each list or grid row corresponding to its position in the array, in top to bottom order. If the array contains fewer elements than the number of rows needed to display all the items in the list or grid, the itemSize field vector2d Y-value is used for any unspecified rows</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="rowSpacings" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies differing spaces between each list or grid row, to allow the spacing between rows to vary from row to row. The specified values override the itemSpacing field vector2d Y-value for each list or grid row corresponding to its position in the array, in top to bottom order. If the array contains fewer elements than the number of rows needed to display all the items in the list or grid, the itemSpacing field vector2d Y-value is used for any unspecified rows</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="sectionDividerBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies a custom bitmap to use as a visual divider between the sections of the list or grid. Only set this field to use a bitmap with a different appearance than the system default. For sections that do not include an icon or a title, the system default or custom bitmap specified as the wrapDividerBitmapUri field value is used for the section dividers. In most cases, you will want to use a 9-patch PNG bitmap with both expandable regions, which is the type of bitmap used as the system default.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="sectionDividerFont" type="font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the font for section divider labels</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="40" name="sectionDividerHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of the section dividers. The width of the section dividers is determined by the width of the list items as specified by the itemSize field width value.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="sectionDividerLeftOffset" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Number of pixels to offset the left edge of the section divider relative to the left edge of the list items.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="117" name="sectionDividerMinWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the minimum width of the section divider bitmap. The section divider label will be ellipsized if necessary in order to ensure that the section divider bitmap meets the minimum width.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="10" name="sectionDividerSpacing" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, and the section dividers are specified to include an icon and/or a label, specifies the spacing between the icon, label, and section divider bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xddddddff" name="sectionDividerTextColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the text color for section divider labels</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="sectionDividerWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies the width of the section divider bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="floatingFocus" name="vertFocusAnimationStyle" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the how the focus indicator moves in a list or a column of grid items in response to the remote direction pad Up and Down key presses. The possible values are: Option Effect floatingFocus Causes the focus indicator to float up or down until it reaches the end of the list or grid column, at which point the focus indicator will stay fixed on the first or last item in the list or grid column, and the items will scroll up or down if there are items that were not visible. Note that when this style is set, section dividers are not rendered. fixedFocusWrap Causes the column to wrap around when the focus indicator reaches the first or last item in the list or grid column, as long as the list or grid column contains enough items to fill the list or grid column. If the list or grid column does not contain enough items to fill the list or grid column, the focus indicator will float up and down. fixedFocus Causes the focus to stay fixed on the upper leftmost item. As the user scrolls down, the row containing the previously selected item scrolls up off screen. Scrolling continues until the last row is reached.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="wrapDividerBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap file to use as a wrap divider, the visual separator between the last and first list items when the list wraps. In most cases, this should be a 9-patch image that specifies both expandable regions. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="wrapDividerHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of the wrap divider, the visual separator between the last and first list items when the list wraps. The bitmap for the wrap divider is scaled to this height. The width of the wrap divider is set to the width of the list items as specified by the itemSize field width value.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="wrapDividerWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Additionally, the focus behavior has been modified for situations where all the items in a RowList row are visible on screen at once. In the past, the focus would step once, then begin to scroll smoothly. Now, the focus steps one-by-one through each item.If the vertFocusAnimationStyle field value is set to fixedFocusWrap, specifies the width of a bitmap used as a visual divider between the last and first list or grid items when the list or grid wraps. Only set this field to use a value with a different appearance than the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="MaskGroup">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Group&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The MaskGroup node class allows an alpha mask bitmap to be applied to the rendering of its children. This allows effects such as having a list fade out at the bottom to be easily created.
MaskGroup nodes do not work on all Roku players (specifically, MaskGroup nodes only work on players that support OpenGL). On players whose graphics do not support OpenGL, a MaskGroup node just renders its children without applying the extra alpha mask. For this reason, you should avoid using the MaskGroup node for anything other than decorative purposes, such as creating a fading effect at the bottom of the screen, where the user interface information value of the screen element is not affected by the lack of the MaskNode node rendering.
Unlike other bitmaps, the MaskGroup node class does not work with 9-patch images. If the bitmap size does not match the group bounding rectangle, the edge rows of the mask are repeated as needed.
For example, suppose the MaskGroup node bounding rectangle has an origin at (0, 0), a width of 150 and a height of 80. If the mask bitmap were also 150 by 80, and the maskOffset and maskSize field values were left at their default values of 0, 0, then each pixel of the mask bitmap would be applied to the corresponding pixel of the MaskGroup node bounding rectangle. The figure below illustrates that case. On the right is a MaskGroup node that contains a Poster node. In the center is an alpha bitmap with the same size as the Poster node. On the right is the result of rendering the MaskGroup node with the image in the center used as a mask.
maskExample1
The maskSize and maskOffset field values can be used to scale and offset the mask bitmap relative to the group coordinate system, as shown in the figure below. The mask is the same bitmap as in the figure above. In the below figure, the maskOffset field value has been set to (50, 30), offsetting the origin of the mask bitmap coordinate system relative to the origin of the MaskGroup node coordinate system 50 pixels to the left and 30 pixels down.The maskSize field value has been set to (100, 50), This causes the width of the mask bitmap to be scaled from 150 to 100, and the height of the mask bitmap to be scaled from 80 to 50, so that the mask right edge aligns with the right edge of the MaskGroup node bounding rectangle, and the mask bottom edge aligns with the bottom edge of the MaskGroup node bounding rectangle. The center of the figure shows the mask with the maskOffset and maskSize field values applied overlaid on top of the MaskGroup node. The right side of the figure shows the result of applying the mask to the MaskGroup node. Notice that the left column of pixels in the mask is used as the mask for all columns of the MaskGroup node that lie to the left of the mask, causing those columns to be rendered with full opacity. Similarly, and the top row of the mask is used as the mask for all rows of the MaskGroup node that lie above the mask, causing each of the rows to fade out on the right.
maskExample2
As shown in above, the transformed mask may not overlay all the rendered pixels of the MaskGroup node. In that case, the leftmost (rightmost) columns of the mask bitmap are used as the mask for any MaskGroup node pixels that are to the left (right) of the transformed mask. The top (bottom) row of the mask bitmap is used as the mask for MaskGroup node pixels that are above (below) the transformed mask.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/control-nodes/maskgroup.md"&gt;https://developer.roku.com/docs/references/scenegraph/control-nodes/maskgroup.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0, 0" name="maskOffset" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies an offset of the mask coordinate system relative to the group coordinate system. For example, if the maskOffset field value is set to 100, 0, then mask pixel 0, 0 is used as the alpha value for pixels rendered for the MaskGroup node coordinate 100, 0</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0, 0" name="maskSize" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a scaling factor of the alpha mask coordinate system relative to the group coordinate system. If either element of the maskSize field value does not match the corresponding size of the mask bitmap, the mask bitmap is scaled to the specified size in the dimension. Setting either element of the maskSize field vector to 0 causes the mask bitmap to be used at its actual size in that dimension</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="maskUri" type="URI_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap to use for the group alpha mask. The alpha value of each pixel rendered in the group is multiplied by the value of a pixel in the alpha mask. The mapping from pixel coordinates in the group to mask pixel coordinates is controlled by the maskSize and maskOffset field values. Those fields define a coordinate system for the mask bitmap relative to the group coordinate system. This mask coordinate system is used to map mask pixels to their corresponding pixels in the MaskGroup node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="MiniKeyboard">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Group&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The MiniKeyboard node class allows a user to enter a string of letters and numerals. The string entered is displayed in a TextEditBox node that is part of the MiniKeyboard node.
The MiniKeyboard node is intended for users to enter a simple case-insensitive string consisting of the letters A-Z and the numerals 0-9. It is intended for use in functions such as "Search", where the entered string need not support general case-sensitive text entry. For general text entry, use a Keyboard node instead.
The MiniKeyboard node must have the key focus in order to work properly.
The default appearance of the MiniKeyboard node is very transparent, allowing the keyboard to pick up most of its color from what is rendered underneath it. The appearance can be customized by changing the keyboardBitmapUri and other fields.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/widget-nodes/minikeyboard.md"&gt;https://developer.roku.com/docs/references/scenegraph/widget-nodes/minikeyboard.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="focusBitmapUri" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the URI of an image file to be loaded to replace the keyboard focus indicator. This should be a 9-patch image so that it can be stretched to the appropriate size for the double width keys</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xffffffff" name="focusedKeyColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the color of the key labels and icons when the Keyboard node has the focus</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xffffffff" name="keyColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the color of the key labels and icons when the Keyboard node does not have the focus</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="keyboardBitmapUri" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the URI of an image file to be loaded to replace the default keyboard image drawn underneath the key label and icons.This image must be carefully designed so that the key positions match the default image. Template images for SD, HD and FHD resolutions are provided below.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="lowerCase" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether the 26 letter keys are displayed as lowercase or uppercase</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="showTextEditBox" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether or not the Keyboard node internal TextEditBox node is displayed. In most cases, it is desirable to display the TextEditBox node so that the user can see the string as it is entered. In some cases though, you might want to show only the keyboard part of the Keyboard node. In those cases, the text field of the node will still contain the string entered by the user, so it can displayed in some different manner</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="text" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Contains the string of characters that has been entered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Overhang">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Group&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The Overhang node provides a information bar that is displayed at the top of a screen in many Roku channels. The regions occupied by the overhang can be filled with either a solid color or a bitmap.
On the left side, a logo bitmap and/or a string can be displayed. If both are displayed, a vertical divider is drawn to separate them. The string is typically set to display a reminder to the user of their current location in the interface. For example, in the Roku homescreen, the string is set to "Search" while the user in the search entry portion of the user interface. Then when the user explores a search result, the string is changed to reflect the name of the content being explored.
On the right side, a clock and/or an indicator that the options key (*) is available can be displayed. If both are displayed, a vertical divider is drawn to separate them.
The appearance and contents of the Overhang can be customized by setting its fields to the desired values.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/sliding-panels-nodes/overhang.md"&gt;https://developer.roku.com/docs/references/scenegraph/sliding-panels-nodes/overhang.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="&quot;&quot;" name="backgroundUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xddddddff" name="clockColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="clockText" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0x232323ff" name="color" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="115" name="height" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="leftDividerUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="leftDividerVertOffset" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="logoBaselineOffset" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="logoUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="optionsAvailable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xddddddff" name="optionsColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xdddddd44" name="optionsDimColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xffffffff" name="optionsIconColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xffffffff" name="optionsIconDimColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="optionsMaxWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="optionsText" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="rightDividerUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="rightDividerVertOffset" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="showClock" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="showOptions" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="title" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xddddddff" name="titleColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="OverhangPanelSetScene">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Scene&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The OverhangPanelSetScene node class provides a convenient way to create a Scene node that has set with default Overhang and PanelSet nodes. The layout of the Overhang and PanelSet use the default sizes for SDK2 channels. The node provides access to the PanelSet and Overhang via fields that contain the node objects.
scene = screen.CreateScene("OverhangPanelSetScene")
&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/sliding-panels-nodes/overhangpanelsetscene.md"&gt;https://developer.roku.com/docs/references/scenegraph/sliding-panels-nodes/overhangpanelsetscene.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="true" name="backExitsScene" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, a Back key press causes the scene to exit, back to the last user-focused item. If false, a Back key press does not cause the scene to exit. In order for the Back key to cause the scene to exit, the remote control focus must be explicitly set on the scene, or a child of the scene, using the ifSGNodeFocus interface setFocus(true) function. A Home key press always causes the scene to exit.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0x000000FF" name="backgroundColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a background color for the scene. This color is only used if the backgroundURI field is set to an empty string. For example:  scene.backgroundColor="0xEB1010FF"  scene.backgroundUri = ""</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="invalid" name="backgroundURI" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a graphic image file to be used for the Scene node background.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="currentDesignResolution" type="assocarray">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;This read-only field is set when the Scene is initialized. It indicates which of a channel's design resolutions (per manifest's ui\_resolutions value) is being used, based on the player model and connected display type. Previously, a developer could deduct the same information by using both roDeviceInfo.GetUIResolution and roAppInfo.getValue("ui_resolutions"). This new field simplifies the process.  The field is set to an AA with two numeric-valued keys — width and height — as well as a string value indicating the current design resolution ("HD", "FHD" or "SD"). ${currentDesignResolutionCode}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="invalid" name="dialog" type="Node">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Setting this field to a node extended from a Dialog node causes the dialog to be displayed</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Panel">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Group&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The Panel node is used to create sliding panels for channel UI, similar to those in the Roku OS home screen.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/sliding-panels-nodes/panel.md"&gt;https://developer.roku.com/docs/references/scenegraph/sliding-panels-nodes/panel.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="clockText" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1" name="goBackCount" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="hasNextPanel" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="-1" name="height" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="isFullScreen" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="isOffscreenLeft" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="leftOnly" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="leftOrientation" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="105" name="leftPosition" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="optionsAvailable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="overhangTitle" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="narrow" name="panelSize" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="selectButtonMovesPanelForward" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="388" name="width" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="PanelSet">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Group&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The PanelSet node provides the panel sliding behavior seen in the Roku home screen. The PanelSet node manages the position of a set of child Panel nodes, and implements the left and right panel sliding behavior. Once a Panel node has been added to a PanelSet node, it remains a child of the PanelSet node unless it is replaced by another Panel node, or slides completely off the right side of the screen.
The PanelSet node is designed to display two Panel nodes in most cases, one Panel node on the left and one on the right. When the PanelSet node has focus, and the user presses the Left (or Back) or Right remote control key, the panels slide to the left or right one position.
For example, suppose the PanelSet node has two Panel nodes as children, panel A and panel B. When the user presses the Right key, a new panel, panel C, should be created and added as a child of the PanelSet node. Adding a panel as a child of the PanelSet node causes all the panels to slide left one position, so that panel A is now offscreen to the left, panel B is in the left position, and panel C is in the right position. If the user presses the Right key again, a new panel, panel D, should be created and added as a child node of the PanelSet node. Adding panel D causes the panels to slide left again so that panels A and B are offscreen to the left, panel C is in the left position, and panel D is in the right position.
At this point, if the user presses the Left key (or Back key), the panels will slide one position to the right, back towards the original home position, so panel D will slide offscreen to the right, panel C will slide to the right position, and panel B will slide to the left position (panel A is still offscreen to the left). When the sliding animation ends, since panel D is offscreen to the right, it is automatically removed as a child node of the PanelSet node.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/sliding-panels-nodes/panelset.md"&gt;https://developer.roku.com/docs/references/scenegraph/sliding-panels-nodes/panelset.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="605" name="height" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of the PanelSet node. In most cases, this is set to the the display height minus the overhang height.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="500" name="slideDuration" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Milliseconds of the slide transition. The default is 1/2 second.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1280" name="width" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the width of the PanelSet node. In most cases, this is set to the display width (such as 1280 for HD).</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="ParallelAnimation">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;AnimationBase&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The ParallelAnimation node class allows you to specify that a set of animations should occur simultaneously. The children of a ParallelAnimation node specify the set of animations to be executed. Note that the use of the delay field in the child animations allows the start of the child animations to be offset from one another, if desired.
The state field is set to running when any of the child animations is in progress. Once all the animations have run to completion, the state field is set to stopped.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/animation-nodes/parallelanimation.md"&gt;https://developer.roku.com/docs/references/scenegraph/animation-nodes/parallelanimation.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="none" name="control" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Controls the animation. Supported options include: Option Effect none Initial state with no associated action start Always plays the animation from the beginning stop Stops the animation in its current state pause Pauses the animation in its current state resume If paused, resumes the animation from its current state. If the animation is not paused, plays the animation from the beginning. finish Jumps to the end of the animation, then stops. All animated fields will be immediately set to their final values as if the animation had completed.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="delay" type="time">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Delays the start of the animation by the specified number of seconds</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="repeat" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Controls whether the animation stops when it finishes (false) or repeats from the beginning (true)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="ParentalControlPinPad">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;ParentalControlPinPad is a variant of the PinPad component, although it does have a few key differences: The pin, pinLength, and secureMode fields are made private (i.e., not accessible to BrightScript, and secureMode set to true).
There are two use cases for the ParentalControlPinPad node:
If the user enters the correct pin, a 2-hour override of content blocking starts, similar to the system behavior on RokuTV

If the user enters an incorrect PIN, the text fields are cleared automatically&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/widget-nodes/parentalcontrolpinpad.md"&gt;https://developer.roku.com/docs/references/scenegraph/widget-nodes/parentalcontrolpinpad.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="&quot;&quot;" name="focusBitmapUri" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the URI of an image file to be loaded to replace the keyboard focus indicator. This should be a 9-patch image so that it can be stretched to the appropriate size for the double width keys.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xffffffff" name="focusedKeyColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the color of the key labels and icons when the keyboard has the focus</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xffffffff" name="keyColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the color of the key labels and icons when the keyboard does not have the focus</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="keyboardBitmapUri" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the URI of an image file to be loaded to replace the default keyboard image drawn underneath the numeric keys and icons. Note that this image must be carefully designed so that the key positions match the default image. Template images for SD, HD and FHD resolutions are provided below.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="pin" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Contains the string of numbers that have been entered.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="pinDisplayBitmapUri" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifed the URI of an image file to be loaded to replace the default box drawn underneath each entered digit in the pin display. This should be a 9-patch image so that it can be stretched to appropriate size depending on the pinLength field.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xffffffff" name="pinDisplayTextColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the color of the numbers displayed in the pin display boxes</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="4" name="pinLength" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Contains the maximum number of digits that can be entered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="incomplete" name="pinSuccess" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Read-only"true": Content is now unblocked"false": Pin incorrect, "incomplete": a full pin is not entered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="secureMode" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to true, each digit entered is displayed briefly, then replaced with an asterisk. When false, the entered digits always remain visible.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="showPinDisplay" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether or not the pin display that shows the entered digits is visible. In most cases, it is desirable to display the entered digits so that the user can see the string as it is entered. In some cases though, you might want to only show the keyboard part of the PinPad node.In those cases, the pinfield of the node will still contain the string entered by the user, so that it can displayed in some different manner.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="PinDialog">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Dialog&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The PinDialog node class is a special type of Dialog node that prompts the user to enter a numeric string. The PinDialog node class includes an internal PinPad node to allow the user to input a numeric value, such as a PIN.
The PinDialog node class allows you to add a title (by setting the Dialog node title field), a message (by setting the Dialog node message field), and a set of action buttons (by setting the Dialog node buttons field). The bulletText and graphicUrl fields of the Dialog node should not be set. If those fields are set, the layout of the PinDialog node will likely not look correct.
Typically, you will want to set the Dialog node title field to prompt the user to enter a PIN, and add "OK" and "Cancel" buttons by setting the Dialog node buttons field to "OK", "Cancel", then observe the Dialog node buttonSelected field to react when the user presses one of those buttons. At any time, the PinDialog node pin field can be accessed to obtain the PIN value entered by the user.
The PinDialog node displays a privacy hint at the bottom of the dialog instructing the user how to show/hide the PinPad node focus indicator with the Options remote key. This provides more privacy for the user when entering a PIN. You should not override this default behavior of the Options remote key in the PinDialog node.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/dialog-nodes/pindialog.md"&gt;https://developer.roku.com/docs/references/scenegraph/dialog-nodes/pindialog.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="&quot;&quot;" name="backgroundUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap to be displayed as the dialog background. Usually this is a 9-patch image to support dynamic resizing. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="bulletText" type="array_of_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;An array of strings to be displayed as a list of bullet points</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="bulletTextColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, the color of the bullet point text</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="bulletTextFont" type="Font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, the font of the bullet point text</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="buttonGroup" type="ButtonGroup">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The dialog internal ButtonGroup node. This allows the appearance attributes of all the Button nodes in the dialog to be easily modified. Since the ButtonGroup node class is derived from the LayoutGroup node class, additional non-Button node children can also be added</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="buttons" type="array_of_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Allows a set of Button nodes to be easily created by providing an array of Button labels. Each string in the array will result in a Button node to be added to the ButtonGroup, using the string as the Button label</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="close" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Causes the dialog to be dismissed. The dialog is dismissed whenever the close field is set, regardless of whether the field is set to true or false</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="dividerUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a bitmap to be displayed as the divider between the title region and the remainder of the dialog. Usually this is a 9-patch image to support dynamic resizing. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="focusButton" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Causes the button with the specified index to receive the focus when the ButtonGroup node has the key focus. Note that if the ButtonGroup node does not have the key focus when the focusButton field is set, the specified button will display the focus footprint as its background</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="graphicHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of the bitmap graphic in local coordinates. If set to 0.0, the height of the bitmap from the image file is used. If set to a value greater than 0.0, the bitmap is scaled to that height</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="graphicUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a bitmap to be displayed in the dialog. The bitmap is displayed below the bullet text region and above the buttons. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="graphicWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the width of the bitmap graphic in local coordinates. If set to 0.0, the width of the bitmap from the image file is used. If set to a value greater than 0.0, the bitmap is scaled to that width</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="iconUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a bitmap to be displayed as a small icon next to the dialog title. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="-1.0" name="maxHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the maximum height of the dialog. By default, the Dialog will scale the height based on the contents but never larger than the height of the display resolution. Setting maxHeight smaller than the contents will switch to a scrollable text region</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="message" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The string to be displayed in the message region of the dialog. Newline and carriage return characters in the string result in the message being displayed as several lines of text. In BrightScript, to include a newline in a string, use chr(10). For example: message = "First line" + chr(10) + "Second line"</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="messageColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, the color of the message text</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="messageFont" type="Font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, the font of the message text</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="numberedBullets" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If set to true, the bulletText will be displayed with numbers rather than bullets</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="optionsDialog" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If set to true, the dialog is automatically dismissed when the Options key is pressed</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="pin" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Can be used to explicitly set the internal PinPad node PIN value, as well as to access the PIN value entered by the user</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="pinPadFocused" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether or not PinPad will be focused when PinDialog is created</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="privacyHintColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, the color of the privacy hint shown at the bottom of the dialog</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="title" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Title of the dialog box</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="titleColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, the color of the title</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="titleFont" type="Font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, the font of the title</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="wasClosed" type="Event">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set when the dialog has been closed. The field is set when the dialog close field is set, when the Back or Home key has been pressed, when the Options key has been pressed if the optionsDialog field is set to true, and when the dialog is dismissed because another dialog was displayed</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="-1.0" name="width" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the width of the dialog. By default, this value is pulled from the system theme</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="PinPad">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Group&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The PinPad node is a simple widget that allows you to enter a fixed length numeric string. The string that is entered is displayed in a set of boxes above the PinPad node keyboard, with each box displaying a single numeral of the entered string.
The PinPad node must have the key focus in order to work properly.
The default appearance of the PinPad node is very transparent, allowing the node to pick up most of its color from what is rendered underneath it. The appearance can be customized by changing the keyboardBitmapUri and other fields.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/widget-nodes/pinpad.md"&gt;https://developer.roku.com/docs/references/scenegraph/widget-nodes/pinpad.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="focusBitmapUri" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the URI of an image file to be loaded to replace the keyboard focus indicator. This should be a 9-patch image so that it can be stretched to the appropriate size for the double width keys</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="focusVisible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether or not focused key is visible when PinPad is created</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xffffffff" name="focusedKeyColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the color of the key labels and icons when the keyboard has the focus</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="itemFocused" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies index of the key label that will be in focus when PinPad is created</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xffffffff" name="keyColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the color of the key labels and icons when the keyboard does not have the focus</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="keyboardBitmapUri" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the URI of an image file to be loaded to replace the default keyboard image drawn underneath the numeric keys and iconsThis image must be carefully designed so that the key positions match the default image. Template images for SD, HD and FHD resolutions are provided below.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="pin" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Contains the string of numbers that have been entered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="pinDisplayBitmapUri" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifed the URI of an image file to be loaded to replace the default box drawn underneath each entered digit in the pin display. This should be a 9-patch image so that it can be stretched to appropriate size depending on the pinLength field</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xffffffff" name="pinDisplayTextColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the color of the numbers displayed in the pin display boxes</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="4" name="pinLength" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Contains the maximum number of digits that can be entered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="secureMode" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to true, each digit entered is displayed briefly, then replaced with an asterisk. When false, the entered digits always remain visible</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="showPinDisplay" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether or not the pin display that shows the entered digits is visible. In most cases, it is desirable to display the entered digits so that the user can see the string as it is entered.You may want to only show the keyboard part of the PinPad node. In those cases, the pin field of the node will still contain the string entered by the user, so that it can displayed in some different manner.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Poster">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Group&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The Poster node class draws an image with the top/left corner located at the origin of the node local coordinate system. Because the Poster node class extends the Group node class, a Poster node can have child nodes. For example, a Poster node might have a Label node as a child that draws an annotation on top of the poster.
The Poster node class supports JPEG and PNG image files.
The Poster node class includes the capability to automatically scale graphical images to different sizes as they are loaded, by setting the loadWidth and loadHeight field values. After the graphical images are loaded, the images can be scaled to fit within the target screen element area specified by the width and height field values. To use this capability, select the scaling option you want as the value of the loadDisplayMode field.
See SceneGraph's Texture Memory feature for more information.
In order for the load scaling options to work, the option fields must be set in XML markup before the uri field&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/renderable-nodes/poster.md"&gt;https://developer.roku.com/docs/references/scenegraph/renderable-nodes/poster.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default=" " name="audioGuideText" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If muteAudioGuide is false, this string will be spoken when the poster is focused</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xFFFFFFFF" name="blendColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Can be used to tint the image by multiplying the color of each pixel by the specified value. If this value is not set to a value other than the default value, no color blending will be performed</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="failedBitmapOpacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used to control the rendering opacity of the graphical image that indicates a bitmap failed to load. This value multiplies the Poster node opacity</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="failedBitmapUri" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a bitmap file to display when the poster image failed to load</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="height" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of the image in local coordinates. If set to 0.0, the height of the bitmap from the image file is used. If set to a value greater than 0.0, the bitmap is scaled to that height</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="noScale" name="loadDisplayMode" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides automatic scaling of graphical images after loading. If you intend to load very large graphical images, such as larger than the user interface resolution, you must set one of the scaling options other than noScale, otherwise the image may fail to load. The following are the possible field values: Option Effect limitSize Scale the image while loading it into texture memory so that the maximum width and height in either dimension does not exceed the specified loadWidth or loadHeight values. If the image is smaller in both dimensions than the specified values, the image is loaded at its regular size. Aspect ratio is preserved. noScale The bitmap will be loaded at the image's original resolution. If the Poster's width and height differ from the bitmap's resolution, it will be scaled to fill the Poster's dimensions. Aspect ratio is not preserved. scaleToFit Scale the image to fit into the target screen element area, preserving the aspect ratio but "letterboxing" or "pillarboxing" the image (background-color bars at the top/bottom or left/right of the image). scaleToFill Stretch the image dimensions to fill the target screen element area, distorting the image if the target screen element area has a different aspect ratio than the image. scaleToZoom Scale the image to fill the target screen element area, preserving the aspect ratio but not "letterboxing" or "pillarboxing" the image, with some of the image cropped out.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="loadHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Scale the graphical image to the specified height when loaded, preserving aspect ratio. If set to the default, no load-time scaling occurs. If the height field is not set, the loadHeight field is used as the default height of the displayed image</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="loadSync" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Controls whether the image is loaded synchronously in the render thread, and appears immediately, or loaded asynchronously in a background thread, and may not appear immediately. If set to true, and the uri field specifies a local file (in the pkg:/images directory), the image is loaded synchronously, and appears immediately. If set to false, or if the uri field specifies a file from a remote server (a URL starting with http: or https:), the image is loaded asynchronously in a background thread, and may not appear immediately. Be careful when setting this field to true, as it might cause brief glitches in the rendering while the image is being fetched and loaded</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="loadWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Scale the graphical image to the specified width when loaded, preserving aspect ratio. If set to the default, no load-time scaling occurs. If the width field is not set, the loadWidth field is used as the default width of the displayed image</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="loadingBitmapOpacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used to control the rendering opacity of the graphical image that indicates a bitmap is loading. This value multiplies the Poster node opacity</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="loadingBitmapUri" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a bitmap file to display while the poster image is loading.To execute a seamless cross-fade transition between posters, set the loadingBitmapUri of the next poster to be shown to the uri of the currently displayed poster.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="uri" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the URI of the image file. Images included as part of the application package can be referenced using the pkg:/images prefix. Images included as part of the application package that are to be localized can be referenced using the pkg:/locale/images/ prefix (see Localizing Graphical Images in the Application Package)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="width" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the width of the image in local coordinates. If set to 0.0, the width of the bitmap from the image file is used. If set to a value greater than 0.0, the bitmap is scaled to that width</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="PosterGrid">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;ArrayGrid&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The PosterGrid node is a simple grid class that can be used to display two-dimensional grids of posters. In addition to the poster, each item in the grid can include up to two lines of captions.
The number of columns in the PosterGrid is fixed and the number of rows varies. The items in the grid fill each row from left to right, then top to bottom in the following order:
Presentation1
The layout of rows and columns in the grid is very flexible. Possible layouts include:
a simple layout with all posters in the grid having the same size

a layout with the posters in some rows having varying heights and/or the posters in some columns having varying widths

a layout with varying width rows and columns and items that occupy one or more rows and columns
The grid items can be organized into sections that are demarcated by labelled horizontal divider lines between the sections.
The PosterGrid node class includes the capability to automatically scale the loaded graphical images to fit within the target screen element area specified by the basePosterSize field value. To use this capability, select the scaling option you want as the value of the posterDisplayMode field.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/postergrid.md"&gt;https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/postergrid.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="0" name="animateToItem" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to a valid item index, this causes the list to quickly scroll so that the specified index moves into the focus position.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0,0" name="basePosterSize" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the width and height of the posters in the grid.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xddddddff" name="caption1Color" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the color for the grid item first caption</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="caption1Font" type="font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the font for the grid item first caption</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="caption1NumLines" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of lines to render for the grid item first caption</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xddddddff" name="caption2Color" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the color for the grid item second caption</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="caption2Font" type="font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the font for the grid item second caption</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="caption2NumLines" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of lines to render for the grid item second caption</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="captionBackgroundBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a bitmap file to render as a background for the grid item captions</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="center" name="captionHorizAlignment" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the horizontal positioning of the grid item captions. Possible values are:Value Meaning left Left-justify the caption relative to the grid item poster center Center-justify the caption relative to the grid item poster right Right-justify the caption relative to the grid item posterSet enableCaptionScrolling to false to use captionHorizAlignment</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="captionLineSpacing" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the spacing in pixels between lines of the caption</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="below" name="captionVertAlignment" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the vertical positioning of the grid item captions. Possible values are:Value Meaning above Position the caption so the bottom of the caption lies just above the grid item poster top Align the top of the caption with the top edge of the grid item poster center Align the vertical center of the caption with the vertical center of the of the grid item poster bottom Align the bottom of the caption with the bottom edge of the grid item poster below Position the caption so the top of the caption lies just below the grid item poster</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="columnSpacings" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When specified, the columnSpacings field specifies the spacing after each column of the grid. This allows the spacing between columns to vary from column to column.The columnSpacings values override the horizontal spacing specified in element 0 of the itemSpacing field. If the columnSpacings array contains fewer elements than the number of columns specified by the numColumns field, element 0 of the itemSpacing field is used as the spacing after the excess columns.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="columnWidths" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When specified, the columnWidths field specifies the widths of the poster for each column of the grid. This allows the width of each column of the grid to vary from column to column.The columnWidths values override the width specified in element 0 of the basePosterSize field. If the columnWidths array contains fewer elements than the number of columns specified by the numColumns field, element 0 of the basePosterSize field is used as the width of the excess columns.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="none" name="content" type="ContentNode">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the content for the list. See Data bindings below for more details.If the data contains section markers, section dividers will be drawn between each section. These section dividers may contain an icon and/or a string.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="currFocusColumn" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Gives access to which column of a grid is in the focus position as the items scrolling around. So, currFocusColumn = 3.7 would mean that item 3 occupies 30% of the focus position while item 4 occupies 70% of the focus position. To maximize performance, the field should be kept to a minimum, as these scripts will run once during each render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="read-only" name="currFocusFeedbackOpacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;This field provides access to the current opacity of the focus feedback indicator. It can be used to have other items on the screen fade in/out when the focus feedback indicator fades in/out.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="currFocusRow" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Gives access to which row of a grid is in the focus position as the items scrolling around. So, currFocusRow = 3.7 would mean that item 3 occupies 30% of the focus position while item 4 occupies 70% of the focus position. To maximize performance, the field should be kept to a minimum, as these scripts will run once during each render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="currFocusSection" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Gives access to which section of a grid is in the focus position as the items scrolling around. So, currFocusSection = 3.7 would mean that item 3 occupies 30% of the focus position while item 4 occupies 70% of the focus position. To maximize performance, the field should be kept to a minimum, as these scripts will run once during each render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="drawFocusFeedback" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether or not the focus indicator bitmap is displayed</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="drawFocusFeedbackOnTop" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether the focus indicator bitmap is drawn below or on top of the list items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="enableCaptionScrolling" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether or not to scroll single line captions when it is necessary to ellipsize the caption because it is wider the column containing the grid item</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="fadeFocusFeedbackWhenAutoScrolling" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to true, the focus feedback indicator will quickly fade out when scrolling multiple items and fade back in when the scrolling ends. The focus feedback indicator will also after in and out when using the FFW/Rewind keys to scroll a page at a time. Additionally, the focus behavior has been modified for situations where all the items in a RowList row are visible on screen at once. In the past, the focus would step once, then begin to scroll smoothly. Now, the focus steps one-by-one through each itemcurrFocusFeedbackOpacityfloatread-onlyREAD_WRITEThis field provides access to the current opacity of the focus feedback indicator. It can be used to have other items on the screen fade in/out when the focus feedback indicator fades in/out. Additionally, the focus behavior has been modified for situations where all the items in a RowList row are visible on screen at once. In the past, the focus would step once, then begin to scroll smoothly. Now, the focus steps one-by-one through each item</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="failedBitmapOpacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies an opacity value used to render the failed bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="failedBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a bitmap file to display when a grid item poster fails to load</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="fixedLayout" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When fixedLayout is false, the PosterGrid assigns each item in the data model to sequential cells in the grid (or the section if the data model includes section information). When fixedLayout is false, the data models using the X, Y, W and H attributes to specify which cells of the grid each item should occupy, where X is the column number, Y is the row number, W is the number of columns the item occupies and H is the number of rows the item occupies.Fixed layout should only be set to true for cases where one or more items in the grid should span multiple rows or columns.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xFFFFFFFF" name="focusBitmapBlendColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Blend the graphic image specified by focusBitmapUri with the specified color. If set to the default, 0xFFFFFFFF, no color blending will occur. Set this field to show a focus indicator graphic image with a different color than the image specified by focusBitmapUri.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="focusBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap file used for the focus indicator when the list has focus. In most cases, this should be a 9-patch image that specifies both expandable regions as well as margins. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="focusColumn" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the column that will have fixed focus for grids if the horizFocusAnimationStyle field value is set to fixedFocusWrap. This field is not used for lists</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="focusFootprintBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap file used for the focus indicator when the list does not have focus. In most cases, this should be a 9-patch image that specifies both expandable regions as well as margins. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xFFFFFFFF" name="focusFootprintBlendColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Blend the graphic image specified by focusFootprintBitmapUri with the specified color. If set to the default, 0xFFFFFFFF, no color blending will occur. Set this field to show a focus footprint indicator graphic image with a different color than the image specified by focusFootprintBitmapUri.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="focusRow" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the row that will have fixed focus if the vertFocusAnimationStyle field value is set to fixedFocusWrap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="floatingFocus" name="horizFocusAnimationStyle" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the how the focus indicator moves in a row of grid items in response to the remote direction pad Left and Right key presses. This field is not used for lists. The possible values are: Option Effect floatingFocus Causes the focus indicator to float left or right until it reaches the end of the row, at which point the focus indicator will stay fixed on the first or last item in the row, and the items will scroll left or right if there were items that were not visible. fixedFocusWrap Causes the row to wrap around when the focus indicator reaches the first or last item in the row, as long as the row contains enough items to fill the row. If the row does not contain enough items to fill the row, the focus indicator will float left and right.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="imageWellBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap file to use to suggest where images would appear for empty grids and empty sections of grids. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="itemClippingRect" type="rect2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a clipping region for the list or grid items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0,0" name="itemSize" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the width and height of each item in the list or grid. For list or grid items that are posters, itemSize is the value of a basePosterSize field and any sub-elements included with the poster</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0,0" name="itemSpacing" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The second value of the vector specifies the vertical spacing between items in the list. The first value of the vector is ignored.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="jumpToItem" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to a valid item index, this causes the list to immediately update so that the specified index moves into the focus position.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="loadingBitmapOpacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies an opacity value used to render the loading bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="loadingBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a bitmap file to display while a grid item's poster is loading.To execute a seamless cross-fade transition between posters, set the loadingBitmapUri of the next poster to be shown to the uri of the currently displayed poster.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="numColumns" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of columns in the grid</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1" name="numRenderPasses" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of rendering operations to display a complex list or grid. This allows you to achieve a performance increase by specifying that individual sub-elements of the list or grid items occur on sequential rendering operations, rather than all of the item sub-elements being rendered in one rendering operation, which is the default. If you set this field to a value greater than 1, you must specify the rendering operation number for each of the item sub-elements as the renderPass field value for that sub-element. No sub-element that has a renderPass field value of 0 (the default), or has a renderPass field value greater than the value of the numRenderPasses field, will render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="12" name="numRows" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of visible rows displayed. The actual number of rows may be more or less than the number of visible rows specified depending on the number of items in the list content.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="noScale" name="posterDisplayMode" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides automatic scaling of posters, if useAtlas is set to false. If you intend to load very large graphical images, such as larger than the user interface resolution, you must set one of the scaling options other than noScale, otherwise the image may fail to load. The following are the possible field values:Option Effect noScale No scaling scaleToFit Scale the image to fit into the target screen element area, preserving the aspect ratio but "letterboxing" or "pillarboxing" the image (background-color bars at the top/bottom or left/right of the image) scaleToFill Stretch the image width and height dimensions to fill the target screen element area, distorting the image if the target screen element area has a different aspect ratio than the image scaleToZooom Scale the image to fill the target screen element area, preserving the aspect ratio but not "letterboxing" or "pillarboxing" the image, with some of the image cropped out</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="rowHeights" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When specified, the rowHeights field specifies the heights of the poster for each row of the grid. This allows the height of each row of the grid to vary from row to row.The rowHeights values override the height specified in element 1 of the basePosterSize field. If the rowHeights array contains fewer elements than the number of rows needed to display all the items in the grid, element 1 of the basePosterSize field is used as the height of the excess rows.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="rowSpacings" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When specified, the rowSpacings field specifies the spacing after each row of the grid. This allows the spacing between rows to vary from row to row.The rowSpacings values override the vertical spacing specified in element 1 of the itemSpacing field. If the rowSpacings array contains fewer elements than the number of rows needed to display all the items in the grid, element 1 of the itemSpacing field is used as the spacing after the excess rows.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="sectionDividerBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies a custom bitmap to use as a visual divider between the sections of the list or grid. Only set this field to use a bitmap with a different appearance than the system default. For sections that do not include an icon or a title, the system default or custom bitmap specified as the wrapDividerBitmapUri field value is used for the section dividers. In most cases, you will want to use a 9-patch PNG bitmap with both expandable regions, which is the type of bitmap used as the system default.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="sectionDividerFont" type="font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the font for section divider labels</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="40" name="sectionDividerHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of the section dividers. The width of the section dividers is determined by the width of the list items as specified by the itemSize field width value.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="sectionDividerLeftOffset" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Number of pixels to offset the left edge of the section divider relative to the left edge of the list items.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="117" name="sectionDividerMinWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the minimum width of the section divider bitmap. The section divider label will be ellipsized if necessary in order to ensure that the section divider bitmap meets the minimum width.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="10" name="sectionDividerSpacing" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the spacing between the items appearing in the section divider (e.g. the spacing between the section divider icon, the section divider label, and the section divider bitmap). Note the section divider does not always include an icon and/or a title.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xddddddff" name="sectionDividerTextColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the text color for section divider labels</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="sectionDividerWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies the width of the section divider bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="showBackgroundForEmptyCaptions" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If a caption background is specified, this field specifies whether or not to display the caption background when the caption text is empty</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="useAtlas" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Enables a performance optimization when most of the poster items displayed in the grid have the same size. The field value toggles the use of a texture atlas that stores the posters in the grid. The default is true, since in many cases, most of the posters in the grid have the same size as determined by the basePosterSize field value. In this case, using the texture atlas can provide a rendering performance benefit. For grids that have more complicated layouts, that include several posters that have sizes that differ from the value of basePosterSize, or for grids where there are only a few large posters (about five to eight, or posters that are about a quarter of the screen height or width) displayed at the same time, it is best for this field to be set to false.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="floatingFocus" name="vertFocusAnimationStyle" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the how the focus indicator moves in a list or a column of grid items in response to the remote direction pad Up and Down key presses. The possible values are: Option Effect floatingFocus Causes the focus indicator to float up or down until it reaches the end of the list or grid column, at which point the focus indicator will stay fixed on the first or last item in the list or grid column, and the items will scroll up or down if there are items that were not visible. Note that when this style is set, section dividers are not rendered. fixedFocusWrap Causes the column to wrap around when the focus indicator reaches the first or last item in the list or grid column, as long as the list or grid column contains enough items to fill the list or grid column. If the list or grid column does not contain enough items to fill the list or grid column, the focus indicator will float up and down. fixedFocus Causes the focus to stay fixed on the upper leftmost item. As the user scrolls down, the row containing the previously selected item scrolls up off screen. Scrolling continues until the last row is reached.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="wrapDividerBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap file to use as a visual separator between the last and first list items when the list wraps. In most case, this should be a 9-patch image that specifies both expandable regions. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="wrapDividerHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of the wrap divider, the visual separator between the last and first list items when the list wraps. The bitmap for the wrap divider is scaled to this height. The width of the wrap divider is set to the width of the list items as specified by the itemSize field width value.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="wrapDividerWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Additionally, the focus behavior has been modified for situations where all the items in a RowList row are visible on screen at once. In the past, the focus would step once, then begin to scroll smoothly. Now, the focus steps one-by-one through each item.If the vertFocusAnimationStyle field value is set to fixedFocusWrap, specifies the width of a bitmap used as a visual divider between the last and first list or grid items when the list or grid wraps. Only set this field to use a value with a different appearance than the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="ProgressDialog">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Dialog&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The ProgressDialog node class is a special type of Dialog node that includes the dialog title region and a spinning icon as the body of the dialog. The ProgressDialog node class uses a BusySpinner node to display the spinning icon.
The message, bulleted text, graphic, and button regions of the dialog should all be empty. If those dialog regions are not empty, the layout of the dialog will likely not look correct.
Not all Roku Player hardware supports arbitrary rotations. In particular, some hardware only supports 90 degree rotation increments. In those cases, the icon will step through 90 degree, 180 degree, 270 degree and back to 0 degree rotations, rather than spin smoothly.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/dialog-nodes/progressdialog.md"&gt;https://developer.roku.com/docs/references/scenegraph/dialog-nodes/progressdialog.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="&quot;&quot;" name="backgroundUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap to be displayed as the dialog background. Usually this is a 9-patch image to support dynamic resizing. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="bulletText" type="array_of_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;An array of strings to be displayed as a list of bullet points</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="bulletTextColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, the color of the bullet point text</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="bulletTextFont" type="Font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, the font of the bullet point text</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="busySpinner" type="BusySpinner">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides access to the BusySpinner node used by the ProgressDialog node so that the spinner icon and rotation direction can be customized</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="buttonGroup" type="ButtonGroup">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The dialog internal ButtonGroup node. This allows the appearance attributes of all the Button nodes in the dialog to be easily modified. Since the ButtonGroup node class is derived from the LayoutGroup node class, additional non-Button node children can also be added</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="buttons" type="array_of_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Allows a set of Button nodes to be easily created by providing an array of Button labels. Each string in the array will result in a Button node to be added to the ButtonGroup, using the string as the Button label</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="close" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Causes the dialog to be dismissed. The dialog is dismissed whenever the close field is set, regardless of whether the field is set to true or false</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="dividerUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a bitmap to be displayed as the divider between the title region and the remainder of the dialog. Usually this is a 9-patch image to support dynamic resizing. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="focusButton" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Causes the button with the specified index to receive the focus when the ButtonGroup node has the key focus. Note that if the ButtonGroup node does not have the key focus when the focusButton field is set, the specified button will display the focus footprint as its background</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="graphicHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of the bitmap graphic in local coordinates. If set to 0.0, the height of the bitmap from the image file is used. If set to a value greater than 0.0, the bitmap is scaled to that height</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="graphicUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a bitmap to be displayed in the dialog. The bitmap is displayed below the bullet text region and above the buttons. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="graphicWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the width of the bitmap graphic in local coordinates. If set to 0.0, the width of the bitmap from the image file is used. If set to a value greater than 0.0, the bitmap is scaled to that width</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="iconUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a bitmap to be displayed as a small icon next to the dialog title. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="-1.0" name="maxHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the maximum height of the dialog. By default, the Dialog will scale the height based on the contents but never larger than the height of the display resolution. Setting maxHeight smaller than the contents will switch to a scrollable text region</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="message" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The string to be displayed in the message region of the dialog. Newline and carriage return characters in the string result in the message being displayed as several lines of text. In BrightScript, to include a newline in a string, use chr(10). For example: message = "First line" + chr(10) + "Second line"</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="messageColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, the color of the message text</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="messageFont" type="Font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, the font of the message text</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="numberedBullets" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If set to true, the bulletText will be displayed with numbers rather than bullets</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="optionsDialog" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If set to true, the dialog is automatically dismissed when the Options key is pressed</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="title" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Title of the dialog box</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="titleColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, the color of the title</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="titleFont" type="Font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set, the font of the title</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="wasClosed" type="Event">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set when the dialog has been closed. The field is set when the dialog close field is set, when the Back or Home key has been pressed, when the Options key has been pressed if the optionsDialog field is set to true, and when the dialog is dismissed because another dialog was displayed</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="-1.0" name="width" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the width of the dialog. By default, this value is pulled from the system theme</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="RadioButtonList">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;LabelList&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The RadioButtonList node class is a simple list class that can be used to display a list of mutually exclusive radio buttons. Each item in the list displays a text string and an optional check mark icon positioned to the left of the text string that indicates which of the radio buttons is currently selected.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/radiobuttonlist.md"&gt;https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/radiobuttonlist.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="0" name="animateToItem" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Write-OnlyWhen set to a valid item index, this causes the list to quickly scroll so that the specified index moves into the focus position.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="checkOnSelect" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Controls whether or not pressing the remote control OK key causes the checkedItem field value to be automatically updated to the index of the currently focused list item. By default, the field value is set to true, but there are use cases where other behavior may be desired. In those cases, it is up to the developer to manage the currently selected radio button by setting the checkedItem field value to the desired index.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="checkedIconUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the check mark icon to use for the currently selected radio button list item when that list item does not have the key focus. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="-1" name="checkedItem" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the index of the currently selected item in the list. The initial default value of -1 indicates that no radio button is currently selected. Setting the field changes the currently selected radio button list item to match the specified index.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xddddddff" name="color" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the text color for unfocused list items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="columnSpacings" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies differing spaces between each grid column, to allow the spacing between columns to vary from column to column. This field is not used by lists. The specified values override the itemSpacing field vector2d X-value for each grid column corresponding to its position in the array, in left to right order. If the array contains fewer elements than the number of columns needed to display all the items in the grid, the itemSpacing field vector2d X-value is used for any unspecified columns</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="columnWidths" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies differing widths for each grid column, to allow the width of each column to vary from column to column. This field is not used by lists. The specified values override the itemSize field vector2d X-value for each grid column corresponding to its position in the array, in left to right order. If the array contains fewer elements than the number of columns needed to display all the items in the grid, the itemSize field vector2d X-value is used for any unspecified columns</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="none" name="content" type="ContentNode">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the content for the list. See Data bindings below for more details.If the data contains section markers, section dividers will be drawn between each section. These section dividers may contain an icon and/or a string.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="currFocusColumn" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Gives access to which column of a grid is in the focus position as the items scrolling around. So, currFocusColumn = 3.7 would mean that item 3 occupies 30% of the focus position while item 4 occupies 70% of the focus position. To maximize performance, the field should be kept to a minimum, as these scripts will run once during each render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="read-only" name="currFocusFeedbackOpacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;This field provides access to the current opacity of the focus feedback indicator. It can be used to have other items on the screen fade in/out when the focus feedback indicator fades in/out.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="currFocusRow" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Gives access to which row of a grid is in the focus position as the items scrolling around. So, currFocusRow = 3.7 would mean that item 3 occupies 30% of the focus position while item 4 occupies 70% of the focus position. To maximize performance, the field should be kept to a minimum, as these scripts will run once during each render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="currFocusSection" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Gives access to which section of a grid is in the focus position as the items scrolling around. So, currFocusSection = 3.7 would mean that item 3 occupies 30% of the focus position while item 4 occupies 70% of the focus position. To maximize performance, the field should be kept to a minimum, as these scripts will run once during each render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="drawFocusFeedback" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether or not the focus indicator bitmap is displayed</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="drawFocusFeedbackOnTop" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether the focus indicator bitmap is drawn below or on top of the list items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="fadeFocusFeedbackWhenAutoScrolling" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to true, the focus feedback indicator will quickly fade out when scrolling multiple items and fade back in when the scrolling ends. The focus feedback indicator will also after in and out when using the FFW/Rewind keys to scroll a page at a time. Additionally, the focus behavior has been modified for situations where all the items in a RowList row are visible on screen at once. In the past, the focus would step once, then begin to scroll smoothly. Now, the focus steps one-by-one through each itemcurrFocusFeedbackOpacityfloatread-onlyREAD_WRITEThis field provides access to the current opacity of the focus feedback indicator. It can be used to have other items on the screen fade in/out when the focus feedback indicator fades in/out. Additionally, the focus behavior has been modified for situations where all the items in a RowList row are visible on screen at once. In the past, the focus would step once, then begin to scroll smoothly. Now, the focus steps one-by-one through each item</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="fixedLayout" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies that a grid will have a layout of items of different widths configured by parameters included in a ContentNode node for the grid. This field is not used by lists</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xFFFFFFFF" name="focusBitmapBlendColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Blend the graphic image specified by focusBitmapUri with the specified color. If set to the default, 0xFFFFFFFF, no color blending will occur. Set this field to show a focus indicator graphic image with a different color than the image specified by focusBitmapUri.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="focusBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap file used for the focus indicator when the list has focus. In most cases, this should be a 9-patch image that specifies both expandable regions as well as margins. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="focusColumn" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the column that will have fixed focus for grids if the horizFocusAnimationStyle field value is set to fixedFocusWrap. This field is not used for lists</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="focusFootprintBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap file used for the focus indicator when the list does not have focus. In most cases, this should be a 9-patch image that specifies both expandable regions as well as margins. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xFFFFFFFF" name="focusFootprintBlendColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Blend the graphic image specified by focusFootprintBitmapUri with the specified color. If set to the default, 0xFFFFFFFF, no color blending will occur. Set this field to show a focus footprint indicator graphic image with a different color than the image specified by focusFootprintBitmapUri.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="focusRow" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the row that will have fixed focus if the vertFocusAnimationStyle field value is set to fixedFocusWrap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="focusedCheckedIconUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the check mark icon to use for the currently selected radio button list item when that list item has the key focus. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0x262626ff" name="focusedColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the text color for focused list items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="focusedFont" type="font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the font for focused list items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="font" type="font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the font for unfocused list items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="floatingFocus" name="horizFocusAnimationStyle" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the how the focus indicator moves in a row of grid items in response to the remote direction pad Left and Right key presses. This field is not used for lists. The possible values are: Option Effect floatingFocus Causes the focus indicator to float left or right until it reaches the end of the row, at which point the focus indicator will stay fixed on the first or last item in the row, and the items will scroll left or right if there were items that were not visible. fixedFocusWrap Causes the row to wrap around when the focus indicator reaches the first or last item in the row, as long as the row contains enough items to fill the row. If the row does not contain enough items to fill the row, the focus indicator will float left and right.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="itemClippingRect" type="rect2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a clipping region for the list or grid items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0,0" name="itemSize" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the width and height of each item in the list</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0,0" name="itemSpacing" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The second value of the vector specifies the vertical spacing between items in the list. The first value of the vector is ignored.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="jumpToItem" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Write-OnlyWhen set to a valid item index, this causes the list to immediately update so that the specified index moves into the focus position.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="numColumns" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of columns in a grid. This field is not used for lists</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1" name="numRenderPasses" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of rendering operations to display a complex list or grid. This allows you to achieve a performance increase by specifying that individual sub-elements of the list or grid items occur on sequential rendering operations, rather than all of the item sub-elements being rendered in one rendering operation, which is the default. If you set this field to a value greater than 1, you must specify the rendering operation number for each of the item sub-elements as the renderPass field value for that sub-element. No sub-element that has a renderPass field value of 0 (the default), or has a renderPass field value greater than the value of the numRenderPasses field, will render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="12" name="numRows" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of visible rows displayed. The actual number of rows may be more or less than the number of visible rows specified depending on the number of items in the list content.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="rowHeights" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies differing heights for each list or grid row, to allow the height of each row to vary from row to row. The specified values override the itemSize field vector2d Y-value for each list or grid row corresponding to its position in the array, in top to bottom order. If the array contains fewer elements than the number of rows needed to display all the items in the list or grid, the itemSize field vector2d Y-value is used for any unspecified rows</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="rowSpacings" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies differing spaces between each list or grid row, to allow the spacing between rows to vary from row to row. The specified values override the itemSpacing field vector2d Y-value for each list or grid row corresponding to its position in the array, in top to bottom order. If the array contains fewer elements than the number of rows needed to display all the items in the list or grid, the itemSpacing field vector2d Y-value is used for any unspecified rows</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="sectionDividerBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies a custom bitmap to use as a visual divider between the sections of the list or grid. Only set this field to use a bitmap with a different appearance than the system default. For sections that do not include an icon or a title, the system default or custom bitmap specified as the wrapDividerBitmapUri field value is used for the section dividers. In most cases, you will want to use a 9-patch PNG bitmap with both expandable regions, which is the type of bitmap used as the system default.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="sectionDividerFont" type="font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the font for section divider labels</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="40" name="sectionDividerHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of the section dividers. The width of the section dividers is determined by the width of the list items as specified by the itemSize field width value.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="sectionDividerLeftOffset" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Number of pixels to offset the left edge of the section divider relative to the left edge of the list items.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="117" name="sectionDividerMinWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the minimum width of the section divider bitmap. The section divider label will be ellipsized if necessary in order to ensure that the section divider bitmap meets the minimum width.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="10" name="sectionDividerSpacing" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, and the section dividers are specified to include an icon and/or a label, specifies the spacing between the icon, label, and section divider bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xddddddff" name="sectionDividerTextColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the text color for section divider labels</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="sectionDividerWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies the width of the section divider bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="left" name="textHorizAlign" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the horizontal alignment of the text in the list item area specified by the itemSize field value (the text is always centered vertically in the list item area). The possible options are:Option Effect left Text is left-aligned right Text is right-aligned center Text is center-aligned</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="fixedFocusWrap" name="vertFocusAnimationStyle" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the how the focus indicator moves in a list of items in response to the remote direction pad Up and Down key presses. The possible values are:Option Effect fixedFocusWrap Causes the focus indicator to float up or down until it reaches the end of the list, at which point the focus indicator will stay fixed on the first or last item in the list, and the items will scroll up or down if there are items that were not visible. floatingFocus Causes the list to wrap around when the focus indicator reaches the first or last item in the list, as long as the list contains enough items to fill the list. If the list does not contain enough items to fill the list, the focus indicator will float up and down.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="wrapDividerBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap file to use as a wrap divider, the visual separator between the last and first list items when the list wraps. In most cases, this should be a 9-patch image that specifies both expandable regions. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="wrapDividerHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of the wrap divider, the visual separator between the last and first list items when the list wraps. The bitmap for the wrap divider is scaled to this height. The width of the wrap divider is set to the width of the list items as specified by the itemSize field width value.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="wrapDividerWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Additionally, the focus behavior has been modified for situations where all the items in a RowList row are visible on screen at once. In the past, the focus would step once, then begin to scroll smoothly. Now, the focus steps one-by-one through each item.If the vertFocusAnimationStyle field value is set to fixedFocusWrap, specifies the width of a bitmap used as a visual divider between the last and first list or grid items when the list or grid wraps. Only set this field to use a value with a different appearance than the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Rectangle">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Group&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The Rectangle node class draws a solid color rectangle with the top/left corner of the rectangle drawn at the origin of the node local coordinate system. Because the Rectangle node class extends the Group node class, it can have child nodes. For example, a Rectangle node might have a child Label node, resulting in text being drawn inside of a box.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/renderable-nodes/rectangle.md"&gt;https://developer.roku.com/docs/references/scenegraph/renderable-nodes/rectangle.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="true" name="blendingEnabled" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies if the rectangle should be alpha blended with the nodes that are behind it</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xFFFFFFFF" name="color" type="color_string_containing_hex_value_eg_RGBA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the color of the rectangle</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="height" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of rectangle in local coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="width" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the width of the rectangle in local coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="RowList">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;ArrayGrid&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The RowList node class provides a vertically-scrollable list, containing rows of independent horizontally-scrollable individual items. Each item in a row can include a poster, but can also include much more complex sub-elements defined in an item component file, in the same way that items are defined in the MarkupList and MarkupGrid node classes.
Like those node classes, the RowList node class provides special interface fields to the item components to allow custom appearance and animations as the user scrolls left and right through the items in a row.
Special FeatureRowList node class includes even more interface fields to provide a customized appearance as the user scrolls up and down through the rows.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/rowlist.md"&gt;https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/rowlist.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="0" name="animateToItem" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to a valid item index, causes the list to quickly scroll so that the specified row moves into the focus position.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="columnSpacings" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies differing spaces between each grid column, to allow the spacing between columns to vary from column to column. This field is not used by lists. The specified values override the itemSpacing field vector2d X-value for each grid column corresponding to its position in the array, in left to right order. If the array contains fewer elements than the number of columns needed to display all the items in the grid, the itemSpacing field vector2d X-value is used for any unspecified columns</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="columnWidths" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies differing widths for each grid column, to allow the width of each column to vary from column to column. This field is not used by lists. The specified values override the itemSize field vector2d X-value for each grid column corresponding to its position in the array, in left to right order. If the array contains fewer elements than the number of columns needed to display all the items in the grid, the itemSize field vector2d X-value is used for any unspecified columns</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="none" name="content" type="ContentNode">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the content for the list. The content should be a single ContentNode that has one child ContentNode for each row. These child ContentNodes for each row should themselves contains child ContentNodes for each item in the row. See Data Bindings below for more details.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="currFocusColumn" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Gives access to which column of a grid is in the focus position as the items scrolling around. So, currFocusColumn = 3.7 would mean that item 3 occupies 30% of the focus position while item 4 occupies 70% of the focus position. To maximize performance, the field should be kept to a minimum, as these scripts will run once during each render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="currFocusRow" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Gives access to which row of a grid is in the focus position as the items scrolling around. So, currFocusRow = 3.7 would mean that item 3 occupies 30% of the focus position while item 4 occupies 70% of the focus position. To maximize performance, the field should be kept to a minimum, as these scripts will run once during each render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="currFocusSection" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Gives access to which section of a grid is in the focus position as the items scrolling around. So, currFocusSection = 3.7 would mean that item 3 occupies 30% of the focus position while item 4 occupies 70% of the focus position. To maximize performance, the field should be kept to a minimum, as these scripts will run once during each render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="drawFocusFeedback" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether or not the focus indicator bitmap is displayed.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="drawFocusFeedbackOnTop" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether the focus indicator bitmap is drawn below or on top of the list items.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="fadeFocusFeedbackWhenAutoScrolling" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to true, the focus feedback indicator will quickly fade out when scrolling multiple items and fade back in when the scrolling ends. The focus feedback indicator will also after in and out when using the FFW/Rewind keys to scroll a page at a time.Note: This field is defined on ArrayGrid and thus is inherited by all of the following components: LabelList, MarkupList, PosterGrid, MarkupGrid, RowList, CheckList, and RadioButtonList.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="failedBitmapOpacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies an opacity value used to render the failed bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="failedBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a bitmap file to display when a list item poster fails to load.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="fixedLayout" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies that a grid will have a layout of items of different widths configured by parameters included in a ContentNode node for the grid. This field is not used by lists</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xFFFFFFFF" name="focusBitmapBlendColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Blend the graphic image specified by focusBitmapUri with the specified color. If set to the default, 0xFFFFFFFF, no color blending will occur. Set this field to show a focus indicator graphic image with a different color than the image specified by focusBitmapUri.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="focusBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap file used for the focus indicator when the list has focus. In most cases, this should be a 9-patch image that specifies both expandable regions as well as margins. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="focusColumn" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the column that will have fixed focus for grids if the horizFocusAnimationStyle field value is set to fixedFocusWrap. This field is not used for lists</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="focusFootprintBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap file used for the focus indicator when the list does not have focus. In most cases, this should be a 9-patch image that specifies both expandable regions as well as margins. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xFFFFFFFF" name="focusFootprintBlendColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Blend the graphic image specified by focusFootprintBitmapUri with the specified color. If set to the default, 0xFFFFFFFF, no color blending will occur. Set this field to show a focus footprint indicator graphic image with a different color than the image specified by focusFootprintBitmapUri.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="focusRow" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the row that will have fixed focus if the vertFocusAnimationStyle field value is set to fixedFocusWrap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="focusXOffset" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the x-dimension offset of the first fully visible item in each row relative to the left edge of the list. In most cases, the first fully visible item in each row will be positioned at the left edge of the list, so this field does not need to be specified. If the array contains fewer elements than the number of rows in the data model, the last value in the array is used as the x-dimension offset for the extra rows. If the array contains no values, the default x-dimension offset of 0.0 is used.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="floatingFocus" name="horizFocusAnimationStyle" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the how the focus indicator moves in a row of grid items in response to the remote direction pad Left and Right key presses. This field is not used for lists. The possible values are: Option Effect floatingFocus Causes the focus indicator to float left or right until it reaches the end of the row, at which point the focus indicator will stay fixed on the first or last item in the row, and the items will scroll left or right if there were items that were not visible. fixedFocusWrap Causes the row to wrap around when the focus indicator reaches the first or last item in the row, as long as the row contains enough items to fill the row. If the row does not contain enough items to fill the row, the focus indicator will float left and right.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="imageWellBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap file to use to suggest where images would appear for empty lists.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="itemClippingRect" type="rect2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a clipping region for the list or grid items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="itemComponentName" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the name of an XML component for the items in each row. An instance of this component is created on demand for each visible item of each row. The XML component must define a specific interface as detailed in RowList XML Component below.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0,0" name="itemSize" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the width and height of rows in the list. Note that this the width of the entire row, not the width of the posters in the row.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0,0" name="itemSpacing" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the spacing between rows in the list. The y-dimension of the vector specifies the vertical spacing between rows, and the x-dimension is ignored.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="jumpToItem" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to a valid item index, causes the list to immediately update so that the specified row moves into the focus position.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="jumpToRowItem" type="array_of_integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to a valid row, col index pair, causes the list to immediately update so that the specified row, col item moves into the focus position.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="loadingBitmapOpacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies an opacity value used to render the loading bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="loadingBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a bitmap file to display while a list item poster is loading.To execute a seamless cross-fade transition between posters, set the loadingBitmapUri of the next poster to be shown to the uri of the currently displayed poster.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="numColumns" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of columns in a grid. This field is not used for lists</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1" name="numRenderPasses" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of rendering operations to display a complex list or grid. This allows you to achieve a performance increase by specifying that individual sub-elements of the list or grid items occur on sequential rendering operations, rather than all of the item sub-elements being rendered in one rendering operation, which is the default. If you set this field to a value greater than 1, you must specify the rendering operation number for each of the item sub-elements as the renderPass field value for that sub-element. No sub-element that has a renderPass field value of 0 (the default), or has a renderPass field value greater than the value of the numRenderPasses field, will render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="numRows" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of visible rows in the list. Note that the actual number of rows may be more or less than the number of visible rows depending on the number of items in the list content.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="rowCounterRightOffset" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Field provides greater control over the UX.When set, this value specifies the location of the right edge of the row counter relative to right edge of the RowList's clipping rectangle. If not set, the right edge of the row counter is positioned to equal the left offset of the row title.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="floatingFocus" name="rowFocusAnimationStyle" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the how the focus indicator moves in a row of items in response to the remote direction pad Left and Right key presses. The possible values are:Option Effect floatingFocus Causes the focus indicator to float left or right until it reaches the end of the row, at which point the focus indicator will stay fixed on the first or last item in the row, and the items will scroll left or right if there were items that were not visible. fixedFocusWrap Causes the row to wrap around when the focus indicator reaches the first or last item in the row, as long as the row contains enough items to fill the row. If the row does not contain enough items to fill the row, the focus indicator will float left and right.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="rowHeights" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the heights of each row of the list. This allows the height of each row of the list to vary from row to row. The values override the height specified in the y-dimension value of the itemSize field. If the array contains fewer elements than the number of rows in the data model, the y-dimension value of the itemSize field is used as the height of the extra rows.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="rowItemSize" type="array_of_vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the width and height of the items in each row. The array of values must include at least one element. If the array contains fewer elements than the number of rows in the data model, the last value in the array is used as the size for the extra rows.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="rowItemSpacing" type="array_of_vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the spacing between items in each row. The x-dimension of each array value specifies the horizontal spacing between list items in the corresponding row. If the array contains fewer elements than the number of rows in the data model, the last value in the array is used as the spacing for the extra rows. If the array contains no values, no space will be included between list items in all rows.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xffffffff" name="rowLabelColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the color of the row and "item_number of total_number_of_items" labels.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="rowLabelFont" type="font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the font for the row and "item_number of total_number_of_items" labels.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0,0" name="rowLabelOffset" type="array_of_vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the offset of the row label for each row. The x-dimension specifies the horizontal offset of the label from the left edge of the row. The y-dimension component specifies the vertical spacing between the label and the list items in the row. If the array contains fewer elements than the number of rows in the data model, the last value in the array is used as the offset for the labels of the extra rows. If the array specified contains no values, a default offset value of 0,0 is used.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="rowSpacings" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the spacing after each row of the list. This allows the spacing between rows to vary from row to row. The values override the vertical spacing specified in y-dimension value of the itemSpacing field. If the array contains fewer elements than the number of rows in the data model, the y-dimension value of the itemSpacing field is used as the spacing after the extra rows.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="rowTitleComponentName" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the name of an XML component to render titles in place of the row label. This component must extend from Group. If this component defines a "content" field, it will be set to the row's content. If this component defines a "rowCounterVertAlign" field (possible values are "top", "center", and "bottom"), the row counter's vertical alignment is respective of the row title component.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="sectionDividerBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies a custom bitmap to use as a visual divider between the sections of the list or grid. Only set this field to use a bitmap with a different appearance than the system default. For sections that do not include an icon or a title, the system default or custom bitmap specified as the wrapDividerBitmapUri field value is used for the section dividers. In most cases, you will want to use a 9-patch PNG bitmap with both expandable regions, which is the type of bitmap used as the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="sectionDividerFont" type="font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies a custom font to use for the section title text. Only set this field to use a different font than the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="sectionDividerHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies the height of the section divider bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="sectionDividerLeftOffset" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies the left offset of the section divider from the list or grid</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="sectionDividerMinWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies the minimum width of the section divider bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="sectionDividerSpacing" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, and the section dividers are specified to include an icon and/or a label, specifies the spacing between the icon, label, and section divider bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="sectionDividerTextColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies a custom color to use for the section title text. Only set this field to use a different text color than the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="sectionDividerWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies the width of the section divider bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="showRowCounter" type="array_of_Boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether the "item_number of total_number_of_items" label on the right edge of each row is displayed. Note that the "item_number of total_number_of_items" label is only displayed for the focused row even if the showRowCounter field value for that row is set to true. If the array contains fewer elements than the number of rows in the data model, the last value in array is used to control the display of the "item_number of total_number_of_items" label for the extra rows. If the array contains no values, no "item_number of total_number_of_items" labels are displayed.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="showRowCounterForShortRows" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Field provides greater control over the UX.When set to true, the row counter is shown for all rows. When set to false, the row counter is not shown for rows where all items fit onscreen.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="showRowLabel" type="array_of_Boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether the row label on the left edge of each row is displayed. If the array contains fewer elements than the number of rows in the data model, the last value in array is used to control the display of the row label for the extra rows. If the array contains no values, no row labels are displayed.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="variableWidthItems" type="array_of_Boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;This field is only supported when rowFocusAnimationStyle = "fixedFocusWrap"By default, all items in a row of the RowList node have the same width and height. By setting variableWidthItems to true for a row, the items in the row will continue to have the same height, but the width will be taken from the [SD/HD/FHD]ItemWidth field of the ContentNode associated with each item. See Data Bindings below for more details. variableWidthItems is an array with one element per row in the RowList. If there are fewer elements than rows in the RowList, the last value in the array is repeated. If all rows of the RowList have variable widths, you can set variableWidthItems="[true]" or variableWidthItems="true".The [SD/HD/FHD]ItemWidth values specified should match the ui_resolutions attribute in the manifest.Example: If you only specify ui_resolutions=fhd, you should only set FHDItemWidth and allow the device to autoscale when rendering for HD and SD display modes. If you specify ui_resolutions=hd,fhd, you can set HDItemWidth and FHDItemWidth.If any item does not specify the [SD/HD/FHD]ItemWidth in its ContentNode for a variable width row, the x value of the RowList's rowItemSize field for that row is used as the width for that item.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="fixedFocus" name="vertFocusAnimationStyle" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the how the focus indicator moves in a list or a column of grid items in response to the remote direction pad Up and Down key presses. The possible values are:Option Effect floatingFocus Causes the focus indicator to float up or down until it reaches the end of the list, at which point the focus indicator will stay fixed on the first or last row in the list, and the rows will scroll up or down if there are rows that were not visible. fixedFocusWrap Causes the column to wrap around when the focus indicator reaches the first or last row in the list, as long as the list contains enough rows to fill the list. If the list does not contain enough rows to fill the list, the focus indicator will float up and down. fixedFocus Causes the focus to stay fixed on the upper row. As the user scrolls down, the row containing the previously selected item scrolls up off screen. Scrolling continues until the last row is reached.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="wrapDividerBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the bitmap file to use as a visual separator between the last and first list items when the list wraps. In most case, this should be a 9-patch image that specifies both expandable regions. Only set this field to specify a custom bitmap that differs in appearance from the default bitmap.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="wrapDividerHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of the divider. The wrap divider bitmap will be scaled to this height. The width of the wrap divider is set to the width of the list items (that is, the x-dimension value of the itemSize field).</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="wrapDividerWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Additionally, the focus behavior has been modified for situations where all the items in a RowList row are visible on screen at once. In the past, the focus would step once, then begin to scroll smoothly. Now, the focus steps one-by-one through each item.If the vertFocusAnimationStyle field value is set to fixedFocusWrap, specifies the width of a bitmap used as a visual divider between the last and first list or grid items when the list or grid wraps. Only set this field to use a value with a different appearance than the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="ScrollableText">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Group&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The ScrollableText node class provides an interactive, vertically scrolling pane of text. This is typically used to display several paragraphs of text to the user that are too long to fit onto the display, such as a license agreement.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/typographic-nodes/scrollabletext.md"&gt;https://developer.roku.com/docs/references/scenegraph/typographic-nodes/scrollabletext.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xddddddff" name="color" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the text color</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="font" type="Font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the Font node to be used</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="height" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of the node. If the text to be displayed is larger than this height, a scrollbar is automatically added on the right, allowing users to scroll up and down using the remote's arrow keys</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="left" name="horizAlign" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;See Horizontal Alignment</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="8" name="lineSpacing" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the text is displayed on more than one line, specifies the amount of additional space added between lines</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="scrollbarThumbBitmapUri" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the URI of an image file to be loaded to replace the default scrollbar thumb. This should be a 9-patch image so that it can be stretched to the appropriate size</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="scrollbarTrackBitmapUri" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the URI of an image file to be loaded to replace the default scrollbar track. This should be a 9-patch image so that it can be stretched to the appropriate height specifed by the height field</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="text" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the text to be displayed</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="top" name="vertAlign" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;See Vertical Alignment</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="width" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the width of the node. This includes both the area where the text is rendered in addition to the scroll bar on the right</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="ScrollingLabel">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Group&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The ScrollingLabel node class provides an automatic way to make a string scroll horizontally if it does not fit within the specified width. If the string can be drawn within the specified maximum width it is just drawn. If it does not fit within the specified maximum width, it is drawn with an ellipsis (...) at the end, then it transitions to the full string, clipped to the maximum width that scrolls left to right until the end of the string is visible, then transition back to the partial string with the ellipsis at the end. By default, this repeats continuously unless the repeatCount field is set to limit the number of times the scrolling occurs.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/typographic-nodes/scrollinglabel.md"&gt;https://developer.roku.com/docs/references/scenegraph/typographic-nodes/scrollinglabel.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xddddddff" name="color" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the text color</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="font" type="Font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the Font node to be used</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="height" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the height of the label. If set to zero, the actual height is determined by the value of the numLines field if it is greater than zero. See Vertical Alignment</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="left" name="horizAlign" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;See Horizontal Alignment</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="500" name="maxWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the maximum width of the rendered text. If the rendered text exceeds the maximum width, the scrolling behavior is automatically triggered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="-1" name="repeatCount" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If set to the default value of -1, the text scrolling behavior repeats continuously. If set to zero, the text will remain ellipsized and never scroll. If set to a value greater than zero, the text will scroll the specified number of times, at the end of which the text is rendered with an ellipsis at the end</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="100" name="scrollSpeed" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the horizontal scrolling speed in pixels per second</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="text" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the text to be displayed</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="top" name="vertAlign" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;See Vertical Alignment</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="SequentialAnimation">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;AnimationBase&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The SequentialAnimation node class allows you to specify that a set of animations should occur sequentially. The children of the SequentialAnimation node specify the set of animations to be executed. Note that the use of the delay field in the child animations allows a delay between any two animations to be specified, if desired.
The state field is set to running when any of the child animations is in progress. Once all the animations have run to completion, the state field is set to stopped.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/animation-nodes/sequentialanimation.md"&gt;https://developer.roku.com/docs/references/scenegraph/animation-nodes/sequentialanimation.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="none" name="control" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Controls the animation. Supported options include: Option Effect none Initial state with no associated action start Always plays the animation from the beginning stop Stops the animation in its current state pause Pauses the animation in its current state resume If paused, resumes the animation from its current state. If the animation is not paused, plays the animation from the beginning. finish Jumps to the end of the animation, then stops. All animated fields will be immediately set to their final values as if the animation had completed.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="delay" type="time">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Delays the start of the animation by the specified number of seconds</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="repeat" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Controls whether the animation stops when it finishes (false) or repeats from the beginning (true)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="SimpleLabel">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Group&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The SimpleLabel node class is used to display a single line of text. SimpleLabel is a lightweight complement to the Label node. It supports simplified font style specification and is more memory efficient than the Label node.
The SimpleLabel node class supports:
Specifying either a built-in system font or a TrueType/OpenType font file

Specifying the color of the font

Customizable Horizontal and Vertical origin
The following shows a text layout derived from the SimpleLabel node:
simpleLabel node
With ui_resolutions=hd specified in the manifest, the following displays the text string "Application Development Made Easy!" using the medium bold system font, centered horizontally on display, and with the baseline of the text at the vertical center of the display.
&lt;?xml version="1.0" encoding="utf-8" ?&gt;

&lt;!--********** Copyright 2018 Roku Corp.  All Rights Reserved. **********--&gt;

&lt;component name="simpleLabeltest" extends="Group" &gt;

&lt;script type="text/brightscript" &gt;
&lt;![CDATA[

  sub init()
    m.top.setFocus(true)
  end sub

]]&gt;
&lt;/script&gt;

&lt;SimpleLabel
  id="testLabel"
  font="fontUri:MediumBoldSystemFont"
  text = "Application Development Made Easy!"
  horizOrigin = "left"
  vertOrigin = "baseline"
  translation="[640,360]" /&gt;

&lt;/component&gt;
&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/renderable-nodes/simplelabel.md"&gt;https://developer.roku.com/docs/references/scenegraph/renderable-nodes/simplelabel.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xddddddff" name="color" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the text color</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="fontSize" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the size of the font in points. As noted in the description of the fontUri field, the use of fixed size system fonts ignores the value of the fontSize field.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="fontUri" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies either a path to a TrueType or OpenType font file or a built-in system font name.For TrueType or OpenType font files, the file must be included with the application (e.g. pkg:/fonts/SomeFontFile.ttf). If no fontUri is specified, the System Default font is used.The table below shows the options for using built-in system fonts. The "Fixed Size?" column indicates whether the fontSize field of the SimpleLabel is respected or not. For those where the size is fixed, the font size cannot be modified.fontUri String Fixed Size?font:SmallestSystemFont Yesfont:SmallSystemFont Yesfont:MediumSystemFont Yesfont:LargeSystemFont Yesfont:SmallestBoldSystemFont Yesfont:SmallBoldSystemFont Yesfont:MediumBoldSystemFont Yesfont:LargeBoldSystemFont Yesfont:SystemFontFile Nofont:BoldSystemFontFile No System Default (field not set) Yes</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="left" name="horizOrigin" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;See Horizontal Origin</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="text" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the text to be displayed</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="top" name="vertOrigin" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;See Vertical Origin</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="SoundEffect">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Node&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The SoundEffect node class is used to play audio sound effects that can be triggered from events that occur in the UI. Typically, these sound effects are short audio clips, but there is no inherent limit on their length. Currently, up to four simultaneous sounds can be playing at any time, in addition to audio from streaming content and TextToSpeech audio.
Files can be installed locally as part of the channel package or dynamically downloaded from the network. All files must be WAV (i.e. PCM) format.
For local files, the convention is to include the WAV files in a directory named "sounds".
For downloaded files, a least-recently-used (LRU) mechanism is used to keep the most recently downloaded/played sounds in temporary storage on the device. If the limits on the maximum number/size of downloaded sounds is exceeded, the least recently used sounds are removed from temporary storage. They will be automatically reloaded the next time the control field is set to "play".
A sample demonstrating how to use the SoundEffect node can be found here: SimpleSoundEffect&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/media-playback-nodes/soundeffect.md"&gt;https://developer.roku.com/docs/references/scenegraph/media-playback-nodes/soundeffect.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="none" name="control" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to control the audio playback. Getting the value of this field returns the most recent value set, or none if no value has been set.Option Effect none No effect play Start playing the audio. If the audio is already playing, it will be restarted.If the loadStatus field is not "ready", the sound will not be played and the state field will be set to "notready".For networked files with the loadStatus field set to "flushed", setting control to "play" will automatically trigger a reload of the network file, but will not result in the sound being played, due to the time it takes to download the file again. In this case, the sound can be played once the loadStatus field changes from "flushed" to "ready" stop If the audio is playing, stop playing the audio. If the audio is not playing, no effect.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="uri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the URI of the WAV file. Sounds included as part of the application package can be referenced using the pkg:/sounds prefix. This may also specify the location of a WAV file on a remote server.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="50" name="volume" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The volume is a number between 0 and 100 (percentage of full volume).  50 should be used for normal volume.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="TargetGroup">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Group&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The TargetGroup node class associates a set of rectangular regions that children of the group will occupy. Like MarkupList, the TargetGroup has a content field containing the data for each item and an itemComponentName field that specifies an RSG component that will be used to render a content item. It also has a targetSet field that contains a TargetSet that define a set of rectangular targets where children of the TargetGroup will be rendered.
The TargetGroup node is typically used to create a scrolling list (or row) of items where the focused item occupies more space than the other items.
For example, a TargetGroup could be used to create a full screen vertical scrolling list of item where the focused item is larger than the other items in the list. As the list items scroll, the appearance of the item moving into the focus region would be dynamically adjusted to fill the larger focus region. Simultaneously, the appearance of the item leaving the focus region would be dynamically adjust to return to the unfocused size. To set up this use case, you might set the targetSet field to a TargetSet node that specifies nine rectangles. The first rectangle would be specified to have the width and height of an unfocused item and be positioned so that it's bottom is above the top of the screen. The last rectangle would be specified to have the width and height of an unfocused item and be positioned so that's top is below the bottom of the screen. The remaining seven rectangles would define the rectangular regions of the onscreen items. Suppose the design calls for the focus item to be centered vertically at the center of the screen. To do that, you would specify the 5th rectangle to be larger than the other eight and position it so that it is centered vertically, you would specify the remaining rectangles to form a column of rectangular regions where the top three and bottom three visible items would be located.
The second step of setting up this use case would be to implement an RSG component that will be used to render each item.  The TargetGroup node manages the creation of the items for the visible components, associates each with a ContentNode, and updates fields of the item component with information such as the current width and height of the item and the focus status of the item.
The TargetGroup's jumpToItem field is set to identify which content item is to be located at the TargetSet's targetRects field target rectangle identified by the TargetSet's focusindex field.
The final step of setting up this use case would be to create a VerticalList component that extends TargetGroup, sets up the TargetGroup's TargetSet node, and as the user presses up and down buttons on the remote, sets the TargetGroup's animateToTargetItem field to the prior or next index. Setting the animateToTargetItem field causes the displayed items to smoothly animate from their current target region to another target region, such that the specified index ends up at the TargetSet's target rectangle that is identified by the TargetSet's focusIndex field.
The above use case specifies the most common use case for the TargetGroup node, but only hints at the possible uses. For example, you could create your own RSG components with various custom behaviors. There might include:
A list where all the items are small when the list does not have the focus, but when the list receives the focus, all of the items smoothly adjust their size and position so that the focus item is largest, the items on either side of the focus item are slightly larger than the unfocused size and the remaining items remain the same size as the unfocused items. To do this, you would create two TargetSet's in your RSG component, one that defines the regions when the list is unfocused and one that defines the regions when the list is focused. Initially, the TargetGroup's targetSet field would be set to the unfocused TargetSet node. Then, when the list is focused, the targetSet's animateToTargetSet field would be set to the focused TargetSet node, causing all of the target regions to smoothly animate to their new size and position, taking along the associated item component's with them.

A horizontal scrolling list of items where the focused region floats across the screen as the user presses left/right until the focus region reaches the edge of the display, at which point the focus region remains stationary and the items scroll left or right. This would require the use of several TargetSet nodes (one for each possible position of the focus region). Initally, the TargetGroup's targetSet field would be set to one of these TargetSet's. Then while the focus region is not at one of the edges, key presses would set the animateToTargetSet field to animate the focus region to its next location. Once the focus region reaches an edge, another key press in the same direction would set the animateToTargetIndex field to cause the items to scroll so that the next content item occupies the focus region.

A list where when an item is selected, all of the items fly off the screen while the selected item zooms up and moves to the center of the screen. To set up this use case, you would specify a TargetSet for when the list items are onscreen and another TargetSet for the onscreen location of the focused item and the offscreen locations where each items will disappear.

A circular arrangement of a fixed number of items with the item at the 6 o'clock position being larger and having the focus. Note that in this case, no offscreen targets would be specified.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/targetgroup.md"&gt;https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/targetgroup.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="0" name="animateToItem" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to a valid item index, causes the group to quickly scroll so that the specified index moves into the to the target region specified by the TargetSet's focusIndex</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="invalid" name="animateToTargetSet" type="TargetSet">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to a valid TargetSet, causes the group to quickly animate so that the target regions of the initial TargetSet node are smoothly interpolated to the corresponding target regions of the new TargetSet node. If the two TargetSet's focusIndex fields are different, the focusIndex is also animated from the old to the new value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="none" name="content" type="ContentNode">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the content for the group. See Data Bindings below for more details</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="defaultTargetSetFocusIndex" type="int">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;For TargetSet's that do not specify a focusIndex, this value will be used as the index of the TargetSet where the focused item is located. If a TargetSet specifies any value for the focusIndex, that value will be used instead of defaultTargetSetFocusIndex</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.3 seconds" name="duration" type="Time">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the time, in seconds, to perform the animation when the animateToItem or animateToTargetSet fields are set</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="itemComponentName" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the name of a XML component for the group items. An instance of this component is created on demand for each visible item of the group. The XML component must define a specific interface as detailed in TargetGroup XML Component below</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="jumpToItem" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to a valid item index, causes the group to immediately update so that the specified index moves to the target region specified by the TargetSet's focusIndex</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="showTargetRects" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether the current target rectangles (as defined in the read-only currTargetSet field's TargetSet) are drawn or not. Typically this would only be set to true while debugging a channel, although in some use cases its possible that you might want to display the current target rectangles. The rectangles are drawn using the color in the targetSet's TargetSet node's color field</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="invalid" name="targetSet" type="TargetSet">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the TargetSet to use to define the target regions of the items in the group. When set or modified, the target regions are immediately adjusted to use the new values</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="wrap" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether the content items wraparound at the end of the TargetGroup to fill all of the targets rectangles</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="TargetList">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;TargetGroup&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The TargetList node class adds useful functionality to the TargetGroup node by making is easy to set up lists and rows of items with limited amounts of scripting required. In particular, TargetList provides a built-in focused/unfocused transition, as well as a simple way to implement various focus management policies (i.e. fixed focus, floating focus, etc.). It also provides default key handling for navigating the list or row.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/targetlist.md"&gt;https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/targetlist.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="&quot;down&quot;" name="advanceKey" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies which remote button will move the focus forward. For vertical lists, this will typically be set to "down". For horizontal rows, this will typically be set to "right".</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="animateToItem" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to a valid item index, causes the group to quickly scroll so that the specified index moves into the to the target region specified by the TargetSet's focusIndex</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="invalid" name="animateToTargetSet" type="TargetSet">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to a valid TargetSet, causes the group to quickly animate so that the target regions of the initial TargetSet node are smoothly interpolated to the corresponding target regions of the new TargetSet node. If the two TargetSet's focusIndex fields are different, the focusIndex is also animated from the old to the new value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="none" name="content" type="ContentNode">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the content for the group. See Data Bindings below for more details</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="defaultTargetSetFocusIndex" type="int">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;For TargetSet's that do not specify a focusIndex, this value will be used as the index of the TargetSet where the focused item is located. If a TargetSet specifies any value for the focusIndex, that value will be used instead of defaultTargetSetFocusIndex</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.3 seconds" name="duration" type="Time">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the time, in seconds, to perform the animation when the animateToItem or animateToTargetSet fields are set</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="focusedTargetSet" type="array_of_TargetSet_nodes">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies one or more TargetSet's to be used when the TargetList has the focus. If a single TargetSet is specified, focus will stay fixed on the targetRect of that TargetSet that corresponds to the TargetGroup's focus index. The focus index will come from the TargetSet if explicitly specified or from the TargetGroup's defaultTargetSetFocusIndex field if not.If focusedTargetSet includes more than one TargetSet node, that defines a sequence of TargetSet's that will be advanced through as the user presses the advance or reverse key. When advancing, the focus floats from one TargetSet's to the next TargetSet in the array until the last element of the focusedTargetSet is reached, at which point the focus is fixed to the last element and the items begin to scroll.When reversing, the focus floats from one TargetSet to the previous TargetSet in the array until the first element of the focusedTargetSet is reached, at which point the focus is fixed to the first element and the items begin to scroll.See above for more discussion of setting up fixed and floating focus use cases.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="itemComponentName" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the name of a XML component for the group items. An instance of this component is created on demand for each visible item of the group. The XML component must define a specific interface as detailed in TargetGroup XML Component below</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="jumpToItem" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to a valid item index, causes the group to immediately update so that the specified index moves to the target region specified by the TargetSet's focusIndex</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;up&quot;" name="reverseKey" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies which remote button will move the focus backward. For vertical lists, this will typically be set to "up". For horizontal rows, this will typically be set to "left".</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="showTargetRects" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether the current target rectangles (as defined in the read-only currTargetSet field's TargetSet) are drawn or not. Typically this would only be set to true while debugging a channel, although in some use cases its possible that you might want to display the current target rectangles. The rectangles are drawn using the color in the targetSet's TargetSet node's color field</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="invalid" name="targetSet" type="TargetSet">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the TargetSet to use to define the target regions of the items in the group. When set or modified, the target regions are immediately adjusted to use the new values</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="invalid" name="unfocusedTargetSet" type="TargetSet">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the TargetSet to be used when the TargetList does not have the focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="wrap" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies whether the content items wraparound at the end of the TargetGroup to fill all of the targets rectangles</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="TargetSet">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Node&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The TargetSet node class is used to specify a set of target regions where items in a TargetGroup node are rendered. This information includes an array of rectangles that is used to define the location and size of a region that will be occupied by an item in the TargetGroup as well as an optional index that identifies one rectangle in the array to be treated as the region where the item with focus is located.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/targetset.md"&gt;https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/targetset.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="0xFFFFFF80" name="color" type="Color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the TargetGroup using this TargetSet has its showTargetRects field set to true, the target rectangles of the current TargetSet will be drawn using the specified color. Drawing the TargetSet's target rectangles is generally only done when debugging an application.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="-1" name="focusIndex" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Identifies the index of an element of the targetRects array that will be treated as the region occupied by the focus item. The default of of -1 indicates that the TargetGroup's current focus index will not be changed when the TargetGroup is set to use the TargetSet to define its target regions.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="targetRects" type="array_of_rectangles">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies an array of rectangles that define the target regions used by a TargetGroup node. To specify a rectangle, you can either specify a associative array with x, y, width and height elements or an array of 4 numeric values. For example, you could specify an array of two rectangles like this:[ x:10, y:5, width: 200, height:150, x:10, y:160, width: 200, height:150 ]Alternately, you could specify the same array like this:[ 10, 5, 200, 150, 10, 160, 200, 150 ]</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Task">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Node&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The Task node class allows you to specify a function to be spawned in a different thread, and run asynchronously with respect to both the scene rendering thread and the main application thread. A Task node also allows you to run functions that cannot be run in SceneGraph node or component, typically BrightScript code functions involving operations such as reading data from servers and file system manipulation. (You also cannot, and should not, run functions in a SceneGraph application for operations that are functionally the same as SceneGraph nodes and components, such as playing videos.) A list of all the BrightScript functions and components that cannot be used in SceneGraph applications or can only be used in a Task node can be found in BrightScript Support.
A Task node is typically used to read data from a server to create a ContentNode node to configure a SceneGraph node or component (see ContentNode). A Task node used for this purpose can be thought of as a content reader. Since ContentNode nodes are required to configure many components rendered in a scene, such as lists, panels, and grids, and you will generally want to read the data for those types of nodes from your server, you should create a Task node as a content reader for each of those components that you use in your scene.
The Task node class was designed with three general development use cases:
A new Task node object is created for each asynchronous operation. The input data needed for the operation is set in the Task node object &lt;interface\&gt; fields in the render thread, along with an observer of the output  field data, and the Task node control field is set to RUN. After the output data is returned to the render thread, the Task node object is not used again.

A Task node object is used multiple times for several identical asynchronous operations. In this case, the input data for each operation is set in the existing Task node object, with another observer for the output  field data, and the Task node control field is again set to RUN. This may be more efficient than creating a new Task node object for each of the identical operations.

A Task node observes its input  fields using the port form of the ifSGNodeField observeField\(\) method, and returns output data with each field change. In this case, the Task node acts like a continuous server.
Since Task nodes launch asynchronous threads, and have no provisions for locks and mutexes, you must be careful to avoid race, deadlock, and other asynchronous thread errors. Here are a few tips for using Task nodes:
Avoid accessing files which must be persistent before thread completion, to avoid a subsequent Task node or other thread access of the same file before the thread completes. It is easier and safer to use a dynamically-created string or other data object to hold temporary thread data to avoid having a subsequent or existing thread overwrite and corrupt the data.

Be very careful if you access any object in a Task node that may exist in another thread. It is better to completely separate all objects in any other possible thread from the Task node thread by setting the  fields of the Task node with copies of the minimum amount of data needed to run the thread.

In the Task node init() function, perform the minimum required amount of initialization of the Task node and any included thread functions. If you intend to trigger an asynchronous task based on a Task node input  field change, in many cases, you should only set up the observer for the field in init().

Use the port form of the ifSGNodeField observeField\(\) rather than the onChange attribute. This will avoid triggering the thread in response to a render thread event before the Task node observers are set up.

It is more efficient to use a persistent Task node that is triggered by an  field change than to create a new Task node every time a particular asynchronous thread is required. If needed, you can communicate that the particular asynchronous thread is no longer required through an  field as well, either through the triggering field, or a special field used for control of the Task node.

You can use a single Task node object to run any number of different asynchronous threads by setting the functionName field to the Task node function you want before setting the control field to RUN. If you do not use the input data  fields to trigger running the thread, this is equivalent to calling an asynchronous function, and passing the input data fields as arguments to the function. The output data  fields can likewise be considered as the return value of a asynchronous function call, but to avoid blocking you must observe the fields, or the state field, as a callback event to handle the results in the calling thread.
Also review SceneGraph Threads for in-depth information on using Task nodes most efficiently.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/control-nodes/task.md"&gt;https://developer.roku.com/docs/references/scenegraph/control-nodes/task.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="init" name="control" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Requests a change in the run state of the spawned task. The valid options are the same as for the state field, but case-insensitive (i.e. can set "RUN" or "run")</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="functionName" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The name of the function in the Task node component to be executed when the state field changes to RUN. The function must be declared within the scope of the Task node component</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="TextEditBox">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Group&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The TextEditBox node class is intended to display a string of characters as they are typed. When focused, it displays a flashing cursor to indicate the text insertion position.
TextEditBox nodes are automatically included in the Keyboard and MiniKeyboard node classes.
The default appearance of the TextEditBox is very transparent, allowing it to pick up most of its color from what is rendered underneath it. The appearance can be customized by changing the backgroundUri and other fields.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/widget-nodes/texteditbox.md"&gt;https://developer.roku.com/docs/references/scenegraph/widget-nodes/texteditbox.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="false" name="active" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When active is set to true, the cursor is displayed. When set to false, the cursor is hidden. When used internal to the Keyboard and MiniKeyboard nodes, those nodes set this field to true when the keyboard has focus, and false when it does not.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="backgroundUri" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the URI of the image rendered as the background of the TextEditBox node.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="clearOnDownKey" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When clearOnDownKey is set to true, the textEditBox erases all the characters when down key is pressed (focus does not move down). When set to false, the characters are not erased and focus moves down.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="cursorPosition" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;By default, this is set to the length of the text field, indicating that the next character to be entered should be appended at the end of the string. When used internal to the Keyboard and MiniKeyboard nodes, those nodes use this field to move the text insertion point.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="hintText" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a string to be displayed if the length of the text field string is zero. The typical usage of this field is to prompt the user about what to enter (such as, "Enter your WiFi password").</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xffffffff" name="hintTextColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the color of the hint text string.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="15" name="maxTextLength" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the maximum length of the string that can be displayed. When used internal to the Keyboard node, maxTextLength is initialized to 75. When used in the MiniKeyboard node, maxTextLength is initialized to 25.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="secureMode" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to true, the characters entered are briefly displayed, then replaced with an asterisk. When set to false, the characters entered are always displayed. When used internal to the Keyboard and MiniKeyboard nodes, you can access the keyboard textEditBox field to set its secureMode field. For example: myKeyboard.textEditBox.secureMode = true</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="text" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Contains the string of characters being displayed.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xffffffff" name="textColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the color of the text string displayed.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="-1.0" name="width" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the width of the TextEditBox node. When used internal to the Keyboard and MiniKeyboard nodes, those nodes set this field to match the width of the keyboard.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="TimeGrid">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;OTT providers can use the TimeGrid node to implement an Electronic Program Guide (EPG) in their channels. In an EPG, channels are represented as horizontal rows, one for each channel. Each row has a channel name on the left, and a set of programs airing on that channel to the right. The size of each program depends on its duration. One of these programs has a remote control focus highlight indicator on it, and this highlight can be moved around using the remote control (as long as the TimeGrid node has remote control focus).
The TimeGrid node also features an alternative Now/Next view that lists only the programs currently airing and airing next, with their respective start times. See Now/Next mode for more information.
time grid&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/timegrid.md"&gt;https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/timegrid.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Timer">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Node&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The Timer node class generates an observable event after a specified amount of time has elapsed.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/control-nodes/timer.md"&gt;https://developer.roku.com/docs/references/scenegraph/control-nodes/timer.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="none" name="control" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used to control the operation of the Timer node. Recognized values include: Value Effect none No effect start Starts the Timer node operation stop Stops a running Timer node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1" name="duration" type="time">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the time in seconds before the Timer node fires after the control field value is set to start. To specify time values down to millisecond granularity, use a float type (0.001 equals one millisecond)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="fire" type="Event">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Triggers observer callback functions when the Timer node fires. Please note that the timer observer callback executes on the render thread</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="repeat" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If set to true, the Timer node fires repeatedly, each time the specified duration field value elapses. If set to false, the Timer node only fires once until restarted</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Vector2DFieldInterpolator">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Node&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Vector2DFieldInterpolator specifies a keyframe animation sequence to be applied to a pair Vector2D field of a node. Most typically, this is used to animate the (x,y) coordinates of a node's translation field.
All field interpolators include a set of key/keyValue pairs that define a keyframe of the animation. Field interpolators are generally used as children of an Animation node. As the animation progresses, it sets the fraction field of its field interpolators to a value between 0 and 1, indicating the percentage of the Animation's progress. The keyframes of the interpolator include a "key", the percentage where the keyframe should occur, and a "keyValue", the value that the field should have at that percentage.
For example, if a Vector2DFieldInterpolator had three keyframes, (0.0, 0.0, 0.0), (0.4, 500.0, 0.0) and (1.0, 500, 200.0), then when the interpolator's fraction field was 0.0 (i.e. 0%), the field would be set to 0.0, 0.0. When fraction was 0.4 (i.e. 40%), the field would be set to 500.0, 0.0. When fraction was 1.0 (i.e. 100%), the field would be set to 500.0, 200.0.
For values of fraction between 0.0 and 0.4 (e.g. 0.2 or 20%), the field value is determined by linearly interpolating the keyValues for the first two keyframes. In this case, since the key of 0.2 is halfway between the key at 0.0 and the key at 0.4, the field would be set to 250.0, 0.0 (halfway between the point 0.0, 0.0 and 200.0, 0.0. Similarly, when fraction is between the second and third keys (i.e. between 0.4 and 1.0), the field value is determined by linearly interpolating the keyValues of the second and third keyframes.
For this example, if the field being interpolated were the translation field of a Poster node parented to the Scene node, the Poster would originally be positioned with its top/left corner at the upper, left corner of the screen. As the animation proceeded from 0% to 40% complete, the Poster would slide horizontally to the right until it's top/left corner was at x=500.0, y=0.0. As the animation continued from 40% to 100% complete, the Poster would slide vertically down until its top/left corner was at x=500.0, y=200.0.
If the first keyframe has a key percentage greater than zero, then the field value will be equal to the keyValue of the first keyframe until fraction reaches the first keyframe's key percentage. Similarly, if the last keyframe has a key percentage less than one, the field value will be set to the keyValue of the last keyframe from when fraction equals the the last keyframe's key percentage and will not change as fraction increases from that value to 1.0.
While linearly interpolation is used to compute the keyValue's for fraction values between successive keys, non-linear easing functions may be applied to the fraction values computed by the Animation node, so the overall animation may vary in speed.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/animation-nodes/vector2dfieldinterpolator.md"&gt;https://developer.roku.com/docs/references/scenegraph/animation-nodes/vector2dfieldinterpolator.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="&quot;&quot;" name="fieldToInterp" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the field to interpolate. The string should contain the ID of a node in the scene and the name of a field of that node, separated by a dot ".". For example, "title.width" would indicate that the interpolator should be applied to the width field of a node whose id field was "title". The specified field must be of type float</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="fraction" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the percentage to be used to compute a value for the field</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="key" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the key percentages for the interpolator's keyframes. Each key percentage should be a unique value from 0 to 1 indicating the percentage of the animation where the keyValue should occur. Behavior is undefined if the number of values in the key field does not match the number of values in the keyValue field</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="keyValue" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the key values or the interpolator's keyframes. Each value in the keyValue array corresponds to a value in the key field's array. The interpolator's behavior is undefined if the number of values in the key field does not match the number of values in the keyValue field</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="reverse" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Enables animation to be played in reverse.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="Video">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;Group&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The Video node class provides a controlled play of live or VOD video.
The Video node includes a wide variety of internal nodes to support trick play, playback buffering indicators, and so forth. Playback buffering indicators, to indicate buffering before initial playback as well as re-buffering, use an internal instance of a ProgressBar node. For trick play, an internal instance of a TrickPlayBar node is provided. For display of BIF images for DVD-like chapter selection, an internal instance of a BIFDisplay node is provided.
Starting from Roku OS 8, the behavior of the Roku system overlay is such that the system overlay now slides in whenever the * button is pressed, the Video node is in focus, and the app does not have its OnKeyEvent() handler fired. When the Video node is not in focus, the system overlay does not slide in and the OnKeyEvent() handler is fired.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/media-playback-nodes/video.md"&gt;https://developer.roku.com/docs/references/scenegraph/media-playback-nodes/video.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="0,0" name="MaxVideoDecodeResolution" type="vector2d_width_height">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the max resolution required by your video.Video decode memory is a shared resource with OpenGL texture memory. The Brightscript 2D APIs are implemented using OpenGL texture memory on Roku models that support the Open GL APIs (see Hardware specifications for a list of these models).On models that do not support Open GL APIs, this field exists for API compatibility but has no effect on actual memory allocations.Video decode memory allocation is based on a resolution of 1920x1080 or 1280x720 as the maximum supported resolution for a particular Roku model (see Hardware specifications for a list of these models).This field enables applications that want to use both the 2D APIs and video playback with a lower resolution than 1080p. Without this field, these applications are likely to not have enough memory for either video playback or UI rendering.If width is 0 (the default), it is unlimited. If height is 0 (the default), it is unlimited.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="audioTrack" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The track identifier of the selected audio track. Reading this field will return the track identifier of the audio selected by the user.Writing this value will change the audio track. However,  channels should not do this unless they are implementing  their own track selection menu that users control. This is because the Roku OS selects the best track automatically based on preferred language setting on the device.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="internal instance default" name="bifDisplay" type="BifDisplay_node">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Component that displays BIFs and allows navigation. The fields of this internal node are as follows:FieldTypeDefaultUseframeBgBlendColorcolor0xFFFFFFFFA color to be blended with the image displayed behind individual BIF images displayed on the screen. The blending is performed by multiplying this value with each pixel in the image. If not changed from the default value, no blending will take place.frameBgImageUriuri""The URI of an image to be displayed behind individual frames on the screen. The actual frame image is displayed opaquely on top of this background, so only the outer edges of this image are visible. Because of that, this background image typically appears as a border around the video frame. If the frameBgBlendColor field is set to a value other than the default, that color will be blended with the background image.getNearestFrametimeinvalidAvailable since Roku OS 9Write-OnlyRequests the nearest BIF to the time specified. This would normally be an offset from the current playback position. The getNearestFrame request is passed to the BifCache which uses the getNearestFrame() method implemented on all BIF storage classes. Existing BifCache functionality is then used to retrieve the bitmap data and load it into the texture manager.nearestFramestring""Available since Roku OS 9Read-OnlyContains the URI of the requested BIF. The returned URIs will be of the form 'memory://BIF_%d_%d'. These URIs can then be used directly in the 'uri' field of a Poster SGN (or similar).</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="internal instance default" name="bufferingBar" type="ProgressBar_node">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Component that shows the progress of re-buffering, after video playback has started. The fields of this internal node are as follows:FieldTypeDefaultUsewidthfloatsystem defaultSets a custom width for an instance of the ProgressBar nodeheightfloatsystem defaultSets a custom height for an instance of the ProgressBar nodeemptyBarBlendColorcolor0xFFFFFFFFA color to be blended with the graphical image specified in the emptyBarImageUri field. The blending is performed by multiplying this value with each pixel in the image. If not changed from the default value, no blending will take place.emptyBarImageUriuri""A 9-patch or ordinary PNG of the bar presenting the remaining work to be done. This is typically displayed on the right side of the track, and is blended with the color specified in the emptyBarBlendColor field, if set to a non-default value.filledBarBlendColorcolor0xFFFFFFFFThis color will be blended with the graphical image specified in the filledBarImageUri field. The blending is performed by multiplying this value with each pixel in the image. If not changed from the default value, no blending will take place.filledBarImageUriuri""A 9-patch or ordinary PNG of the bar that represents the completed portion of the work represented by this ProgressBar node. This is typically displayed on the left side of the track. This will be blended with the color specified by the filledBarBlendColor field, if set to a non-default value.trackBlendColorcolor0xFFFFFFFFThis color is blended with the graphical image specified by trackImageUri field. The blending is performed by multiplying this value with each pixel in the image. If not changed from the default value, no blending will take place.trackImageUriuri""A 9-patch or ordinary PNG of the track of the progress bar, which surrounds the filled and empty bars. This will be blended with the color specified by the trackBlendColor field, if set to a non-default value.percentageintegertopThe percentage of the work that is done. Setting this field controls the visual appearance of the ProgressBar node.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="bufferingTextColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The color of the text displayed near the buffering bar defined by the bufferingBar field, when the buffering bar is visible. If this is 0, the system default color is used. To set a custom color, set this field to a value other than 0x0.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="captionStyle" type="associative_array">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Available since Roku OS 8.Allows channels to style closed captions. For any keys that are absent from the associative array, or for unexpected values, the Default value is assumed for that property. Following are the possible key names and values for this field:Property Possible Values Text/Font DefaultSerif Fixed WidthSerif ProportionalSans Serif Fixed WidthSans Serif ProportionalCasualCursiveSmall Caps Text/Effect DefaultNoneRaisedDepressedUniformDrop shadow (left)Drop shadow (right) Text/Size DefaultLargeMediumSmall Text/Color DefaultWhiteBlackRedGreenBlueYellowMagentaCyan Text/Opacity Default25%50%75%100% Background/Color DefaultWhiteBlackRedGreenBlueYellowMagentaCyan Background/Opacity DefaultOff25%50%75%100% Window/Color DefaultWhiteBlackRedGreenBlueYellowMagentaCyan Window/Opacity DefaultOff25%50%75%100%</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="cgms" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the CGMS (Copy Guard Management System) on analog outputs to the desired level. The valid values are:Value Effect 0 No copy restriction 1 Copy no more 2 Copy once allowed 3 No copying permitted</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="NULL" name="content" type="ContentNode">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The ContentNode node with the Content Meta-Data for the video, or a video playlist (a sequence of videos) to be played.If a video playlist is to be played, the children of this ContentNode node comprise the playlist, and each ContentNode child must have all attributes required to play that video. For example, if the videos "A" and "B" are to be played, three ContentNode nodes must be created: the parent ContentNode (which is largely ignored), one ContentNode child for "A," and one ContentNode child for "B." The parent node is set into this content field, and when video playback is started, all of its children will be played in sequence. Any changes made to the playlist after playback has started are ignored. See the contentIsPlaylist and contentIndex fields, for more information on playlists.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="contentIsPlaylist" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If set to true, enables video playlists (a sequence of videos to be played). See the content and contentIndex field for more information on playlists.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="none" name="control" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the desired play state for the video, such as starting or stopping the video play. Getting the value of this field returns the most recent value set, or none if no value has been set. To dynamically monitor the actual state of the video, see the state field.The play and stop commands to commence and discontinue playback should not be used to implement trick modes like rewind, or replay. For that use the seek field.Option Effect none No play state set play Start video play stop Stop video play pause Pause video play resume Resume video play after a pause replay Replay video prebuffer Starts buffering the video stream before the Video node actually begins playback. Only one video stream can be buffering in the application at any time. Setting the control field to prebuffer for another video stream after setting prebuffer for a previous video stream stops the buffering of the previous video stream. skipcontent Skip the currently-playing content and begin playing the next content in the playlist. If the content is not a playlist, or if the current content is the end of the playlist, this will end playback.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="disableScreenSaver" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set this to true to suppress the screensaver. This is typically used to suppress the screensaver when playing audio-only streams.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableScreenSaverWhilePlaying" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set this to true to allow the screensaver to activate even if video is playing, as long as that video does not cover 50% or more of the screen. Set to false to block the screensaver activating if any video is playing. Note that this field has no effect when the video node plays audio only streams. For screensaver control with audio only streams, use the disableScreenSaver field.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="enableTrickPlay" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Controls whether trickplay is allowed during playback. When set to false the user trickplay buttons on the remote will have no effect. This only applies when enableUI is set to true.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="enableUI" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If set to true (the default), the entire Video node user interface (such as ProgressBar and TrickPlayBar nodes, and BIF navigation) appear in response to stream events and remote control key presses.If set to false, most of the Video node user interface will not be shown, and the application is expected to implement the UI. The one exception is the closed-caption dialog, which always appears when the video is playing fullscreen and the user presses the Options (*) buttonWhen using the Roku Advertising Framework (RAF), the RAF library may temporarily set this field to false while playing ads.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="Off" name="globalCaptionMode" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the value of the global Roku closed-caption mode. This can be used to allow the user or the application to change the closed-caption mode in an application just before or during video playback. The possible options are:Option Effect "Off" Turns the global Roku closed-caption mode off. "On" Turns the global Roku closed-caption mode on. "Instant replay" Sets the global Roku closed-caption setting to display captions only during instant replay. "When mute" Sets the global Roku closed-caption setting to display captions only when the volume is muted. (This only applies to Roku TVs.)The channel should set the subtitleTrack field regardless of the selected Caption Mode.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="height" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the height of the video play window in pixels. If set to 0.0 (the default), the video play window is set to the height of the entire display screen.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="loop" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If set to true, the video or video playlist (if the contentIsPlaylist field is set to true to enable video playlists) will be restarted from the beginning after the end is reached.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="mute" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to mute the audio of the video currently playing in the Video node. Set to false to restore audio.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="-1" name="nextContentIndex" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the contentIsPlaylist field is set to true to enable video playlists, sets the index of the next video in the playlist to be played. Setting this field does not immediately change the video being played, but takes effect when the current video is completed or skipped. By default, this value is -1, which performs the default index increment operation. After the video specified by the index in this field begins playing, the field is set to the default -1 again, so the next video played will be set by the default index increment operation unless the field is set again to a different index.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.5" name="notificationInterval" type="time">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The interval between notifications to observers of the position field, specified as the number of seconds. If the value is 0, no notifications are delivered. This value may be read or modified at any time.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="internal instance default" name="retrievingBar" type="ProgressBar_node">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Component that shows the progress of initial retrieving of the video, prior to starting playback. The fields of this internal node are the same as for the bufferingBar field, which are the fields of the internal ProgressBar node.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="retrievingTextColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The color of the text displayed near the retrieving bar, when the retrieving bar defined in the retrievingBar field is visible. If this is 0, the system default color is used. To set a custom color, set this field to a value other than 0x0.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="invalid" name="seek" type="time">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the current position in the video. The value is the number seconds from the beginning of the stream, specified as a double.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="subtitleTrack" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The identifier of the selected subtitle track. Subtitles may or may not be visible on the screen, depending upon the user's caption mode setting. Reading this field will return the identifier of the subtitle track selected by the user. Writing this the field will change the track.See also: globalCaptionMode</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="50" name="supplementaryAudioVolume" type="int">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Available since Roku OS 8.The track identifier of the audio being played. Reading this field will return the track identifier of the audio being played, and writing this value will change the audio track.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="suppressCaptions" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Suppresses the closed caption for the purpose of resolving conflicts in cases where UI elements are drawn.Note that most of the disabling/enabling of the captions are done by the Roku OS, including enabling closed caption for Instant Replay.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="timedMetaDataSelectionKeys" type="array_of_strings">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the video stream contains timed meta data such as ID3 tags, any meta data with a key matching an entry in this array will be set into the timedMetaData field. If any entry in this array is "*", then all timed meta data will be selected.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="internal instance default" name="trickPlayBar" type="TrickPlayBar_node">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The visible TrickPlayBar node. The fields of this internal node are as follows:FieldTypeDefaultUsecurrentTimeMarkerBlendColorcolor0xFFFFFFFFThis is blended with the marker for the current playback position. This is typically a small vertical bar displayed in the TrickPlayBar node when the user is fast-forwarding or rewinding through the video.textColorcolorsystem defaultSets the color of the text next to the trickPlayBar node indicating the time elapsed/remaining.thumbBlendColorcolor0xFFFFFFFFSets the blend color of the square image in the trickPlayBar node that shows the current position, with the current direction arrows or pause icon on top. The blending is performed by multiplying this value with each pixel in the image. If not changed from the default value, no blending will take place.filledBarBlendColorcolor0xFFFFFFFFThis color will be blended with the graphical image specified in the filledBarImageUri field. The blending is performed by multiplying this value with each pixel in the image. If not changed from the default value, no blending will take place.filledBarImageUriuri""A 9-patch or ordinary PNG of the bar that represents the completed portion of the work represented by this ProgressBar node. This is typically displayed on the left side of the track. This will be blended with the color specified by the filledBarBlendColor field, if set to a non-default value.trackBlendColorcolor0xFFFFFFFFThis color is blended with the graphical image specified by trackImageUri field. The blending is performed by multiplying this value with each pixel in the image. If not changed from the default value, no blending will take place.trackImageUriuri""A 9-patch or ordinary PNG of the track of the progress bar, which surrounds the filled and empty bars. This will be blended with the color specified by the trackBlendColor field, if set to a non-default value.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="width" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the width of the video play window in pixels. If set to 0.0 (the default), the video play window is set to the width of the entire display screen.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
                <xs:element name="ZoomRowList">
                    <xs:annotation>
                        <xs:documentation>&lt;b&gt;Extends: &lt;/b&gt;ArrayGrid&lt;br/&gt;&lt;br/&gt;&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;The ZoomRowList node allows a row of the Row-Row Grid to smoothly zoom up to a larger size when that row has focus. Rows in this node are capable of gaining the focus while scrolling, and smoothly zooming up by the specified amount. The amount to zoom can be specified on a per row basis so that some rows can zoom up by a larger amount than others.&lt;br/&gt;&lt;br/&gt;&lt;b&gt;More: &lt;/b&gt;&lt;a href="https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/zoomrowlist.md"&gt;https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/zoomrowlist.md&lt;/a&gt;</xs:documentation>
                    </xs:annotation>
                    <xs:complexType>
                        <xs:group ref="allNodes"/>
                        <xs:attribute default="0" name="animateToItem" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to a valid item index, causes the list or grid to quickly scroll so that the item at the specified index moves into focus, or focus moves to the item</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="renderLast" name="childRenderOrder" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Option Description"renderFirst" any drawing done by this node will be done before the node children are rendered"renderLast" any drawing done by this node will be done after the node children are rendered</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="clippingRect" type="array_of_float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a rectangle in the node local coordinate system that is used to limit the region where this node and its children can render. If a non-empty rectangle is specified, then all drawing by this node and its children will be limited to that rectangular area. ${clippingRectValues}</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="columnSpacings" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies differing spaces between each grid column, to allow the spacing between columns to vary from column to column. This field is not used by lists. The specified values override the itemSpacing field vector2d X-value for each grid column corresponding to its position in the array, in left to right order. If the array contains fewer elements than the number of columns needed to display all the items in the grid, the itemSpacing field vector2d X-value is used for any unspecified columns</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="columnWidths" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies differing widths for each grid column, to allow the width of each column to vary from column to column. This field is not used by lists. The specified values override the itemSize field vector2d X-value for each grid column corresponding to its position in the array, in left to right order. If the array contains fewer elements than the number of columns needed to display all the items in the grid, the itemSize field vector2d X-value is used for any unspecified columns</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="none" name="content" type="ContentNode">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the content meta-data for the list or grid. This field must be set with a ContentNode node that specifies the content meta-data for the list or grid in order for the list or grid to be displayed. See the Data Bindings section of each list or grid reference description for details on the content meta-data that must be specified in the ContentNode node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="currFocusColumn" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Gives access to which column of a grid is in the focus position as the items scrolling around. So, currFocusColumn = 3.7 would mean that item 3 occupies 30% of the focus position while item 4 occupies 70% of the focus position. To maximize performance, the field should be kept to a minimum, as these scripts will run once during each render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="read-only" name="currFocusFeedbackOpacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;This field provides access to the current opacity of the focus feedback indicator. It can be used to have other items on the screen fade in/out when the focus feedback indicator fades in/out.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="currFocusRow" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Gives access to which row of a grid is in the focus position as the items scrolling around. So, currFocusRow = 3.7 would mean that item 3 occupies 30% of the focus position while item 4 occupies 70% of the focus position. To maximize performance, the field should be kept to a minimum, as these scripts will run once during each render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="currFocusSection" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Gives access to which section of a grid is in the focus position as the items scrolling around. So, currFocusSection = 3.7 would mean that item 3 occupies 30% of the focus position while item 4 occupies 70% of the focus position. To maximize performance, the field should be kept to a minimum, as these scripts will run once during each render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="drawFocusFeedback" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Causes a specified bitmap to be drawn on list or grid items to indicate focus has moved to that item</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="drawFocusFeedbackOnTop" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the drawFocusFeedback field value is set to true, specifies whether the specified focus indicator bitmap is drawn on top of the focused list or grid items. The default value draws the specified focus indicator bitmap below the focused list or grid item</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="enableRenderTracking" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, renderTracking will be set to a string describing how much of the node is rendered on screen</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="fadeFocusFeedbackWhenAutoScrolling" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to true, the focus feedback indicator will quickly fade out when scrolling multiple items and fade back in when the scrolling ends. The focus feedback indicator will also after in and out when using the FFW/Rewind keys to scroll a page at a time. Additionally, the focus behavior has been modified for situations where all the items in a RowList row are visible on screen at once. In the past, the focus would step once, then begin to scroll smoothly. Now, the focus steps one-by-one through each itemcurrFocusFeedbackOpacityfloatread-onlyREAD_WRITEThis field provides access to the current opacity of the focus feedback indicator. It can be used to have other items on the screen fade in/out when the focus feedback indicator fades in/out. Additionally, the focus behavior has been modified for situations where all the items in a RowList row are visible on screen at once. In the past, the focus would step once, then begin to scroll smoothly. Now, the focus steps one-by-one through each item</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="fixedLayout" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies that a grid will have a layout of items of different widths configured by parameters included in a ContentNode node for the grid. This field is not used by lists</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xFFFFFFFF" name="focusBitmapBlendColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Blend the graphic image specified by focusBitmapUri with the specified color. If set to the default, 0xFFFFFFFF, no color blending will occur. Set this field to show a focus indicator graphic image with a different color than the image specified by focusBitmapUri</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="focusBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the drawFocusFeedback field value is set to true, specifies a custom bitmap to be drawn on list or grid items to indicate the focus has moved to that item. Only set this field to use a bitmap with a different appearance than the system default. In most cases, you will want to use a 9-patch PNG bitmap with both expandable regions as well as margins to fit around the item, which is the type of bitmap used as the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="focusColumn" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the column that will have fixed focus for grids if the horizFocusAnimationStyle field value is set to fixedFocusWrap. This field is not used for lists</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="focusFootprintBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the drawFocusFeedback field value is set to true, specifies a custom bitmap to be drawn on list or grid items to indicate focus on that item, when the list or grid itself does not have focus. Only set this field to use a bitmap with a different appearance than the system default. In most cases, you will want to use a 9-patch PNG bitmap with both expandable regions as well as margins to fit around the item, which is the type of bitmap used as the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0xFFFFFFFF" name="focusFootprintBlendColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Blend the graphic image specified by focusFootprintBitmapUri with the specified color. If set to the default, 0xFFFFFFFF, no color blending will occur. Set this field to show a focus footprint indicator graphic image with a different color than the image specified by focusFootprintBitmapUri</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="focusRow" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the row that will have fixed focus if the vertFocusAnimationStyle field value is set to fixedFocusWrap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="focusable" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Provides a hint as to whether or not this node can take the key focus.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="N/A" name="focusedChild" type="NA">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When a node or one of its children gains or loses the keyboard focus, the focusedChild field will be set and call its observer functions. In the observer function, typically, you use ifSGNodeFocus functions to query whether this node or some other node has the key focus or is in the key focus chain. Accessing the value of the field will result in script errors.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="floatingFocus" name="horizFocusAnimationStyle" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the how the focus indicator moves in a row of grid items in response to the remote direction pad Left and Right key presses. This field is not used for lists. The possible values are: Option Effect floatingFocus Causes the focus indicator to float left or right until it reaches the end of the row, at which point the focus indicator will stay fixed on the first or last item in the row, and the items will scroll left or right if there were items that were not visible. fixedFocusWrap Causes the row to wrap around when the focus indicator reaches the first or last item in the row, as long as the row contains enough items to fill the row. If the row does not contain enough items to fill the row, the focus indicator will float left and right.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="&quot;&quot;" name="id" type="xs:string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Adds a dictionary entry that allows the node to be retrieved with ifSGNodeDict findNode() function.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentOpacity" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node opacity is determined by multiplying opacity attribute of the node by the opacity of the parent node, which may have been determined by multiplying the opacity of its ancestor nodes. If false, the node opacity is determined by the opacity attribute set for the node or the default opacity attribute value</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="inheritParentTransform" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node overall transformation is determined by combining the accumulated transformation matrix of all of its ancestors in the SceneGraph with the node local 2D transformation matrix described by its translation, rotation, scale and scaleRotateCenter fields. If false, the accumulated transformation of all of its ancestors in the SceneGraph is ignored and only the node local transformation matrix is used. This causes the node to be transformed relative to the root of the SceneGraph (that is, the Scene component)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0, 0.0, 0.0, 0.0" name="itemClippingRect" type="rect2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies a clipping region for the list or grid items</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0,0" name="itemSize" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the width and height of each item in the list or grid. For list or grid items that are posters, itemSize is the value of a basePosterSize field and any sub-elements included with the poster</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0,0" name="itemSpacing" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the horizontal and vertical spacing between the list or grid items. For lists, the vector2d Y-value specifies the vertical spacing between items in the list, and the vector2d X-value is ignored</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="jumpToItem" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;When set to a valid item index, causes the list or grid to immediately update so that the item at the specified index moves into focus, or focus moves to the item</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="false" name="muteAudioGuide" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Set to true to suppress the default CVAA text to speech. This allows channels to provide their own custom implementation</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="numColumns" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of columns in a grid. This field is not used for lists</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1" name="numRenderPasses" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of rendering operations to display a complex list or grid. This allows you to achieve a performance increase by specifying that individual sub-elements of the list or grid items occur on sequential rendering operations, rather than all of the item sub-elements being rendered in one rendering operation, which is the default. If you set this field to a value greater than 1, you must specify the rendering operation number for each of the item sub-elements as the renderPass field value for that sub-element. No sub-element that has a renderPass field value of 0 (the default), or has a renderPass field value greater than the value of the numRenderPasses field, will render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="numRows" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the number of visible rows displayed. Note that the actual number of rows may be more or less than the number specified depending on the number of items in the list or grid content</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0" name="opacity" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Sets the opacity of the node and its children. Opacity is the opposite of transparency. Opacity values range from 0.0 (fully transparent) to 1.0 (fully opaque). As the SceneGraph is traversed, the opacity values are combined by multiplying the current accumulated opacity with the node opacity, so that if the accumulated opacity of a node ancestors is 0.25 (75% transparent), the node will have opacity of 0.25 or less. This allows entire branches of the SceneGraph to fade in and out by animating the opacity of the node at the root of the branch</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="renderPass" type="xs:integer">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Used in combination with the numRenderPasses field of nodes extended from the ArrayGrid abstract node class, to optimize rendering of lists and grids. This should never be set to a non-zero value unless you are optimizing the performance of a list or grid rendering by specifying the sequence of rendering operations for sub-elements of the list or grid items, and have set the numRenderPasses field value for the list or grid to a value greater than 1. If the numRenderPasses field value for the list or grid is set to a value greater than 1, you must set this field to a value greater than 0 for all sub-elements of the list or grid items, and not greater than the numRenderPasses field value. If the numRenderPasses field is set to a value greater than 1, and you set this field for a list or grid item sub-element to 0 (the default), or a value greater than the numRenderPasses field value, the list or grid item sub-element will not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="disabled" name="renderTracking" type="option_as_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;renderTracking is set to "disabled" when enableRenderTracking is set to false. The following options are only available when enableRenderTracking is set to true: Option Description"none" renderTracking is set to "none" if one or more of these conditions is true:the node's visible field is set to falsethe node's opacity field is set to 0.0no clippingRect is specified and the node is completely offscreena clippingRect is specified and the node lies completely outside that clippingRect's coordinates or is completely offscreen"partial" renderTracking is set to "partial" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is partially offscreena clippingRect is specified and the node lies partially inside the clippingRect's coordinates"full" renderTracking is set to "full" if all of the following conditions are true:the node's visible field is set to truethe node's opacity field is greater than 0.0no clippingRect is specified and the node is completely onscreena clippingRect is specified and the node lies completely inside the clippingRect's coordinates</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="rotation" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the rotation angle about the scaleRotateCenter point (in radians) of the node local coordinate system. Positive values specify a counterclockwise rotation, negative values specify a clockwise rotation. For some Roku Player hardware, specifically Roku Players without OpenGL graphics support, only rotations of 0, 90, 180 and 270 degrees (in equivalent radians) are supported. (See Roku Models and Features for information on OpenGL support)</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="rowHeights" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies differing heights for each list or grid row, to allow the height of each row to vary from row to row. The specified values override the itemSize field vector2d Y-value for each list or grid row corresponding to its position in the array, in top to bottom order. If the array contains fewer elements than the number of rows needed to display all the items in the list or grid, the itemSize field vector2d Y-value is used for any unspecified rows</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="" name="rowSpacings" type="array_of_floats">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies differing spaces between each list or grid row, to allow the spacing between rows to vary from row to row. The specified values override the itemSpacing field vector2d Y-value for each list or grid row corresponding to its position in the array, in top to bottom order. If the array contains fewer elements than the number of rows needed to display all the items in the list or grid, the itemSpacing field vector2d Y-value is used for any unspecified rows</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="1.0,1.0" name="scale" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the scale factor to be applied to the node local coordinate</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="scaleRotateCenter" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Describes the location of a point in the node local coordinate that serves as the center of the scale and rotation operations</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="sectionDividerBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies a custom bitmap to use as a visual divider between the sections of the list or grid. Only set this field to use a bitmap with a different appearance than the system default. For sections that do not include an icon or a title, the system default or custom bitmap specified as the wrapDividerBitmapUri field value is used for the section dividers. In most cases, you will want to use a 9-patch PNG bitmap with both expandable regions, which is the type of bitmap used as the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="sectionDividerFont" type="font">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies a custom font to use for the section title text. Only set this field to use a different font than the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="sectionDividerHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies the height of the section divider bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="sectionDividerLeftOffset" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies the left offset of the section divider from the list or grid</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="sectionDividerMinWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies the minimum width of the section divider bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="sectionDividerSpacing" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, and the section dividers are specified to include an icon and/or a label, specifies the spacing between the icon, label, and section divider bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="system default" name="sectionDividerTextColor" type="color">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies a custom color to use for the section title text. Only set this field to use a different text color than the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0" name="sectionDividerWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the ContentNode node specifies sections for a list or grid, specifies the width of the section divider bitmap</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0.0,0.0" name="translation" type="vector2d">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Defines the origin of the node local coordinate system relative to its parent node</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="floatingFocus" name="vertFocusAnimationStyle" type="option_string">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Specifies the how the focus indicator moves in a list or a column of grid items in response to the remote direction pad Up and Down key presses. The possible values are: Option Effect floatingFocus Causes the focus indicator to float up or down until it reaches the end of the list or grid column, at which point the focus indicator will stay fixed on the first or last item in the list or grid column, and the items will scroll up or down if there are items that were not visible. Note that when this style is set, section dividers are not rendered. fixedFocusWrap Causes the column to wrap around when the focus indicator reaches the first or last item in the list or grid column, as long as the list or grid column contains enough items to fill the list or grid column. If the list or grid column does not contain enough items to fill the list or grid column, the focus indicator will float up and down. fixedFocus Causes the focus to stay fixed on the upper leftmost item. As the user scrolls down, the row containing the previously selected item scrolls up off screen. Scrolling continues until the last row is reached.</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="true" name="visible" type="xs:boolean">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If true, the node and its children are rendered. If false, the node and its children do not render</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default=" " name="wrapDividerBitmapUri" type="uri">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the vertFocusAnimationStyle field value is set to fixedFocusWrap, specifies a custom bitmap to use as a visual divider between the last and first list or grid items, when the list or grid wraps. Only set this field to use a bitmap with a different appearance than the system default. In most cases, you will want to use a 9-patch PNG bitmap with both expandable regions, which is the type of bitmap used as the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="36" name="wrapDividerHeight" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;If the vertFocusAnimationStyle field value is set to fixedFocusWrap, specifies the height of a bitmap used as a visual divider between the last and first list or grid items, when the list or grid wraps. Only set this field to use a value with a different appearance than the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                        <xs:attribute default="0" name="wrapDividerWidth" type="xs:float">
                            <xs:annotation>
                                <xs:documentation>&lt;b&gt;Description: &lt;/b&gt;&lt;br/&gt;Additionally, the focus behavior has been modified for situations where all the items in a RowList row are visible on screen at once. In the past, the focus would step once, then begin to scroll smoothly. Now, the focus steps one-by-one through each item.If the vertFocusAnimationStyle field value is set to fixedFocusWrap, specifies the width of a bitmap used as a visual divider between the last and first list or grid items when the list or grid wraps. Only set this field to use a value with a different appearance than the system default</xs:documentation>
                            </xs:annotation>
                        </xs:attribute>
                    </xs:complexType>
                </xs:element>
            </xs:choice>
        </xs:choice>
    </xs:group>
</xs:schema>
