struct.BufferReadCmd.html 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <meta name="generator" content="rustdoc">
  7. <meta name="description" content="API documentation for the Rust `BufferReadCmd` struct in crate `ocl`.">
  8. <meta name="keywords" content="rust, rustlang, rust-lang, BufferReadCmd">
  9. <title>ocl::builders::BufferReadCmd - Rust</title>
  10. <link rel="stylesheet" type="text/css" href="../../normalize.css">
  11. <link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle">
  12. <link rel="stylesheet" type="text/css" href="../../dark.css">
  13. <link rel="stylesheet" type="text/css" href="../../main.css" id="themeStyle">
  14. <script src="../../storage.js"></script>
  15. </head>
  16. <body class="rustdoc struct">
  17. <!--[if lte IE 8]>
  18. <div class="warning">
  19. This old browser is unsupported and will most likely display funky
  20. things.
  21. </div>
  22. <![endif]-->
  23. <nav class="sidebar">
  24. <div class="sidebar-menu">&#9776;</div>
  25. <p class='location'>Struct BufferReadCmd</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#methods">Methods</a><div class="sidebar-links"><a href="#method.queue">queue</a><a href="#method.block">block</a><a href="#method.offset">offset</a><a href="#method.dst_offset">dst_offset</a><a href="#method.len">len</a><a href="#method.rect">rect</a><a href="#method.ewait">ewait</a><a href="#method.enew">enew</a><a href="#method.enq">enq</a><a href="#method.enq_async">enq_async</a></div></div><p class='location'><a href='../index.html'>ocl</a>::<wbr><a href='index.html'>builders</a></p><script>window.sidebarCurrent = {name: 'BufferReadCmd', ty: 'struct', relpath: ''};</script><script defer src="sidebar-items.js"></script></div>
  26. </nav>
  27. <div class="theme-picker">
  28. <button id="theme-picker" aria-label="Pick another theme!">
  29. <img src="../../brush.svg" width="18" alt="Pick another theme!">
  30. </button>
  31. <div id="theme-choices"></div>
  32. </div>
  33. <script src="../../theme.js"></script>
  34. <nav class="sub">
  35. <form class="search-form js-only">
  36. <div class="search-container">
  37. <input class="search-input" name="search"
  38. autocomplete="off"
  39. placeholder="Click or press ‘S’ to search, ‘?’ for more options…"
  40. type="search">
  41. </div>
  42. </form>
  43. </nav>
  44. <section id='main' class="content">
  45. <h1 class='fqn'><span class='in-band'>Struct <a href='../index.html'>ocl</a>::<wbr><a href='index.html'>builders</a>::<wbr><a class="struct" href=''>BufferReadCmd</a></span><span class='out-of-band'><span id='render-detail'>
  46. <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">
  47. [<span class='inner'>&#x2212;</span>]
  48. </a>
  49. </span><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#657-661' title='goto source code'>[src]</a></span></h1>
  50. <pre class='rust struct'><div class="docblock attributes">#[must_use = "commands do nothing unless enqueued"]
  51. </div>pub struct BufferReadCmd&lt;'c, 'd, T&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: 'c + 'd + <a class="trait" href="../../ocl/traits/trait.OclPrm.html" title="trait ocl::traits::OclPrm">OclPrm</a>,&nbsp;</span> { /* fields omitted */ }</pre><div class='docblock'><p>A buffer command builder used to enqueue reads.</p>
  52. <p>See <a href="https://www.khronos.org/registry/OpenCL/sdk/1.2/docs/man/xhtml/clEnqueueReadBuffer.html">SDK</a> docs for more details.</p>
  53. </div>
  54. <h2 id='methods' class='small-section-header'>
  55. Methods<a href='#methods' class='anchor'></a>
  56. </h2>
  57. <h3 id='impl' class='impl'><span class='in-band'><code>impl&lt;'c, 'd, T&gt; <a class="struct" href="../../ocl/builders/struct.BufferReadCmd.html" title="struct ocl::builders::BufferReadCmd">BufferReadCmd</a>&lt;'c, 'd, T&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="../../ocl/traits/trait.OclPrm.html" title="trait ocl::traits::OclPrm">OclPrm</a>,&nbsp;</span></code><a href='#impl' class='anchor'></a></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#663-974' title='goto source code'>[src]</a></span></h3>
  58. <div class='impl-items'><h4 id='method.queue' class="method"><span id='queue.v' class='invisible'><code>pub fn <a href='#method.queue' class='fnname'>queue</a>(self, queue: &amp;'c <a class="struct" href="../../ocl/struct.Queue.html" title="struct ocl::Queue">Queue</a>) -&gt; <a class="struct" href="../../ocl/builders/struct.BufferReadCmd.html" title="struct ocl::builders::BufferReadCmd">BufferReadCmd</a>&lt;'c, 'd, T&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#669-672' title='goto source code'>[src]</a></span></h4>
  59. <div class='docblock'><p>Specifies a queue to use for this call only.</p>
  60. <p>Overrides the buffer's default queue if one is set. If no default
  61. queue is set, this method <strong>must</strong> be called before enqueuing the
  62. command.</p>
  63. </div><h4 id='method.block' class="method"><span id='block.v' class='invisible'><code>pub unsafe fn <a href='#method.block' class='fnname'>block</a>(self, block: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>) -&gt; <a class="struct" href="../../ocl/builders/struct.BufferReadCmd.html" title="struct ocl::builders::BufferReadCmd">BufferReadCmd</a>&lt;'c, 'd, T&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#695-698' title='goto source code'>[src]</a></span></h4>
  64. <div class='docblock'><p>Specifies whether or not to block the current thread until completion.</p>
  65. <p>Ignored if this is not a read or write operation.</p>
  66. <p>Default is <code>block = true</code>.</p>
  67. <h2 id="safety" class="section-header"><a href="#safety">Safety</a></h2>
  68. <p>When performing non-blocking reads or writes, the caller must ensure
  69. that the data being read from or written to is not accessed improperly
  70. until the command completes. Use events (<code>Event::wait_for</code>) or the
  71. command queue (<code>Queue::finish</code>) to synchronize.</p>
  72. <p>If possible, prefer instead to use <a href="builders/struct.BufferMapCmd.html"><code>::map</code></a> with <a href="builders/struct.BufferMapCmd.html"><code>::enq_async</code></a> for
  73. optimal performance and data integrity.</p>
  74. </div><h4 id='method.offset' class="method"><span id='offset.v' class='invisible'><code>pub fn <a href='#method.offset' class='fnname'>offset</a>(self, offset: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="../../ocl/builders/struct.BufferReadCmd.html" title="struct ocl::builders::BufferReadCmd">BufferReadCmd</a>&lt;'c, 'd, T&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#706-708' title='goto source code'>[src]</a></span></h4>
  75. <div class='docblock'><p>Sets the linear offset for an operation.</p>
  76. <h2 id="panics" class="section-header"><a href="#panics">Panics</a></h2>
  77. <p>The 'shape' may not have already been set to rectangular by the
  78. <code>::rect</code> function.</p>
  79. </div><h4 id='method.dst_offset' class="method"><span id='dst_offset.v' class='invisible'><code>pub fn <a href='#method.dst_offset' class='fnname'>dst_offset</a>(self, dst_offset: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="../../ocl/builders/struct.BufferReadCmd.html" title="struct ocl::builders::BufferReadCmd">BufferReadCmd</a>&lt;'c, 'd, T&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#717-724' title='goto source code'>[src]</a></span></h4>
  80. <div class='docblock'><p>Sets an offset into the destination data.</p>
  81. <p>Equivalent to setting the start position of a slice into the
  82. destination data (e.g. <code>dst_data[dst_offset..]</code>). Use <code>::len</code> to set
  83. the end position (resulting in <code>dst_data[dst_offset..len]</code>).</p>
  84. <p>Defaults to 0 if not set. Panics if <code>::rect</code> has been called.</p>
  85. </div><h4 id='method.len' class="method"><span id='len.v' class='invisible'><code>pub fn <a href='#method.len' class='fnname'>len</a>(self, len: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="../../ocl/builders/struct.BufferReadCmd.html" title="struct ocl::builders::BufferReadCmd">BufferReadCmd</a>&lt;'c, 'd, T&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#734-740' title='goto source code'>[src]</a></span></h4>
  86. <div class='docblock'><p>Sets the total length of data to read.</p>
  87. <p>Equivalent to setting the end position of a slice into the destination
  88. data (e.g. <code>destination[..len]</code>). Use <code>::dst_offset</code> to set the start
  89. position (resulting in <code>dst_data[dst_offset..len]</code>).</p>
  90. <p>Defaults to the total length of the read destination provided. Panics
  91. if <code>::rect</code> has been called.</p>
  92. </div><h4 id='method.rect' class="method"><span id='rect.v' class='invisible'><code>pub fn <a href='#method.rect' class='fnname'>rect</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;src_origin: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">; 3]</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;dst_origin: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">; 3]</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;region: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">; 3]</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;src_row_pitch_bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;src_slc_pitch_bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;dst_row_pitch_bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;dst_slc_pitch_bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><br>) -&gt; <a class="struct" href="../../ocl/builders/struct.BufferReadCmd.html" title="struct ocl::builders::BufferReadCmd">BufferReadCmd</a>&lt;'c, 'd, T&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#748-765' title='goto source code'>[src]</a></span></h4>
  93. <div class='docblock'><p>Specifies that this will be a rectangularly shaped operation
  94. (the default being linear).</p>
  95. <p>Row and slice pitches must all be expressed in bytes.</p>
  96. <p>Panics if <code>:offset</code>, <code>dst_offset</code>, or <code>::len</code> have been called.</p>
  97. </div><h4 id='method.ewait' class="method"><span id='ewait.v' class='invisible'><code>pub fn <a href='#method.ewait' class='fnname'>ewait</a>&lt;'e, Ewl&gt;(self, ewait: Ewl) -&gt; <a class="struct" href="../../ocl/builders/struct.BufferReadCmd.html" title="struct ocl::builders::BufferReadCmd">BufferReadCmd</a>&lt;'c, 'd, T&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;'e: 'c,<br>&nbsp;&nbsp;&nbsp;&nbsp;Ewl: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;<a class="enum" href="../../ocl/builders/enum.ClWaitListPtrEnum.html" title="enum ocl::builders::ClWaitListPtrEnum">ClWaitListPtrEnum</a>&lt;'e&gt;&gt;,&nbsp;</span></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#795-799' title='goto source code'>[src]</a></span></h4>
  98. <div class='docblock'><p>Specifies an event or list of events to wait on before the command
  99. will run.</p>
  100. <p>When events generated using the <code>::enew</code> method of <strong>other</strong>,
  101. previously enqueued commands are passed here (either individually or
  102. as part of an <a href="struct.EventList.html"><code>EventList</code></a>), this command will not execute until
  103. those commands have completed.</p>
  104. <p>Using events can compliment the use of queues to order commands by
  105. creating temporal dependencies between them (where commands in one
  106. queue must wait for the completion of commands in another). Events can
  107. also supplant queues altogether when, for example, using out-of-order
  108. queues.</p>
  109. <h1 id="example" class="section-header"><a href="#example">Example</a></h1>
  110. <div class='information'><div class='tooltip ignore'>ⓘ<span class='tooltiptext'>This example is not tested</span></div></div><pre class="rust rust-example-rendered ignore">
  111. <span class="comment">// Create an event list:</span>
  112. <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">event_list</span> <span class="op">=</span> <span class="ident">EventList</span>::<span class="ident">new</span>();
  113. <span class="comment">// Enqueue a kernel on `queue_1`, creating an event representing the kernel</span>
  114. <span class="comment">// command in our list:</span>
  115. <span class="ident">kernel</span>.<span class="ident">cmd</span>().<span class="ident">queue</span>(<span class="kw-2">&amp;</span><span class="ident">queue_1</span>).<span class="ident">enew</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">event_list</span>).<span class="ident">enq</span>()<span class="question-mark">?</span>;
  116. <span class="comment">// Read from a buffer using `queue_2`, ensuring the read does not begin until</span>
  117. <span class="comment">// after the kernel command has completed:</span>
  118. <span class="ident">buffer</span>.<span class="ident">read</span>(<span class="ident">rwvec</span>.<span class="ident">clone</span>()).<span class="ident">queue</span>(<span class="kw-2">&amp;</span><span class="ident">queue_2</span>).<span class="ident">ewait</span>(<span class="kw-2">&amp;</span><span class="ident">event_list</span>).<span class="ident">enq_async</span>()<span class="question-mark">?</span>;</pre>
  119. </div><h4 id='method.enew' class="method"><span id='enew.v' class='invisible'><code>pub fn <a href='#method.enew' class='fnname'>enew</a>&lt;'e, En&gt;(self, enew: En) -&gt; <a class="struct" href="../../ocl/builders/struct.BufferReadCmd.html" title="struct ocl::builders::BufferReadCmd">BufferReadCmd</a>&lt;'c, 'd, T&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;'e: 'c,<br>&nbsp;&nbsp;&nbsp;&nbsp;En: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;<a class="enum" href="../../ocl/builders/enum.ClNullEventPtrEnum.html" title="enum ocl::builders::ClNullEventPtrEnum">ClNullEventPtrEnum</a>&lt;'e&gt;&gt;,&nbsp;</span></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#832-836' title='goto source code'>[src]</a></span></h4>
  120. <div class='docblock'><p>Specifies the destination to store a new, optionally created event
  121. associated with this command.</p>
  122. <p>The destination can be a mutable reference to an empty event (created
  123. using <a href="struct.Event.html#method.empty"><code>Event::empty</code></a>) or a mutable reference to an event list.</p>
  124. <p>After this command is enqueued, the event in the destination can be
  125. passed to the <code>::ewait</code> method of another command. Doing so will cause
  126. the other command to wait until this command has completed before
  127. executing.</p>
  128. <p>Using events can compliment the use of queues to order commands by
  129. creating temporal dependencies between them (where commands in one
  130. queue must wait for the completion of commands in another). Events can
  131. also supplant queues altogether when, for example, using out-of-order
  132. queues.</p>
  133. <h1 id="example-1" class="section-header"><a href="#example-1">Example</a></h1>
  134. <div class='information'><div class='tooltip ignore'>ⓘ<span class='tooltiptext'>This example is not tested</span></div></div><pre class="rust rust-example-rendered ignore">
  135. <span class="comment">// Create an event list:</span>
  136. <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">event</span> <span class="op">=</span> <span class="ident">Event</span>::<span class="ident">empty</span>();
  137. <span class="comment">// Enqueue a kernel on `queue_1`, creating an event representing the kernel</span>
  138. <span class="comment">// command in our list:</span>
  139. <span class="ident">kernel</span>.<span class="ident">cmd</span>().<span class="ident">queue</span>(<span class="kw-2">&amp;</span><span class="ident">queue_1</span>).<span class="ident">enew</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">event</span>).<span class="ident">enq</span>()<span class="question-mark">?</span>;
  140. <span class="comment">// Read from a buffer using `queue_2`, ensuring the read does not begin until</span>
  141. <span class="comment">// after the kernel command has completed:</span>
  142. <span class="ident">buffer</span>.<span class="ident">read</span>(<span class="ident">rwvec</span>.<span class="ident">clone</span>()).<span class="ident">queue</span>(<span class="kw-2">&amp;</span><span class="ident">queue_2</span>).<span class="ident">ewait</span>(<span class="kw-2">&amp;</span><span class="ident">event</span>).<span class="ident">enq_async</span>()<span class="question-mark">?</span>;</pre>
  143. </div><h4 id='method.enq' class="method"><span id='enq.v' class='invisible'><code>pub fn <a href='#method.enq' class='fnname'>enq</a>(self) -&gt; <a class="type" href="../../ocl/error/type.Result.html" title="type ocl::error::Result">OclResult</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#845-902' title='goto source code'>[src]</a></span></h4>
  144. <div class='docblock'><p>Enqueues this command, blocking the current thread until it is complete.</p>
  145. <p>If an <code>RwVec</code> is being used as the data destination, the current
  146. thread will be blocked until an exclusive lock can be obtained before
  147. running the command (which will also block for its duration).</p>
  148. </div><h4 id='method.enq_async' class="method"><span id='enq_async.v' class='invisible'><code>pub fn <a href='#method.enq_async' class='fnname'>enq_async</a>(self) -&gt; <a class="type" href="../../ocl/error/type.Result.html" title="type ocl::error::Result">OclResult</a>&lt;<a class="type" href="../../ocl/async/type.FutureWriteGuard.html" title="type ocl::async::FutureWriteGuard">FutureWriteGuard</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;T&gt;&gt;&gt;</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../../src/ocl/standard/buffer.rs.html#911-973' title='goto source code'>[src]</a></span></h4>
  149. <div class='docblock'><p>Enqueues this command and returns a future representing its completion
  150. which resolves to a guard providing exclusive data access usable
  151. within subsequent futures.</p>
  152. <p>A data destination container appropriate for an asynchronous operation
  153. (such as <code>RwVec</code>) must have been passed to <code>::read</code>.</p>
  154. </div></div></section>
  155. <section id='search' class="content hidden"></section>
  156. <section class="footer"></section>
  157. <aside id="help" class="hidden">
  158. <div>
  159. <h1 class="hidden">Help</h1>
  160. <div class="shortcuts">
  161. <h2>Keyboard Shortcuts</h2>
  162. <dl>
  163. <dt><kbd>?</kbd></dt>
  164. <dd>Show this help dialog</dd>
  165. <dt><kbd>S</kbd></dt>
  166. <dd>Focus the search field</dd>
  167. <dt><kbd>↑</kbd></dt>
  168. <dd>Move up in search results</dd>
  169. <dt><kbd>↓</kbd></dt>
  170. <dd>Move down in search results</dd>
  171. <dt><kbd>↹</kbd></dt>
  172. <dd>Switch tab</dd>
  173. <dt><kbd>&#9166;</kbd></dt>
  174. <dd>Go to active search result</dd>
  175. <dt><kbd>+</kbd></dt>
  176. <dd>Expand all sections</dd>
  177. <dt><kbd>-</kbd></dt>
  178. <dd>Collapse all sections</dd>
  179. </dl>
  180. </div>
  181. <div class="infos">
  182. <h2>Search Tricks</h2>
  183. <p>
  184. Prefix searches with a type followed by a colon (e.g.
  185. <code>fn:</code>) to restrict the search to a given type.
  186. </p>
  187. <p>
  188. Accepted types are: <code>fn</code>, <code>mod</code>,
  189. <code>struct</code>, <code>enum</code>,
  190. <code>trait</code>, <code>type</code>, <code>macro</code>,
  191. and <code>const</code>.
  192. </p>
  193. <p>
  194. Search functions by type signature (e.g.
  195. <code>vec -> usize</code> or <code>* -> vec</code>)
  196. </p>
  197. </div>
  198. </div>
  199. </aside>
  200. <script>
  201. window.rootPath = "../../";
  202. window.currentCrate = "ocl";
  203. </script>
  204. <script src="../../main.js"></script>
  205. <script defer src="../../search-index.js"></script>
  206. </body>
  207. </html>