<div dir="ltr"><div dir="ltr">Hello Shaan,<div><br></div><div>Nice work. I have also tested fructose activities on Ubuntu 20.04 with sucrose package version 0.117 , Some of the errors you mentioned are reproducible in following activities in Browse, Calculate and in write. I would suggest opening issues in GitHub repositories so that if someone wants to work on activities , he/she can solve them.<br><br>Thanks</div><div>Saumya<br><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jun 19, 2020 at 7:52 PM <a href="mailto:shaansubbaiah.cs18@bmsce.ac.in">shaansubbaiah.cs18@bmsce.ac.in</a> <<a href="mailto:shaansubbaiah.cs18@bmsce.ac.in">shaansubbaiah.cs18@bmsce.ac.in</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div style="font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px"><div><p style="margin:0px 0px 1.2em">Hello all,<br>This took quite a while, long post ahead. Testing the Fructose activities:<br></p>
<table style="margin:1.2em 0px;padding:0px;border-collapse:collapse;border-spacing:0px;font:inherit;border:0px none">
<thead>
<tr style="border-color:rgb(204,204,204) currentcolor currentcolor;border-style:solid none none;border-width:1px 0px 0px;background-color:white;margin:0px;padding:0px">
<th style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em;font-weight:bold;background-color:rgb(240,240,240)">Sugar</th>
<th style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em;font-weight:bold;background-color:rgb(240,240,240)">Debian</th>
</tr>
</thead>
<tbody style="margin:0px;padding:0px;border:0px none">
<tr style="border-color:rgb(204,204,204) currentcolor currentcolor;border-style:solid none none;border-width:1px 0px 0px;background-color:white;margin:0px;padding:0px">
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">0.117-3</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">Buster / 10.4, (unstable packages)</td>
</tr>
</tbody>
</table>
<p style="margin:0px 0px 1.2em"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Tick ✓</code> <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Cross ✕</code></p>
<table style="margin:1.2em 0px;padding:0px;border-collapse:collapse;border-spacing:0px;font:inherit;border:0px none">
<thead>
<tr style="border-color:rgb(204,204,204) currentcolor currentcolor;border-style:solid none none;border-width:1px 0px 0px;background-color:white;margin:0px;padding:0px">
<th style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em;font-weight:bold;background-color:rgb(240,240,240)">Activity</th>
<th style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em;font-weight:bold;background-color:rgb(240,240,240)">Start/Stop</th>
<th style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em;font-weight:bold;background-color:rgb(240,240,240)">Functions</th>
<th style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em;font-weight:bold;background-color:rgb(240,240,240)">Save/Restore</th>
<th style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em;font-weight:bold;background-color:rgb(240,240,240)">Collaboration</th>
<th style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em;font-weight:bold;background-color:rgb(240,240,240)">Interface</th>
<th style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em;font-weight:bold;background-color:rgb(240,240,240)">Other</th>
</tr>
</thead>
<tbody style="margin:0px;padding:0px;border:0px none">
<tr style="border-color:rgb(204,204,204) currentcolor currentcolor;border-style:solid none none;border-width:1px 0px 0px;background-color:white;margin:0px;padding:0px">
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">Browse</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✕ <a href="http://bugs.debian.org/963068" target="_blank">Debian #963068</a></td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓ (Search bar doesn’t work very well, described below)</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✕ (Error in Host’s log, doesn’t work, described below)</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">Collapsing the Bookmarks bar lags/ causes multiple refreshes?</td>
</tr>
<tr style="border-color:rgb(204,204,204) currentcolor currentcolor;border-style:solid none none;border-width:1px 0px 0px;margin:0px;padding:0px;background-color:rgb(248,248,248)">
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">Calculate</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓ (Nothing thats not tracked on Github)</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
</tr>
<tr style="border-color:rgb(204,204,204) currentcolor currentcolor;border-style:solid none none;border-width:1px 0px 0px;background-color:white;margin:0px;padding:0px">
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">Chat</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
</tr>
<tr style="border-color:rgb(204,204,204) currentcolor currentcolor;border-style:solid none none;border-width:1px 0px 0px;margin:0px;padding:0px;background-color:rgb(248,248,248)">
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">Image Viewer</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
</tr>
<tr style="border-color:rgb(204,204,204) currentcolor currentcolor;border-style:solid none none;border-width:1px 0px 0px;background-color:white;margin:0px;padding:0px">
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">Jukebox</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">-</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✕ Multiple issues, mostly due to the OpenGL Renderer, described below</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
</tr>
<tr style="border-color:rgb(204,204,204) currentcolor currentcolor;border-style:solid none none;border-width:1px 0px 0px;margin:0px;padding:0px;background-color:rgb(248,248,248)">
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">Log</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓ (Saving log as a zip)</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">-</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
</tr>
<tr style="border-color:rgb(204,204,204) currentcolor currentcolor;border-style:solid none none;border-width:1px 0px 0px;background-color:white;margin:0px;padding:0px">
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">Pippy</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">-</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">Dark mode is not applied to Pippy tabs created after Dark Mode is enabled.</td>
</tr>
<tr style="border-color:rgb(204,204,204) currentcolor currentcolor;border-style:solid none none;border-width:1px 0px 0px;margin:0px;padding:0px;background-color:rgb(248,248,248)">
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">Read</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓ (Sometimes last 2 characters in a txt file are missing. Described below )</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✕ (Stuck at ‘Receiving book’)</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
</tr>
<tr style="border-color:rgb(204,204,204) currentcolor currentcolor;border-style:solid none none;border-width:1px 0px 0px;background-color:white;margin:0px;padding:0px">
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">Terminal</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">-</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">Warning in the activity log, described below</td>
</tr>
<tr style="border-color:rgb(204,204,204) currentcolor currentcolor;border-style:solid none none;border-width:1px 0px 0px;margin:0px;padding:0px;background-color:rgb(248,248,248)">
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">Write</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✕ <a href="https://github.com/sugarlabs/write-activity/issues/40" target="_blank">#40, Reported by Saumya</a></td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">✓</td>
<td style="text-align:center;font-size:1em;border:1px solid rgb(204,204,204);margin:0px;padding:0.5em 1em">1. TTS ends halfway through the last word. <br> 2. Default font differs for guest in collaboration <a href="https://github.com/sugarlabs/write-activity/issues/43" target="_blank">#43</a></td>
</tr>
</tbody>
</table>
<hr>
<p style="margin:0px 0px 1.2em"><strong>Terminal</strong></p>
<pre style="font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;background-color:rgb(248,248,248);white-space:pre-wrap;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block">/usr/lib/python3/dist-packages/sugar3/activity/activityinstance.py:60: Warning: value "((GtkInputPurpose) 10)
" of type 'GtkInputPurpose' is invalid or out of range for property 'input-purpose' of type 'GtkInputPurpose'
activity.show()
1592556015.448473 DEBUG root: Activity.__canvas_map_cb
/usr/share/sugar/activities/Terminal.activity/terminal.py:378: Warning: value "((GtkInputPurpose) 10)" of typ
e 'GtkInputPurpose' is invalid or out of range for property 'input-purpose' of type 'GtkInputPurpose'
index = self._notebook.append_page(box, tablabel)
/usr/share/sugar/activities/Terminal.activity/terminal.py:453: Warning: value "((GtkInputPurpose) 10)" of typ
e 'GtkInputPurpose' is invalid or out of range for property 'input-purpose' of type 'GtkInputPurpose'
self._<a href="http://notebook.props.page" target="_blank">notebook.props.page</a> = index
</code></pre><p style="margin:0px 0px 1.2em"><strong>Browse</strong><br>All tests apart from the <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">start/stop</code> were done after installing <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">libglib2.0-dev</code> package which prevented the activity from opening.</p>
<ol style="margin:1.2em 0px;padding-left:2em">
<li style="margin:0.5em 0px">Typing something in the search bar and clicking the search button or hitting Enter doesn’t do anything; whereas searching through the address bar works.</li>
<li style="margin:0.5em 0px">Typing in the address bar causes several (possibly 100’s) of warnings in the activity log<pre style="font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;background-color:rgb(248,248,248);white-space:pre-wrap;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block">(sugar-activity3:7184): Gtk-WARNING **: 16:25:08.511: Failed to set text from markup due to error parsing mar
kup: Error on line 2: Entity did not end with a semicolon; most likely you used an ampersand character withou
t intending to start an entity — escape ampersand as &
</code></pre></li>
</ol>
<p style="margin:0px 0px 1.2em"><strong>Jukebox</strong></p>
<ol style="margin:1.2em 0px;padding-left:2em">
<li style="margin:0.5em 0px">Moving the OpenGL renderer window around creates a Windows XP-like Solitare effect </li>
<li style="margin:0.5em 0px">Closing the OpenGL renderer window throws an error in the Jukebox log<pre style="font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;background-color:rgb(248,248,248);white-space:pre-wrap;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block">1592561580.133608 ERROR root: ERROR MESSAGE: gst-resource-error-quark: Quit requested (3)
1592561580.133807 ERROR root: ERROR DETAIL: gstglimagesink.c(1781): gst_glimage_sink_show_frame (): /GstPipel
ine:pipeline0/GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:vbin/GstAutoVideoSink:videosink/GstGLImageSinkB
in:videosink-actual-sink-glimage/GstGLImageSink:sink
</code></pre></li>
<li style="margin:0.5em 0px">Seeking ahead or back causes the OpenGL visualization to freeze, takes quite some time to recover, or doesn’t recover at all.</li>
<li style="margin:0.5em 0px"><p style="margin:0.5em 0px">Clicking the full-screen button causes another OpenGL visualization of the same size to spawn on the left of the previous visualization, which is now frozen.</p>
</li>
<li style="margin:0.5em 0px"><p style="margin:0.5em 0px">Sometimes while closing and playing songs in the playlist a huge amount of warnings appear in the jukebox log, not sure how to reproduce properly.</p>
</li>
</ol>
<pre style="font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;background-color:rgb(248,248,248);white-space:pre-wrap;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block">1592562307.413873 ERROR root: ERROR MESSAGE: gst-resource-error-quark: Quit requested (3)
1592562307.414180 ERROR root: ERROR DETAIL: gstglimagesink.c(1781): gst_glimage_sink_show_frame (): /GstPipeline:pipeline0/GstPlayBin:playbin0/GstPlaySink:playsink/GstBin:vbin/GstAutoVideoSink:videosink/GstGLImageSinkBin:videosink-actual-sink-glimage/GstGLImageSink:sink
(sugar-activity3:6947): GStreamer-CRITICAL **: 15:55:07.546: gst_object_unref: assertion '((GObject *) object)->ref_count > 0' failed
(sugar-activity3:6947): GStreamer-CRITICAL **: 15:55:07.547: gst_object_unref: assertion '((GObject *) object)->ref_count > 0' failed
.
. This line repeats around 100+ times
.
(sugar-activity3:6947): GStreamer-CRITICAL **: 15:55:07.874: gst_object_unref: assertion '((GObject *) object)->ref_count > 0' failed
sys:1: Warning: g_object_ref: assertion 'G_IS_OBJECT (object)' failed
sys:1: Warning: instance with invalid (NULL) class pointer
sys:1: Warning: g_signal_emit_valist: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed
</code></pre><p style="margin:0px 0px 1.2em"><strong>Also, in <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">~/.sugar/default/data</code> I noticed there were ~60 copies of the same song I had been playing. I had downloaded the song only once, perhaps it is something to do with how Jukebox handles the songs. This consumes a ton of space, in my case 7mb*60.</strong></p>
<p style="margin:0px 0px 1.2em"><strong>Read</strong><br>Sometimes the last 2 characters in a txt file aren’t seen.<br>Reproduced by: Create a txt file in Write Activity -> Open with Read Activity -> Last 2 characters are missing.<br>This happens occasionally, the data in the txt file is intact.</p>
<p style="margin:0px 0px 1.2em"><strong>Calculate</strong><br>Typing random text instead of digits/variables throws an error. Should be handled.</p>
<pre style="font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;background-color:rgb(248,248,248);white-space:pre-wrap;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block">1592573782.228379 DEBUG Calculate: Result: RuntimeError("Variable 'oklol' not defined", 0,
5)
Traceback (most recent call last):
File "/usr/share/sugar/activities/Calculate.activity/layout.py", line 133, in <lambda>
lambda w: self._parent.process()],
File "/usr/share/sugar/activities/Calculate.activity/calculate.py", line 552, in process
self.set_error_equation(eqn)
File "/usr/share/sugar/activities/Calculate.activity/calculate.py", line 444, in set_err
or_equation
self.set_last_equation(eqn)
File "/usr/share/sugar/activities/Calculate.activity/calculate.py", line 439, in set_las
t_equation
self.layout.last_eq.set_buffer(eqn.create_lasteq_textbuf())
File "/usr/share/sugar/activities/Calculate.activity/calculate.py", line 219, in create_
lasteq_textbuf
resstr = str(self.result)
File "/usr/share/sugar/activities/Calculate.activity/astparser.py", line 110, in __str__
{'a': self.eqn[self._range[0] - 1: self._range[1] - 1],
TypeError: 'NoneType' object is not subscriptable
</code></pre><p style="margin:0px 0px 1.2em"><strong>Browse</strong><br>Traceback in Host’s Browse log when Guest connects. The webpage opened in the host does not open in the Guest.</p>
<pre style="font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;background-color:rgb(248,248,248);white-space:pre-wrap;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block">1592574235.567373 DEBUG CollabWrapper: __state_changed_cb dbus.UInt32(3) dbus.UInt32(0)
Traceback (most recent call last):
File "/usr/share/sugar/activities/Browse.activity/collabwrapper.py", line 688, in __noti
fy_state_cb
input_stream = self._get_input_stream()
File "/usr/share/sugar/activities/Browse.activity/collabwrapper.py", line 736, in _get_i
nput_stream
return Gio.MemoryInputStream.new_from_data(self._blob, None)
TypeError: Item 0: Must be number, not str
</code></pre><hr>
<p style="margin:0px 0px 1.2em">Note, the tests:</p>
<ul style="margin:1.2em 0px;padding-left:2em">
<li style="margin:0.5em 0px">Don’t include issues that were already tracked in Github.</li>
<li style="margin:0.5em 0px">Cover almost all the functions of an activity.</li>
<li style="margin:0.5em 0px">Save/Restore refers to closing and reopening the activity and checking if there are any changes for activities that do not have an explicit save functionality.</li>
<li style="margin:0.5em 0px">Includes most, if not all errors that were logged while testing the activities. <em>Ideally</em> nothing should be left out, but …</li>
<li style="margin:0.5em 0px">Will be covered in more detail if possible for Debian <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">unstable</code> and <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">testing</code>, this was to set up a baseline.</li>
</ul>
<div style="margin:0px 0px 1.2em" dir="ltr">I still have to decide on a plan to test Sugar’s features (non-activity-related).</div><div style="margin:0px 0px 1.2em" dir="ltr">Please let me know if I have missed anything. Let me know if you face these issues as well, would be very helpful in determining if they are due to Debian or Sugar.<br></div><div style="margin:0px 0px 1.2em"><br></div><div style="margin:0px 0px 1.2em" dir="ltr">Best,</div><div style="margin:0px 0px 1.2em" dir="ltr">Shaan</div><div style="margin:0px 0px 1.2em" dir="ltr"><br></div><div style="margin:0px 0px 1.2em" dir="ltr"><br></div>
<div title="MDH:PGRpdiBkaXI9Imx0ciIgZGF0YS1zZXRkaXI9ImZhbHNlIj5IZWxsbyBhbGwsPC9kaXY+PGRpdiBkaXI9Imx0ciIgZGF0YS1zZXRkaXI9ImZhbHNlIj48ZGl2PjxkaXYgc3R5bGU9ImNvbG9yOiByZ2IoMTkxLCAxOTksIDIxMyk7IGJhY2tncm91bmQtY29sb3I6IHJnYig0MSwgNDUsIDYyKTsgZm9udC1mYW1pbHk6ICZxdW90O0ZpcmEgQ29kZSZxdW90OywgJnF1b3Q7RHJvaWQgU2FucyBNb25vJnF1b3Q7LCAmcXVvdDttb25vc3BhY2UmcXVvdDssIG1vbm9zcGFjZSwgJnF1b3Q7RHJvaWQgU2FucyBGYWxsYmFjayZxdW90OzsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgZm9udC1zaXplOiAxNHB4OyBsaW5lLWhlaWdodDogMTlweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyI+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij5UaGlzIHRvb2sgcXVpdGUgYSB3aGlsZSwgbG9uZyBwb3N0IGFoZWFkLjwvc3Bhbj48L2Rpdj48YnI+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij58IFN1Z2FyIHwgRGViaWFufDwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPnwgOi0tLTogfCA6LS0tOiB8PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+fCAwLjExNy0zIHwgQnVzdGVyIC8gMTAuNCwgICh1bnN0YWJsZSBwYWNrYWdlcykgfDwvc3Bhbj48L2Rpdj48YnI+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij5gVGljayDinJNgPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPiA8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+YENyb3NzIOKclWA8L3NwYW4+PC9kaXY+PGJyPjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+fCBBY3Rpdml0eSB8IFN0YXJ0L1N0b3AgfCBGdW5jdGlvbnMgfCBTYXZlL1Jlc3RvcmUgfCBDb2xsYWJvcmF0aW9uIHwgSW50ZXJmYWNlIHwgT3RoZXIgfDwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPnwgOi0tLTogfCA6LS0tOiB8IDotLS06IHwgOi0tLTogfCA6LS0tOiB8IDotLS06IHwgOi0tLTogfDwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPnwgQnJvd3NlIHwg4pyVIDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICM4MmIxZmY7Ij5bPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPkRlYmlhbiAjOTYzMDY4PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogIzgyYjFmZjsiPl08L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmY1NTcyOyI+KDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjg2OWE7Ij5idWdzLmRlYmlhbi5vcmcvOTYzMDY4PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2ZmNTU3MjsiPik8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+IHwg4pyTIChTZWFyY2ggYmFyIGRvZXNuJ3Qgd29yayB2ZXJ5IHdlbGwsIGRlc2NyaWJlZCBiZWxvdykgfCDinJN8IOKclSAoRXJyb3IgaW4gSG9zdCdzIGxvZywgZG9lc24ndCB3b3JrLCBkZXNjcmliZWQgYmVsb3cpIHwg4pyTIHwgQ29sbGFwc2luZyB0aGUgQm9va21hcmtzIGJhciBsYWdzLyBjYXVzZXMgbXVsdGlwbGUgcmVmcmVzaGVzPyB8PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+fCBDYWxjdWxhdGUgfCDinJMgfCDinJMgfCDinJMgfCDinJMgfCDinJMgKE5vdGhpbmcgdGhhdHMgbm90IHRyYWNrZWQgb24gR2l0aHViKSB8IOKckyB8PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+fCBDaGF0IHwg4pyTIHwg4pyTIHwg4pyTIHwg4pyTIHwg4pyTIHwg4pyTIHw8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij58IEltYWdlIFZpZXdlciB8IOKckyB8IOKckyB8IOKckyB8IOKckyB8IOKckyB8IOKckyB8PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+fCBKdWtlYm94IHwg4pyTIHwg4pyTIHwg4pyTIHwgLSB8IOKclSBNdWx0aXBsZSBpc3N1ZXMsIG1vc3RseSBkdWUgdG8gdGhlIE9wZW5HTCBSZW5kZXJlciwgZGVzY3JpYmVkIGJlbG93IHwg4pyTIHw8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij58IExvZyB8IOKckyB8IOKckyB8IOKckyAoU2F2aW5nIGxvZyBhcyBhIHppcCkgfCAtIHwg4pyTIHwg4pyTIHw8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij58IFBpcHB5IHwg4pyTIHwg4pyTIHwg4pyTIHwgLSB8IOKckyB8IERhcmsgbW9kZSBpcyBub3QgYXBwbGllZCB0byBQaXBweSB0YWJzIGNyZWF0ZWQgYWZ0ZXIgRGFyayBNb2RlIGlzIGVuYWJsZWQuIHw8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij58IFJlYWQgfCDinJMgfCDinJMgKFNvbWV0aW1lcyBsYXN0IDIgY2hhcmFjdGVycyBpbiBhIHR4dCBmaWxlIGFyZSBtaXNzaW5nLiBEZXNjcmliZWQgYmVsb3cgKSB8IOKckyB8IOKclSAoU3R1Y2sgYXQgJ1JlY2VpdmluZyBib29rJykgfCDinJMgfCDinJMgfDwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPnwgVGVybWluYWwgfCDinJMgfCDinJMgfCDinJMgfCAtIHwg4pyTIHwgV2FybmluZyBpbiB0aGUgYWN0aXZpdHkgbG9nLCBkZXNjcmliZWQgYmVsb3cgfDwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPnwgV3JpdGUgfCDinJMgfCDinJMgfCDinJMgfCDinJUgPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogIzgyYjFmZjsiPls8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+IzQwLCBSZXBvcnRlZCBieSBTYXVteWE8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjODJiMWZmOyI+XTwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICNmZjU1NzI7Ij4oPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2ZmODY5YTsiPmh0dHBzOi8vZ2l0aHViLmNvbS9zdWdhcmxhYnMvd3JpdGUtYWN0aXZpdHkvaXNzdWVzLzQwPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2ZmNTU3MjsiPik8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+IHwg4pyTIHwgMS4gVFRTIGVuZHMgaGFsZndheSB0aHJvdWdoIHRoZSBsYXN0IHdvcmQuIDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICM4OWRkZmY7Ij4mbHQ7PC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2ZmNTU3MjsiPmJyPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogIzg5ZGRmZjsiPiZndDs8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+IDIuIERlZmF1bHQgZm9udCBkaWZmZXJzIGZvciBndWVzdCBpbiBjb2xsYWJvcmF0aW9uIDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICM4MmIxZmY7Ij5bPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPiM0Mzwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICM4MmIxZmY7Ij5dPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2ZmNTU3MjsiPig8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmY4NjlhOyI+aHR0cHM6Ly9naXRodWIuY29tL3N1Z2FybGFicy93cml0ZS1hY3Rpdml0eS9pc3N1ZXMvNDM8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmY1NTcyOyI+KTwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij58PC9zcGFuPjwvZGl2Pjxicj48YnI+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4tLS08L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNmZmNiNmI7Ij4qKjwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICNmZmNiNmI7Zm9udC13ZWlnaHQ6IGJvbGQ7Ij5UZXJtaW5hbDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICNmZmNiNmI7Ij4qKjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPmBgYDwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPi91c3IvbGliL3B5dGhvbjMvZGlzdC1wYWNrYWdlcy9zdWdhcjMvYWN0aXZpdHkvYWN0aXZpdHlpbnN0YW5jZS5weTo2MDogV2FybmluZzogdmFsdWUgIigoR3RrSW5wdXRQdXJwb3NlKSAxMCk8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4iIG9mIHR5cGUgJ0d0a0lucHV0UHVycG9zZScgaXMgaW52YWxpZCBvciBvdXQgb2YgcmFuZ2UgZm9yIHByb3BlcnR5ICdpbnB1dC1wdXJwb3NlJyBvZiB0eXBlICdHdGtJbnB1dFB1cnBvc2UnPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+ICBhY3Rpdml0eS5zaG93KCk8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4xNTkyNTU2MDE1LjQ0ODQ3MyBERUJVRyByb290OiBBY3Rpdml0eS5fX2NhbnZhc19tYXBfY2I8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4vdXNyL3NoYXJlL3N1Z2FyL2FjdGl2aXRpZXMvVGVybWluYWwuYWN0aXZpdHkvdGVybWluYWwucHk6Mzc4OiBXYXJuaW5nOiB2YWx1ZSAiKChHdGtJbnB1dFB1cnBvc2UpIDEwKSIgb2YgdHlwPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+ZSAnR3RrSW5wdXRQdXJwb3NlJyBpcyBpbnZhbGlkIG9yIG91dCBvZiByYW5nZSBmb3IgcHJvcGVydHkgJ2lucHV0LXB1cnBvc2UnIG9mIHR5cGUgJ0d0a0lucHV0UHVycG9zZSc8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4gIGluZGV4ID0gc2VsZi5fbm90ZWJvb2suYXBwZW5kX3BhZ2UoYm94LCB0YWJsYWJlbCk8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4vdXNyL3NoYXJlL3N1Z2FyL2FjdGl2aXRpZXMvVGVybWluYWwuYWN0aXZpdHkvdGVybWluYWwucHk6NDUzOiBXYXJuaW5nOiB2YWx1ZSAiKChHdGtJbnB1dFB1cnBvc2UpIDEwKSIgb2YgdHlwPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+ZSAnR3RrSW5wdXRQdXJwb3NlJyBpcyBpbnZhbGlkIG9yIG91dCBvZiByYW5nZSBmb3IgcHJvcGVydHkgJ2lucHV0LXB1cnBvc2UnIG9mIHR5cGUgJ0d0a0lucHV0UHVycG9zZSc8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4gIHNlbGYuX25vdGVib29rLnByb3BzLnBhZ2UgPSBpbmRleDwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPmBgYDwvc3Bhbj48L2Rpdj48YnI+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNmZmNiNmI7Ij4qKjwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICNmZmNiNmI7Zm9udC13ZWlnaHQ6IGJvbGQ7Ij5Ccm93c2U8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmZjYjZiOyI+Kio8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+IDwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPkFsbCB0ZXN0cyBhcGFydCBmcm9tIHRoZSA8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+YHN0YXJ0L3N0b3BgPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPiB3ZXJlIGRvbmUgYWZ0ZXIgaW5zdGFsbGluZyA8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+YGxpYmdsaWIyLjAtZGV2YDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4gcGFja2FnZSB3aGljaCBwcmV2ZW50ZWQgdGhlIGFjdGl2aXR5IGZyb20gb3BlbmluZy48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNkOWY1ZGQ7Ij4xLjwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4gVHlwaW5nIHNvbWV0aGluZyBpbiB0aGUgc2VhcmNoIGJhciBhbmQgY2xpY2tpbmcgdGhlIHNlYXJjaCBidXR0b24gb3IgaGl0dGluZyBFbnRlciBkb2Vzbid0IGRvIGFueXRoaW5nOyB3aGVyZWFzIHNlYXJjaGluZyB0aHJvdWdoIHRoZSBhZGRyZXNzIGJhciB3b3Jrcy48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNkOWY1ZGQ7Ij4yLjwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4gVHlwaW5nIGluIHRoZSBhZGRyZXNzIGJhciBjYXVzZXMgc2V2ZXJhbCAocG9zc2libHkgMTAwJ3MpIG9mIHdhcm5pbmdzIGluIHRoZSBhY3Rpdml0eSBsb2c8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij5gYGA8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4oc3VnYXItYWN0aXZpdHkzOjcxODQpOiBHdGstV0FSTklORyAqKjogMTY6MjU6MDguNTExOiBGYWlsZWQgdG8gc2V0IHRleHQgZnJvbSBtYXJrdXAgZHVlIHRvIGVycm9yIHBhcnNpbmcgbWFyPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+a3VwOiBFcnJvciBvbiBsaW5lIDI6IEVudGl0eSBkaWQgbm90IGVuZCB3aXRoIGEgc2VtaWNvbG9uOyBtb3N0IGxpa2VseSB5b3UgdXNlZCBhbiBhbXBlcnNhbmQgY2hhcmFjdGVyIHdpdGhvdTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPnQgaW50ZW5kaW5nIHRvIHN0YXJ0IGFuIGVudGl0eSDigJQgZXNjYXBlIGFtcGVyc2FuZCBhcyAmYW1wO2FtcDs8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij5gYGA8L3NwYW4+PC9kaXY+PGJyPjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmZjYjZiOyI+Kio8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmZjYjZiO2ZvbnQtd2VpZ2h0OiBib2xkOyI+SnVrZWJveDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICNmZmNiNmI7Ij4qKjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2Q5ZjVkZDsiPjEuPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPiBNb3ZpbmcgdGhlIE9wZW5HTCByZW5kZXJlciB3aW5kb3cgYXJvdW5kIGNyZWF0ZXMgYSBXaW5kb3dzIFhQLWxpa2UgU29saXRhcmUgZWZmZWN0IDwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2Q5ZjVkZDsiPjIuPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPiBDbG9zaW5nIHRoZSBPcGVuR0wgcmVuZGVyZXIgd2luZG93IHRocm93cyBhbiBlcnJvciBpbiB0aGUgSnVrZWJveCBsb2c8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij5gYGA8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4xNTkyNTYxNTgwLjEzMzYwOCBFUlJPUiByb290OiBFUlJPUiBNRVNTQUdFOiBnc3QtcmVzb3VyY2UtZXJyb3ItcXVhcms6IFF1aXQgcmVxdWVzdGVkICgzKTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPjE1OTI1NjE1ODAuMTMzODA3IEVSUk9SIHJvb3Q6IEVSUk9SIERFVEFJTDogZ3N0Z2xpbWFnZXNpbmsuYygxNzgxKTogZ3N0X2dsaW1hZ2Vfc2lua19zaG93X2ZyYW1lICgpOiAvR3N0UGlwZWw8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij5pbmU6cGlwZWxpbmUwL0dzdFBsYXlCaW46cGxheWJpbjAvR3N0UGxheVNpbms6cGxheXNpbmsvR3N0QmluOnZiaW4vR3N0QXV0b1ZpZGVvU2luazp2aWRlb3NpbmsvR3N0R0xJbWFnZVNpbmtCPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+aW46dmlkZW9zaW5rLWFjdHVhbC1zaW5rLWdsaW1hZ2UvR3N0R0xJbWFnZVNpbms6c2luazwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPmBgYDwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2Q5ZjVkZDsiPjMuPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPiBTZWVraW5nIGFoZWFkIG9yIGJhY2sgY2F1c2VzIHRoZSBPcGVuR0wgdmlzdWFsaXphdGlvbiB0byBmcmVlemUsIHRha2VzIHF1aXRlIHNvbWUgdGltZSB0byByZWNvdmVyLCBvciBkb2Vzbid0IHJlY292ZXIgYXQgYWxsLjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2Q5ZjVkZDsiPjQuPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPiBDbGlja2luZyB0aGUgZnVsbC1zY3JlZW4gYnV0dG9uIGNhdXNlcyBhbm90aGVyIE9wZW5HTCB2aXN1YWxpemF0aW9uIG9mIHRoZSBzYW1lIHNpemUgdG8gc3Bhd24gb24gdGhlIGxlZnQgb2YgdGhlIHByZXZpb3VzIHZpc3VhbGl6YXRpb24sIHdoaWNoIGlzIG5vdyBmcm96ZW4uPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2ZmNTU3MjsiPjxicj48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNkOWY1ZGQ7Ij41Ljwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4gU29tZXRpbWVzIHdoaWxlIGNsb3NpbmcgYW5kIHBsYXlpbmcgc29uZ3MgaW4gdGhlIHBsYXlsaXN0IGEgaHVnZSBhbW91bnQgb2Ygd2FybmluZ3MgYXBwZWFyIGluIHRoZSBqdWtlYm94IGxvZywgbm90IHN1cmUgaG93IHRvIHJlcHJvZHVjZSBwcm9wZXJseS48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij48YnI+PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+YGBgPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+MTU5MjU2MjMwNy40MTM4NzMgRVJST1Igcm9vdDogRVJST1IgTUVTU0FHRTogZ3N0LXJlc291cmNlLWVycm9yLXF1YXJrOiBRdWl0IHJlcXVlc3RlZCAoMyk8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4xNTkyNTYyMzA3LjQxNDE4MCBFUlJPUiByb290OiBFUlJPUiBERVRBSUw6IGdzdGdsaW1hZ2VzaW5rLmMoMTc4MSk6IGdzdF9nbGltYWdlX3Npbmtfc2hvd19mcmFtZSAoKTogL0dzdFBpcGVsaW5lOnBpcGVsaW5lMC9Hc3RQbGF5QmluOnBsYXliaW4wL0dzdFBsYXlTaW5rOnBsYXlzaW5rL0dzdEJpbjp2YmluL0dzdEF1dG9WaWRlb1Npbms6dmlkZW9zaW5rL0dzdEdMSW1hZ2VTaW5rQmluOnZpZGVvc2luay1hY3R1YWwtc2luay1nbGltYWdlL0dzdEdMSW1hZ2VTaW5rOnNpbms8L3NwYW4+PC9kaXY+PGJyPjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+KHN1Z2FyLWFjdGl2aXR5Mzo2OTQ3KTogR1N0cmVhbWVyLUNSSVRJQ0FMICoqOiAxNTo1NTowNy41NDY6IGdzdF9vYmplY3RfdW5yZWY6IGFzc2VydGlvbiAnKChHT2JqZWN0ICopIG9iamVjdCktJmd0O3JlZl9jb3VudCAmZ3Q7IDAnIGZhaWxlZDwvc3Bhbj48L2Rpdj48YnI+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4oc3VnYXItYWN0aXZpdHkzOjY5NDcpOiBHU3RyZWFtZXItQ1JJVElDQUwgKio6IDE1OjU1OjA3LjU0NzogZ3N0X29iamVjdF91bnJlZjogYXNzZXJ0aW9uICcoKEdPYmplY3QgKikgb2JqZWN0KS0mZ3Q7cmVmX2NvdW50ICZndDsgMCcgZmFpbGVkPC9zcGFuPjwvZGl2Pjxicj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPi48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4uIFRoaXMgbGluZSByZXBlYXRzIGFyb3VuZCAxMDArIHRpbWVzPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+Ljwvc3Bhbj48L2Rpdj48YnI+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4oc3VnYXItYWN0aXZpdHkzOjY5NDcpOiBHU3RyZWFtZXItQ1JJVElDQUwgKio6IDE1OjU1OjA3Ljg3NDogZ3N0X29iamVjdF91bnJlZjogYXNzZXJ0aW9uICcoKEdPYmplY3QgKikgb2JqZWN0KS0mZ3Q7cmVmX2NvdW50ICZndDsgMCcgZmFpbGVkPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+c3lzOjE6IFdhcm5pbmc6IGdfb2JqZWN0X3JlZjogYXNzZXJ0aW9uICdHX0lTX09CSkVDVCAob2JqZWN0KScgZmFpbGVkPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+c3lzOjE6IFdhcm5pbmc6IGluc3RhbmNlIHdpdGggaW52YWxpZCAoTlVMTCkgY2xhc3MgcG9pbnRlcjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPnN5czoxOiBXYXJuaW5nOiBnX3NpZ25hbF9lbWl0X3ZhbGlzdDogYXNzZXJ0aW9uICdHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0UgKGluc3RhbmNlKScgZmFpbGVkPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+YGBgPC9zcGFuPjwvZGl2Pjxicj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2ZmY2I2YjsiPioqPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2ZmY2I2Yjtmb250LXdlaWdodDogYm9sZDsiPkFsc28sIGluIDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICNmZmNiNmI7Ij5gPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2ZmY2I2Yjtmb250LXdlaWdodDogYm9sZDsiPn4vLnN1Z2FyL2RlZmF1bHQvZGF0YTwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICNmZmNiNmI7Ij5gPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2ZmY2I2Yjtmb250LXdlaWdodDogYm9sZDsiPiBJIG5vdGljZWQgdGhlcmUgd2VyZSB+NjAgY29waWVzIG9mIHRoZSBzYW1lIHNvbmcgSSBoYWQgYmVlbiBwbGF5aW5nLiBJIGhhZCBkb3dubG9hZGVkIHRoZSBzb25nIG9ubHkgb25jZSwgcGVyaGFwcyBpdCBpcyBzb21ldGhpbmcgdG8gZG8gd2l0aCBob3cgSnVrZWJveCBoYW5kbGVzIHRoZSBzb25ncy4gVGhpcyBjb25zdW1lcyBhIHRvbiBvZiBzcGFjZSwgaW4gbXkgY2FzZSA3bWIqNjAuPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2ZmY2I2YjsiPioqPC9zcGFuPjwvZGl2Pjxicj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2ZmY2I2YjsiPioqPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2ZmY2I2Yjtmb250LXdlaWdodDogYm9sZDsiPlJlYWQ8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmZjYjZiOyI+Kio8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij5Tb21ldGltZXMgdGhlIGxhc3QgMiBjaGFyYWN0ZXJzIGluIGEgdHh0IGZpbGUgYXJlbid0IHNlZW4uPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+UmVwcm9kdWNlZCBieTogQ3JlYXRlIGEgdHh0IGZpbGUgaW4gV3JpdGUgQWN0aXZpdHkgLSZndDsgT3BlbiB3aXRoIFJlYWQgQWN0aXZpdHkgLSZndDsgTGFzdCAyIGNoYXJhY3RlcnMgYXJlIG1pc3NpbmcuPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+VGhpcyBoYXBwZW5zIG9jY2FzaW9uYWxseSwgdGhlIGRhdGEgaW4gdGhlIHR4dCBmaWxlIGlzIGludGFjdC48L3NwYW4+PC9kaXY+PGJyPjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmZjYjZiOyI+Kio8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZmZjYjZiO2ZvbnQtd2VpZ2h0OiBib2xkOyI+Q2FsY3VsYXRlPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2ZmY2I2YjsiPioqPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+VHlwaW5nIHJhbmRvbSB0ZXh0IGluc3RlYWQgb2YgZGlnaXRzL3ZhcmlhYmxlcyB0aHJvd3MgYW4gZXJyb3IuIFNob3VsZCBiZSBoYW5kbGVkLjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPmBgYDwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPjE1OTI1NzM3ODIuMjI4Mzc5IERFQlVHIENhbGN1bGF0ZTogUmVzdWx0OiBSdW50aW1lRXJyb3IoIlZhcmlhYmxlICdva2xvbCcgbm90IGRlZmluZWQiLCAwLDwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPiA1KTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPlRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTo8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4gIEZpbGUgIi91c3Ivc2hhcmUvc3VnYXIvYWN0aXZpdGllcy9DYWxjdWxhdGUuYWN0aXZpdHkvbGF5b3V0LnB5IiwgbGluZSAxMzMsIGluICZsdDtsYW1iZGEmZ3Q7PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+ICAgIGxhbWJkYSB3OiBzZWxmLl9wYXJlbnQucHJvY2VzcygpXSw8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4gIEZpbGUgIi91c3Ivc2hhcmUvc3VnYXIvYWN0aXZpdGllcy9DYWxjdWxhdGUuYWN0aXZpdHkvY2FsY3VsYXRlLnB5IiwgbGluZSA1NTIsIGluIHByb2Nlc3M8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4gICAgc2VsZi5zZXRfZXJyb3JfZXF1YXRpb24oZXFuKTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPiAgRmlsZSAiL3Vzci9zaGFyZS9zdWdhci9hY3Rpdml0aWVzL0NhbGN1bGF0ZS5hY3Rpdml0eS9jYWxjdWxhdGUucHkiLCBsaW5lIDQ0NCwgaW4gc2V0X2Vycjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPm9yX2VxdWF0aW9uPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+ICAgIHNlbGYuc2V0X2xhc3RfZXF1YXRpb24oZXFuKTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPiAgRmlsZSAiL3Vzci9zaGFyZS9zdWdhci9hY3Rpdml0aWVzL0NhbGN1bGF0ZS5hY3Rpdml0eS9jYWxjdWxhdGUucHkiLCBsaW5lIDQzOSwgaW4gc2V0X2xhczwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPnRfZXF1YXRpb248L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4gICAgc2VsZi5sYXlvdXQubGFzdF9lcS5zZXRfYnVmZmVyKGVxbi5jcmVhdGVfbGFzdGVxX3RleHRidWYoKSk8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4gIEZpbGUgIi91c3Ivc2hhcmUvc3VnYXIvYWN0aXZpdGllcy9DYWxjdWxhdGUuYWN0aXZpdHkvY2FsY3VsYXRlLnB5IiwgbGluZSAyMTksIGluIGNyZWF0ZV88L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij5sYXN0ZXFfdGV4dGJ1Zjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPiAgICByZXNzdHIgPSBzdHIoc2VsZi5yZXN1bHQpPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+ICBGaWxlICIvdXNyL3NoYXJlL3N1Z2FyL2FjdGl2aXRpZXMvQ2FsY3VsYXRlLmFjdGl2aXR5L2FzdHBhcnNlci5weSIsIGxpbmUgMTEwLCBpbiBfX3N0cl9fPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+ICAgIHsnYSc6IHNlbGYuZXFuW3NlbGYuX3JhbmdlWzBdIC0gMTogc2VsZi5fcmFuZ2VbMV0gLSAxXSw8L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij5UeXBlRXJyb3I6ICdOb25lVHlwZScgb2JqZWN0IGlzIG5vdCBzdWJzY3JpcHRhYmxlPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+YGBgPC9zcGFuPjwvZGl2Pjxicj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2ZmY2I2YjsiPioqPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2ZmY2I2Yjtmb250LXdlaWdodDogYm9sZDsiPkJyb3dzZTwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICNmZmNiNmI7Ij4qKjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPlRyYWNlYmFjayBpbiBIb3N0J3MgQnJvd3NlIGxvZyB3aGVuIEd1ZXN0IGNvbm5lY3RzLiBUaGUgd2VicGFnZSBvcGVuZWQgaW4gdGhlIGhvc3QgZG9lcyBub3Qgb3BlbiBpbiB0aGUgR3Vlc3QuPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+YGBgPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+MTU5MjU3NDIzNS41NjczNzMgREVCVUcgQ29sbGFiV3JhcHBlcjogX19zdGF0ZV9jaGFuZ2VkX2NiIGRidXMuVUludDMyKDMpIGRidXMuVUludDMyKDApPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+VHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPiAgRmlsZSAiL3Vzci9zaGFyZS9zdWdhci9hY3Rpdml0aWVzL0Jyb3dzZS5hY3Rpdml0eS9jb2xsYWJ3cmFwcGVyLnB5IiwgbGluZSA2ODgsIGluIF9fbm90aTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPmZ5X3N0YXRlX2NiPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+ICAgIGlucHV0X3N0cmVhbSA9IHNlbGYuX2dldF9pbnB1dF9zdHJlYW0oKTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPiAgRmlsZSAiL3Vzci9zaGFyZS9zdWdhci9hY3Rpdml0aWVzL0Jyb3dzZS5hY3Rpdml0eS9jb2xsYWJ3cmFwcGVyLnB5IiwgbGluZSA3MzYsIGluIF9nZXRfaTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPm5wdXRfc3RyZWFtPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+ICAgIHJldHVybiBHaW8uTWVtb3J5SW5wdXRTdHJlYW0ubmV3X2Zyb21fZGF0YShzZWxmLl9ibG9iLCBOb25lKTwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPlR5cGVFcnJvcjogSXRlbSAwOiBNdXN0IGJlIG51bWJlciwgbm90IHN0cjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPmBgYDwvc3Bhbj48L2Rpdj48YnI+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4tLS08L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij5Ob3RlLCB0aGUgdGVzdHM6PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZDlmNWRkOyI+LTwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4gRG9uJ3QgaW5jbHVkZSBpc3N1ZXMgdGhhdCB3ZXJlIGFscmVhZHkgdHJhY2tlZCBpbiBHaXRodWIuPC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjZDlmNWRkOyI+LTwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4gQ292ZXIgYWxtb3N0IGFsbCB0aGUgZnVuY3Rpb25zIG9mIGFuIGFjdGl2aXR5Ljwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2Q5ZjVkZDsiPi08L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+IFNhdmUvUmVzdG9yZSByZWZlcnMgdG8gY2xvc2luZyBhbmQgcmVvcGVuaW5nIHRoZSBhY3Rpdml0eSBhbmQgY2hlY2tpbmcgaWYgdGhlcmUgYXJlIGFueSBjaGFuZ2VzIGZvciBhY3Rpdml0aWVzIHRoYXQgZG8gbm90IGhhdmUgYW4gZXhwbGljaXQgc2F2ZSBmdW5jdGlvbmFsaXR5Ljwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJjb2xvcjogI2Q5ZjVkZDsiPi08L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+IEluY2x1ZGVzIG1vc3QsIGlmIG5vdCBhbGwgZXJyb3JzIHRoYXQgd2VyZSBsb2dnZWQgd2hpbGUgdGVzdGluZyB0aGUgYWN0aXZpdGllcy4gPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2M3OTJlYTsiPl88L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYzc5MmVhO2ZvbnQtc3R5bGU6IGl0YWxpYzsiPklkZWFsbHk8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYzc5MmVhOyI+Xzwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4gbm90aGluZyBzaG91bGQgYmUgbGVmdCBvdXQsIGJ1dCAuLi48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0iY29sb3I6ICNkOWY1ZGQ7Ij4tPC9zcGFuPjxzcGFuIHN0eWxlPSJjb2xvcjogI2JmYzdkNTsiPiBXaWxsIGJlIGNvdmVyZWQgaW4gbW9yZSBkZXRhaWwgaWYgcG9zc2libGUgZm9yIERlYmlhbiA8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+YHVuc3RhYmxlYDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij4gYW5kIDwvc3Bhbj48c3BhbiBzdHlsZT0iY29sb3I6ICNiZmM3ZDU7Ij5gdGVzdGluZ2A8L3NwYW4+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+LCB0aGlzIHdhcyB0byBzZXQgdXAgYSBiYXNlbGluZS48L3NwYW4+PC9kaXY+PGJyPjxkaXY+PHNwYW4gc3R5bGU9ImNvbG9yOiAjYmZjN2Q1OyI+U3RpbGwgaGF2ZSB0byBkZWNpZGUgb24gYSBwbGFuIHRvIHRlc3QgU3VnYXIncyBmZWF0dXJlcyBlZy4gSGFuZGxpbmcgZXh0ZXJuYWwgc3RvcmFnZTwvc3Bhbj48L2Rpdj48YnI+PGJyPjwvZGl2PjwvZGl2PjxkaXY+PGJyPjwvZGl2PjwvZGl2Pg==" style="height:0px;width:0px;max-height:0px;max-width:0px;overflow:hidden;font-size:0em;padding:0px;margin:0px"></div></div></div></div>_______________________________________________<br>
Sugar-devel mailing list<br>
<a href="mailto:Sugar-devel@lists.sugarlabs.org" target="_blank">Sugar-devel@lists.sugarlabs.org</a><br>
<a href="http://lists.sugarlabs.org/listinfo/sugar-devel" rel="noreferrer" target="_blank">http://lists.sugarlabs.org/listinfo/sugar-devel</a><br>
</blockquote></div><img width="0" height="0" class="mailtrack-img" alt="" style="display:flex" src="https://mailtrack.io/trace/mail/b9f913967f094a43fea8ac3110aaafb3578bcdea.png?u=5703751"></div>