This commit is contained in:
intelliot
2023-02-07 23:47:10 +00:00
parent f99123bc9a
commit c7d8e7e2ae
2196 changed files with 52159 additions and 44783 deletions

View File

@@ -849,179 +849,180 @@ $(function() {
<div class="line"><a name="l00782"></a><span class="lineno"> 782</span>&#160; JLOG(<a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#abbe082bd27ca0f1d1365af2824e4f85b">trace</a>()) &lt;&lt; <span class="stringliteral">&quot;apply: &quot;</span> &lt;&lt; <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>.<a class="code" href="classripple_1_1STTx.html#ad314af66e2542db537b3b5de291d33c3">getTransactionID</a>();</div>
<div class="line"><a name="l00783"></a><span class="lineno"> 783</span>&#160; </div>
<div class="line"><a name="l00784"></a><span class="lineno"> 784</span>&#160; <a class="code" href="classripple_1_1STAmountSO.html">STAmountSO</a> stAmountSO{<a class="code" href="classripple_1_1Transactor.html#a1ac5d16d7b21e8af9cc94d7af39a85d5">view</a>().<a class="code" href="classripple_1_1ReadView.html#aaf2fa03be723bb78d8bdf41614a75a30">rules</a>().<a class="code" href="classripple_1_1Rules.html#a1a8388a2b9588aa9446ece92a88e0dd2">enabled</a>(<a class="code" href="namespaceripple.html#a58db4f19d243f6c82a533a40a0db89cd">fixSTAmountCanonicalize</a>)};</div>
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; </div>
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160;<span class="preprocessor">#ifdef DEBUG</span></div>
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160; {</div>
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; <a class="code" href="classripple_1_1Serializer.html">Serializer</a> ser;</div>
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>.<a class="code" href="classripple_1_1STObject.html#a7adccac3a1b54244ae210afe7c5916e8">add</a>(ser);</div>
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <a class="code" href="classripple_1_1SerialIter.html">SerialIter</a> sit(ser.<a class="code" href="classripple_1_1Serializer.html#a394c3299f6cfcebdaa4bc98ec0c602d6">slice</a>());</div>
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <a class="code" href="classripple_1_1STTx.html">STTx</a> s2(sit);</div>
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; </div>
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; <span class="keywordflow">if</span> (!s2.<a class="code" href="classripple_1_1STObject.html#a3b5c3ab2b3da4ecc342bd8cf5e9c3947">isEquivalent</a>(<a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>))</div>
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; {</div>
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; JLOG(<a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#a3dfb8e2e3eecccdb5cf78ff21bca069c">fatal</a>()) &lt;&lt; <span class="stringliteral">&quot;Transaction serdes mismatch&quot;</span>;</div>
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; JLOG(<a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#a87d6bd59020d94110027dcab3d9e3357">info</a>()) &lt;&lt; <a class="code" href="namespaceripple.html#af9776f187d3686a7fba4c2d2fbeebdf4">to_string</a>(<a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>.<a class="code" href="classripple_1_1STTx.html#a489c8110e24455a2e7dac783f4760cc2">getJson</a>(<a class="code" href="namespaceripple.html#a169967ff418b80729654b6d45ade8711a334c4a4c42fdb79d7ebc3e73b517e6f8">JsonOptions::none</a>));</div>
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; JLOG(<a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#a3dfb8e2e3eecccdb5cf78ff21bca069c">fatal</a>()) &lt;&lt; s2.<a class="code" href="classripple_1_1STTx.html#a489c8110e24455a2e7dac783f4760cc2">getJson</a>(<a class="code" href="namespaceripple.html#a169967ff418b80729654b6d45ade8711a334c4a4c42fdb79d7ebc3e73b517e6f8">JsonOptions::none</a>);</div>
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; }</div>
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; }</div>
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160; </div>
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; <span class="keyword">auto</span> result = <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#ae7e2361dfcb8bfc1d367389148c07634">preclaimResult</a>;</div>
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keywordflow">if</span> (result == <a class="code" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>)</div>
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; result = <a class="code" href="classripple_1_1Transactor.html#ac2faaa3bfd1c9b9f91ae24f367474d0f">apply</a>();</div>
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; </div>
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; <span class="comment">// No transaction can return temUNKNOWN from apply,</span></div>
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="comment">// and it can&#39;t be passed in from a preclaim.</span></div>
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; assert(result != <a class="code" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46a1dad6e2d630423dd67f4a540305f8b3c">temUNKNOWN</a>);</div>
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; </div>
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">auto</span> stream = <a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#abbe082bd27ca0f1d1365af2824e4f85b">trace</a>())</div>
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; stream &lt;&lt; <span class="stringliteral">&quot;preclaim result: &quot;</span> &lt;&lt; <a class="code" href="namespaceripple.html#a875ae996b37ed036597d70628ae053e3">transToken</a>(result);</div>
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; </div>
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; <span class="keywordtype">bool</span> applied = <a class="code" href="namespaceripple.html#a5b31f337f444082f547ef1838e7064fc">isTesSuccess</a>(result);</div>
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="keyword">auto</span> fee = <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>.<a class="code" href="classripple_1_1STObject.html#a8e207109e646759f4927d90e4404893f">getFieldAmount</a>(<a class="code" href="namespaceripple.html#a13864ec0864daa5d24b70d276414b8ff">sfFee</a>).<a class="code" href="classripple_1_1STAmount.html#a6c2ca92e9c91e2a34493d61e02d79ebf">xrp</a>();</div>
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; </div>
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#aaf553f68175966af2a29eafaf78e596e">size</a>() &gt; <a class="code" href="namespaceripple.html#a4fa9a45199e7918a98e750262ba7be96">oversizeMetaDataCap</a>)</div>
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; result = <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caad531e9d2f46a3a6e6f01934097e7053">tecOVERSIZE</a>;</div>
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; </div>
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceripple.html#a18e688f3fc0a5e80e13b353c9f924b22">isTecClaim</a>(result) &amp;&amp; (<a class="code" href="classripple_1_1Transactor.html#a1ac5d16d7b21e8af9cc94d7af39a85d5">view</a>().flags() &amp; <a class="code" href="namespaceripple.html#ad2487abbcc1a5d6064b72144b461df6ea72934cf56aa148d1f25bf08fe8922150">tapFAIL_HARD</a>))</div>
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; {</div>
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; <span class="comment">// If the tapFAIL_HARD flag is set, a tec result</span></div>
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="comment">// must not do anything</span></div>
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; </div>
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a5967451fa668bfc8b6e6bf763da92aa7">discard</a>();</div>
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; applied = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; }</div>
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (</div>
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caad531e9d2f46a3a6e6f01934097e7053">tecOVERSIZE</a>) || (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca82773cd87fbf942a9cb626416218f52b">tecKILLED</a>) ||</div>
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caede598f88bbd44e4df1c4e0d418c4cdc">tecEXPIRED</a>) || (<a class="code" href="namespaceripple.html#aaad7838ce24fa0ffc4c6e388b18c86a4">isTecClaimHardFail</a>(result, <a class="code" href="classripple_1_1Transactor.html#a1ac5d16d7b21e8af9cc94d7af39a85d5">view</a>().flags())))</div>
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; {</div>
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; JLOG(<a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#abbe082bd27ca0f1d1365af2824e4f85b">trace</a>()) &lt;&lt; <span class="stringliteral">&quot;reapplying because of &quot;</span> &lt;&lt; <a class="code" href="namespaceripple.html#a875ae996b37ed036597d70628ae053e3">transToken</a>(result);</div>
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; </div>
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; <span class="comment">// FIXME: This mechanism for doing work while returning a `tec` is</span></div>
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="comment">// awkward and very limiting. A more general purpose approach</span></div>
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="comment">// should be used, making it possible to do more useful work</span></div>
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <span class="comment">// when transactions fail with a `tec` code.</span></div>
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint256&gt;</a> removedOffers;</div>
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; </div>
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; <span class="keywordflow">if</span> ((result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caad531e9d2f46a3a6e6f01934097e7053">tecOVERSIZE</a>) || (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca82773cd87fbf942a9cb626416218f52b">tecKILLED</a>))</div>
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; {</div>
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a04256a4e26ba636830cb0c6cf1c41bee">visit</a>([&amp;removedOffers](</div>
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <a class="code" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp; index,</div>
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <span class="keywordtype">bool</span> isDelete,</div>
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;SLE const&gt;</a> <span class="keyword">const</span>&amp; before,</div>
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;SLE const&gt;</a> <span class="keyword">const</span>&amp; <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a>) {</div>
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <span class="keywordflow">if</span> (isDelete)</div>
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; {</div>
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; assert(before &amp;&amp; <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a>);</div>
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; <span class="keywordflow">if</span> (before &amp;&amp; <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a> &amp;&amp; (before-&gt;getType() == <a class="code" href="namespaceripple.html#ac151bf19e1f4daae2b04c65c65117139a8a24a7b08fcdd8a76109f80f056a176d">ltOFFER</a>) &amp;&amp;</div>
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; (before-&gt;getFieldAmount(<a class="code" href="namespaceripple.html#a1bd06b8a74779afd739e715cbdbacddd">sfTakerPays</a>) ==</div>
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a>-&gt;getFieldAmount(<a class="code" href="namespaceripple.html#a1bd06b8a74779afd739e715cbdbacddd">sfTakerPays</a>)))</div>
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; {</div>
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; <span class="comment">// Removal of offer found or made unfunded</span></div>
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; removedOffers.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(index);</div>
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; }</div>
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; }</div>
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; });</div>
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; }</div>
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; </div>
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint256&gt;</a> expiredNFTokenOffers;</div>
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; </div>
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; <span class="keywordflow">if</span> (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caede598f88bbd44e4df1c4e0d418c4cdc">tecEXPIRED</a>)</div>
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; {</div>
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a04256a4e26ba636830cb0c6cf1c41bee">visit</a>([&amp;expiredNFTokenOffers](</div>
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <a class="code" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp; index,</div>
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; <span class="keywordtype">bool</span> isDelete,</div>
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;SLE const&gt;</a> <span class="keyword">const</span>&amp; before,</div>
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;SLE const&gt;</a> <span class="keyword">const</span>&amp; <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a>) {</div>
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <span class="keywordflow">if</span> (isDelete)</div>
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; {</div>
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; assert(before &amp;&amp; <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a>);</div>
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; <span class="keywordflow">if</span> (before &amp;&amp; <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a> &amp;&amp;</div>
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; (before-&gt;getType() == <a class="code" href="namespaceripple.html#ac151bf19e1f4daae2b04c65c65117139aac7da9a5712625a2feed8f6cdc9295a8">ltNFTOKEN_OFFER</a>))</div>
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; expiredNFTokenOffers.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(index);</div>
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; }</div>
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; });</div>
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; }</div>
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; </div>
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; <span class="comment">// Reset the context, potentially adjusting the fee.</span></div>
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; {</div>
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> resetResult = <a class="code" href="classripple_1_1Transactor.html#af81f796422a3f66771e31a6ecbbbf57b">reset</a>(fee);</div>
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceripple.html#a5b31f337f444082f547ef1838e7064fc">isTesSuccess</a>(resetResult.first))</div>
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; result = resetResult.first;</div>
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; </div>
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; fee = resetResult.second;</div>
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; }</div>
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; </div>
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; <span class="comment">// If necessary, remove any offers found unfunded during processing</span></div>
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="keywordflow">if</span> ((result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caad531e9d2f46a3a6e6f01934097e7053">tecOVERSIZE</a>) || (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca82773cd87fbf942a9cb626416218f52b">tecKILLED</a>))</div>
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <a class="code" href="namespaceripple.html#a6aab406eb9522bb36ba7247335e303ec">removeUnfundedOffers</a>(</div>
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <a class="code" href="classripple_1_1Transactor.html#a1ac5d16d7b21e8af9cc94d7af39a85d5">view</a>(), removedOffers, <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a6ec1f10e560afe30ed435c3f7eea715d">app</a>.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">&quot;View&quot;</span>));</div>
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; </div>
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; <span class="keywordflow">if</span> (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caede598f88bbd44e4df1c4e0d418c4cdc">tecEXPIRED</a>)</div>
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <a class="code" href="namespaceripple.html#a8ba581584f364d79f3b5020b6a2c66da">removeExpiredNFTokenOffers</a>(</div>
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <a class="code" href="classripple_1_1Transactor.html#a1ac5d16d7b21e8af9cc94d7af39a85d5">view</a>(), expiredNFTokenOffers, <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a6ec1f10e560afe30ed435c3f7eea715d">app</a>.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">&quot;View&quot;</span>));</div>
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; </div>
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; applied = <a class="code" href="namespaceripple.html#a18e688f3fc0a5e80e13b353c9f924b22">isTecClaim</a>(result);</div>
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; }</div>
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; </div>
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; <span class="keywordflow">if</span> (applied)</div>
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; {</div>
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; <span class="comment">// Check invariants: if `tecINVARIANT_FAILED` is not returned, we can</span></div>
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="comment">// proceed to apply the tx</span></div>
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; result = <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#acf5f75ec76cec199781a945226834410">checkInvariants</a>(result, fee);</div>
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; </div>
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; <span class="keywordflow">if</span> (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caa7dccd25363fdff0d363bd16553d1c84">tecINVARIANT_FAILED</a>)</div>
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; {</div>
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; <span class="comment">// if invariants checking failed again, reset the context and</span></div>
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; <span class="comment">// attempt to only claim a fee.</span></div>
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> resetResult = <a class="code" href="classripple_1_1Transactor.html#af81f796422a3f66771e31a6ecbbbf57b">reset</a>(fee);</div>
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceripple.html#a5b31f337f444082f547ef1838e7064fc">isTesSuccess</a>(resetResult.first))</div>
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; result = resetResult.first;</div>
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; </div>
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; fee = resetResult.second;</div>
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; </div>
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; <span class="comment">// Check invariants again to ensure the fee claiming doesn&#39;t</span></div>
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="comment">// violate invariants.</span></div>
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceripple.html#a5b31f337f444082f547ef1838e7064fc">isTesSuccess</a>(result) || <a class="code" href="namespaceripple.html#a18e688f3fc0a5e80e13b353c9f924b22">isTecClaim</a>(result))</div>
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; result = <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#acf5f75ec76cec199781a945226834410">checkInvariants</a>(result, fee);</div>
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; }</div>
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; </div>
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; <span class="comment">// We ran through the invariant checker, which can, in some cases,</span></div>
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <span class="comment">// return a tef error code. Don&#39;t apply the transaction in that case.</span></div>
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceripple.html#a18e688f3fc0a5e80e13b353c9f924b22">isTecClaim</a>(result) &amp;&amp; !<a class="code" href="namespaceripple.html#a5b31f337f444082f547ef1838e7064fc">isTesSuccess</a>(result))</div>
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; applied = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; }</div>
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; </div>
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; <span class="keywordflow">if</span> (applied)</div>
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; {</div>
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; <span class="comment">// Transaction succeeded fully or (retries are not allowed and the</span></div>
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <span class="comment">// transaction could claim a fee)</span></div>
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; </div>
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; <span class="comment">// The transactor and invariant checkers guarantee that this will</span></div>
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <span class="comment">// *never* trigger but if it, somehow, happens, don&#39;t allow a tx</span></div>
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <span class="comment">// that charges a negative fee.</span></div>
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <span class="keywordflow">if</span> (fee &lt; beast::zero)</div>
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; Throw&lt;std::logic_error&gt;(<span class="stringliteral">&quot;fee charged is negative!&quot;</span>);</div>
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; </div>
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; <span class="comment">// Charge whatever fee they specified. The fee has already been</span></div>
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <span class="comment">// deducted from the balance of the account that issued the</span></div>
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <span class="comment">// transaction. We just need to account for it in the ledger</span></div>
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <span class="comment">// header.</span></div>
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classripple_1_1Transactor.html#a1ac5d16d7b21e8af9cc94d7af39a85d5">view</a>().<a class="code" href="namespaceripple.html#a886ed36db831a964fc5f66ebbb4fe3d0">open</a>() &amp;&amp; fee != beast::zero)</div>
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a6dd28e2ef7cc9935403cbe303ebb5011">destroyXRP</a>(fee);</div>
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; </div>
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; <span class="comment">// Once we call apply, we will no longer be able to look at view()</span></div>
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#aca57d8bdb6612a3d8042cadf62694125">apply</a>(result);</div>
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; }</div>
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; </div>
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; JLOG(<a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#abbe082bd27ca0f1d1365af2824e4f85b">trace</a>()) &lt;&lt; (applied ? <span class="stringliteral">&quot;applied&quot;</span> : <span class="stringliteral">&quot;not applied&quot;</span>)</div>
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; &lt;&lt; <a class="code" href="namespaceripple.html#a875ae996b37ed036597d70628ae053e3">transToken</a>(result);</div>
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; </div>
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; <span class="keywordflow">return</span> {result, applied};</div>
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160;}</div>
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160; </div>
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160;} <span class="comment">// namespace ripple</span></div>
<div class="line"><a name="l00785"></a><span class="lineno"> 785</span>&#160; <a class="code" href="classripple_1_1NumberSO.html">NumberSO</a> stNumberSO{<a class="code" href="classripple_1_1Transactor.html#a1ac5d16d7b21e8af9cc94d7af39a85d5">view</a>().<a class="code" href="classripple_1_1ReadView.html#aaf2fa03be723bb78d8bdf41614a75a30">rules</a>().<a class="code" href="classripple_1_1Rules.html#a1a8388a2b9588aa9446ece92a88e0dd2">enabled</a>(<a class="code" href="namespaceripple.html#aca7b4bf41e621edeabbb353a76e9b055">fixUniversalNumber</a>)};</div>
<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>&#160; </div>
<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>&#160;<span class="preprocessor">#ifdef DEBUG</span></div>
<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>&#160; {</div>
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>&#160; <a class="code" href="classripple_1_1Serializer.html">Serializer</a> ser;</div>
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>&#160; <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>.<a class="code" href="classripple_1_1STObject.html#a7adccac3a1b54244ae210afe7c5916e8">add</a>(ser);</div>
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>&#160; <a class="code" href="classripple_1_1SerialIter.html">SerialIter</a> sit(ser.<a class="code" href="classripple_1_1Serializer.html#a394c3299f6cfcebdaa4bc98ec0c602d6">slice</a>());</div>
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>&#160; <a class="code" href="classripple_1_1STTx.html">STTx</a> s2(sit);</div>
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>&#160; </div>
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>&#160; <span class="keywordflow">if</span> (!s2.<a class="code" href="classripple_1_1STObject.html#a3b5c3ab2b3da4ecc342bd8cf5e9c3947">isEquivalent</a>(<a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>))</div>
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>&#160; {</div>
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>&#160; JLOG(<a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#a3dfb8e2e3eecccdb5cf78ff21bca069c">fatal</a>()) &lt;&lt; <span class="stringliteral">&quot;Transaction serdes mismatch&quot;</span>;</div>
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>&#160; JLOG(<a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#a87d6bd59020d94110027dcab3d9e3357">info</a>()) &lt;&lt; <a class="code" href="namespaceripple.html#af9776f187d3686a7fba4c2d2fbeebdf4">to_string</a>(<a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>.<a class="code" href="classripple_1_1STTx.html#a489c8110e24455a2e7dac783f4760cc2">getJson</a>(<a class="code" href="namespaceripple.html#a169967ff418b80729654b6d45ade8711a334c4a4c42fdb79d7ebc3e73b517e6f8">JsonOptions::none</a>));</div>
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>&#160; JLOG(<a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#a3dfb8e2e3eecccdb5cf78ff21bca069c">fatal</a>()) &lt;&lt; s2.<a class="code" href="classripple_1_1STTx.html#a489c8110e24455a2e7dac783f4760cc2">getJson</a>(<a class="code" href="namespaceripple.html#a169967ff418b80729654b6d45ade8711a334c4a4c42fdb79d7ebc3e73b517e6f8">JsonOptions::none</a>);</div>
<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>&#160; assert(<span class="keyword">false</span>);</div>
<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>&#160; }</div>
<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>&#160; }</div>
<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>&#160; </div>
<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>&#160; <span class="keyword">auto</span> result = <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#ae7e2361dfcb8bfc1d367389148c07634">preclaimResult</a>;</div>
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>&#160; <span class="keywordflow">if</span> (result == <a class="code" href="namespaceripple.html#aabc7f150d5082c73116a1cd5962b434da28c7d8b3ed759d363503a05fcd59f151">tesSUCCESS</a>)</div>
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>&#160; result = <a class="code" href="classripple_1_1Transactor.html#ac2faaa3bfd1c9b9f91ae24f367474d0f">apply</a>();</div>
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>&#160; </div>
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>&#160; <span class="comment">// No transaction can return temUNKNOWN from apply,</span></div>
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>&#160; <span class="comment">// and it can&#39;t be passed in from a preclaim.</span></div>
<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>&#160; assert(result != <a class="code" href="namespaceripple.html#afe21c8454670d46fb93751a5edffed46a1dad6e2d630423dd67f4a540305f8b3c">temUNKNOWN</a>);</div>
<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>&#160; </div>
<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>&#160; <span class="keywordflow">if</span> (<span class="keyword">auto</span> stream = <a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#abbe082bd27ca0f1d1365af2824e4f85b">trace</a>())</div>
<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>&#160; stream &lt;&lt; <span class="stringliteral">&quot;preclaim result: &quot;</span> &lt;&lt; <a class="code" href="namespaceripple.html#a875ae996b37ed036597d70628ae053e3">transToken</a>(result);</div>
<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>&#160; </div>
<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>&#160; <span class="keywordtype">bool</span> applied = <a class="code" href="namespaceripple.html#a5b31f337f444082f547ef1838e7064fc">isTesSuccess</a>(result);</div>
<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>&#160; <span class="keyword">auto</span> fee = <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a8c8757b3b1f88baef47b31ed4e9682d0">tx</a>.<a class="code" href="classripple_1_1STObject.html#a8e207109e646759f4927d90e4404893f">getFieldAmount</a>(<a class="code" href="namespaceripple.html#a13864ec0864daa5d24b70d276414b8ff">sfFee</a>).<a class="code" href="classripple_1_1STAmount.html#a6c2ca92e9c91e2a34493d61e02d79ebf">xrp</a>();</div>
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>&#160; </div>
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#aaf553f68175966af2a29eafaf78e596e">size</a>() &gt; <a class="code" href="namespaceripple.html#a4fa9a45199e7918a98e750262ba7be96">oversizeMetaDataCap</a>)</div>
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>&#160; result = <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caad531e9d2f46a3a6e6f01934097e7053">tecOVERSIZE</a>;</div>
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>&#160; </div>
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceripple.html#a18e688f3fc0a5e80e13b353c9f924b22">isTecClaim</a>(result) &amp;&amp; (<a class="code" href="classripple_1_1Transactor.html#a1ac5d16d7b21e8af9cc94d7af39a85d5">view</a>().flags() &amp; <a class="code" href="namespaceripple.html#ad2487abbcc1a5d6064b72144b461df6ea72934cf56aa148d1f25bf08fe8922150">tapFAIL_HARD</a>))</div>
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>&#160; {</div>
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>&#160; <span class="comment">// If the tapFAIL_HARD flag is set, a tec result</span></div>
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>&#160; <span class="comment">// must not do anything</span></div>
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>&#160; </div>
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>&#160; <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a5967451fa668bfc8b6e6bf763da92aa7">discard</a>();</div>
<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>&#160; applied = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>&#160; }</div>
<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>&#160; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (</div>
<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>&#160; (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caad531e9d2f46a3a6e6f01934097e7053">tecOVERSIZE</a>) || (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca82773cd87fbf942a9cb626416218f52b">tecKILLED</a>) ||</div>
<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>&#160; (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caede598f88bbd44e4df1c4e0d418c4cdc">tecEXPIRED</a>) || (<a class="code" href="namespaceripple.html#aaad7838ce24fa0ffc4c6e388b18c86a4">isTecClaimHardFail</a>(result, <a class="code" href="classripple_1_1Transactor.html#a1ac5d16d7b21e8af9cc94d7af39a85d5">view</a>().flags())))</div>
<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>&#160; {</div>
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>&#160; JLOG(<a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#abbe082bd27ca0f1d1365af2824e4f85b">trace</a>()) &lt;&lt; <span class="stringliteral">&quot;reapplying because of &quot;</span> &lt;&lt; <a class="code" href="namespaceripple.html#a875ae996b37ed036597d70628ae053e3">transToken</a>(result);</div>
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>&#160; </div>
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>&#160; <span class="comment">// FIXME: This mechanism for doing work while returning a `tec` is</span></div>
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>&#160; <span class="comment">// awkward and very limiting. A more general purpose approach</span></div>
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>&#160; <span class="comment">// should be used, making it possible to do more useful work</span></div>
<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>&#160; <span class="comment">// when transactions fail with a `tec` code.</span></div>
<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint256&gt;</a> removedOffers;</div>
<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>&#160; </div>
<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>&#160; <span class="keywordflow">if</span> ((result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caad531e9d2f46a3a6e6f01934097e7053">tecOVERSIZE</a>) || (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca82773cd87fbf942a9cb626416218f52b">tecKILLED</a>))</div>
<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>&#160; {</div>
<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>&#160; <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a04256a4e26ba636830cb0c6cf1c41bee">visit</a>([&amp;removedOffers](</div>
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>&#160; <a class="code" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp; index,</div>
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>&#160; <span class="keywordtype">bool</span> isDelete,</div>
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;SLE const&gt;</a> <span class="keyword">const</span>&amp; before,</div>
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;SLE const&gt;</a> <span class="keyword">const</span>&amp; <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a>) {</div>
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>&#160; <span class="keywordflow">if</span> (isDelete)</div>
<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>&#160; {</div>
<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>&#160; assert(before &amp;&amp; <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a>);</div>
<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>&#160; <span class="keywordflow">if</span> (before &amp;&amp; <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a> &amp;&amp; (before-&gt;getType() == <a class="code" href="namespaceripple.html#ac151bf19e1f4daae2b04c65c65117139a8a24a7b08fcdd8a76109f80f056a176d">ltOFFER</a>) &amp;&amp;</div>
<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>&#160; (before-&gt;getFieldAmount(<a class="code" href="namespaceripple.html#a1bd06b8a74779afd739e715cbdbacddd">sfTakerPays</a>) ==</div>
<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>&#160; <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a>-&gt;getFieldAmount(<a class="code" href="namespaceripple.html#a1bd06b8a74779afd739e715cbdbacddd">sfTakerPays</a>)))</div>
<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>&#160; {</div>
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>&#160; <span class="comment">// Removal of offer found or made unfunded</span></div>
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>&#160; removedOffers.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(index);</div>
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>&#160; }</div>
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>&#160; }</div>
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>&#160; });</div>
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>&#160; }</div>
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>&#160; </div>
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector&lt;uint256&gt;</a> expiredNFTokenOffers;</div>
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>&#160; </div>
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>&#160; <span class="keywordflow">if</span> (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caede598f88bbd44e4df1c4e0d418c4cdc">tecEXPIRED</a>)</div>
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>&#160; {</div>
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>&#160; <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a04256a4e26ba636830cb0c6cf1c41bee">visit</a>([&amp;expiredNFTokenOffers](</div>
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>&#160; <a class="code" href="classripple_1_1base__uint.html">uint256</a> <span class="keyword">const</span>&amp; index,</div>
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span>&#160; <span class="keywordtype">bool</span> isDelete,</div>
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;SLE const&gt;</a> <span class="keyword">const</span>&amp; before,</div>
<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>&#160; <a class="codeRef" href="http://en.cppreference.com/w/cpp/memory/shared_ptr.html">std::shared_ptr&lt;SLE const&gt;</a> <span class="keyword">const</span>&amp; <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a>) {</div>
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>&#160; <span class="keywordflow">if</span> (isDelete)</div>
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>&#160; {</div>
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>&#160; assert(before &amp;&amp; <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a>);</div>
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>&#160; <span class="keywordflow">if</span> (before &amp;&amp; <a class="code" href="namespaceripple.html#aebcc26ebe20ddcd3bcbfd5402e0acb89">after</a> &amp;&amp;</div>
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span>&#160; (before-&gt;getType() == <a class="code" href="namespaceripple.html#ac151bf19e1f4daae2b04c65c65117139aac7da9a5712625a2feed8f6cdc9295a8">ltNFTOKEN_OFFER</a>))</div>
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>&#160; expiredNFTokenOffers.<a class="codeRef" href="http://en.cppreference.com/w/cpp/container/vector/push_back.html">push_back</a>(index);</div>
<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>&#160; }</div>
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>&#160; });</div>
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>&#160; }</div>
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>&#160; </div>
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>&#160; <span class="comment">// Reset the context, potentially adjusting the fee.</span></div>
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>&#160; {</div>
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> resetResult = <a class="code" href="classripple_1_1Transactor.html#af81f796422a3f66771e31a6ecbbbf57b">reset</a>(fee);</div>
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceripple.html#a5b31f337f444082f547ef1838e7064fc">isTesSuccess</a>(resetResult.first))</div>
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>&#160; result = resetResult.first;</div>
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>&#160; </div>
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span>&#160; fee = resetResult.second;</div>
<div class="line"><a name="l00888"></a><span class="lineno"> 888</span>&#160; }</div>
<div class="line"><a name="l00889"></a><span class="lineno"> 889</span>&#160; </div>
<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>&#160; <span class="comment">// If necessary, remove any offers found unfunded during processing</span></div>
<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>&#160; <span class="keywordflow">if</span> ((result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caad531e9d2f46a3a6e6f01934097e7053">tecOVERSIZE</a>) || (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38ca82773cd87fbf942a9cb626416218f52b">tecKILLED</a>))</div>
<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>&#160; <a class="code" href="namespaceripple.html#a6aab406eb9522bb36ba7247335e303ec">removeUnfundedOffers</a>(</div>
<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>&#160; <a class="code" href="classripple_1_1Transactor.html#a1ac5d16d7b21e8af9cc94d7af39a85d5">view</a>(), removedOffers, <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a6ec1f10e560afe30ed435c3f7eea715d">app</a>.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">&quot;View&quot;</span>));</div>
<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>&#160; </div>
<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>&#160; <span class="keywordflow">if</span> (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caede598f88bbd44e4df1c4e0d418c4cdc">tecEXPIRED</a>)</div>
<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>&#160; <a class="code" href="namespaceripple.html#a8ba581584f364d79f3b5020b6a2c66da">removeExpiredNFTokenOffers</a>(</div>
<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>&#160; <a class="code" href="classripple_1_1Transactor.html#a1ac5d16d7b21e8af9cc94d7af39a85d5">view</a>(), expiredNFTokenOffers, <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a6ec1f10e560afe30ed435c3f7eea715d">app</a>.<a class="code" href="classripple_1_1Application.html#a2897c28a5b5040e80e66f676d201d03f">journal</a>(<span class="stringliteral">&quot;View&quot;</span>));</div>
<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>&#160; </div>
<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>&#160; applied = <a class="code" href="namespaceripple.html#a18e688f3fc0a5e80e13b353c9f924b22">isTecClaim</a>(result);</div>
<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>&#160; }</div>
<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>&#160; </div>
<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>&#160; <span class="keywordflow">if</span> (applied)</div>
<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>&#160; {</div>
<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>&#160; <span class="comment">// Check invariants: if `tecINVARIANT_FAILED` is not returned, we can</span></div>
<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>&#160; <span class="comment">// proceed to apply the tx</span></div>
<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>&#160; result = <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#acf5f75ec76cec199781a945226834410">checkInvariants</a>(result, fee);</div>
<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>&#160; </div>
<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>&#160; <span class="keywordflow">if</span> (result == <a class="code" href="namespaceripple.html#aa298e929e02f59c2b05a30ee8805b38caa7dccd25363fdff0d363bd16553d1c84">tecINVARIANT_FAILED</a>)</div>
<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>&#160; {</div>
<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>&#160; <span class="comment">// if invariants checking failed again, reset the context and</span></div>
<div class="line"><a name="l00911"></a><span class="lineno"> 911</span>&#160; <span class="comment">// attempt to only claim a fee.</span></div>
<div class="line"><a name="l00912"></a><span class="lineno"> 912</span>&#160; <span class="keyword">auto</span> <span class="keyword">const</span> resetResult = <a class="code" href="classripple_1_1Transactor.html#af81f796422a3f66771e31a6ecbbbf57b">reset</a>(fee);</div>
<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceripple.html#a5b31f337f444082f547ef1838e7064fc">isTesSuccess</a>(resetResult.first))</div>
<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>&#160; result = resetResult.first;</div>
<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>&#160; </div>
<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>&#160; fee = resetResult.second;</div>
<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>&#160; </div>
<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>&#160; <span class="comment">// Check invariants again to ensure the fee claiming doesn&#39;t</span></div>
<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>&#160; <span class="comment">// violate invariants.</span></div>
<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>&#160; <span class="keywordflow">if</span> (<a class="code" href="namespaceripple.html#a5b31f337f444082f547ef1838e7064fc">isTesSuccess</a>(result) || <a class="code" href="namespaceripple.html#a18e688f3fc0a5e80e13b353c9f924b22">isTecClaim</a>(result))</div>
<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>&#160; result = <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#acf5f75ec76cec199781a945226834410">checkInvariants</a>(result, fee);</div>
<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>&#160; }</div>
<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>&#160; </div>
<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>&#160; <span class="comment">// We ran through the invariant checker, which can, in some cases,</span></div>
<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>&#160; <span class="comment">// return a tef error code. Don&#39;t apply the transaction in that case.</span></div>
<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="namespaceripple.html#a18e688f3fc0a5e80e13b353c9f924b22">isTecClaim</a>(result) &amp;&amp; !<a class="code" href="namespaceripple.html#a5b31f337f444082f547ef1838e7064fc">isTesSuccess</a>(result))</div>
<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>&#160; applied = <span class="keyword">false</span>;</div>
<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>&#160; }</div>
<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>&#160; </div>
<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>&#160; <span class="keywordflow">if</span> (applied)</div>
<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>&#160; {</div>
<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>&#160; <span class="comment">// Transaction succeeded fully or (retries are not allowed and the</span></div>
<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>&#160; <span class="comment">// transaction could claim a fee)</span></div>
<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>&#160; </div>
<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>&#160; <span class="comment">// The transactor and invariant checkers guarantee that this will</span></div>
<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>&#160; <span class="comment">// *never* trigger but if it, somehow, happens, don&#39;t allow a tx</span></div>
<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>&#160; <span class="comment">// that charges a negative fee.</span></div>
<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>&#160; <span class="keywordflow">if</span> (fee &lt; beast::zero)</div>
<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>&#160; Throw&lt;std::logic_error&gt;(<span class="stringliteral">&quot;fee charged is negative!&quot;</span>);</div>
<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>&#160; </div>
<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>&#160; <span class="comment">// Charge whatever fee they specified. The fee has already been</span></div>
<div class="line"><a name="l00942"></a><span class="lineno"> 942</span>&#160; <span class="comment">// deducted from the balance of the account that issued the</span></div>
<div class="line"><a name="l00943"></a><span class="lineno"> 943</span>&#160; <span class="comment">// transaction. We just need to account for it in the ledger</span></div>
<div class="line"><a name="l00944"></a><span class="lineno"> 944</span>&#160; <span class="comment">// header.</span></div>
<div class="line"><a name="l00945"></a><span class="lineno"> 945</span>&#160; <span class="keywordflow">if</span> (!<a class="code" href="classripple_1_1Transactor.html#a1ac5d16d7b21e8af9cc94d7af39a85d5">view</a>().<a class="code" href="namespaceripple.html#a886ed36db831a964fc5f66ebbb4fe3d0">open</a>() &amp;&amp; fee != beast::zero)</div>
<div class="line"><a name="l00946"></a><span class="lineno"> 946</span>&#160; <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#a6dd28e2ef7cc9935403cbe303ebb5011">destroyXRP</a>(fee);</div>
<div class="line"><a name="l00947"></a><span class="lineno"> 947</span>&#160; </div>
<div class="line"><a name="l00948"></a><span class="lineno"> 948</span>&#160; <span class="comment">// Once we call apply, we will no longer be able to look at view()</span></div>
<div class="line"><a name="l00949"></a><span class="lineno"> 949</span>&#160; <a class="code" href="classripple_1_1Transactor.html#aef4ef0a89b5595b2a688b89e4ecef833">ctx_</a>.<a class="code" href="classripple_1_1ApplyContext.html#aca57d8bdb6612a3d8042cadf62694125">apply</a>(result);</div>
<div class="line"><a name="l00950"></a><span class="lineno"> 950</span>&#160; }</div>
<div class="line"><a name="l00951"></a><span class="lineno"> 951</span>&#160; </div>
<div class="line"><a name="l00952"></a><span class="lineno"> 952</span>&#160; JLOG(<a class="code" href="classripple_1_1Transactor.html#aafdaa4e246ee6879df9cbbf2482dcc7d">j_</a>.<a class="code" href="classbeast_1_1Journal.html#abbe082bd27ca0f1d1365af2824e4f85b">trace</a>()) &lt;&lt; (applied ? <span class="stringliteral">&quot;applied&quot;</span> : <span class="stringliteral">&quot;not applied&quot;</span>)</div>
<div class="line"><a name="l00953"></a><span class="lineno"> 953</span>&#160; &lt;&lt; <a class="code" href="namespaceripple.html#a875ae996b37ed036597d70628ae053e3">transToken</a>(result);</div>
<div class="line"><a name="l00954"></a><span class="lineno"> 954</span>&#160; </div>
<div class="line"><a name="l00955"></a><span class="lineno"> 955</span>&#160; <span class="keywordflow">return</span> {result, applied};</div>
<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>&#160;}</div>
<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>&#160; </div>
<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>&#160;} <span class="comment">// namespace ripple</span></div>
</div><!-- fragment --></div><!-- contents -->
<div class="ttc" id="aclassbeast_1_1Journal_html_a3dfb8e2e3eecccdb5cf78ff21bca069c"><div class="ttname"><a href="classbeast_1_1Journal.html#a3dfb8e2e3eecccdb5cf78ff21bca069c">beast::Journal::fatal</a></div><div class="ttdeci">Stream fatal() const</div><div class="ttdef"><b>Definition:</b> <a href="Journal_8h_source.html#l00339">Journal.h:339</a></div></div>
<div class="ttc" id="aclassripple_1_1STArray_html_afdae4983cf41a2e6c3031d203b79c67b"><div class="ttname"><a href="classripple_1_1STArray.html#afdae4983cf41a2e6c3031d203b79c67b">ripple::STArray::size</a></div><div class="ttdeci">size_type size() const</div><div class="ttdef"><b>Definition:</b> <a href="STArray_8h_source.html#l00248">STArray.h:248</a></div></div>
@@ -1032,7 +1033,7 @@ $(function() {
<div class="ttc" id="aclassripple_1_1Application_html"><div class="ttname"><a href="classripple_1_1Application.html">ripple::Application</a></div><div class="ttdef"><b>Definition:</b> <a href="Application_8h_source.html#l00115">Application.h:115</a></div></div>
<div class="ttc" id="anamespaceripple_html_adebe4d783be9c979e67fdbb2bc27162fad237d4c433f46906a2b8b2e1624c1aff"><div class="ttname"><a href="namespaceripple.html#adebe4d783be9c979e67fdbb2bc27162fad237d4c433f46906a2b8b2e1624c1aff">ripple::terPRE_TICKET</a></div><div class="ttdeci">@ terPRE_TICKET</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00204">TER.h:204</a></div></div>
<div class="ttc" id="aclassripple_1_1STObject_html_a26fe74d797620b2d08d06d50527380e1"><div class="ttname"><a href="classripple_1_1STObject.html#a26fe74d797620b2d08d06d50527380e1">ripple::STObject::getFieldArray</a></div><div class="ttdeci">const STArray &amp; getFieldArray(SField const &amp;field) const</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00624">STObject.cpp:624</a></div></div>
<div class="ttc" id="aclassripple_1_1STAmountSO_html"><div class="ttname"><a href="classripple_1_1STAmountSO.html">ripple::STAmountSO</a></div><div class="ttdoc">RAII class to set and restore the STAmount canonicalize switchover.</div><div class="ttdef"><b>Definition:</b> <a href="STAmount_8h_source.html#l00529">STAmount.h:529</a></div></div>
<div class="ttc" id="aclassripple_1_1STAmountSO_html"><div class="ttname"><a href="classripple_1_1STAmountSO.html">ripple::STAmountSO</a></div><div class="ttdoc">RAII class to set and restore the STAmount canonicalize switchover.</div><div class="ttdef"><b>Definition:</b> <a href="STAmount_8h_source.html#l00544">STAmount.h:544</a></div></div>
<div class="ttc" id="anamespaceripple_html_a8b257ff89d14ac75ce240946f32d3773"><div class="ttname"><a href="namespaceripple.html#a8b257ff89d14ac75ce240946f32d3773">ripple::preflight2</a></div><div class="ttdeci">NotTEC preflight2(PreflightContext const &amp;ctx)</div><div class="ttdoc">Checks whether the signature appears valid.</div><div class="ttdef"><b>Definition:</b> <a href="Transactor_8cpp_source.html#l00109">Transactor.cpp:109</a></div></div>
<div class="ttc" id="anamespaceripple_html_aabe37451093c21757855542d68fba3ce"><div class="ttname"><a href="namespaceripple.html#aabe37451093c21757855542d68fba3ce">ripple::makeSlice</a></div><div class="ttdeci">std::enable_if_t&lt; std::is_same&lt; T, char &gt;::value||std::is_same&lt; T, unsigned char &gt;::value, Slice &gt; makeSlice(std::array&lt; T, N &gt; const &amp;a)</div><div class="ttdef"><b>Definition:</b> <a href="Slice_8h_source.html#l00241">Slice.h:241</a></div></div>
<div class="ttc" id="aclassripple_1_1Transactor_html_a5c4568739676c5335b8d63dc375f7920"><div class="ttname"><a href="classripple_1_1Transactor.html#a5c4568739676c5335b8d63dc375f7920">ripple::Transactor::minimumFee</a></div><div class="ttdeci">static XRPAmount minimumFee(Application &amp;app, XRPAmount baseFee, Fees const &amp;fees, ApplyFlags flags)</div><div class="ttdoc">Compute the minimum fee required to process a transaction with a given baseFee based on the current s...</div><div class="ttdef"><b>Definition:</b> <a href="Transactor_8cpp_source.html#l00159">Transactor.cpp:159</a></div></div>
@@ -1064,6 +1065,7 @@ $(function() {
<div class="ttc" id="aclassripple_1_1ApplyView_html_afda9c12acbda605becf20f54d45587d4"><div class="ttname"><a href="classripple_1_1ApplyView.html#afda9c12acbda605becf20f54d45587d4">ripple::ApplyView::erase</a></div><div class="ttdeci">virtual void erase(std::shared_ptr&lt; SLE &gt; const &amp;sle)=0</div><div class="ttdoc">Remove a peeked SLE.</div></div>
<div class="ttc" id="avector_html"><div class="ttname"><a href="http://en.cppreference.com/w/cpp/container/vector.html">std::vector</a></div><div class="ttdoc">STL class.</div></div>
<div class="ttc" id="aclassripple_1_1ReadView_html_a9bbdb3fb4754482a8d6c6e6d25c2d1eb"><div class="ttname"><a href="classripple_1_1ReadView.html#a9bbdb3fb4754482a8d6c6e6d25c2d1eb">ripple::ReadView::fees</a></div><div class="ttdeci">virtual Fees const &amp; fees() const =0</div><div class="ttdoc">Returns the fees for the base ledger.</div></div>
<div class="ttc" id="aclassripple_1_1NumberSO_html"><div class="ttname"><a href="classripple_1_1NumberSO.html">ripple::NumberSO</a></div><div class="ttdoc">RAII class to set and restore the Number switchover.</div><div class="ttdef"><b>Definition:</b> <a href="IOUAmount_8h_source.html#l00194">IOUAmount.h:194</a></div></div>
<div class="ttc" id="anamespaceripple_html_a590913040d5c9a68f3bf1d4da20311ad"><div class="ttname"><a href="namespaceripple.html#a590913040d5c9a68f3bf1d4da20311ad">ripple::sfSigningPubKey</a></div><div class="ttdeci">const SF_VL sfSigningPubKey</div></div>
<div class="ttc" id="anamespaceripple_html_a58db4f19d243f6c82a533a40a0db89cd"><div class="ttname"><a href="namespaceripple.html#a58db4f19d243f6c82a533a40a0db89cd">ripple::fixSTAmountCanonicalize</a></div><div class="ttdeci">const uint256 fixSTAmountCanonicalize</div></div>
<div class="ttc" id="anamespaceripple_html_acf006b1d073655e03dd2426f56f13100"><div class="ttname"><a href="namespaceripple.html#acf006b1d073655e03dd2426f56f13100">ripple::expiredOfferRemoveLimit</a></div><div class="ttdeci">constexpr std::size_t expiredOfferRemoveLimit</div><div class="ttdoc">The maximum number of expired offers to delete at once.</div><div class="ttdef"><b>Definition:</b> <a href="Protocol_8h_source.html#l00049">Protocol.h:49</a></div></div>
@@ -1132,7 +1134,7 @@ $(function() {
<div class="ttc" id="anamespaceripple_html_a260d2970ac1119109937ed1c5d4ca962a595a44bbc04dffad91a353227660d6ba"><div class="ttname"><a href="namespaceripple.html#a260d2970ac1119109937ed1c5d4ca962a595a44bbc04dffad91a353227660d6ba">ripple::telINSUF_FEE_P</a></div><div class="ttdeci">@ telINSUF_FEE_P</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00056">TER.h:56</a></div></div>
<div class="ttc" id="anamespaceripple_html_a8b7ad58ef0bd67e998b61e1a1292b3e5"><div class="ttname"><a href="namespaceripple.html#a8b7ad58ef0bd67e998b61e1a1292b3e5">ripple::sfTicketCount</a></div><div class="ttdeci">const SF_UINT32 sfTicketCount</div></div>
<div class="ttc" id="anamespaceripple_html_afa87acdfb963b2129980b58d05b99c1d"><div class="ttname"><a href="namespaceripple.html#afa87acdfb963b2129980b58d05b99c1d">ripple::sfAccountTxnID</a></div><div class="ttdeci">const SF_UINT256 sfAccountTxnID</div></div>
<div class="ttc" id="aclassripple_1_1STAmount_html"><div class="ttname"><a href="classripple_1_1STAmount.html">ripple::STAmount</a></div><div class="ttdef"><b>Definition:</b> <a href="STAmount_8h_source.html#l00044">STAmount.h:44</a></div></div>
<div class="ttc" id="aclassripple_1_1STAmount_html"><div class="ttname"><a href="classripple_1_1STAmount.html">ripple::STAmount</a></div><div class="ttdef"><b>Definition:</b> <a href="STAmount_8h_source.html#l00045">STAmount.h:45</a></div></div>
<div class="ttc" id="astructripple_1_1PreflightContext_html_a027e5fc872737a81a7d2428e6f251c1f"><div class="ttname"><a href="structripple_1_1PreflightContext.html#a027e5fc872737a81a7d2428e6f251c1f">ripple::PreflightContext::app</a></div><div class="ttdeci">Application &amp; app</div><div class="ttdef"><b>Definition:</b> <a href="Transactor_8h_source.html#l00034">Transactor.h:34</a></div></div>
<div class="ttc" id="aclassripple_1_1ApplyContext_html_a5967451fa668bfc8b6e6bf763da92aa7"><div class="ttname"><a href="classripple_1_1ApplyContext.html#a5967451fa668bfc8b6e6bf763da92aa7">ripple::ApplyContext::discard</a></div><div class="ttdeci">void discard()</div><div class="ttdoc">Discard changes and start fresh.</div><div class="ttdef"><b>Definition:</b> <a href="ApplyContext_8cpp_source.html#l00051">ApplyContext.cpp:51</a></div></div>
<div class="ttc" id="aclassripple_1_1Serializer_html_a394c3299f6cfcebdaa4bc98ec0c602d6"><div class="ttname"><a href="classripple_1_1Serializer.html#a394c3299f6cfcebdaa4bc98ec0c602d6">ripple::Serializer::slice</a></div><div class="ttdeci">Slice slice() const noexcept</div><div class="ttdef"><b>Definition:</b> <a href="Serializer_8h_source.html#l00063">Serializer.h:63</a></div></div>
@@ -1179,6 +1181,7 @@ $(function() {
<div class="ttc" id="anamespaceripple_html_ac1371098a8a7c1e1238290d0220dc941"><div class="ttname"><a href="namespaceripple.html#ac1371098a8a7c1e1238290d0220dc941">ripple::sfFlags</a></div><div class="ttdeci">const SF_UINT32 sfFlags</div></div>
<div class="ttc" id="anamespaceripple_html_a75cb21d7f1df42f2fdc8efddb79b63f4ac01c14dcda25a99606dcd9a039bcaa70"><div class="ttname"><a href="namespaceripple.html#a75cb21d7f1df42f2fdc8efddb79b63f4ac01c14dcda25a99606dcd9a039bcaa70">ripple::tefALREADY</a></div><div class="ttdeci">@ tefALREADY</div><div class="ttdef"><b>Definition:</b> <a href="TER_8h_source.html#l00146">TER.h:146</a></div></div>
<div class="ttc" id="aclassripple_1_1STObject_html_aaf5d617701ac3afc4ad6a13862459692"><div class="ttname"><a href="classripple_1_1STObject.html#aaf5d617701ac3afc4ad6a13862459692">ripple::STObject::isFieldPresent</a></div><div class="ttdeci">bool isFieldPresent(SField const &amp;field) const</div><div class="ttdef"><b>Definition:</b> <a href="STObject_8cpp_source.html#l00428">STObject.cpp:428</a></div></div>
<div class="ttc" id="anamespaceripple_html_aca7b4bf41e621edeabbb353a76e9b055"><div class="ttname"><a href="namespaceripple.html#aca7b4bf41e621edeabbb353a76e9b055">ripple::fixUniversalNumber</a></div><div class="ttdeci">const uint256 fixUniversalNumber</div></div>
<div class="ttc" id="aclassripple_1_1Transactor_html_abb2f6f5d7fd8c663c5df76b6fcba2c49"><div class="ttname"><a href="classripple_1_1Transactor.html#abb2f6f5d7fd8c663c5df76b6fcba2c49">ripple::Transactor::mPriorBalance</a></div><div class="ttdeci">XRPAmount mPriorBalance</div><div class="ttdef"><b>Definition:</b> <a href="Transactor_8h_source.html#l00092">Transactor.h:92</a></div></div>
<div class="ttc" id="aclassripple_1_1Transactor_html_ae20c19d8ecec32cec52399081e76cc45"><div class="ttname"><a href="classripple_1_1Transactor.html#ae20c19d8ecec32cec52399081e76cc45">ripple::Transactor::mSourceBalance</a></div><div class="ttdeci">XRPAmount mSourceBalance</div><div class="ttdef"><b>Definition:</b> <a href="Transactor_8h_source.html#l00093">Transactor.h:93</a></div></div>
<div class="ttc" id="anamespaceripple_html_ab8a9c54401e8209fca7396c6b9c610f4"><div class="ttname"><a href="namespaceripple.html#ab8a9c54401e8209fca7396c6b9c610f4">ripple::sfBalance</a></div><div class="ttdeci">const SF_AMOUNT sfBalance</div></div>