<div><br></div><div><div style="border-color:rgb(255,255,255)" dir="auto"><xsl:stylesheet version="2.0" xmlns:xsl="<a href="http://www.w3.org/1999/XSL/Transform">http://www.w3.org/1999/XSL/Transform</a>" xmlns:xs="<a href="http://www.w3.org/2001/XMLSchema">http://www.w3.org/2001/XMLSchema</a>" exclude-result-prefixes="xs"></div><div style="border-color:rgb(255,255,255)" dir="auto">  <xsl:output method="text"/></div><div style="border-color:rgb(255,255,255)" dir="auto"><br></div><div style="border-color:rgb(255,255,255)" dir="auto">  <!-- Define mapping of ConcreteNodes to JSON schema --></div><div style="border-color:rgb(255,255,255)" dir="auto">  <xsl:template match="X3D/Scene"></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:text>{&#xa;</xsl:text></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:apply-templates select="*"/></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:text>}</xsl:text></div><div style="border-color:rgb(255,255,255)" dir="auto">  </xsl:template></div><div style="border-color:rgb(255,255,255)" dir="auto"><br></div><div style="border-color:rgb(255,255,255)" dir="auto">  <xsl:template match="node()"></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:param name="indent" select="'  '"/></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:text>&#xa;</xsl:text></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:value-of select="$indent"/></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:text>"</xsl:text></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:value-of select="name()"/></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:text>" : {</xsl:text></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:apply-templates select="@* | *"/></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:value-of select="$indent"/></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:text>}</xsl:text></div><div style="border-color:rgb(255,255,255)" dir="auto">  </xsl:template></div><div style="border-color:rgb(255,255,255)" dir="auto"><br></div><div style="border-color:rgb(255,255,255)" dir="auto">  <xsl:template match="@*"></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:param name="indent" select="'  '"/></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:text>&#xa;</xsl:text></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:value-of select="$indent"/></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:text>"@</xsl:text></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:value-of select="name()"/></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:text>" : "</xsl:text></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:value-of select="."/></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:text>"</xsl:text></div><div style="border-color:rgb(255,255,255)" dir="auto">  </xsl:template></div><div style="border-color:rgb(255,255,255)" dir="auto"><br></div><div style="border-color:rgb(255,255,255)" dir="auto">  <xsl:template match="node()[not(*)]"></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:param name="indent" select="'  '"/></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:text>&#xa;</xsl:text></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:value-of select="$indent"/></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:text>"-</xsl:text></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:value-of select="name()"/></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:text>" : { "type" : "</xsl:text></div><div style="border-color:rgb(255,255,255)" dir="auto">   </div><div dir="auto"><br></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Mar 23, 2023 at 6:23 AM John Carlson <<a href="mailto:yottzumm@gmail.com">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div><div style="border-color:rgb(255,255,255)" dir="auto"><span style="font-family:Söhne,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Ubuntu,Cantarell,"Noto Sans",sans-serif,"Helvetica Neue",Arial,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:16px;white-space:pre-wrap;background-color:rgb(68,70,84);color:rgb(239,68,68)">Here's an example of XSLT code that creates a mapping from the input X3D unified object model ConcreteNodes to JSON subschema objects, using XSLT to generate JSON. The code uses recursion and lists to handle a large number of ConcreteNodes in shorter code, and puts "@" in front of SF-prefixed field type property names and "-" in front of MF-prefixed field type property names </span></div><div style="border-color:rgb(255,255,255)" dir="auto"><br></div><div style="border-color:rgb(255,255,255)" dir="auto"><xsl:stylesheet version="2.0" xmlns:xsl="<a href="http://www.w3.org/1999/XSL/Transform" target="_blank">http://www.w3.org/1999/XSL/Transform</a>"></div><div style="border-color:rgb(255,255,255)" dir="auto">  </div><div style="border-color:rgb(255,255,255)" dir="auto">  <xsl:output method="text" omit-xml-declaration="yes" encoding="UTF-8" indent="yes"/></div><div style="border-color:rgb(255,255,255)" dir="auto">  </div><div style="border-color:rgb(255,255,255)" dir="auto">  <xsl:variable name="SF_prefix" select="'@'"/></div><div style="border-color:rgb(255,255,255)" dir="auto">  <xsl:variable name="MF_prefix" select="'-'"/></div><div style="border-color:rgb(255,255,255)" dir="auto">  </div><div style="border-color:rgb(255,255,255)" dir="auto">  <xsl:template match="/"></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:text>{</xsl:text></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:apply-templates select="x3d/ConcreteNode"/></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:text>&#xa;}</xsl:text></div><div style="border-color:rgb(255,255,255)" dir="auto">  </xsl:template></div><div style="border-color:rgb(255,255,255)" dir="auto">  </div><div style="border-color:rgb(255,255,255)" dir="auto">  <xsl:template match="ConcreteNode"></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:text>&#xa;"</xsl:text></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:value-of select="@name"/></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:text>": {</xsl:text></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:apply-templates select="field"/></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:text>&#xa;}</xsl:text></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:if test="position() != last()"></div><div style="border-color:rgb(255,255,255)" dir="auto">      <xsl:text>,</xsl:text></div><div style="border-color:rgb(255,255,255)" dir="auto">    </xsl:if></div><div style="border-color:rgb(255,255,255)" dir="auto">  </xsl:template></div><div style="border-color:rgb(255,255,255)" dir="auto">  </div><div style="border-color:rgb(255,255,255)" dir="auto">  <xsl:template match="field"></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:text>&#xa;"</xsl:text></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:value-of select="@name"/></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:text>": </xsl:text></div><div style="border-color:rgb(255,255,255)" dir="auto">    <xsl:choose></div><div style="border-color:rgb(255,255,255)" dir="auto">      <xsl:when test="@type = 'SFBool' or @type = 'SFDouble' or @type = 'SFInt</div><div dir="auto"><br></div></div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Mar 23, 2023 at 6:10 AM John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div dir="auto">I’ll be posting my chatGPT results here, probably in several messages. </div><div dir="auto"><br></div><div dir="auto"><span><<span>xsl:stylesheet</span> <span>version</span>=<span>"2.0"</span>
    <span>xmlns:xsl</span>=<span>"<a href="http://www.w3.org/1999/XSL/Transform" target="_blank">http://www.w3.org/1999/XSL/Transform</a>"</span>
    <span>xmlns:x3d</span>=<span>"<a href="http://www.web3d.org/specifications/x3d-namespace" target="_blank">http://www.web3d.org/specifications/x3d-namespace</a>"</span>
    <span>xmlns:json</span>=<span>"<a href="http://www.json.org" target="_blank">http://www.json.org</a>"</span>
    <span>exclude-result-prefixes</span>=<span>"x3d"</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
    
    </span><span><<span>xsl:output</span> <span>method</span>=<span>"text"</span> <span>omit-xml-declaration</span>=<span>"yes"</span> /></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
    
    </span><span><<span>xsl:template</span> <span>match</span>=<span>"/"</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
        </span><span><<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">{</span><span></<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
        </span><span><<span>xsl:apply-templates</span> <span>select</span>=<span>"//x3d:*"</span> /></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
        </span><span><<span>xsl:text</span>></span><span>&#xA;</span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">}</span><span></<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
    </span><span></<span>xsl:template</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
    
    </span><span><<span>xsl:template</span> <span>match</span>=<span>"x3d:*[@containerField = 'children']"</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
        </span><span><<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">"</span><span></<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
        </span><span><<span>xsl:value-of</span> <span>select</span>=<span>"local-name()"</span> /></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
        </span><span><<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">":[</span><span></<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
        </span><span><<span>xsl:apply-templates</span> <span>select</span>=<span>"*"</span> /></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
        </span><span><<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">]</span><span></<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
        </span><span><<span>xsl:if</span> <span>test</span>=<span>"following-sibling::*[@containerField = 'children']"</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
            </span><span><<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">,</span><span></<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
        </span><span></<span>xsl:if</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
    </span><span></<span>xsl:template</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
    
    </span><span><<span>xsl:template</span> <span>match</span>=<span>"x3d:*"</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
        </span><span><<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">"</span><span></<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
        </span><span><<span>xsl:value-of</span> <span>select</span>=<span>"local-name()"</span> /></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
        </span><span><<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">":{</span><span></<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
        </span><span><<span>xsl:apply-templates</span> <span>select</span>=<span>"@*"</span> /></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
        </span><span><<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">}</span><span></<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
        </span><span><<span>xsl:if</span> <span>test</span>=<span>"following-sibling::*[@containerField = 'children']"</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
            </span><span><<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">,</span><span></<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
        </span><span></<span>xsl:if</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
    </span><span></<span>xsl:template</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
    
    </span><span><<span>xsl:template</span> <span>match</span>=<span>"@*[starts-with(local-name(), 'SF')]"</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
        </span><span><<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">"@</span><span></<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
        </span><span><<span>xsl:value-of</span> <span>select</span>=<span>"local-name()"</span> /></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
        </span><span><<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">":</span><span></<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
        </span><span><<span>xsl:choose</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
            </span><span><<span>xsl:when</span> <span>test</span>=<span>"starts-with(local-name(), 'SFInt')"</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
                </span><span><<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">"number"</span><span></<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
            </span><span></<span>xsl:when</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
            </span><span><<span>xsl:when</span> <span>test</span>=<span>"starts-with(local-name(), 'SFFloat')"</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
                </span><span><<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">"number"</span><span></<span>xsl:text</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
            </span><span></<span>xsl:when</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
            </span><span><<span>xsl:when</span> <span>test</span>=<span>"starts-with(local-name(), 'SFBool')"</span>></span><span style="font-family:"S\0000f6hne Mono",Monaco,"Andale Mono","Ubuntu Mono",monospace;font-size:14px;white-space:pre-wrap;background-color:rgb(0,0,0)">
                </span><span><<span class="hljs-name" style="border: 0px solid rgb(217, 217, 227); box-sizing: border-box; --tw-border-spacing-x: 0; --tw-border-spacing-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; --tw-rotate: 0; --tw-skew-x: 0; --tw-skew-y: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-pan-x: ; --tw-pan-y: ; --tw-pinch-zoom: ; --tw-scroll-snap-strictness: proximity; --tw-ordinal: ; --tw-slashed-zero: ; --tw-numeric-figure: ; --tw-numeric-spacing: ; --tw-numeric-fraction: ; --tw-ring-inset: ; --tw-ring-offset-width: 0px; --tw-ring-offset-color: #fff; --tw-ring-color: rgba(59,130,246,0.5); --tw-ring-offset-shadow: 0 0 transparent; --tw-ring-shadow: 0 0 t</span></div></blockquote></div></div>
</blockquote></div></div>