<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>101328</bug_id>
          
          <creation_ts>2012-11-06 02:47:50 -0800</creation_ts>
          <short_desc>MIPS DFG implementation.</short_desc>
          <delta_ts>2013-09-05 08:49:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>108664</blocked>
    
    <blocked>108662</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Balazs Kilvady">kilvadyb</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>fpizlo</cc>
    
    <cc>fu</cc>
    
    <cc>gergely</cc>
    
    <cc>gustavo</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>palfia</cc>
    
    <cc>philn</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>759461</commentid>
    <comment_count>0</comment_count>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2012-11-06 02:47:50 -0800</bug_when>
    <thetext>DFG implementation for MIPS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759477</commentid>
    <comment_count>1</comment_count>
      <attachid>172540</attachid>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2012-11-06 03:11:23 -0800</bug_when>
    <thetext>Created attachment 172540
DFG for MIPS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759482</commentid>
    <comment_count>2</comment_count>
      <attachid>172540</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-06 03:25:56 -0800</bug_when>
    <thetext>Comment on attachment 172540
DFG for MIPS

Attachment 172540 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14675417</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759484</commentid>
    <comment_count>3</comment_count>
      <attachid>172540</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-06 03:29:09 -0800</bug_when>
    <thetext>Comment on attachment 172540
DFG for MIPS

Attachment 172540 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14732761</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759519</commentid>
    <comment_count>4</comment_count>
      <attachid>172540</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-06 04:19:58 -0800</bug_when>
    <thetext>Comment on attachment 172540
DFG for MIPS

Attachment 172540 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14747377</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759635</commentid>
    <comment_count>5</comment_count>
      <attachid>172540</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-06 06:57:21 -0800</bug_when>
    <thetext>Comment on attachment 172540
DFG for MIPS

Attachment 172540 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14726908</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760551</commentid>
    <comment_count>6</comment_count>
      <attachid>172763</attachid>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2012-11-07 05:14:50 -0800</bug_when>
    <thetext>Created attachment 172763
DFG for MIPS.

Macro fix to make compilable on non-MIPS targets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762034</commentid>
    <comment_count>7</comment_count>
      <attachid>173088</attachid>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2012-11-08 12:04:15 -0800</bug_when>
    <thetext>Created attachment 173088
DFG for MIPS.

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763306</commentid>
    <comment_count>8</comment_count>
    <who name="Chao-ying Fu">fu</who>
    <bug_when>2012-11-09 14:17:40 -0800</bug_when>
    <thetext> 184    static const FPRReg argumentFPR0 = MIPSRegisters::f12;
 185    static const FPRReg argumentFPR1 = MIPSRegisters::f14;
 186    static const FPRReg argumentFPR2 = MIPSRegisters::f10; &lt;----
 187    static const FPRReg argumentFPR3 = MIPSRegisters::f18;

I think at line 186 it should be MIPSRegisters::f16.
Are argumentFPR2 and argumentFPR3 used anywhere?
Thanks a lot!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767009</commentid>
    <comment_count>9</comment_count>
      <attachid>174190</attachid>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2012-11-14 10:16:48 -0800</bug_when>
    <thetext>Created attachment 174190
DFG for MIPS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767020</commentid>
    <comment_count>10</comment_count>
      <attachid>174190</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-14 10:25:09 -0800</bug_when>
    <thetext>Comment on attachment 174190
DFG for MIPS.

Attachment 174190 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14844138</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767028</commentid>
    <comment_count>11</comment_count>
      <attachid>174190</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-14 10:35:02 -0800</bug_when>
    <thetext>Comment on attachment 174190
DFG for MIPS.

Attachment 174190 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14844143</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767029</commentid>
    <comment_count>12</comment_count>
      <attachid>174198</attachid>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2012-11-14 10:35:42 -0800</bug_when>
    <thetext>Created attachment 174198
DFG for MIPS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>767036</commentid>
    <comment_count>13</comment_count>
      <attachid>174198</attachid>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2012-11-14 10:38:38 -0800</bug_when>
    <thetext>Comment on attachment 174198
DFG for MIPS.

Rebased on r134612</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793512</commentid>
    <comment_count>14</comment_count>
      <attachid>179915</attachid>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2012-12-18 03:27:59 -0800</bug_when>
    <thetext>Created attachment 179915
DFG for MIPS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>793513</commentid>
    <comment_count>15</comment_count>
      <attachid>179915</attachid>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2012-12-18 03:30:11 -0800</bug_when>
    <thetext>Comment on attachment 179915
DFG for MIPS.

Rebased on r138003.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>796207</commentid>
    <comment_count>16</comment_count>
      <attachid>180494</attachid>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2012-12-21 02:09:40 -0800</bug_when>
    <thetext>Created attachment 180494
DFG for MIPS.

replaceWithJump problem (described in Bug #103146) fix added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800285</commentid>
    <comment_count>17</comment_count>
      <attachid>181319</attachid>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2013-01-04 09:38:24 -0800</bug_when>
    <thetext>Created attachment 181319
DFG for MIPS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>800314</commentid>
    <comment_count>18</comment_count>
      <attachid>181319</attachid>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2013-01-04 10:04:48 -0800</bug_when>
    <thetext>Comment on attachment 181319
DFG for MIPS.

Rebased on r138804.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801044</commentid>
    <comment_count>19</comment_count>
      <attachid>181319</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-05 23:25:38 -0800</bug_when>
    <thetext>Comment on attachment 181319
DFG for MIPS.

View in context: https://bugs.webkit.org/attachment.cgi?id=181319&amp;action=review

&gt; Source/JavaScriptCore/dfg/DFGCCallHelpers.h:963
&gt; +#if CPU(MIPS)
&gt; +    ALWAYS_INLINE void setupArgumentsWithExecState(GPRReg arg1, GPRReg arg2, GPRReg arg3, GPRReg arg4)
&gt; +    {
&gt; +        poke(arg4, 4);
&gt; +        setupArgumentsWithExecState(arg1, arg2, arg3);
&gt; +    }
&gt; +

Why is all of this behind CPU(MIPS)?  It looks identical to the normal NUMBER_OF_ARGUMENT_REGISTERS == 4 case. :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801211</commentid>
    <comment_count>20</comment_count>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2013-01-07 02:19:21 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 181319 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=181319&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGCCallHelpers.h:963
&gt; &gt; +#if CPU(MIPS)
&gt; &gt; +    ALWAYS_INLINE void setupArgumentsWithExecState(GPRReg arg1, GPRReg arg2, GPRReg arg3, GPRReg arg4)
&gt; &gt; +    {
&gt; &gt; +        poke(arg4, 4);
&gt; &gt; +        setupArgumentsWithExecState(arg1, arg2, arg3);
&gt; &gt; +    }
&gt; &gt; +
&gt; 
&gt; Why is all of this behind CPU(MIPS)?  It looks identical to the normal NUMBER_OF_ARGUMENT_REGISTERS == 4 case. :-/

Thank you for the review. On MIPS we have to give space for the register stored arguments on stack also so while other (params in 4 regs) arches can use:
        poke(arg5, 1);
        poke(arg4);
        setupArgumentsWithExecState(arg1, arg2, arg3);
on MIPS we have to use:
        poke(arg5, 5);
        poke(arg4, 4);
        setupArgumentsWithExecState(arg1, arg2, arg3);
Different stack offset values in poke call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801437</commentid>
    <comment_count>21</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-07 10:54:44 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; (From update of attachment 181319 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=181319&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/dfg/DFGCCallHelpers.h:963
&gt; &gt; &gt; +#if CPU(MIPS)
&gt; &gt; &gt; +    ALWAYS_INLINE void setupArgumentsWithExecState(GPRReg arg1, GPRReg arg2, GPRReg arg3, GPRReg arg4)
&gt; &gt; &gt; +    {
&gt; &gt; &gt; +        poke(arg4, 4);
&gt; &gt; &gt; +        setupArgumentsWithExecState(arg1, arg2, arg3);
&gt; &gt; &gt; +    }
&gt; &gt; &gt; +
&gt; &gt; 
&gt; &gt; Why is all of this behind CPU(MIPS)?  It looks identical to the normal NUMBER_OF_ARGUMENT_REGISTERS == 4 case. :-/
&gt; 
&gt; Thank you for the review. On MIPS we have to give space for the register stored arguments on stack also so while other (params in 4 regs) arches can use:
&gt;         poke(arg5, 1);
&gt;         poke(arg4);
&gt;         setupArgumentsWithExecState(arg1, arg2, arg3);
&gt; on MIPS we have to use:
&gt;         poke(arg5, 5);
&gt;         poke(arg4, 4);
&gt;         setupArgumentsWithExecState(arg1, arg2, arg3);
&gt; Different stack offset values in poke call.

Then I would suggest abstracting the poke offset, and using #if&apos;s only for that.  That way, you don&apos;t have to duplicate all of that code!

Keep in mind that this code gets churned *a lot*.  Every time we add a DFGOperations function with a sufficiently exotic signature, this code gets touched.  Therefore, we should reduce code duplication as much as possible; otherwise you guys will have a lot more work to do to keep up with DFG changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801450</commentid>
    <comment_count>22</comment_count>
      <attachid>181319</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-07 11:06:36 -0800</bug_when>
    <thetext>Comment on attachment 181319
DFG for MIPS.

View in context: https://bugs.webkit.org/attachment.cgi?id=181319&amp;action=review

&gt;&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGCCallHelpers.h:963
&gt;&gt;&gt;&gt; +
&gt;&gt;&gt; 
&gt;&gt;&gt; Why is all of this behind CPU(MIPS)?  It looks identical to the normal NUMBER_OF_ARGUMENT_REGISTERS == 4 case. :-/
&gt;&gt; 
&gt;&gt; Thank you for the review. On MIPS we have to give space for the register stored arguments on stack also so while other (params in 4 regs) arches can use:
&gt;&gt;         poke(arg5, 1);
&gt;&gt;         poke(arg4);
&gt;&gt;         setupArgumentsWithExecState(arg1, arg2, arg3);
&gt;&gt; on MIPS we have to use:
&gt;&gt;         poke(arg5, 5);
&gt;&gt;         poke(arg4, 4);
&gt;&gt;         setupArgumentsWithExecState(arg1, arg2, arg3);
&gt;&gt; Different stack offset values in poke call.
&gt; 
&gt; Then I would suggest abstracting the poke offset, and using #if&apos;s only for that.  That way, you don&apos;t have to duplicate all of that code!
&gt; 
&gt; Keep in mind that this code gets churned *a lot*.  Every time we add a DFGOperations function with a sufficiently exotic signature, this code gets touched.  Therefore, we should reduce code duplication as much as possible; otherwise you guys will have a lot more work to do to keep up with DFG changes.

See above comment.  I still think you should abstract the poke offset rather than duplicating all of this code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801452</commentid>
    <comment_count>23</comment_count>
      <attachid>179915</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-01-07 11:07:43 -0800</bug_when>
    <thetext>Comment on attachment 179915
DFG for MIPS.

I assume that this is an earlier version of the patch, so I&apos;m clearing r?.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802254</commentid>
    <comment_count>24</comment_count>
      <attachid>181695</attachid>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2013-01-08 08:10:14 -0800</bug_when>
    <thetext>Created attachment 181695
DFG for MIPS.

With the requested poke abstraction which is implemented with a helper inline template function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802258</commentid>
    <comment_count>25</comment_count>
      <attachid>181698</attachid>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2013-01-08 08:19:17 -0800</bug_when>
    <thetext>Created attachment 181698
DFG for MIPS #2.

With the requested poke abstraction which is implemented with an offset macro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>802262</commentid>
    <comment_count>26</comment_count>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2013-01-08 08:27:04 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; See above comment.  I still think you should abstract the poke offset rather than duplicating all of this code.

Thank you for reviewing. We found two &quot;straight&quot; ways for poke abstraction but we were unsure which solution you would like, so we provided both in the last two patches. If you would like to see something else, please let us know, and we will of course change the code accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810415</commentid>
    <comment_count>27</comment_count>
      <attachid>183415</attachid>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2013-01-18 02:46:40 -0800</bug_when>
    <thetext>Created attachment 183415
DFG for MIPS - arg. offset with macro</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>810418</commentid>
    <comment_count>28</comment_count>
      <attachid>183416</attachid>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2013-01-18 02:55:35 -0800</bug_when>
    <thetext>Created attachment 183416
DFG for MIPS - arg. offset with inline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811997</commentid>
    <comment_count>29</comment_count>
      <attachid>183746</attachid>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2013-01-21 03:24:00 -0800</bug_when>
    <thetext>Created attachment 183746
DFG for MIPS - arg. offset with inline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>812007</commentid>
    <comment_count>30</comment_count>
      <attachid>183750</attachid>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2013-01-21 03:36:21 -0800</bug_when>
    <thetext>Created attachment 183750
DFG for MIPS - arg. offset with macro

Rebased on r140318.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818832</commentid>
    <comment_count>31</comment_count>
      <attachid>185217</attachid>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2013-01-29 04:38:13 -0800</bug_when>
    <thetext>Created attachment 185217
DFG for MIPS - arg. offset with inline

Rebased on r 41096.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818837</commentid>
    <comment_count>32</comment_count>
      <attachid>185219</attachid>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2013-01-29 04:46:05 -0800</bug_when>
    <thetext>Created attachment 185219
DFG for MIPS - arg. offset with macro

Rebased on r141096.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>818838</commentid>
    <comment_count>33</comment_count>
      <attachid>185217</attachid>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2013-01-29 04:47:16 -0800</bug_when>
    <thetext>Comment on attachment 185217
DFG for MIPS - arg. offset with inline

Rebased on r141096.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829898</commentid>
    <comment_count>34</comment_count>
      <attachid>187616</attachid>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2013-02-11 11:07:10 -0800</bug_when>
    <thetext>Created attachment 187616
DFG for MIPS - arg. offset with inline

Rebased on r142489.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835455</commentid>
    <comment_count>35</comment_count>
      <attachid>188878</attachid>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2013-02-18 07:04:04 -0800</bug_when>
    <thetext>Created attachment 188878
DFG for MIPS - arg. offset with inline

Rebased on r143211.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835458</commentid>
    <comment_count>36</comment_count>
      <attachid>188879</attachid>
    <who name="Balazs Kilvady">kilvadyb</who>
    <bug_when>2013-02-18 07:12:42 -0800</bug_when>
    <thetext>Created attachment 188879
DFG for MIPS - arg. offset with macro

Rebased on r143211.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835653</commentid>
    <comment_count>37</comment_count>
      <attachid>188879</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-18 11:27:04 -0800</bug_when>
    <thetext>Comment on attachment 188879
DFG for MIPS - arg. offset with macro

Clearing flags on attachment: 188879

Committed r143247: &lt;http://trac.webkit.org/changeset/143247&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925060</commentid>
    <comment_count>38</comment_count>
      <attachid>188878</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2013-09-05 08:49:41 -0700</bug_when>
    <thetext>Comment on attachment 188878
DFG for MIPS - arg. offset with inline

The work on this bug has finished, with the patch with macro-based approach landed in comment #37.

Clearing the flags on this parallel patch that was based on the inline functions approach.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172540</attachid>
            <date>2012-11-06 03:11:23 -0800</date>
            <delta_ts>2012-11-07 05:14:50 -0800</delta_ts>
            <desc>DFG for MIPS</desc>
            <filename>mips-dfg.diff</filename>
            <type>text/plain</type>
            <size>45867</size>
            <attacher name="Balazs Kilvady">kilvadyb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGE5MjIzYTIuLjQxNDY4OWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDEyLTExLTA2ICBCYWxhenMgS2lsdmFk
eSAgPGtpbHZhZHliQGhvbWVqaW5uaS5jb20+CisKKyAgICAgICAgTUlQUyBERkcgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
SVBTIGltcGxlbWVudGF0aW9uIGZvciBNSVBTLgorCisgICAgICAgICogYXNzZW1ibGVyL01JUFNB
c3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6TUlQU0Fzc2VtYmxlcik6
CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6OnNsbHYpOgorICAgICAgICAoSlNDOjpNSVBT
QXNzZW1ibGVyOjptb3ZkKToKKyAgICAgICAgKE1JUFNBc3NlbWJsZXIpOgorICAgICAgICAoSlND
OjpNSVBTQXNzZW1ibGVyOjpuZWdkKToKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6bGFi
ZWxGb3JXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6bGFiZWwpOgor
ICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjp2bW92KToKKyAgICAgICAgKEpTQzo6TUlQU0Fz
c2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6
bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyTUlQUy5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmFkZDMyKToKKyAg
ICAgICAgKE1hY3JvQXNzZW1ibGVyTUlQUyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
TUlQUzo6YW5kMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmxzaGlmdDMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjptdWwzMik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6b3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyTUlQUzo6cnNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnVy
c2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6c3ViMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnhvcjMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJNSVBTOjpzdG9yZTMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJN
SVBTOjpqdW1wKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hBZGQz
Mik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoTXVsMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5jaFN1YjMyKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hOZWczMik6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyTUlQUzo6Y2FsbCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6
bW92ZURvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6c3ViRG91Ymxl
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjptdWxEb3VibGUpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmRpdkRvdWJsZSk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6bmVnYXRlRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJNSVBTOjpicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnRydW5jYXRlRG91YmxlVG9JbnQzMik6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6dHJ1bmNhdGVEb3VibGVUb1VpbnQzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlTm9uWmVybyk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlWmVyb09yTmFOKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjppbnZlcnQpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogZGZn
L0RGR0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoQXNzZW1ibHlIZWxwZXJzKToKKyAgICAg
ICAgKEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVy
Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlUmV0dXJu
QWRkcmVzc0JlZm9yZVJldHVybik6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJz
OjpkZWJ1Z0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAg
KENDYWxsSGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFy
Z3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUpOgorICAgICAgICAqIGRmZy9ERkdGUFJJbmZvLmg6CisgICAgICAgIChE
RkcpOgorICAgICAgICAoRlBSSW5mbyk6CisgICAgICAgIChKU0M6OkRGRzo6RlBSSW5mbzo6dG9S
ZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6RlBSSW5mbzo6dG9JbmRleCk6CisgICAgICAg
IChKU0M6OkRGRzo6RlBSSW5mbzo6ZGVidWdOYW1lKToKKyAgICAgICAgKiBkZmcvREZHR1BSSW5m
by5oOgorICAgICAgICAoREZHKToKKyAgICAgICAgKEdQUkluZm8pOgorICAgICAgICAoSlNDOjpE
Rkc6OkdQUkluZm86OnRvUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkdQUkluZm86OnRv
SW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OkdQUkluZm86OmRlYnVnTmFtZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6Cisg
ICAgICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAgIChKU0ludGVyZmFjZUpJVCk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpTQzo6U2NyYXRj
aEJ1ZmZlcjo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoU2NyYXRjaEJ1ZmZlcik6CisKIDIw
MTItMTEtMDUgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcg
c2hvdWxkIG5vdCBmYWxsIGRvd24gdG8gcGF0Y2hhYmxlIEdldEJ5SWQganVzdCBiZWNhdXNlIGEg
cHJvdG90eXBlIGhhZCB0aGluZ3MgYWRkZWQgdG8gaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKaW5kZXggMzBmMTcyZi4uNWFkZjNlYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKQEAg
LTE1Miw2ICsxNTIsOCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBTZWdtZW50ZWRWZWN0b3I8QXNz
ZW1ibGVyTGFiZWwsIDY0PiBKdW1wczsKIAogICAgIE1JUFNBc3NlbWJsZXIoKQorICAgICAgICA6
IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCisgICAgICAgICwgbV9pbmRleE9mVGFp
bE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKICAgICB7CiAgICAgfQogCkBAIC0zMjUsNyArMzI3
LDcgQEAgcHVibGljOgogICAgICAgICBlbWl0SW5zdCgweDAwMDAwMDAwIHwgKHJkIDw8IE9QX1NI
X1JEKSB8IChydCA8PCBPUF9TSF9SVCkgfCAoKHNoYW10ICYgMHgxZikgPDwgT1BfU0hfU0hBTVQp
KTsKICAgICB9CiAKLSAgICB2b2lkIHNsbHYoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBydCwg
aW50IHJzKQorICAgIHZvaWQgc2xsdihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJ0LCBSZWdp
c3RlcklEIHJzKQogICAgIHsKICAgICAgICAgZW1pdEluc3QoMHgwMDAwMDAwNCB8IChyZCA8PCBP
UF9TSF9SRCkgfCAocnQgPDwgT1BfU0hfUlQpIHwgKHJzIDw8IE9QX1NIX1JTKSk7CiAgICAgfQpA
QCAtNTI3LDYgKzUyOSwxNiBAQCBwdWJsaWM6CiAgICAgICAgIGVtaXRJbnN0KDB4NDYyMDAwMDQg
fCAoZmQgPDwgT1BfU0hfRkQpIHwgKGZzIDw8IE9QX1NIX0ZTKSk7CiAgICAgfQogCisgICAgdm9p
ZCBtb3ZkKEZQUmVnaXN0ZXJJRCBmZCwgRlBSZWdpc3RlcklEIGZzKQorICAgIHsKKyAgICAgICAg
ZW1pdEluc3QoMHg0NjIwMDAwNiB8IChmZCA8PCBPUF9TSF9GRCkgfCAoZnMgPDwgT1BfU0hfRlMp
KTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ2QoRlBSZWdpc3RlcklEIGZkLCBGUFJlZ2lzdGVySUQg
ZnMpCisgICAgeworICAgICAgICBlbWl0SW5zdCgweDQ2MjAwMDA3IHwgKGZkIDw8IE9QX1NIX0ZE
KSB8IChmcyA8PCBPUF9TSF9GUykpOworICAgIH0KKwogICAgIHZvaWQgdHJ1bmN3ZChGUFJlZ2lz
dGVySUQgZmQsIEZQUmVnaXN0ZXJJRCBmcykKICAgICB7CiAgICAgICAgIGVtaXRJbnN0KDB4NDYy
MDAwMGQgfCAoZmQgPDwgT1BfU0hfRkQpIHwgKGZzIDw8IE9QX1NIX0ZTKSk7CkBAIC02MTksOSAr
NjMxLDI0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fYnVmZmVyLmxhYmVsKCk7CiAgICAg
fQogCisgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWxGb3JXYXRjaHBvaW50KCkKKyAgICB7CisgICAg
ICAgIEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IG1fYnVmZmVyLmxhYmVsKCk7CisgICAgICAgIGlm
IChzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdC5tX29mZnNldCkgIT0gbV9pbmRleE9mTGFzdFdhdGNo
cG9pbnQpCisgICAgICAgICAgICByZXN1bHQgPSBsYWJlbCgpOworICAgICAgICBtX2luZGV4T2ZM
YXN0V2F0Y2hwb2ludCA9IHJlc3VsdC5tX29mZnNldDsKKyAgICAgICAgbV9pbmRleE9mVGFpbE9m
TGFzdFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQgKyBtYXhKdW1wUmVwbGFjZW1lbnRTaXpl
KCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgQXNzZW1ibGVyTGFiZWwg
bGFiZWwoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYnVmZmVyLmxhYmVsKCk7CisgICAgICAg
IEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IG1fYnVmZmVyLmxhYmVsKCk7CisgICAgICAgIHdoaWxl
IChVTkxJS0VMWShzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdC5tX29mZnNldCkgPCBtX2luZGV4T2ZU
YWlsT2ZMYXN0V2F0Y2hwb2ludCkpIHsKKyAgICAgICAgICAgIG5vcCgpOworICAgICAgICAgICAg
cmVzdWx0ID0gbV9idWZmZXIubGFiZWwoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIAogICAgIEFzc2VtYmxlckxhYmVsIGFsaWduKGludCBhbGlnbm1lbnQpCkBA
IC02NjQsMTQgKzY5MSwyNCBAQCBwdWJsaWM6CiAgICAgLy8gQXNzZW1ibHkgaGVscGVycyBmb3Ig
bW92aW5nIGRhdGEgYmV0d2VlbiBmcCBhbmQgcmVnaXN0ZXJzLgogICAgIHZvaWQgdm1vdihSZWdp
c3RlcklEIHJkMSwgUmVnaXN0ZXJJRCByZDIsIEZQUmVnaXN0ZXJJRCBybikKICAgICB7CisjaWYg
V1RGX01JUFNfSVNBX1JFVigyKSAmJiBXVEZfTUlQU19GUDY0CisgICAgICAgIG1mYzEocmQxLCBy
bik7CisgICAgICAgIG1maGMxKHJkMiwgcm4pOworI2Vsc2UKICAgICAgICAgbWZjMShyZDEsIHJu
KTsKICAgICAgICAgbWZjMShyZDIsIEZQUmVnaXN0ZXJJRChybiArIDEpKTsKKyNlbmRpZgogICAg
IH0KIAogICAgIHZvaWQgdm1vdihGUFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4xLCBSZWdp
c3RlcklEIHJuMikKICAgICB7CisjaWYgV1RGX01JUFNfSVNBX1JFVigyKSAmJiBXVEZfTUlQU19G
UDY0CisgICAgICAgIG10YzEocm4xLCByZCk7CisgICAgICAgIG10aGMxKHJuMiwgcmQpOworI2Vs
c2UKICAgICAgICAgbXRjMShybjEsIHJkKTsKICAgICAgICAgbXRjMShybjIsIEZQUmVnaXN0ZXJJ
RChyZCArIDEpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHN0YXRpYyB1bnNpZ25lZCBnZXRDYWxs
UmV0dXJuT2Zmc2V0KEFzc2VtYmxlckxhYmVsIGNhbGwpCkBAIC04MjUsNiArODYyLDI5IEBAIHB1
YmxpYzoKICNlbmRpZgogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2
b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCB2b2lkKiB0bykKKyAgICB7CisgICAgICAgIE1JUFNXb3Jk
KiBpbnN0cnVjdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8TUlQU1dvcmQqPihpbnN0cnVjdGlvblN0
YXJ0KTsKKyAgICAgICAgaW50cHRyX3QganVtcFRvID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJf
dD4odG8pOworCisgICAgICAgIC8vIExvYWQgdGFyZ2V0LgorICAgICAgICAvKiBsdWkgKi8KKyAg
ICAgICAgaW5zdHJ1Y3Rpb25bMF0gPSAweDNjMDAwMDAwIHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8
IE9QX1NIX1JUKSB8ICgoanVtcFRvID4+IDE2KSAmIDB4ZmZmZik7CisgICAgICAgIC8qIG9yaSAq
LworICAgICAgICBpbnN0cnVjdGlvblsxXSA9IDB4MzQwMDAwMDAgfCAoTUlQU1JlZ2lzdGVyczo6
dDkgPDwgT1BfU0hfUlQpIHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JTKSB8IChqdW1w
VG8gJiAweGZmZmYpOworICAgICAgICAvKiBqciAqLworICAgICAgICBpbnN0cnVjdGlvblsyXSA9
IDB4MDAwMDAwMDggfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlMpOworICAgICAgICAv
KiBub3AgKi8KKyAgICAgICAgaW5zdHJ1Y3Rpb25bM10gPSAweDA7CisKKyAgICAgICAgY2FjaGVG
bHVzaChpbnN0cnVjdGlvbiwgc2l6ZW9mKE1JUFNXb3JkKSAqIDQpOworICAgIH0KKworICAgIHN0
YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gc2l6ZW9mKE1JUFNXb3JkKSAqIDQ7CisgICAgfQorCiAgICAgc3RhdGljIHZvaWQgcmVw
bGFjZVdpdGhMb2FkKHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCiAgICAgewogICAgICAgICBNSVBT
V29yZCogaW5zbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8TUlQU1dvcmQqPihpbnN0cnVjdGlvblN0YXJ0
KTsKQEAgLTk5OCw2ICsxMDU4LDggQEAgcHJpdmF0ZToKIAogICAgIEFzc2VtYmxlckJ1ZmZlciBt
X2J1ZmZlcjsKICAgICBKdW1wcyBtX2p1bXBzOworICAgIGludCBtX2luZGV4T2ZMYXN0V2F0Y2hw
b2ludDsKKyAgICBpbnQgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQ7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyTUlQUy5oCmluZGV4IGZjNmY5ZjQuLjdhNWM4ZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaApA
QCAtMTE0LDYgKzExNCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoZGVz
dCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIGFkZDMyKFJlZ2lzdGVySUQgb3AxLCBS
ZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuYWRkdShkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCBhZGQzMihUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBhZGQzMihpbW0sIGRl
c3QsIGRlc3QpOwpAQCAtMjQ5LDYgKzI1NCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1i
bGVyLmFuZEluc24oZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKFJl
Z2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYW5kSW5zbihkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAg
dm9pZCBhbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCkBAIC0yNjUsOSArMjc1LDE2
IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgbHNoaWZ0MzIoVHJ1c3Rl
ZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMy
IGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLnNsbChkZXN0LCBkZXN0LCBpbW0ubV92YWx1ZSk7CisgICAgICAgIGlmICghaW1t
Lm1fdmFsdWUgJiYgIW1fZml4ZWRXaWR0aCkKKyAgICAgICAgICAgIG1vdmUoTUlQU1JlZ2lzdGVy
czo6emVybywgZGVzdCk7CisgICAgICAgIGVsc2UgaWYgKGltbS5tX3ZhbHVlID4gMCAmJiBpbW0u
bV92YWx1ZSA8IDY1NTM1ICYmICFtX2ZpeGVkV2lkdGgpCisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5hbmRpKGRlc3QsIHNyYywgaW1tLm1fdmFsdWUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
YW5kSW5zbihkZXN0LCBzcmMsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIH0KICAgICB9CiAK
ICAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVz
dCkKQEAgLTI3NSwxMSArMjkyLDMzIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc2xs
dihkZXN0LCBkZXN0LCBzaGlmdEFtb3VudCk7CiAgICAgfQogCisgICAgdm9pZCBsc2hpZnQzMihS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc2xsdihkZXN0LCBzcmMsIHNoaWZ0QW1vdW50KTsK
KyAgICB9CisKKyAgICB2b2lkIGxzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAg
ICBtX2Fzc2VtYmxlci5zbGx2KGRlc3QsIGRlc3QsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgfQor
CisgICAgdm9pZCBsc2hpZnQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7
CisgICAgICAgIG1fYXNzZW1ibGVyLnNsbHYoZGVzdCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIpOwor
ICAgIH0KKwogICAgIHZvaWQgbXVsMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm11bChkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0K
IAorICAgIHZvaWQgbXVsMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tdWwoZGVzdCwgb3AxLCBvcDIp
OworICAgIH0KKwogICAgIHZvaWQgbXVsMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmICghaW1tLm1fdmFsdWUgJiYg
IW1fZml4ZWRXaWR0aCkKQEAgLTMzMCw2ICszNjksMjUgQEAgcHVibGljOgogICAgICAgICBtX2Fz
c2VtYmxlci5vckluc24oZGVzdCwgZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCisg
ICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID4gMCAmJiBp
bW0ubV92YWx1ZSA8IDY1NTM1CisgICAgICAgICAgICAmJiAhbV9maXhlZFdpZHRoKSB7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5vcmkoZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgICAgbGkgICAg
ICBkYXRhVGVtcCwgaW1tCisgICAgICAgICAgICBvciAgICAgIGRlc3QsIHNyYywgZGF0YVRlbXAK
KyAgICAgICAgKi8KKyAgICAgICAgbW92ZShpbW0sIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAg
ICBtX2Fzc2VtYmxlci5vckluc24oZGVzdCwgc3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICB9
CisKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIEFic29sdXRlQWRkcmVzcyBkZXN0KQog
ICAgIHsKICAgICAgICAgbG9hZDMyKGRlc3QubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwpAQCAt
MzQyLDYgKzQwMCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnNyYXYoZGVzdCwg
ZGVzdCwgc2hpZnRBbW91bnQpOwogICAgIH0KIAorICAgIHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJ
RCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnNyYXYoZGVzdCwgc3JjLCBzaGlmdEFtb3VudCk7CisgICAgfQor
CiAgICAgdm9pZCByc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zcmEoZGVzdCwgZGVzdCwgaW1tLm1fdmFsdWUpOwpA
QCAtMzU3LDE2ICs0MjAsMzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zcmx2KGRl
c3QsIGRlc3QsIHNoaWZ0QW1vdW50KTsKICAgICB9CiAKKyAgICB2b2lkIHVyc2hpZnQzMihSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3JsdihkZXN0LCBzcmMsIHNoaWZ0QW1vdW50KTsKKyAg
ICB9CisKICAgICB2b2lkIHVyc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zcmwoZGVzdCwgZGVzdCwgaW1tLm1fdmFs
dWUpOwogICAgIH0KIAorICAgIHZvaWQgdXJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5z
cmwoZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
c3VidShkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgc3ViMzIoUmVnaXN0ZXJJ
RCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5zdWJ1KGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMy
KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChp
bW0ubV92YWx1ZSA+PSAtMzI3NjcgJiYgaW1tLm1fdmFsdWUgPD0gMzI3NjgKQEAgLTQ3Nyw2ICs1
NTUsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIGRlc3Qs
IHNyYyk7CiAgICAgfQogCisgICAgdm9pZCB4b3IzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJ
RCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcklu
c24oZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMy
IGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09
IC0xKSB7CkBAIC00OTIsNiArNTc1LDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIu
eG9ySW5zbihkZXN0LCBkZXN0LCBpbW1UZW1wUmVnaXN0ZXIpOwogICAgIH0KIAorICAgIHZvaWQg
eG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkgeworICAgICAgICAgICAgbV9h
c3NlbWJsZXIubm9yKGRlc3QsIHNyYywgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgICAgbGkgIGltbVRl
bXAsIGltbQorICAgICAgICAgICAgeG9yIGRlc3QsIGRlc3QsIGltbVRlbXAKKyAgICAgICAgKi8K
KyAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVy
Lnhvckluc24oZGVzdCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgIH0KKwogICAgIHZvaWQg
c3FydERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAg
ICAgICAgbV9hc3NlbWJsZXIuc3FydGQoZHN0LCBzcmMpOwpAQCAtOTcxLDYgKzEwNjksNDQgQEAg
cHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCBzdG9yZTMyKFRydXN0ZWRJbW0z
MiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKGFkZHJlc3Mub2Zm
c2V0ID49IC0zMjc2OCAmJiBhZGRyZXNzLm9mZnNldCA8PSAzMjc2NyAmJiAhbV9maXhlZFdpZHRo
KSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgIHNsbCAgICAgYWRkclRlbXAsIGFk
ZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUKKyAgICAgICAgICAgICAgICBhZGR1ICAgIGFkZHJU
ZW1wLCBhZGRyVGVtcCwgYWRkcmVzcy5iYXNlCisgICAgICAgICAgICAgICAgc3cgICAgICBzcmMs
IGFkZHJlc3Mub2Zmc2V0KGFkZHJUZW1wKQorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLnNsbChhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNj
YWxlKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoYWRkclRlbXBSZWdpc3RlciwgYWRk
clRlbXBSZWdpc3RlciwgYWRkcmVzcy5iYXNlKTsKKyAgICAgICAgICAgIGlmICghaW1tLm1fdmFs
dWUpCisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3coTUlQU1JlZ2lzdGVyczo6emVybywg
YWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5vZmZzZXQpOworICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuc3coaW1tVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRy
ZXNzLm9mZnNldCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAvKgorICAgICAgICAgICAgICAgIHNsbCAgICAgYWRkclRlbXAsIGFkZHJlc3MuaW5kZXgsIGFk
ZHJlc3Muc2NhbGUKKyAgICAgICAgICAgICAgICBhZGR1ICAgIGFkZHJUZW1wLCBhZGRyVGVtcCwg
YWRkcmVzcy5iYXNlCisgICAgICAgICAgICAgICAgbHVpICAgICBpbW1UZW1wLCAoYWRkcmVzcy5v
ZmZzZXQgKyAweDgwMDApID4+IDE2CisgICAgICAgICAgICAgICAgYWRkdSAgICBhZGRyVGVtcCwg
YWRkclRlbXAsIGltbVRlbXAKKyAgICAgICAgICAgICAgICBzdyAgICAgIHNyYywgKGFkZHJlc3Mu
b2Zmc2V0ICYgMHhmZmZmKShhdCkKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5zbGwoYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJUZW1w
UmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sdWkoaW1t
VGVtcFJlZ2lzdGVyLCAoYWRkcmVzcy5vZmZzZXQgKyAweDgwMDApID4+IDE2KTsKKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmFkZHUoYWRkclRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3Rlciwg
aW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlmICghaW1tLm1fdmFsdWUgJiYgIW1fZml4
ZWRXaWR0aCkKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdyhNSVBTUmVnaXN0ZXJzOjp6
ZXJvLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5zdyhpbW1UZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIs
IGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworCiAg
ICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCBjb25zdCB2b2lkKiBhZGRyZXNzKQogICAg
IHsKICAgICAgICAgLyoKQEAgLTEzMTcsNiArMTQ1MywxNSBAQCBwdWJsaWM6CiAgICAgICAgIG1f
Zml4ZWRXaWR0aCA9IGZhbHNlOwogICAgIH0KIAorICAgIHZvaWQganVtcChBYnNvbHV0ZUFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fZml4ZWRXaWR0aCA9IHRydWU7CisgICAgICAg
IGxvYWQzMihhZGRyZXNzLm1fcHRyLCBNSVBTUmVnaXN0ZXJzOjp0OSk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmpyKE1JUFNSZWdpc3RlcnM6OnQ5KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7
CisgICAgICAgIG1fZml4ZWRXaWR0aCA9IGZhbHNlOworICAgIH0KKwogICAgIHZvaWQgbW92ZURv
dWJsZVRvSW50cyhGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklE
IGRlc3QyKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIudm1vdihkZXN0MSwgZGVzdDIsIHNy
Yyk7CkBAIC0xMzg1LDYgKzE1MzAsNTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcCgp
OwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChj
b25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKKyAgICAgICAgaWYgKGNvbmQgPT0g
T3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgbW92ZSAgICBkZXN0
LCBkYXRhVGVtcAorICAgICAgICAgICAgICAgIHhvciAgICAgY21wVGVtcCwgZGF0YVRlbXAsIHNy
YworICAgICAgICAgICAgICAgIGJsdHogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBkaWZm
IHNpZ24gYml0IC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgYWRkdSAgICBkZXN0LCBk
YXRhVGVtcCwgc3JjCisgICAgICAgICAgICAgICAgeG9yICAgICBjbXBUZW1wLCBkZXN0LCBkYXRh
VGVtcAorICAgICAgICAgICAgICAgIGJnZXogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBz
YW1lIHNpZ24gYmlnIC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAg
ICAgICAgICAgYiAgICAgICBPdmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAg
ICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAg
ICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgTm9fb3ZlcmZsb3c6CisgICAgICAgICAgICAq
LworICAgICAgICAgICAgbW92ZShvcDEsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAg
bV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIG9w
Mik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRlbXBSZWdpc3RlciwgMTApOwor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkdShkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyLCBvcDIp
OworICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRlc3Qs
IGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1w
UmVnaXN0ZXIsIDcpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAg
ICByZXR1cm4ganVtcCgpOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IFNpZ25lZCkg
eworICAgICAgICAgICAgYWRkMzIob3AxLCBvcDIsIGRlc3QpOworICAgICAgICAgICAgLy8gQ2hl
Y2sgaWYgZGVzdCBpcyBuZWdhdGl2ZS4KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBU
ZW1wUmVnaXN0ZXIsIGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgcmV0
dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gWmVybykgeworICAgICAgICAgICAgYWRk
MzIob3AxLCBvcDIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKGRlc3Qs
IE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IE5v
blplcm8pIHsKKyAgICAgICAgICAgIGFkZDMyKG9wMSwgb3AyLCBkZXN0KTsKKyAgICAgICAgICAg
IHJldHVybiBicmFuY2hOb3RFcXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAg
ICAgfQorICAgICAgICBBU1NFUlQoMCk7CisgICAgICAgIHJldHVybiBKdW1wKCk7CisgICAgfQor
CiAgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMy
IGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBS
ZWdpc3Rlcik7CkBAIC0xMzk4LDYgKzE1OTAsMTExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGJyYW5jaEFkZDMyKGNvbmQsIGltbVRlbXBSZWdpc3RlciwgZGVzdCk7CiAgICAgfQogCisgICAg
SnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwg
QWJzb2x1dGVBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3Zl
cmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0g
Tm9uWmVybykpOworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgeworICAgICAgICAgICAg
LyoKKyAgICAgICAgICAgICAgICBtb3ZlICAgIGRhdGFUZW1wLCBkZXN0CisgICAgICAgICAgICAg
ICAgeG9yaSAgICBjbXBUZW1wLCBkYXRhVGVtcCwgaW1tCisgICAgICAgICAgICAgICAgYmx0eiAg
ICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIGRpZmYgc2lnbiBiaXQgLT4gbm8gb3ZlcmZsb3cK
KyAgICAgICAgICAgICAgICBhZGRpdSAgIGRhdGFUZW1wLCBkYXRhVGVtcCwgaW1tCisgICAgICAg
ICAgICAgICAgbW92ZSAgICBkZXN0LCBkYXRhVGVtcAorICAgICAgICAgICAgICAgIHhvcmkgICAg
Y21wVGVtcCwgZGF0YVRlbXAsIGltbQorICAgICAgICAgICAgICAgIGJnZXogICAgY21wVGVtcCwg
Tm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24gYmlnIC0+IG5vIG92ZXJmbG93CisgICAgICAgICAg
ICAgICAgbm9wCisgICAgICAgICAgICAgICAgYiAgICAgICBPdmVyZmxvdworICAgICAgICAgICAg
ICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAg
ICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgTm9fb3ZlcmZs
b3c6CisgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID49IC0zMjc2
OCAmJiBpbW0ubV92YWx1ZSAgPD0gMzI3NjcgJiYgIW1fZml4ZWRXaWR0aCkgeworICAgICAgICAg
ICAgICAgIGxvYWQzMihkZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci54b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwg
aW1tLm1fdmFsdWUpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVtcFJl
Z2lzdGVyLCAxMCk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkaXUoZGF0YVRlbXBS
ZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1fdmFsdWUpOworICAgICAgICAgICAgICAg
IHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdC5tX3B0cik7CisgICAgICAgICAgICAgICAg
bV9hc3NlbWJsZXIueG9yaShjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbS5t
X3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3Rl
ciwgNyk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGxvYWQzMihkZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lz
dGVyKTsKKyAgICAgICAgICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBS
ZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5i
bHR6KGNtcFRlbXBSZWdpc3RlciwgMTApOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFk
ZGl1KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7
CisgICAgICAgICAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0Lm1fcHRyKTsK
KyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRl
bXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIu
bm9wKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4ganVtcCgpOworICAgICAg
ICB9CisgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICBsb2FkMzIo
ZGVzdC5tX3B0ciwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIGFkZDMyKGltbVRlbXBSZWdp
c3RlciwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3Rl
ciwgZGVzdC5tX3B0cik7CisgICAgICAgIGlmIChjb25kID09IFNpZ25lZCkgeworICAgICAgICAg
ICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdhdGl2ZS4KKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
LnNsdChjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onpl
cm8pOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBSZWdpc3Rlciwg
TUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gWmVy
bykKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hFcXVhbChkYXRhVGVtcFJlZ2lzdGVyLCBNSVBT
UmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykKKyAgICAgICAg
ICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChkYXRhVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJz
Ojp6ZXJvKTsKKyAgICAgICAgQVNTRVJUKDApOworICAgICAgICByZXR1cm4gSnVtcCgpOworICAg
IH0KKworICAgIEp1bXAgYnJhbmNoTXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQg
PT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOworICAgICAgICBpZiAoY29uZCA9PSBPdmVy
ZmxvdykgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICBtdWx0ICAgIHNyYywgZGVz
dAorICAgICAgICAgICAgICAgIG1maGkgICAgZGF0YVRlbXAKKyAgICAgICAgICAgICAgICBtZmxv
ICAgIGRlc3QKKyAgICAgICAgICAgICAgICBzcmEgICAgIGFkZHJUZW1wLCBkZXN0LCAzMQorICAg
ICAgICAgICAgICAgIGJlcSAgICAgZGF0YVRlbXAsIGFkZHJUZW1wLCBOb19vdmVyZmxvdyAjIGFs
bCBzaWduIGJpdHMgKGJpdCA2MyB0byBiaXQgMzEpIGFyZSB0aGUgc2FtZSAtPiBubyBvdmVyZmxv
dworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIGIgICAgICAgT3ZlcmZsb3cK
KyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAg
ICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAg
ICAgIE5vX292ZXJmbG93OgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
Lm11bHQoc3JjMSwgc3JjMik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tZmhpKGRhdGFUZW1w
UmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubWZsbyhkZXN0KTsKKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnNyYShhZGRyVGVtcFJlZ2lzdGVyLCBkZXN0LCAzMSk7CisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5iZXEoZGF0YVRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3Rlciwg
Nyk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAgIHJldHVybiBq
dW1wKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7CisgICAgICAg
ICAgICBtdWwzMihzcmMxLCBzcmMyLCBkZXN0KTsKKyAgICAgICAgICAgIC8vIENoZWNrIGlmIGRl
c3QgaXMgbmVnYXRpdmUuCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHQoY21wVGVtcFJlZ2lz
dGVyLCBkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIHJldHVybiBicmFu
Y2hOb3RFcXVhbChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAg
ICB9CisgICAgICAgIGlmIChjb25kID09IFplcm8pIHsKKyAgICAgICAgICAgIG11bDMyKHNyYzEs
IHNyYzIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKGRlc3QsIE1JUFNS
ZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IE5vblplcm8p
IHsKKyAgICAgICAgICAgIG11bDMyKHNyYzEsIHNyYzIsIGRlc3QpOworICAgICAgICAgICAgcmV0
dXJuIGJyYW5jaE5vdEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9
CisgICAgICAgIEFTU0VSVCgwKTsKKyAgICAgICAgcmV0dXJuIEp1bXAoKTsKKyAgICB9CisKICAg
ICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93
KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblpl
cm8pKTsKQEAgLTE0NDYsOCArMTc0Myw3IEBAIHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaE11bDMy
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rl
cik7Ci0gICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMy
KGNvbmQsIGltbVRlbXBSZWdpc3RlciwgZGVzdCk7CisgICAgICAgIHJldHVybiBicmFuY2hNdWwz
Mihjb25kLCBpbW1UZW1wUmVnaXN0ZXIsIHNyYywgZGVzdCk7CiAgICAgfQogCiAgICAgSnVtcCBi
cmFuY2hTdWIzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKQEAgLTE1MDYsOCArMTgwMiw2MCBAQCBwdWJsaWM6CiAgICAgSnVtcCBicmFuY2hT
dWIzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBp
bW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVn
aXN0ZXIpOwotICAgICAgICBtb3ZlKHNyYywgZGVzdCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hT
dWIzMihjb25kLCBpbW1UZW1wUmVnaXN0ZXIsIGRlc3QpOworICAgICAgICByZXR1cm4gYnJhbmNo
U3ViMzIoY29uZCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIsIGRlc3QpOworICAgIH0KKworICAgIEp1
bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBSZWdp
c3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKChjb25k
ID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChj
b25kID09IE5vblplcm8pKTsKKyAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKKyAgICAg
ICAgICAgIC8qCisgICAgICAgICAgICAgICAgbW92ZSAgICBkZXN0LCBkYXRhVGVtcAorICAgICAg
ICAgICAgICAgIHhvciAgICAgY21wVGVtcCwgZGF0YVRlbXAsIHNyYworICAgICAgICAgICAgICAg
IGJnZXogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24gYml0IC0+IG5vIG92
ZXJmbG93CisgICAgICAgICAgICAgICAgc3VidSAgICBkZXN0LCBkYXRhVGVtcCwgc3JjCisgICAg
ICAgICAgICAgICAgeG9yICAgICBjbXBUZW1wLCBkZXN0LCBkYXRhVGVtcAorICAgICAgICAgICAg
ICAgIGJnZXogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24gYml0IC0+IG5v
IG92ZXJmbG93CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgYiAgICAgICBP
dmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAg
ICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAor
ICAgICAgICAgICAgTm9fb3ZlcmZsb3c6CisgICAgICAgICAgICAqLworICAgICAgICAgICAgbW92
ZShvcDEsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5z
bihjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7CisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgMTApOworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuc3VidShkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyLCBvcDIpOworICAgICAgICAgICAgbV9h
c3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIp
OworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDcpOworICAg
ICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICByZXR1cm4ganVtcCgpOwor
ICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IFNpZ25lZCkgeworICAgICAgICAgICAgc3Vi
MzIob3AxLCBvcDIsIGRlc3QpOworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdh
dGl2ZS4KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIsIGRlc3Qs
IE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFs
KGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKGNvbmQgPT0gWmVybykgeworICAgICAgICAgICAgc3ViMzIob3AxLCBvcDIsIGRlc3Qp
OworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onpl
cm8pOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IE5vblplcm8pIHsKKyAgICAgICAg
ICAgIHN1YjMyKG9wMSwgb3AyLCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RF
cXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBBU1NF
UlQoMCk7CisgICAgICAgIHJldHVybiBKdW1wKCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hO
ZWczMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmNEZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubGkoZGF0YVRlbXBSZWdpc3RlciwgLTEpOworICAgICAgICByZXR1
cm4gYnJhbmNoTXVsMzIoY29uZCwgZGF0YVRlbXBSZWdpc3Rlciwgc3JjRGVzdCk7CiAgICAgfQog
CiAgICAgSnVtcCBicmFuY2hPcjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMTU1OSw3ICsxOTA3LDggQEAgcHVibGljOgogCiAgICAg
Q2FsbCBjYWxsKFJlZ2lzdGVySUQgdGFyZ2V0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIu
amFscih0YXJnZXQpOworICAgICAgICBtb3ZlKHRhcmdldCwgTUlQU1JlZ2lzdGVyczo6dDkpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5qYWxyKE1JUFNSZWdpc3RlcnM6OnQ5KTsKICAgICAgICAgbV9h
c3NlbWJsZXIubm9wKCk7CiAgICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVyLmxhYmVsKCks
IENhbGw6Ok5vbmUpOwogICAgIH0KQEAgLTE5OTAsNiArMjMzOSwxMSBAQCBwdWJsaWM6CiAjZW5k
aWYKICAgICB9CiAKKyAgICB2b2lkIG1vdmVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdp
c3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZkKGRlc3QsIHNyYyk7
CisgICAgfQorCiAgICAgdm9pZCBhZGREb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hZGRkKGRlc3QsIGRlc3QsIHNy
Yyk7CkBAIC0yMDE3LDYgKzIzNzEsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5z
dWJkKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBzdWJEb3VibGUoRlBSZWdp
c3RlcklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5zdWJkKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2
b2lkIHN1YkRvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBsb2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIpOwpAQCAtMjAzNCwxMSArMjM5Mywz
MiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm11bGQoZGVzdCwgZGVzdCwgZnBUZW1w
UmVnaXN0ZXIpOwogICAgIH0KIAorICAgIHZvaWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEs
IEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubXVsZChkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCBkaXZEb3Vi
bGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBt
X2Fzc2VtYmxlci5kaXZkKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBkaXZE
b3VibGUoRlBSZWdpc3RlcklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5kaXZkKGRlc3QsIG9wMSwgb3AyKTsKKyAg
ICB9CisKKyAgICB2b2lkIGRpdkRvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBsb2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIpOworICAgICAg
ICBtX2Fzc2VtYmxlci5kaXZkKGRlc3QsIGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisK
KyAgICB2b2lkIG5lZ2F0ZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ2QoZGVzdCwgc3JjKTsKKyAgICB9CisK
ICAgICB2b2lkIGNvbnZlcnRJbnQzMlRvRG91YmxlKFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm10YzEoc3JjLCBmcFRlbXBSZWdp
c3Rlcik7CkBAIC0yMTczLDExICsyNTUzLDMzIEBAIHB1YmxpYzoKICAgICAvLyBJZiB0aGUgcmVz
dWx0IGlzIG5vdCByZXByZXNlbnRhYmxlIGFzIGEgMzIgYml0IHZhbHVlLCBicmFuY2guCiAgICAg
Ly8gTWF5IGFsc28gYnJhbmNoIGZvciBzb21lIHZhbHVlcyB0aGF0IGFyZSByZXByZXNlbnRhYmxl
IGluIDMyIGJpdHMKICAgICAvLyAoc3BlY2lmaWNhbGx5LCBpbiB0aGlzIGNhc2UsIElOVF9NQVgg
MHg3ZmZmZmZmZikuCi0gICAgSnVtcCBicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoRlBSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIGVudW0gQnJhbmNoVHJ1bmNhdGVUeXBl
IHsgQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCwgQnJhbmNoSWZUcnVuY2F0ZVN1Y2Nlc3NmdWwgfTsK
KyAgICBKdW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QsIEJyYW5jaFRydW5jYXRlVHlwZSBicmFuY2hUeXBlID0gQnJhbmNoSWZU
cnVuY2F0ZUZhaWxlZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnRydW5jd2QoZnBUZW1w
UmVnaXN0ZXIsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1mYzEoZGVzdCwgZnBUZW1wUmVn
aXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoYnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRy
dW5jYXRlRmFpbGVkID8gRXF1YWwgOiBOb3RFcXVhbCwgZGVzdCwgVHJ1c3RlZEltbTMyKDB4N2Zm
ZmZmZmYpKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIo
RlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBCcmFuY2hUcnVuY2F0ZVR5cGUgYnJh
bmNoVHlwZSA9IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci50cnVuY3dkKGZwVGVtcFJlZ2lzdGVyLCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci5t
ZmMxKGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGJyYW5j
aFR5cGUgPT0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCA/IEVxdWFsIDogTm90RXF1YWwsIGRlc3Qs
IFRydXN0ZWRJbW0zMigwKSk7CisgICAgfQorCisgICAgLy8gUmVzdWx0IGlzIHVuZGVmaW5lZCBp
ZiB0aGUgdmFsdWUgaXMgb3V0c2lkZSBvZiB0aGUgaW50ZWdlciByYW5nZS4KKyAgICB2b2lkIHRy
dW5jYXRlRG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci50cnVuY3dkKGZwVGVtcFJlZ2lzdGVyLCBzcmMpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5tZmMxKGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisK
KyAgICAvLyBSZXN1bHQgaXMgdW5kZWZpbmVkIGlmIHNyYyA+IDJeMzEKKyAgICB2b2lkIHRydW5j
YXRlRG91YmxlVG9VaW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgbV9hc3NlbWJsZXIudHJ1bmN3ZChmcFRlbXBSZWdpc3Rlciwgc3JjKTsKICAg
ICAgICAgbV9hc3NlbWJsZXIubWZjMShkZXN0LCBmcFRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHJl
dHVybiBicmFuY2gzMihFcXVhbCwgZGVzdCwgVHJ1c3RlZEltbTMyKDB4N2ZmZmZmZmYpKTsKICAg
ICB9CiAKICAgICAvLyBDb252ZXJ0ICdzcmMnIHRvIGFuIGludGVnZXIsIGFuZCBwbGFjZXMgdGhl
IHJlc3VsdGluZyAnZGVzdCcuCkBAIC0yMTk5LDI4ICsyNjAxLDQzIEBAIHB1YmxpYzoKIAogICAg
IEp1bXAgYnJhbmNoRG91YmxlTm9uWmVybyhGUFJlZ2lzdGVySUQgcmVnLCBGUFJlZ2lzdGVySUQg
c2NyYXRjaCkKICAgICB7Ci0jaWYgV1RGX01JUFNfSVNBX1JFVigyKSAmJiBXVEZfTUlQU19GUDY0
Ci0gICAgICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQU1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLm10aGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0Y2gp
OwotI2Vsc2UKLSAgICAgICAgbV9hc3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBz
Y3JhdGNoKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBG
UFJlZ2lzdGVySUQoc2NyYXRjaCArIDEpKTsKLSNlbmRpZgorICAgICAgICBtX2Fzc2VtYmxlci52
bW92KHNjcmF0Y2gsIE1JUFNSZWdpc3RlcnM6Onplcm8sIE1JUFNSZWdpc3RlcnM6Onplcm8pOwog
ICAgICAgICByZXR1cm4gYnJhbmNoRG91YmxlKERvdWJsZU5vdEVxdWFsLCByZWcsIHNjcmF0Y2gp
OwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoRG91YmxlWmVyb09yTmFOKEZQUmVnaXN0ZXJJRCBy
ZWcsIEZQUmVnaXN0ZXJJRCBzY3JhdGNoKQogICAgIHsKLSNpZiBXVEZfTUlQU19JU0FfUkVWKDIp
ICYmIFdURl9NSVBTX0ZQNjQKLSAgICAgICAgbV9hc3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJz
Ojp6ZXJvLCBzY3JhdGNoKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubXRoYzEoTUlQU1JlZ2lzdGVy
czo6emVybywgc2NyYXRjaCk7Ci0jZWxzZQotICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNS
ZWdpc3RlcnM6Onplcm8sIHNjcmF0Y2gpOwotICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNS
ZWdpc3RlcnM6Onplcm8sIEZQUmVnaXN0ZXJJRChzY3JhdGNoICsgMSkpOwotI2VuZGlmCisgICAg
ICAgIG1fYXNzZW1ibGVyLnZtb3Yoc2NyYXRjaCwgTUlQU1JlZ2lzdGVyczo6emVybywgTUlQU1Jl
Z2lzdGVyczo6emVybyk7CiAgICAgICAgIHJldHVybiBicmFuY2hEb3VibGUoRG91YmxlRXF1YWxP
clVub3JkZXJlZCwgcmVnLCBzY3JhdGNoKTsKICAgICB9CiAKKyAgICAvLyBJbnZlcnQgYSByZWxh
dGlvbmFsIGNvbmRpdGlvbiwgZS5nLiA9PSBiZWNvbWVzICE9LCA8IGJlY29tZXMgPj0sIGV0Yy4K
KyAgICBzdGF0aWMgUmVsYXRpb25hbENvbmRpdGlvbiBpbnZlcnQoUmVsYXRpb25hbENvbmRpdGlv
biBjb25kKQorICAgIHsKKyAgICAgICAgUmVsYXRpb25hbENvbmRpdGlvbiByOworICAgICAgICBp
ZiAoY29uZCA9PSBFcXVhbCkgeworICAgICAgICAgICAgciA9IE5vdEVxdWFsOworICAgICAgICB9
IGVsc2UgaWYgKGNvbmQgPT0gTm90RXF1YWwpIHsKKyAgICAgICAgICAgIHIgPSBFcXVhbDsKKyAg
ICAgICAgfSBlbHNlIGlmIChjb25kID09IEFib3ZlKSB7CisgICAgICAgICAgICByID0gQmVsb3dP
ckVxdWFsOworICAgICAgICB9IGVsc2UgaWYgKGNvbmQgPT0gQWJvdmVPckVxdWFsKSB7CisgICAg
ICAgICAgICByID0gQmVsb3c7CisgICAgICAgIH0gZWxzZSBpZiAoY29uZCA9PSBCZWxvdykgewor
ICAgICAgICAgICAgciA9IEFib3ZlT3JFcXVhbDsKKyAgICAgICAgfSBlbHNlIGlmIChjb25kID09
IEJlbG93T3JFcXVhbCkgeworICAgICAgICAgICAgciA9IEFib3ZlOworICAgICAgICB9IGVsc2Ug
aWYgKGNvbmQgPT0gR3JlYXRlclRoYW4pIHsKKyAgICAgICAgICAgIHIgPSBMZXNzVGhhbk9yRXF1
YWw7CisgICAgICAgIH0gZWxzZSBpZiAoY29uZCA9PSBHcmVhdGVyVGhhbk9yRXF1YWwpIHsKKyAg
ICAgICAgICAgIHIgPSBMZXNzVGhhbjsKKyAgICAgICAgfSBlbHNlIGlmIChjb25kID09IExlc3NU
aGFuKSB7CisgICAgICAgICAgICByID0gR3JlYXRlclRoYW5PckVxdWFsOworICAgICAgICB9IGVs
c2UgaWYgKGNvbmQgPT0gTGVzc1RoYW5PckVxdWFsKQorICAgICAgICAgICAgciA9IEdyZWF0ZXJU
aGFuOworICAgICAgICByZXR1cm4gcjsKKyAgICB9CisKICAgICB2b2lkIG5vcCgpCiAgICAgewog
ICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKQEAgLTIyMzMsMTIgKzI2NTAsMTIgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGlu
c3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQogICAgIHsKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIE1JUFNBc3NlbWJsZXI6OnJlcGxh
Y2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5k
YXRhTG9jYXRpb24oKSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVt
cFJlcGxhY2VtZW50U2l6ZSgpCiAgICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgTUlQU0Fzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fz
c2VtYmx5SGVscGVycy5oCmluZGV4IDc1YjljNzAuLmMwNjAxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaApAQCAtOTMsNiArOTMsMjMgQEAg
cHVibGljOgogICAgIH0KICNlbmRpZgogCisjaWYgQ1BVKE1JUFMpCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChSZWdpc3RlcklEIHJlZykKKyAg
ICB7CisgICAgICAgIG1vdmUocmV0dXJuQWRkcmVzc1JlZ2lzdGVyLCByZWcpOworICAgIH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihS
ZWdpc3RlcklEIHJlZykKKyAgICB7CisgICAgICAgIG1vdmUocmVnLCByZXR1cm5BZGRyZXNzUmVn
aXN0ZXIpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybihBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBsb2FkUHRy
KGFkZHJlc3MsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7CisgICAgfQorI2VuZGlmCisKICAgICB2
b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRl
ckVudHJ5IGVudHJ5LCBHUFJSZWcgdG8pCiAgICAgewogICAgICAgICBsb2FkUHRyKEFkZHJlc3Mo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSksIHRv
KTsKQEAgLTE5Myw3ICsyMTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihzY3JhdGNoQnVmZmVyLT5hY3RpdmVMZW5ndGhQdHIoKSksIEdQUkluZm86OnJlZ1QwKTsKICAg
ICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihzY3JhdGNoU2l6ZSksIEdQUkluZm86OnJlZ1Qw
KTsKIAotI2lmIENQVShYODZfNjQpIHx8IENQVShBUk0pCisjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BV
KEFSTSkgfHwgQ1BVKE1JUFMpCiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhcmd1bWVudCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNo
ID0gc2VsZWN0U2NyYXRjaEdQUihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxs
SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaApp
bmRleCBhMjU3MGI3Li43NTc1ODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q0NhbGxIZWxwZXJzLmgKQEAgLTQ5Nyw2ICs0OTcsMTcgQEAgcHVibGljOgogICAgICAgICBhc3Nl
bWJsZXIoKS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIz
LCBhcmcyKTsKICAgICB9CiAjZW5kaWYgLy8gQ1BVKEFSTV9IQVJERlApCisjZWxpZiBDUFUoTUlQ
UykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCisg
ICAgeworICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Cisg
ICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcx
LCBGUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6
YXJndW1lbnRGUFIwKTsKKyAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1bWVu
dEZQUjEpOworICAgIH0KICNlbHNlCiAjZXJyb3IgIkRGRyBKSVQgbm90IHN1cHBvcnRlZCBvbiB0
aGlzIHBsYXRmb3JtLiIKICNlbmRpZgpAQCAtNzE2LDcgKzcyNyw3IEBAIHB1YmxpYzoKICNlbmRp
ZiAvLyBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49IDQKICAgICAvLyBUaGVzZSBtZXRo
b2RzIGFyZSBzdWl0YWJsZSBmb3IgYW55IGNhbGxpbmcgY29udmVudGlvbiB0aGF0IHByb3ZpZGVz
IGZvcgogICAgIC8vIGV4YWN0bHkgNCBhcmd1bWVudCByZWdpc3RlcnMsIGUuZy4gQVJNdjcuCi0j
aWYgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA9PSA0CisjaWYgTlVNQkVSX09GX0FSR1VN
RU5UX1JFR0lTVEVSUyA9PSA0ICYmICFDUFUoTUlQUykKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BS
UmVnIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKICAgICAgICAgcG9rZShhcmc0KTsKQEAgLTgx
NCw3ICs4MjUsMTAxIEBAIHB1YmxpYzoKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAotI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdV
TUVOVF9SRUdJU1RFUlMgPT0gNAorI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RF
UlMgPT0gNCAmJiAhQ1BVKE1JUFMpCisKKyNpZiBDUFUoTUlQUykKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc0LCA0
KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMp
OworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgVHJ1c3Rl
ZEltbTMyIGFyZzQpCisgICAgeworICAgICAgICBwb2tlKGFyZzQsIDQpOworICAgICAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
MzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKKyAg
ICB7CisgICAgICAgIHBva2UoYXJnNCwgNCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwg
R1BSUmVnIGFyZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2UoYXJn
NCwgNCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBh
cmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBh
cmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBwb2tlKGFyZzUs
IDUpOworICAgICAgICBwb2tlKGFyZzQsIDQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIs
IEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBw
b2tlKGFyZzUsIDUpOworICAgICAgICBwb2tlKGFyZzQsIDQpOworICAgICAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJn
MSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAg
IHBva2UoYXJnNCwgNCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVn
IGFyZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNCwgNCk7
CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsK
KyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIFRy
dXN0ZWRJbW1QdHIgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNCwgNCk7CisgICAgICAg
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJS
ZWcgYXJnNSkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNSwgNSk7CisgICAgICAgIHBva2UoYXJn
NCwgNCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBh
cmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQ
UlJlZyBhcmc0LCBUcnVzdGVkSW1tUHRyIGFyZzUpCisgICAgeworICAgICAgICBwb2tlKGFyZzUs
IDUpOworICAgICAgICBwb2tlKGFyZzQsIDQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVn
IGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCwgVHJ1c3RlZEltbTMyIGFyZzUp
CisgICAgeworICAgICAgICBwb2tlKGFyZzUsIDUpOworICAgICAgICBwb2tlKGFyZzQsIDQpOwor
ICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Cisg
ICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmcz
LCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBwb2tlKGFyZzUsIDUp
OworICAgICAgICBwb2tlKGFyZzQsIDQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFy
ZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAg
ICBwb2tlKGFyZzUsIDUpOworICAgICAgICBwb2tlKGFyZzQsIDQpOworICAgICAgICBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisjZW5kaWYg
Ly8gQ1BVKE1JUFMpCiAKICNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49IDUKICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBh
cmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmgKaW5kZXggZDZhMDM4YS4uN2Y3NzFh
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmgKQEAgLTE2NCw2ICsxNjQs
NzQgQEAgcHVibGljOgogCiAjZW5kaWYKIAorI2lmIENQVShNSVBTKQorCitjbGFzcyBGUFJJbmZv
IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEZQUlJlZyBSZWdpc3RlclR5cGU7CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gNjsKKworICAgIC8vIFRlbXBvcmFy
eSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QwID0gTUlQU1JlZ2lz
dGVyczo6ZjA7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QxID0gTUlQU1JlZ2lzdGVy
czo6ZjQ7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QyID0gTUlQU1JlZ2lzdGVyczo6
ZjY7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QzID0gTUlQU1JlZ2lzdGVyczo6Zjg7
CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Q0ID0gTUlQU1JlZ2lzdGVyczo6ZjEwOwor
ICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNSA9IE1JUFNSZWdpc3RlcnM6OmYxODsKKwor
ICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgcmV0dXJuVmFsdWVGUFIgPSBNSVBTUmVnaXN0ZXJzOjpm
MDsKKworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIwID0gTUlQU1JlZ2lzdGVy
czo6ZjEyOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIxID0gTUlQU1JlZ2lz
dGVyczo6ZjE0OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIyID0gTUlQU1Jl
Z2lzdGVyczo6ZjEwOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIzID0gTUlQ
U1JlZ2lzdGVyczo6ZjE4OworCisgICAgc3RhdGljIEZQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVk
IGluZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMp
OworICAgICAgICBzdGF0aWMgY29uc3QgRlBSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZS
ZWdpc3RlcnNdID0geyBmcFJlZ1QwLCBmcFJlZ1QxLCBmcFJlZ1QyLCBmcFJlZ1QzLCBmcFJlZ1Q0
LCBmcFJlZ1Q1IH07CisgICAgICAgIHJldHVybiByZWdpc3RlckZvckluZGV4W2luZGV4XTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgdW5zaWduZWQgdG9JbmRleChGUFJSZWcgcmVnKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkRlBSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8
IDIwKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVnaXN0ZXJbMjBd
ID0geworICAgICAgICAgICAgMCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJ
bmRleCwKKyAgICAgICAgICAgIDEsIEludmFsaWRJbmRleCwgMiwgSW52YWxpZEluZGV4LAorICAg
ICAgICAgICAgMywgSW52YWxpZEluZGV4LCA0LCBJbnZhbGlkSW5kZXgsCisgICAgICAgICAgICBJ
bnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsCisg
ICAgICAgICAgICBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgNSwgSW52YWxpZEluZGV4LAor
ICAgICAgICB9OworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBpbmRleEZvclJlZ2lzdGVyW3Jl
Z107CisgICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxpZEluZGV4KTsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEZQ
UlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcpOwor
ICAgICAgICBBU1NFUlQocmVnIDwgMzIpOworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFt
ZUZvclJlZ2lzdGVyWzMyXSA9IHsKKyAgICAgICAgICAgICJmMCIsICJmMSIsICJmMiIsICJmMyIs
CisgICAgICAgICAgICAiZjQiLCAiZjUiLCAiZjYiLCAiZjciLAorICAgICAgICAgICAgImY4Iiwg
ImY5IiwgImYxMCIsICJmMTEiLAorICAgICAgICAgICAgImYxMiIsICJmMTMiLCAiZjE0IiwgImYx
NSIKKyAgICAgICAgICAgICJmMTYiLCAiZjE3IiwgImYxOCIsICJmMTkiCisgICAgICAgICAgICAi
ZjIwIiwgImYyMSIsICJmMjIiLCAiZjIzIgorICAgICAgICAgICAgImYyNCIsICJmMjUiLCAiZjI2
IiwgImYyNyIKKyAgICAgICAgICAgICJmMjgiLCAiZjI5IiwgImYzMCIsICJmMzEiCisgICAgICAg
IH07CisgICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0ZXJbcmVnXTsKKyAgICB9Citwcml2YXRl
OgorCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEludmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7
Cit9OworCisjZW5kaWYKKwogdHlwZWRlZiBSZWdpc3RlckJhbms8RlBSSW5mbz46Oml0ZXJhdG9y
IGZwcl9pdGVyYXRvcjsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dQUkluZm8uaAppbmRleCAzZDA3NTU2Li5lMzAwYWJlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaApAQCAtNDYxLDYgKzQ2MSw3NCBAQCBwcml2YXRl
OgogCiAjZW5kaWYKIAorI2lmIENQVShNSVBTKQorI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRf
UkVHSVNURVJTIDQKKworY2xhc3MgR1BSSW5mbyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBHUFJS
ZWcgUmVnaXN0ZXJUeXBlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lz
dGVycyA9IDY7CisKKyAgICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgorICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgcmVnVDAgPSBNSVBTUmVnaXN0ZXJzOjp2MDsKKyAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIHJlZ1QxID0gTUlQU1JlZ2lzdGVyczo6djE7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBy
ZWdUMiA9IE1JUFNSZWdpc3RlcnM6OnQ0OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDMg
PSBNSVBTUmVnaXN0ZXJzOjp0NTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q0ID0gTUlQ
U1JlZ2lzdGVyczo6dDY7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNSA9IE1JUFNSZWdp
c3RlcnM6OnQ3OworICAgIC8vIFRoZXNlIHJlZ2lzdGVycyBtYXRjaCB0aGUgYmFzZWxpbmUgSklU
LgorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSByZWdUMDsK
KyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyMiA9IHJlZ1QxOwor
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJz
OjpzMDsKKyAgICAvLyBUaGVzZSBjb25zdGFudHMgcHJvdmlkZSB0aGUgbmFtZXMgZm9yIHRoZSBn
ZW5lcmFsIHB1cnBvc2UgYXJndW1lbnQgJiByZXR1cm4gdmFsdWUgcmVnaXN0ZXJzLgorICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIwID0gTUlQU1JlZ2lzdGVyczo6YTA7CisgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjEgPSBNSVBTUmVnaXN0ZXJzOjphMTsKKyAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMiA9IE1JUFNSZWdpc3RlcnM6OmEyOwor
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIzID0gTUlQU1JlZ2lzdGVyczo6YTM7
CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIwID0gcmVnVDI7CisgICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyBub25BcmdHUFIxID0gcmVnVDM7CisgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyBub25BcmdHUFIyID0gcmVnVDQ7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1
ZUdQUiA9IHJlZ1QwOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIyID0g
cmVnVDE7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIg
PSByZWdUNTsKKworICAgIHN0YXRpYyBHUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mUmVnaXN0ZXJzKTsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJz
XSA9IHsKKyAgICAgICAgICAgIHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdUNCwgcmVn
VDUgfTsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOworICAgIH0KKwor
ICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBB
U1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwgMTYpOwor
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3RlclsxNl0gPSB7IElu
dmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCAwLCAxLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRl
eCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4
LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgMiwgMywgNCwgNSB9OworICAgICAgICB1bnNp
Z25lZCByZXN1bHQgPSBpbmRleEZvclJlZ2lzdGVyW3JlZ107CisgICAgICAgIEFTU0VSVChyZXN1
bHQgIT0gSW52YWxpZEluZGV4KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAg
ICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcpCisgICAgeworICAgICAg
ICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwgMTYp
OworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzE2XSA9IHsKKyAg
ICAgICAgICAgICJ6ZXJvIiwgImF0IiwgInYwIiwgInYxIiwKKyAgICAgICAgICAgICJhMCIsICJh
MSIsICJhMiIsICJhMyIsCisgICAgICAgICAgICAidDAiLCAidDEiLCAidDIiLCAidDMiLAorICAg
ICAgICAgICAgInQ0IiwgInQ1IiwgInQ2IiwgInQ3IgorICAgICAgICB9OworICAgICAgICByZXR1
cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107CisgICAgfQorcHJpdmF0ZToKKworICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOworfTsKKworI2VuZGlmCisK
IHR5cGVkZWYgUmVnaXN0ZXJCYW5rPEdQUkluZm8+OjppdGVyYXRvciBncHJfaXRlcmF0b3I7CiAK
IH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA0NDZlYTdkLi43MzdiY2JjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xNTEyLDcgKzE1MTIs
NyBAQCBwdWJsaWM6CiAKIC8vIEVuY29kZWRKU1ZhbHVlIGluIEpTVkFMVUUzMl82NCBpcyBhIDY0
LWJpdCBpbnRlZ2VyLiBXaGVuIGJlaW5nIGNvbXBpbGVkIGluIEFSTSBFQUJJLCBpdCBtdXN0IGJl
IGFsaWduZWQgZXZlbi1udW1iZXJlZCByZWdpc3RlciAocjAsIHIyIG9yIFtzcF0pLgogLy8gVG8g
YXZvaWQgYXNzZW1ibGllcyBmcm9tIHVzaW5nIHdyb25nIHJlZ2lzdGVycywgbGV0J3Mgb2NjdXB5
IHIxIG9yIHIzIHdpdGggYSBkdW1teSBhcmd1bWVudCB3aGVuIG5lY2Vzc2FyeS4KLSNpZiBDT01Q
SUxFUl9TVVBQT1JUUyhFQUJJKSAmJiBDUFUoQVJNKQorI2lmIChDT01QSUxFUl9TVVBQT1JUUyhF
QUJJKSAmJiBDUFUoQVJNKSkgfHwgQ1BVKE1JUFMpCiAjZGVmaW5lIEVBQklfMzJCSVRfRFVNTVlf
QVJHICAgICAgVHJ1c3RlZEltbTMyKDApLAogI2Vsc2UKICNkZWZpbmUgRUFCSV8zMkJJVF9EVU1N
WV9BUkcKQEAgLTE5MjIsNyArMTkyMiw3IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKICAgICAK
LSNpZiAhZGVmaW5lZChOREVCVUcpICYmICFDUFUoQVJNKQorI2lmICFkZWZpbmVkKE5ERUJVRykg
JiYgIUNQVShBUk0pICYmICFDUFUoTUlQUykKICAgICB2b2lkIHByZXBhcmVGb3JFeHRlcm5hbENh
bGwoKQogICAgIHsKICAgICAgICAgLy8gV2UncmUgYWJvdXQgdG8gY2FsbCBvdXQgdG8gYSAibmF0
aXZlIiBoZWxwZXIgZnVuY3Rpb24uIFRoZSBoZWxwZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSlNJbnRlcmZhY2VKSVQuaAppbmRleCBkMmE5MWJhLi40MzFmY2MzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCkBAIC0xMjUsNiArMTI1LDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWNoZWRSZXN1
bHRSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OnYwOwogICAgICAgICBzdGF0aWMgY29uc3QgUmVn
aXN0ZXJJRCBmaXJzdEFyZ3VtZW50UmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjphMDsKICAgICAg
ICAgCisjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgICAgICBzdGF0aWMgY29uc3QgUmVn
aXN0ZXJJRCBidWNrZXRDb3VudGVyUmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjpzMzsKKyNlbmRp
ZgorCiAgICAgICAgIC8vIHJlZ1QwIG11c3QgYmUgdjAgZm9yIHJldHVybmluZyBhIDMyLWJpdCB2
YWx1ZS4KICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDAgPSBNSVBTUmVnaXN0
ZXJzOjp2MDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5oCmluZGV4IGU5N2MwYTAuLmVhNGM3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCkBAIC0xMjQsMTQgKzEyNCwxOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAg
ICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVfdCBidWZmZXJTaXplKSB7IHJldHVy
biBzaXplb2Yoc2l6ZV90KSArIGJ1ZmZlclNpemU7IH0KKyAgICAgICAgc3RhdGljIHNpemVfdCBh
bGxvY2F0aW9uU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkgeyByZXR1cm4gc2l6ZW9mKFNjcmF0Y2hC
dWZmZXIpICsgYnVmZmVyU2l6ZTsgfQogICAgICAgICB2b2lkIHNldEFjdGl2ZUxlbmd0aChzaXpl
X3QgYWN0aXZlTGVuZ3RoKSB7IG1fYWN0aXZlTGVuZ3RoID0gYWN0aXZlTGVuZ3RoOyB9CiAgICAg
ICAgIHNpemVfdCBhY3RpdmVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZUxlbmd0aDsg
fTsKICAgICAgICAgc2l6ZV90KiBhY3RpdmVMZW5ndGhQdHIoKSB7IHJldHVybiAmbV9hY3RpdmVM
ZW5ndGg7IH07CiAgICAgICAgIHZvaWQqIGRhdGFCdWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsg
fQogCiAgICAgICAgIHNpemVfdCBtX2FjdGl2ZUxlbmd0aDsKKyNpZiBDUFUoTUlQUykgJiYgV1RG
X01JUFNfSVNBX1JFVigyKQorICAgICAgICB2b2lkKiBtX2J1ZmZlclswXSBfX2F0dHJpYnV0ZV9f
KChhbGlnbmVkKDgpKSk7CisjZWxzZQogICAgICAgICB2b2lkKiBtX2J1ZmZlclswXTsKKyNlbmRp
ZgogICAgIH07CiAjaWYgQ09NUElMRVIoTVNWQykKICNwcmFnbWEgd2FybmluZyhwb3ApCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4
IGZkMWJjZDAuLmM3NjZmYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTEtMDYgIEJhbGF6
cyBLaWx2YWR5ICA8a2lsdmFkeWJAaG9tZWppbm5pLmNvbT4KKworICAgICAgICBNSVBTIERGRyBp
bXBsZW1lbnRhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMTMyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIERGRyBpbXBsZW1lbnRhdGlvbiBmb3IgTUlQUy4KKworICAgICAgICAqIHd0Zi9QbGF0
Zm9ybS5oOgorCiAyMDEyLTExLTA1ICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgVW5ibG9jayBTVkcgZXh0ZXJuYWwgcmVmZXJlbmNlcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXgg
ODZmYmQ4NC4uNzU1MTcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC05MzQsNiArOTM0LDEwIEBACiAjaWYg
Q1BVKEFSTV9UUkFESVRJT05BTCkKICNkZWZpbmUgRU5BQkxFX0RGR19KSVQgMQogI2VuZGlmCisv
KiBFbmFibGUgdGhlIERGRyBKSVQgb24gTUlQUy4gKi8KKyNpZiBDUFUoTUlQUykKKyNkZWZpbmUg
RU5BQkxFX0RGR19KSVQgMQorI2VuZGlmCiAjZW5kaWYKIAogLyogSWYgdGhlIGppdCBpcyBub3Qg
YXZhaWxhYmxlLCBlbmFibGUgdGhlIExMSW50IEMgTG9vcDogKi8K
</data>
<flag name="commit-queue"
          id="186891"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172763</attachid>
            <date>2012-11-07 05:14:50 -0800</date>
            <delta_ts>2012-11-08 12:04:15 -0800</delta_ts>
            <desc>DFG for MIPS.</desc>
            <filename>mips-dfg.diff</filename>
            <type>text/plain</type>
            <size>45832</size>
            <attacher name="Balazs Kilvady">kilvadyb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDg0NzlhYzUuLjBkMzIyNDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDEyLTExLTA3ICBCYWxhenMgS2lsdmFk
eSAgPGtpbHZhZHliQGhvbWVqaW5uaS5jb20+CisKKyAgICAgICAgTUlQUyBERkcgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
SVBTIGltcGxlbWVudGF0aW9uIGZvciBNSVBTLgorCisgICAgICAgICogYXNzZW1ibGVyL01JUFNB
c3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6TUlQU0Fzc2VtYmxlcik6
CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6OnNsbHYpOgorICAgICAgICAoSlNDOjpNSVBT
QXNzZW1ibGVyOjptb3ZkKToKKyAgICAgICAgKE1JUFNBc3NlbWJsZXIpOgorICAgICAgICAoSlND
OjpNSVBTQXNzZW1ibGVyOjpuZWdkKToKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6bGFi
ZWxGb3JXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6bGFiZWwpOgor
ICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjp2bW92KToKKyAgICAgICAgKEpTQzo6TUlQU0Fz
c2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6
bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyTUlQUy5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmFkZDMyKToKKyAg
ICAgICAgKE1hY3JvQXNzZW1ibGVyTUlQUyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
TUlQUzo6YW5kMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmxzaGlmdDMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjptdWwzMik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6b3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyTUlQUzo6cnNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnVy
c2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6c3ViMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnhvcjMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJNSVBTOjpzdG9yZTMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJN
SVBTOjpqdW1wKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hBZGQz
Mik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoTXVsMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5jaFN1YjMyKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hOZWczMik6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyTUlQUzo6Y2FsbCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6
bW92ZURvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6c3ViRG91Ymxl
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjptdWxEb3VibGUpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmRpdkRvdWJsZSk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6bmVnYXRlRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJNSVBTOjpicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnRydW5jYXRlRG91YmxlVG9JbnQzMik6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6dHJ1bmNhdGVEb3VibGVUb1VpbnQzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlTm9uWmVybyk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlWmVyb09yTmFOKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjppbnZlcnQpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogZGZn
L0RGR0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoQXNzZW1ibHlIZWxwZXJzKToKKyAgICAg
ICAgKEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVy
Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlUmV0dXJu
QWRkcmVzc0JlZm9yZVJldHVybik6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJz
OjpkZWJ1Z0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAg
KENDYWxsSGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFy
Z3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUpOgorICAgICAgICAqIGRmZy9ERkdGUFJJbmZvLmg6CisgICAgICAgIChE
RkcpOgorICAgICAgICAoRlBSSW5mbyk6CisgICAgICAgIChKU0M6OkRGRzo6RlBSSW5mbzo6dG9S
ZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6RlBSSW5mbzo6dG9JbmRleCk6CisgICAgICAg
IChKU0M6OkRGRzo6RlBSSW5mbzo6ZGVidWdOYW1lKToKKyAgICAgICAgKiBkZmcvREZHR1BSSW5m
by5oOgorICAgICAgICAoREZHKToKKyAgICAgICAgKEdQUkluZm8pOgorICAgICAgICAoSlNDOjpE
Rkc6OkdQUkluZm86OnRvUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkdQUkluZm86OnRv
SW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OkdQUkluZm86OmRlYnVnTmFtZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6Cisg
ICAgICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAgIChKU0ludGVyZmFjZUpJVCk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpTQzo6U2NyYXRj
aEJ1ZmZlcjo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoU2NyYXRjaEJ1ZmZlcik6CisKIDIw
MTItMTEtMDYgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWR1
Y2UgcGFyc2VyIG92ZXJoZWFkIGluIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01JUFNBc3NlbWJsZXIuaAppbmRleCAzMGYxNzJmLi41YWRmM2ViIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaApAQCAtMTUyLDYg
KzE1Miw4IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIFNlZ21lbnRlZFZlY3RvcjxBc3NlbWJsZXJM
YWJlbCwgNjQ+IEp1bXBzOwogCiAgICAgTUlQU0Fzc2VtYmxlcigpCisgICAgICAgIDogbV9pbmRl
eE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKKyAgICAgICAgLCBtX2luZGV4T2ZUYWlsT2ZMYXN0
V2F0Y2hwb2ludChJTlRfTUlOKQogICAgIHsKICAgICB9CiAKQEAgLTMyNSw3ICszMjcsNyBAQCBw
dWJsaWM6CiAgICAgICAgIGVtaXRJbnN0KDB4MDAwMDAwMDAgfCAocmQgPDwgT1BfU0hfUkQpIHwg
KHJ0IDw8IE9QX1NIX1JUKSB8ICgoc2hhbXQgJiAweDFmKSA8PCBPUF9TSF9TSEFNVCkpOwogICAg
IH0KIAotICAgIHZvaWQgc2xsdihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJ0LCBpbnQgcnMp
CisgICAgdm9pZCBzbGx2KFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQg
cnMpCiAgICAgewogICAgICAgICBlbWl0SW5zdCgweDAwMDAwMDA0IHwgKHJkIDw8IE9QX1NIX1JE
KSB8IChydCA8PCBPUF9TSF9SVCkgfCAocnMgPDwgT1BfU0hfUlMpKTsKICAgICB9CkBAIC01Mjcs
NiArNTI5LDE2IEBAIHB1YmxpYzoKICAgICAgICAgZW1pdEluc3QoMHg0NjIwMDAwNCB8IChmZCA8
PCBPUF9TSF9GRCkgfCAoZnMgPDwgT1BfU0hfRlMpKTsKICAgICB9CiAKKyAgICB2b2lkIG1vdmQo
RlBSZWdpc3RlcklEIGZkLCBGUFJlZ2lzdGVySUQgZnMpCisgICAgeworICAgICAgICBlbWl0SW5z
dCgweDQ2MjAwMDA2IHwgKGZkIDw8IE9QX1NIX0ZEKSB8IChmcyA8PCBPUF9TSF9GUykpOworICAg
IH0KKworICAgIHZvaWQgbmVnZChGUFJlZ2lzdGVySUQgZmQsIEZQUmVnaXN0ZXJJRCBmcykKKyAg
ICB7CisgICAgICAgIGVtaXRJbnN0KDB4NDYyMDAwMDcgfCAoZmQgPDwgT1BfU0hfRkQpIHwgKGZz
IDw8IE9QX1NIX0ZTKSk7CisgICAgfQorCiAgICAgdm9pZCB0cnVuY3dkKEZQUmVnaXN0ZXJJRCBm
ZCwgRlBSZWdpc3RlcklEIGZzKQogICAgIHsKICAgICAgICAgZW1pdEluc3QoMHg0NjIwMDAwZCB8
IChmZCA8PCBPUF9TSF9GRCkgfCAoZnMgPDwgT1BfU0hfRlMpKTsKQEAgLTYxOSw5ICs2MzEsMjQg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9idWZmZXIubGFiZWwoKTsKICAgICB9CiAKKyAg
ICBBc3NlbWJsZXJMYWJlbCBsYWJlbEZvcldhdGNocG9pbnQoKQorICAgIHsKKyAgICAgICAgQXNz
ZW1ibGVyTGFiZWwgcmVzdWx0ID0gbV9idWZmZXIubGFiZWwoKTsKKyAgICAgICAgaWYgKHN0YXRp
Y19jYXN0PGludD4ocmVzdWx0Lm1fb2Zmc2V0KSAhPSBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludCkK
KyAgICAgICAgICAgIHJlc3VsdCA9IGxhYmVsKCk7CisgICAgICAgIG1faW5kZXhPZkxhc3RXYXRj
aHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0OworICAgICAgICBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0
Y2hwb2ludCA9IHJlc3VsdC5tX29mZnNldCArIG1heEp1bXBSZXBsYWNlbWVudFNpemUoKTsKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbCgp
CiAgICAgewotICAgICAgICByZXR1cm4gbV9idWZmZXIubGFiZWwoKTsKKyAgICAgICAgQXNzZW1i
bGVyTGFiZWwgcmVzdWx0ID0gbV9idWZmZXIubGFiZWwoKTsKKyAgICAgICAgd2hpbGUgKFVOTElL
RUxZKHN0YXRpY19jYXN0PGludD4ocmVzdWx0Lm1fb2Zmc2V0KSA8IG1faW5kZXhPZlRhaWxPZkxh
c3RXYXRjaHBvaW50KSkgeworICAgICAgICAgICAgbm9wKCk7CisgICAgICAgICAgICByZXN1bHQg
PSBtX2J1ZmZlci5sYWJlbCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQogCiAgICAgQXNzZW1ibGVyTGFiZWwgYWxpZ24oaW50IGFsaWdubWVudCkKQEAgLTY2NCwx
NCArNjkxLDI0IEBAIHB1YmxpYzoKICAgICAvLyBBc3NlbWJseSBoZWxwZXJzIGZvciBtb3Zpbmcg
ZGF0YSBiZXR3ZWVuIGZwIGFuZCByZWdpc3RlcnMuCiAgICAgdm9pZCB2bW92KFJlZ2lzdGVySUQg
cmQxLCBSZWdpc3RlcklEIHJkMiwgRlBSZWdpc3RlcklEIHJuKQogICAgIHsKKyNpZiBXVEZfTUlQ
U19JU0FfUkVWKDIpICYmIFdURl9NSVBTX0ZQNjQKKyAgICAgICAgbWZjMShyZDEsIHJuKTsKKyAg
ICAgICAgbWZoYzEocmQyLCBybik7CisjZWxzZQogICAgICAgICBtZmMxKHJkMSwgcm4pOwogICAg
ICAgICBtZmMxKHJkMiwgRlBSZWdpc3RlcklEKHJuICsgMSkpOworI2VuZGlmCiAgICAgfQogCiAg
ICAgdm9pZCB2bW92KEZQUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybjEsIFJlZ2lzdGVySUQg
cm4yKQogICAgIHsKKyNpZiBXVEZfTUlQU19JU0FfUkVWKDIpICYmIFdURl9NSVBTX0ZQNjQKKyAg
ICAgICAgbXRjMShybjEsIHJkKTsKKyAgICAgICAgbXRoYzEocm4yLCByZCk7CisjZWxzZQogICAg
ICAgICBtdGMxKHJuMSwgcmQpOwogICAgICAgICBtdGMxKHJuMiwgRlBSZWdpc3RlcklEKHJkICsg
MSkpOworI2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIHVuc2lnbmVkIGdldENhbGxSZXR1cm5P
ZmZzZXQoQXNzZW1ibGVyTGFiZWwgY2FsbCkKQEAgLTgyNSw2ICs4NjIsMjkgQEAgcHVibGljOgog
I2VuZGlmCiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKHZvaWQqIGlu
c3RydWN0aW9uU3RhcnQsIHZvaWQqIHRvKQorICAgIHsKKyAgICAgICAgTUlQU1dvcmQqIGluc3Ry
dWN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxNSVBTV29yZCo+KGluc3RydWN0aW9uU3RhcnQpOwor
ICAgICAgICBpbnRwdHJfdCBqdW1wVG8gPSByZWludGVycHJldF9jYXN0PGludHB0cl90Pih0byk7
CisKKyAgICAgICAgLy8gTG9hZCB0YXJnZXQuCisgICAgICAgIC8qIGx1aSAqLworICAgICAgICBp
bnN0cnVjdGlvblswXSA9IDB4M2MwMDAwMDAgfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hf
UlQpIHwgKChqdW1wVG8gPj4gMTYpICYgMHhmZmZmKTsKKyAgICAgICAgLyogb3JpICovCisgICAg
ICAgIGluc3RydWN0aW9uWzFdID0gMHgzNDAwMDAwMCB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBP
UF9TSF9SVCkgfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlMpIHwgKGp1bXBUbyAmIDB4
ZmZmZik7CisgICAgICAgIC8qIGpyICovCisgICAgICAgIGluc3RydWN0aW9uWzJdID0gMHgwMDAw
MDAwOCB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SUyk7CisgICAgICAgIC8qIG5vcCAq
LworICAgICAgICBpbnN0cnVjdGlvblszXSA9IDB4MDsKKworICAgICAgICBjYWNoZUZsdXNoKGlu
c3RydWN0aW9uLCBzaXplb2YoTUlQU1dvcmQpICogNCk7CisgICAgfQorCisgICAgc3RhdGljIHB0
cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKKyAgICB7CisgICAgICAgIHJldHVybiBz
aXplb2YoTUlQU1dvcmQpICogNDsKKyAgICB9CisKICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0
aExvYWQodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKICAgICB7CiAgICAgICAgIE1JUFNXb3JkKiBp
bnNuID0gcmVpbnRlcnByZXRfY2FzdDxNSVBTV29yZCo+KGluc3RydWN0aW9uU3RhcnQpOwpAQCAt
OTk4LDYgKzEwNTgsOCBAQCBwcml2YXRlOgogCiAgICAgQXNzZW1ibGVyQnVmZmVyIG1fYnVmZmVy
OwogICAgIEp1bXBzIG1fanVtcHM7CisgICAgaW50IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50Owor
ICAgIGludCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlck1JUFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9B
c3NlbWJsZXJNSVBTLmgKaW5kZXggZmM2ZjlmNC4uNjNiYzgxOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCkBAIC0xMTQs
NiArMTE0LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkdShkZXN0LCBkZXN0
LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgYWRkMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVy
SUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hZGR1
KGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBp
bW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGFkZDMyKGltbSwgZGVzdCwgZGVz
dCk7CkBAIC0yNDksNiArMjU0LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuYW5k
SW5zbihkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgYW5kMzIoUmVnaXN0ZXJJ
RCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5hbmRJbnNuKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIGFu
ZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlm
ICghaW1tLm1fdmFsdWUgJiYgIW1fZml4ZWRXaWR0aCkKQEAgLTI2NSw5ICsyNzUsMTYgQEAgcHVi
bGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgdm9pZCBsc2hpZnQzMihUcnVzdGVkSW1tMzIg
aW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgdm9pZCBhbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJs
ZXIuc2xsKGRlc3QsIGRlc3QsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKCFpbW0ubV92YWx1
ZSAmJiAhbV9maXhlZFdpZHRoKQorICAgICAgICAgICAgbW92ZShNSVBTUmVnaXN0ZXJzOjp6ZXJv
LCBkZXN0KTsKKyAgICAgICAgZWxzZSBpZiAoaW1tLm1fdmFsdWUgPiAwICYmIGltbS5tX3ZhbHVl
IDwgNjU1MzUgJiYgIW1fZml4ZWRXaWR0aCkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFuZGko
ZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbW92
ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hbmRJbnNu
KGRlc3QsIHNyYywgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZv
aWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQpAQCAt
Mjc1LDExICsyOTIsMzMgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zbGx2KGRlc3Qs
IGRlc3QsIHNoaWZ0QW1vdW50KTsKICAgICB9CiAKKyAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5zbGx2KGRlc3QsIHNyYywgc2hpZnRBbW91bnQpOworICAgIH0K
KworICAgIHZvaWQgbHNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNz
ZW1ibGVyLnNsbHYoZGVzdCwgZGVzdCwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICB2
b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuc2xsdihkZXN0LCBzcmMsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgfQor
CiAgICAgdm9pZCBtdWwzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICAgICAgICAgbV9hc3NlbWJsZXIubXVsKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAg
dm9pZCBtdWwzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm11bChkZXN0LCBvcDEsIG9wMik7CisgICAg
fQorCiAgICAgdm9pZCBtdWwzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSAmJiAhbV9maXhl
ZFdpZHRoKQpAQCAtMzMwLDYgKzM2OSwyNSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVy
Lm9ySW5zbihkZXN0LCBkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKKyAgICB2b2lk
IG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIGlmICghaW1tLm1fdmFsdWUgJiYgIW1fZml4ZWRXaWR0aCkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPiAwICYmIGltbS5tX3Zh
bHVlIDwgNjU1MzUKKyAgICAgICAgICAgICYmICFtX2ZpeGVkV2lkdGgpIHsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLm9yaShkZXN0LCBzcmMsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAgICBsaSAgICAgIGRhdGFU
ZW1wLCBpbW0KKyAgICAgICAgICAgIG9yICAgICAgZGVzdCwgc3JjLCBkYXRhVGVtcAorICAgICAg
ICAqLworICAgICAgICBtb3ZlKGltbSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNz
ZW1ibGVyLm9ySW5zbihkZXN0LCBzcmMsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgIH0KKwogICAg
IHZvaWQgb3IzMihSZWdpc3RlcklEIHNyYywgQWJzb2x1dGVBZGRyZXNzIGRlc3QpCiAgICAgewog
ICAgICAgICBsb2FkMzIoZGVzdC5tX3B0ciwgZGF0YVRlbXBSZWdpc3Rlcik7CkBAIC0zNDIsNiAr
NDAwLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3JhdihkZXN0LCBkZXN0LCBz
aGlmdEFtb3VudCk7CiAgICAgfQogCisgICAgdm9pZCByc2hpZnQzMihSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuc3JhdihkZXN0LCBzcmMsIHNoaWZ0QW1vdW50KTsKKyAgICB9CisKICAgICB2
b2lkIHJzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLnNyYShkZXN0LCBkZXN0LCBpbW0ubV92YWx1ZSk7CkBAIC0zNTcs
MTYgKzQyMCwzMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnNybHYoZGVzdCwgZGVz
dCwgc2hpZnRBbW91bnQpOwogICAgIH0KIAorICAgIHZvaWQgdXJzaGlmdDMyKFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5zcmx2KGRlc3QsIHNyYywgc2hpZnRBbW91bnQpOworICAgIH0KKwog
ICAgIHZvaWQgdXJzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnNybChkZXN0LCBkZXN0LCBpbW0ubV92YWx1ZSk7CiAg
ICAgfQogCisgICAgdm9pZCB1cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBp
bW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnNybChkZXN0
LCBzcmMsIGltbS5tX3ZhbHVlKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJ1KGRl
c3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIG9wMSwg
UmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLnN1YnUoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgc3ViMzIoVHJ1c3Rl
ZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3Zh
bHVlID49IC0zMjc2NyAmJiBpbW0ubV92YWx1ZSA8PSAzMjc2OApAQCAtNDc3LDYgKzU1NSwxMSBA
QCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oZGVzdCwgZGVzdCwgc3JjKTsK
ICAgICB9CiAKKyAgICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihkZXN0
LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpIHsK
QEAgLTQ5Miw2ICs1NzUsMjEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNu
KGRlc3QsIGRlc3QsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCisgICAgdm9pZCB4b3IzMihU
cnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5ub3IoZGVzdCwgc3JjLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAgICBsaSAgaW1tVGVtcCwgaW1t
CisgICAgICAgICAgICB4b3IgZGVzdCwgZGVzdCwgaW1tVGVtcAorICAgICAgICAqLworICAgICAg
ICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5z
bihkZXN0LCBzcmMsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgfQorCiAgICAgdm9pZCBzcXJ0RG91
YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBt
X2Fzc2VtYmxlci5zcXJ0ZChkc3QsIHNyYyk7CkBAIC05NzEsNiArMTA2OSw0NCBAQCBwdWJsaWM6
CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIHN0b3JlMzIoVHJ1c3RlZEltbTMyIGltbSwg
QmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBpZiAoYWRkcmVzcy5vZmZzZXQgPj0g
LTMyNzY4ICYmIGFkZHJlc3Mub2Zmc2V0IDw9IDMyNzY3ICYmICFtX2ZpeGVkV2lkdGgpIHsKKyAg
ICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgc2xsICAgICBhZGRyVGVtcCwgYWRkcmVzcy5p
bmRleCwgYWRkcmVzcy5zY2FsZQorICAgICAgICAgICAgICAgIGFkZHUgICAgYWRkclRlbXAsIGFk
ZHJUZW1wLCBhZGRyZXNzLmJhc2UKKyAgICAgICAgICAgICAgICBzdyAgICAgIHNyYywgYWRkcmVz
cy5vZmZzZXQoYWRkclRlbXApCisgICAgICAgICAgICAqLworICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuc2xsKGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOwor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkdShhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJl
Z2lzdGVyLCBhZGRyZXNzLmJhc2UpOworICAgICAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSkKKyAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdyhNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBhZGRyVGVt
cFJlZ2lzdGVyLCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fz
c2VtYmxlci5zdyhpbW1UZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mub2Zm
c2V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qCisg
ICAgICAgICAgICAgICAgc2xsICAgICBhZGRyVGVtcCwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5z
Y2FsZQorICAgICAgICAgICAgICAgIGFkZHUgICAgYWRkclRlbXAsIGFkZHJUZW1wLCBhZGRyZXNz
LmJhc2UKKyAgICAgICAgICAgICAgICBsdWkgICAgIGltbVRlbXAsIChhZGRyZXNzLm9mZnNldCAr
IDB4ODAwMCkgPj4gMTYKKyAgICAgICAgICAgICAgICBhZGR1ICAgIGFkZHJUZW1wLCBhZGRyVGVt
cCwgaW1tVGVtcAorICAgICAgICAgICAgICAgIHN3ICAgICAgc3JjLCAoYWRkcmVzcy5vZmZzZXQg
JiAweGZmZmYpKGF0KQorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNs
bChhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoYWRkclRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3Rl
ciwgYWRkcmVzcy5iYXNlKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmx1aShpbW1UZW1wUmVn
aXN0ZXIsIChhZGRyZXNzLm9mZnNldCArIDB4ODAwMCkgPj4gMTYpOworICAgICAgICAgICAgbV9h
c3NlbWJsZXIuYWRkdShhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBpbW1UZW1w
UmVnaXN0ZXIpOworICAgICAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSAmJiAhbV9maXhlZFdpZHRo
KQorICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN3KE1JUFNSZWdpc3RlcnM6Onplcm8sIGFk
ZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnN3KGltbVRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgYWRkcmVz
cy5vZmZzZXQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisKICAgICB2b2lk
IHN0b3JlMzIoUmVnaXN0ZXJJRCBzcmMsIGNvbnN0IHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAg
ICAgICAvKgpAQCAtMTMxNyw2ICsxNDUzLDE1IEBAIHB1YmxpYzoKICAgICAgICAgbV9maXhlZFdp
ZHRoID0gZmFsc2U7CiAgICAgfQogCisgICAgdm9pZCBqdW1wKEFic29sdXRlQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbV9maXhlZFdpZHRoID0gdHJ1ZTsKKyAgICAgICAgbG9hZDMy
KGFkZHJlc3MubV9wdHIsIE1JUFNSZWdpc3RlcnM6OnQ5KTsKKyAgICAgICAgbV9hc3NlbWJsZXIu
anIoTUlQU1JlZ2lzdGVyczo6dDkpOworICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAg
ICAgbV9maXhlZFdpZHRoID0gZmFsc2U7CisgICAgfQorCiAgICAgdm9pZCBtb3ZlRG91YmxlVG9J
bnRzKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIp
CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci52bW92KGRlc3QxLCBkZXN0Miwgc3JjKTsKQEAg
LTEzODUsNiArMTUzMCw1MyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKCk7CiAgICAg
fQogCisgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBB
U1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0g
WmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxv
dykgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICBtb3ZlICAgIGRlc3QsIGRhdGFU
ZW1wCisgICAgICAgICAgICAgICAgeG9yICAgICBjbXBUZW1wLCBkYXRhVGVtcCwgc3JjCisgICAg
ICAgICAgICAgICAgYmx0eiAgICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIGRpZmYgc2lnbiBi
aXQgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBhZGR1ICAgIGRlc3QsIGRhdGFUZW1w
LCBzcmMKKyAgICAgICAgICAgICAgICB4b3IgICAgIGNtcFRlbXAsIGRlc3QsIGRhdGFUZW1wCisg
ICAgICAgICAgICAgICAgYmdleiAgICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIHNhbWUgc2ln
biBiaWcgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAg
ICBiICAgICAgIE92ZXJmbG93CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAg
bm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAg
ICAgICAgbm9wCisgICAgICAgICAgICBOb19vdmVyZmxvdzoKKyAgICAgICAgICAgICovCisgICAg
ICAgICAgICBtb3ZlKG9wMSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwgb3AyKTsKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxMCk7CisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5hZGR1KGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGVzdCwgZGF0YVRl
bXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3Rl
ciwgNyk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAgIHJldHVy
biBqdW1wKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7CisgICAg
ICAgICAgICBhZGQzMihvcDEsIG9wMiwgZGVzdCk7CisgICAgICAgICAgICAvLyBDaGVjayBpZiBk
ZXN0IGlzIG5lZ2F0aXZlLgorICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0KGNtcFRlbXBSZWdp
c3RlciwgZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICByZXR1cm4gYnJh
bmNoTm90RXF1YWwoY21wVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoY29uZCA9PSBaZXJvKSB7CisgICAgICAgICAgICBhZGQzMihvcDEs
IG9wMiwgZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoRXF1YWwoZGVzdCwgTUlQU1Jl
Z2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykg
eworICAgICAgICAgICAgYWRkMzIob3AxLCBvcDIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJu
IGJyYW5jaE5vdEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9Cisg
ICAgICAgIEFTU0VSVCgwKTsKKyAgICAgICAgcmV0dXJuIEp1bXAoKTsKKyAgICB9CisKICAgICBK
dW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVy
KTsKQEAgLTEzOTgsNiArMTU5MCwxMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYnJhbmNo
QWRkMzIoY29uZCwgaW1tVGVtcFJlZ2lzdGVyLCBkZXN0KTsKICAgICB9CiAKKyAgICBKdW1wIGJy
YW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0
ZUFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykg
fHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJv
KSk7CisgICAgICAgIGlmIChjb25kID09IE92ZXJmbG93KSB7CisgICAgICAgICAgICAvKgorICAg
ICAgICAgICAgICAgIG1vdmUgICAgZGF0YVRlbXAsIGRlc3QKKyAgICAgICAgICAgICAgICB4b3Jp
ICAgIGNtcFRlbXAsIGRhdGFUZW1wLCBpbW0KKyAgICAgICAgICAgICAgICBibHR6ICAgIGNtcFRl
bXAsIE5vX292ZXJmbG93ICAgICMgZGlmZiBzaWduIGJpdCAtPiBubyBvdmVyZmxvdworICAgICAg
ICAgICAgICAgIGFkZGl1ICAgZGF0YVRlbXAsIGRhdGFUZW1wLCBpbW0KKyAgICAgICAgICAgICAg
ICBtb3ZlICAgIGRlc3QsIGRhdGFUZW1wCisgICAgICAgICAgICAgICAgeG9yaSAgICBjbXBUZW1w
LCBkYXRhVGVtcCwgaW1tCisgICAgICAgICAgICAgICAgYmdleiAgICBjbXBUZW1wLCBOb19vdmVy
ZmxvdyAgICAjIHNhbWUgc2lnbiBiaWcgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBu
b3AKKyAgICAgICAgICAgICAgICBiICAgICAgIE92ZXJmbG93CisgICAgICAgICAgICAgICAgbm9w
CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAg
ICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICBOb19vdmVyZmxvdzoKKyAg
ICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPj0gLTMyNzY4ICYmIGlt
bS5tX3ZhbHVlICA8PSAzMjc2NyAmJiAhbV9maXhlZFdpZHRoKSB7CisgICAgICAgICAgICAgICAg
bG9hZDMyKGRlc3QubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIG1f
YXNzZW1ibGVyLnhvcmkoY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW0ubV92
YWx1ZSk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmx0eihjbXBUZW1wUmVnaXN0ZXIs
IDEwKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRpdShkYXRhVGVtcFJlZ2lzdGVy
LCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW0ubV92YWx1ZSk7CisgICAgICAgICAgICAgICAgc3RvcmUz
MihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0Lm1fcHRyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci54b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1fdmFsdWUp
OworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCA3KTsK
KyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgbG9hZDMyKGRlc3QubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwor
ICAgICAgICAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnhvckluc24oY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVy
LCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21w
VGVtcFJlZ2lzdGVyLCAxMCk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkaXUoZGF0
YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAg
ICAgICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QubV9wdHIpOworICAgICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmkoY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lz
dGVyLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXoo
Y21wVGVtcFJlZ2lzdGVyLCA3KTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBqdW1wKCk7CisgICAgICAgIH0KKyAg
ICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIGxvYWQzMihkZXN0Lm1f
cHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgYWRkMzIoaW1tVGVtcFJlZ2lzdGVyLCBk
YXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0
Lm1fcHRyKTsKKyAgICAgICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7CisgICAgICAgICAgICAvLyBD
aGVjayBpZiBkZXN0IGlzIG5lZ2F0aXZlLgorICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0KGNt
cFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7Cisg
ICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwoY21wVGVtcFJlZ2lzdGVyLCBNSVBTUmVn
aXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBaZXJvKQorICAg
ICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKGRhdGFUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3Rl
cnM6Onplcm8pOworICAgICAgICBpZiAoY29uZCA9PSBOb25aZXJvKQorICAgICAgICAgICAgcmV0
dXJuIGJyYW5jaE5vdEVxdWFsKGRhdGFUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8p
OworICAgICAgICBBU1NFUlQoMCk7CisgICAgICAgIHJldHVybiBKdW1wKCk7CisgICAgfQorCisg
ICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMx
LCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VS
VCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJv
KSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CisgICAgICAgIGlmIChjb25kID09IE92ZXJmbG93KSB7
CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgIG11bHQgICAgc3JjLCBkZXN0CisgICAg
ICAgICAgICAgICAgbWZoaSAgICBkYXRhVGVtcAorICAgICAgICAgICAgICAgIG1mbG8gICAgZGVz
dAorICAgICAgICAgICAgICAgIHNyYSAgICAgYWRkclRlbXAsIGRlc3QsIDMxCisgICAgICAgICAg
ICAgICAgYmVxICAgICBkYXRhVGVtcCwgYWRkclRlbXAsIE5vX292ZXJmbG93ICMgYWxsIHNpZ24g
Yml0cyAoYml0IDYzIHRvIGJpdCAzMSkgYXJlIHRoZSBzYW1lIC0+IG5vIG92ZXJmbG93CisgICAg
ICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgYiAgICAgICBPdmVyZmxvdworICAgICAg
ICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAor
ICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgTm9f
b3ZlcmZsb3c6CisgICAgICAgICAgICAqLworICAgICAgICAgICAgbV9hc3NlbWJsZXIubXVsdChz
cmMxLCBzcmMyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1maGkoZGF0YVRlbXBSZWdpc3Rl
cik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tZmxvKGRlc3QpOworICAgICAgICAgICAgbV9h
c3NlbWJsZXIuc3JhKGFkZHJUZW1wUmVnaXN0ZXIsIGRlc3QsIDMxKTsKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmJlcShkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCA3KTsKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGp1bXAoKTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKKyAgICAgICAgICAgIG11
bDMyKHNyYzEsIHNyYzIsIGRlc3QpOworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBu
ZWdhdGl2ZS4KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIsIGRl
c3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVx
dWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGNvbmQgPT0gWmVybykgeworICAgICAgICAgICAgbXVsMzIoc3JjMSwgc3JjMiwg
ZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoRXF1YWwoZGVzdCwgTUlQU1JlZ2lzdGVy
czo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykgeworICAg
ICAgICAgICAgbXVsMzIoc3JjMSwgc3JjMiwgZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gYnJh
bmNoTm90RXF1YWwoZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAg
ICAgQVNTRVJUKDApOworICAgICAgICByZXR1cm4gSnVtcCgpOworICAgIH0KKwogICAgIEp1bXAg
YnJhbmNoTXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChj
b25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwpA
QCAtMTQ0Niw4ICsxNzQzLDcgQEAgcHVibGljOgogICAgIEp1bXAgYnJhbmNoTXVsMzIoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKLSAg
ICAgICAgbW92ZShzcmMsIGRlc3QpOwotICAgICAgICByZXR1cm4gYnJhbmNoTXVsMzIoY29uZCwg
aW1tVGVtcFJlZ2lzdGVyLCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMyKGNvbmQs
IGltbVRlbXBSZWdpc3Rlciwgc3JjLCBkZXN0KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFN1
YjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQpAQCAtMTUwNiw4ICsxODAyLDYwIEBAIHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaFN1YjMyKFJl
c3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7
Ci0gICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjMyKGNv
bmQsIGltbVRlbXBSZWdpc3RlciwgZGVzdCk7CisgICAgICAgIHJldHVybiBicmFuY2hTdWIzMihj
b25kLCBzcmMsIGltbVRlbXBSZWdpc3RlciwgZGVzdCk7CisgICAgfQorCisgICAgSnVtcCBicmFu
Y2hTdWIzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQg
b3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3Zl
cmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0g
Tm9uWmVybykpOworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgeworICAgICAgICAgICAg
LyoKKyAgICAgICAgICAgICAgICBtb3ZlICAgIGRlc3QsIGRhdGFUZW1wCisgICAgICAgICAgICAg
ICAgeG9yICAgICBjbXBUZW1wLCBkYXRhVGVtcCwgc3JjCisgICAgICAgICAgICAgICAgYmdleiAg
ICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIHNhbWUgc2lnbiBiaXQgLT4gbm8gb3ZlcmZsb3cK
KyAgICAgICAgICAgICAgICBzdWJ1ICAgIGRlc3QsIGRhdGFUZW1wLCBzcmMKKyAgICAgICAgICAg
ICAgICB4b3IgICAgIGNtcFRlbXAsIGRlc3QsIGRhdGFUZW1wCisgICAgICAgICAgICAgICAgYmdl
eiAgICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIHNhbWUgc2lnbiBiaXQgLT4gbm8gb3ZlcmZs
b3cKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBiICAgICAgIE92ZXJmbG93
CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAg
ICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAg
ICAgICBOb19vdmVyZmxvdzoKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBtb3ZlKG9wMSwg
ZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRl
bXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwgb3AyKTsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCAxMCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5z
dWJ1KGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7CisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7CisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAgIHJldHVybiBqdW1wKCk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7CisgICAgICAgICAgICBzdWIzMihvcDEs
IG9wMiwgZGVzdCk7CisgICAgICAgICAgICAvLyBDaGVjayBpZiBkZXN0IGlzIG5lZ2F0aXZlLgor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0KGNtcFRlbXBSZWdpc3RlciwgZGVzdCwgTUlQU1Jl
Z2lzdGVyczo6emVybyk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwoY21wVGVt
cFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
Y29uZCA9PSBaZXJvKSB7CisgICAgICAgICAgICBzdWIzMihvcDEsIG9wMiwgZGVzdCk7CisgICAg
ICAgICAgICByZXR1cm4gYnJhbmNoRXF1YWwoZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykgeworICAgICAgICAgICAgc3Vi
MzIob3AxLCBvcDIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGRl
c3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIEFTU0VSVCgwKTsK
KyAgICAgICAgcmV0dXJuIEp1bXAoKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaE5lZzMyKFJl
c3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyY0Rlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5saShkYXRhVGVtcFJlZ2lzdGVyLCAtMSk7CisgICAgICAgIHJldHVybiBicmFu
Y2hNdWwzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBzcmNEZXN0KTsKICAgICB9CiAKICAgICBK
dW1wIGJyYW5jaE9yMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QpCkBAIC0xNTU5LDcgKzE5MDcsOCBAQCBwdWJsaWM6CiAKICAgICBDYWxsIGNh
bGwoUmVnaXN0ZXJJRCB0YXJnZXQpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5qYWxyKHRh
cmdldCk7CisgICAgICAgIG1vdmUodGFyZ2V0LCBNSVBTUmVnaXN0ZXJzOjp0OSk7CisgICAgICAg
IG1fYXNzZW1ibGVyLmphbHIoTUlQU1JlZ2lzdGVyczo6dDkpOwogICAgICAgICBtX2Fzc2VtYmxl
ci5ub3AoKTsKICAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIubGFiZWwoKSwgQ2FsbDo6
Tm9uZSk7CiAgICAgfQpAQCAtMTk5MCw2ICsyMzM5LDExIEBAIHB1YmxpYzoKICNlbmRpZgogICAg
IH0KIAorICAgIHZvaWQgbW92ZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdmQoZGVzdCwgc3JjKTsKKyAgICB9
CisKICAgICB2b2lkIGFkZERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGQoZGVzdCwgZGVzdCwgc3JjKTsKQEAg
LTIwMTcsNiArMjM3MSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YmQoZGVz
dCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIHN1YkRvdWJsZShGUFJlZ2lzdGVySUQg
b3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLnN1YmQoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgc3Vi
RG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGxv
YWREb3VibGUoc3JjLCBmcFRlbXBSZWdpc3Rlcik7CkBAIC0yMDM0LDExICsyMzkzLDMyIEBAIHB1
YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubXVsZChkZXN0LCBkZXN0LCBmcFRlbXBSZWdpc3Rl
cik7CiAgICAgfQogCisgICAgdm9pZCBtdWxEb3VibGUoRlBSZWdpc3RlcklEIG9wMSwgRlBSZWdp
c3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5tdWxkKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIGRpdkRvdWJsZShGUFJl
Z2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1i
bGVyLmRpdmQoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIGRpdkRvdWJsZShG
UFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmRpdmQoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwor
ICAgIHZvaWQgZGl2RG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIGxvYWREb3VibGUoc3JjLCBmcFRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmRpdmQoZGVzdCwgZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOworICAgIH0KKworICAgIHZv
aWQgbmVnYXRlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVnZChkZXN0LCBzcmMpOworICAgIH0KKwogICAgIHZv
aWQgY29udmVydEludDMyVG9Eb3VibGUoUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubXRjMShzcmMsIGZwVGVtcFJlZ2lzdGVyKTsK
QEAgLTIxNzMsMTEgKzI1NTMsMzMgQEAgcHVibGljOgogICAgIC8vIElmIHRoZSByZXN1bHQgaXMg
bm90IHJlcHJlc2VudGFibGUgYXMgYSAzMiBiaXQgdmFsdWUsIGJyYW5jaC4KICAgICAvLyBNYXkg
YWxzbyBicmFuY2ggZm9yIHNvbWUgdmFsdWVzIHRoYXQgYXJlIHJlcHJlc2VudGFibGUgaW4gMzIg
Yml0cwogICAgIC8vIChzcGVjaWZpY2FsbHksIGluIHRoaXMgY2FzZSwgSU5UX01BWCAweDdmZmZm
ZmZmKS4KLSAgICBKdW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgZW51bSBCcmFuY2hUcnVuY2F0ZVR5cGUgeyBCcmFu
Y2hJZlRydW5jYXRlRmFpbGVkLCBCcmFuY2hJZlRydW5jYXRlU3VjY2Vzc2Z1bCB9OworICAgIEp1
bXAgYnJhbmNoVHJ1bmNhdGVEb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCwgQnJhbmNoVHJ1bmNhdGVUeXBlIGJyYW5jaFR5cGUgPSBCcmFuY2hJZlRydW5jYXRl
RmFpbGVkKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudHJ1bmN3ZChmcFRlbXBSZWdpc3Rl
ciwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubWZjMShkZXN0LCBmcFRlbXBSZWdpc3Rlcik7
CisgICAgICAgIHJldHVybiBicmFuY2gzMihicmFuY2hUeXBlID09IEJyYW5jaElmVHJ1bmNhdGVG
YWlsZWQgPyBFcXVhbCA6IE5vdEVxdWFsLCBkZXN0LCBUcnVzdGVkSW1tMzIoMHg3ZmZmZmZmZikp
OworICAgIH0KKworICAgIEp1bXAgYnJhbmNoVHJ1bmNhdGVEb3VibGVUb1VpbnQzMihGUFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEJyYW5jaFRydW5jYXRlVHlwZSBicmFuY2hUeXBl
ID0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnRy
dW5jd2QoZnBUZW1wUmVnaXN0ZXIsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1mYzEoZGVz
dCwgZnBUZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoYnJhbmNoVHlwZSA9
PSBCcmFuY2hJZlRydW5jYXRlRmFpbGVkID8gRXF1YWwgOiBOb3RFcXVhbCwgZGVzdCwgVHJ1c3Rl
ZEltbTMyKDApKTsKKyAgICB9CisKKyAgICAvLyBSZXN1bHQgaXMgdW5kZWZpbmVkIGlmIHRoZSB2
YWx1ZSBpcyBvdXRzaWRlIG9mIHRoZSBpbnRlZ2VyIHJhbmdlLgorICAgIHZvaWQgdHJ1bmNhdGVE
b3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnRydW5jd2QoZnBUZW1wUmVnaXN0ZXIsIHNyYyk7CisgICAgICAg
IG1fYXNzZW1ibGVyLm1mYzEoZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOworICAgIH0KKworICAgIC8v
IFJlc3VsdCBpcyB1bmRlZmluZWQgaWYgc3JjID4gMl4zMQorICAgIHZvaWQgdHJ1bmNhdGVEb3Vi
bGVUb1VpbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci50cnVuY3dkKGZwVGVtcFJlZ2lzdGVyLCBzcmMpOwogICAgICAgICBt
X2Fzc2VtYmxlci5tZmMxKGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJy
YW5jaDMyKEVxdWFsLCBkZXN0LCBUcnVzdGVkSW1tMzIoMHg3ZmZmZmZmZikpOwogICAgIH0KIAog
ICAgIC8vIENvbnZlcnQgJ3NyYycgdG8gYW4gaW50ZWdlciwgYW5kIHBsYWNlcyB0aGUgcmVzdWx0
aW5nICdkZXN0Jy4KQEAgLTIxOTksMjggKzI2MDEsNDMgQEAgcHVibGljOgogCiAgICAgSnVtcCBi
cmFuY2hEb3VibGVOb25aZXJvKEZQUmVnaXN0ZXJJRCByZWcsIEZQUmVnaXN0ZXJJRCBzY3JhdGNo
KQogICAgIHsKLSNpZiBXVEZfTUlQU19JU0FfUkVWKDIpICYmIFdURl9NSVBTX0ZQNjQKLSAgICAg
ICAgbV9hc3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzY3JhdGNoKTsKLSAgICAg
ICAgbV9hc3NlbWJsZXIubXRoYzEoTUlQU1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7Ci0jZWxz
ZQotICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0Y2gp
OwotICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIEZQUmVnaXN0
ZXJJRChzY3JhdGNoICsgMSkpOwotI2VuZGlmCisgICAgICAgIG1fYXNzZW1ibGVyLnZtb3Yoc2Ny
YXRjaCwgTUlQU1JlZ2lzdGVyczo6emVybywgTUlQU1JlZ2lzdGVyczo6emVybyk7CiAgICAgICAg
IHJldHVybiBicmFuY2hEb3VibGUoRG91YmxlTm90RXF1YWwsIHJlZywgc2NyYXRjaCk7CiAgICAg
fQogCiAgICAgSnVtcCBicmFuY2hEb3VibGVaZXJvT3JOYU4oRlBSZWdpc3RlcklEIHJlZywgRlBS
ZWdpc3RlcklEIHNjcmF0Y2gpCiAgICAgewotI2lmIFdURl9NSVBTX0lTQV9SRVYoMikgJiYgV1RG
X01JUFNfRlA2NAotICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6Onplcm8s
IHNjcmF0Y2gpOwotICAgICAgICBtX2Fzc2VtYmxlci5tdGhjMShNSVBTUmVnaXN0ZXJzOjp6ZXJv
LCBzY3JhdGNoKTsKLSNlbHNlCi0gICAgICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQU1JlZ2lzdGVy
czo6emVybywgc2NyYXRjaCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQU1JlZ2lzdGVy
czo6emVybywgRlBSZWdpc3RlcklEKHNjcmF0Y2ggKyAxKSk7Ci0jZW5kaWYKKyAgICAgICAgbV9h
c3NlbWJsZXIudm1vdihzY3JhdGNoLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBNSVBTUmVnaXN0ZXJz
Ojp6ZXJvKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaERvdWJsZShEb3VibGVFcXVhbE9yVW5vcmRl
cmVkLCByZWcsIHNjcmF0Y2gpOwogICAgIH0KIAorICAgIC8vIEludmVydCBhIHJlbGF0aW9uYWwg
Y29uZGl0aW9uLCBlLmcuID09IGJlY29tZXMgIT0sIDwgYmVjb21lcyA+PSwgZXRjLgorICAgIHN0
YXRpYyBSZWxhdGlvbmFsQ29uZGl0aW9uIGludmVydChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQp
CisgICAgeworICAgICAgICBSZWxhdGlvbmFsQ29uZGl0aW9uIHI7CisgICAgICAgIGlmIChjb25k
ID09IEVxdWFsKQorICAgICAgICAgICAgciA9IE5vdEVxdWFsOworICAgICAgICBlbHNlIGlmIChj
b25kID09IE5vdEVxdWFsKQorICAgICAgICAgICAgciA9IEVxdWFsOworICAgICAgICBlbHNlIGlm
IChjb25kID09IEFib3ZlKQorICAgICAgICAgICAgciA9IEJlbG93T3JFcXVhbDsKKyAgICAgICAg
ZWxzZSBpZiAoY29uZCA9PSBBYm92ZU9yRXF1YWwpCisgICAgICAgICAgICByID0gQmVsb3c7Cisg
ICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gQmVsb3cpCisgICAgICAgICAgICByID0gQWJvdmVPckVx
dWFsOworICAgICAgICBlbHNlIGlmIChjb25kID09IEJlbG93T3JFcXVhbCkKKyAgICAgICAgICAg
IHIgPSBBYm92ZTsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBHcmVhdGVyVGhhbikKKyAgICAg
ICAgICAgIHIgPSBMZXNzVGhhbk9yRXF1YWw7CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gR3Jl
YXRlclRoYW5PckVxdWFsKQorICAgICAgICAgICAgciA9IExlc3NUaGFuOworICAgICAgICBlbHNl
IGlmIChjb25kID09IExlc3NUaGFuKQorICAgICAgICAgICAgciA9IEdyZWF0ZXJUaGFuT3JFcXVh
bDsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBMZXNzVGhhbk9yRXF1YWwpCisgICAgICAgICAg
ICByID0gR3JlYXRlclRoYW47CisgICAgICAgIHJldHVybiByOworICAgIH0KKwogICAgIHZvaWQg
bm9wKCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwpAQCAtMjIzMywxMiArMjY1
MCwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxv
Y2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRp
b24pCiAgICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgTUlQU0Fz
c2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZGF0YUxvY2F0aW9uKCks
IGRlc3RpbmF0aW9uLmRhdGFMb2NhdGlvbigpKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIHB0
cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICBNSVBTQXNzZW1ibGVyOjptYXhKdW1wUmVwbGFjZW1lbnRT
aXplKCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggNzViOWM3MC4uYzA2MDE3OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oCkBAIC05
Myw2ICs5MywyMyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKKyNpZiBDUFUoTUlQUykKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKFJlZ2lz
dGVySUQgcmVnKQorICAgIHsKKyAgICAgICAgbW92ZShyZXR1cm5BZGRyZXNzUmVnaXN0ZXIsIHJl
Zyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNz
QmVmb3JlUmV0dXJuKFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAgICAgbW92ZShyZWcsIHJl
dHVybkFkZHJlc3NSZWdpc3Rlcik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHJl
c3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEFkZHJlc3MgYWRkcmVzcykKKyAgICB7Cisg
ICAgICAgIGxvYWRQdHIoYWRkcmVzcywgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKKyAgICB9Cisj
ZW5kaWYKKwogICAgIHZvaWQgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6
Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnksIEdQUlJlZyB0bykKICAgICB7CiAgICAgICAgIGxv
YWRQdHIoQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZW50cnkgKiBzaXplb2Yo
UmVnaXN0ZXIpKSwgdG8pOwpAQCAtMTkzLDcgKzIxMCw3IEBAIHB1YmxpYzoKICAgICAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFjdGl2ZUxlbmd0aFB0cigpKSwgR1BSSW5m
bzo6cmVnVDApOwogICAgICAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKHNjcmF0Y2hTaXplKSwg
R1BSSW5mbzo6cmVnVDApOwogCi0jaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTSkKKyNpZiBDUFUo
WDg2XzY0KSB8fCBDUFUoQVJNKSB8fCBDUFUoTUlQUykKICAgICAgICAgbW92ZShUcnVzdGVkSW1t
UHRyKGFyZ3VtZW50KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICAgICAgbW92ZShHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICAgICAg
R1BSUmVnIHNjcmF0Y2ggPSBzZWxlY3RTY3JhdGNoR1BSKEdQUkluZm86OmFyZ3VtZW50R1BSMCwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ND
YWxsSGVscGVycy5oCmluZGV4IGEyNTcwYjcuLjc1NzU4NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaApAQCAtNDk3LDYgKzQ5NywxNyBAQCBwdWJsaWM6
CiAgICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjMsIGFyZzIpOwogICAgIH0KICNlbmRpZiAvLyBDUFUoQVJNX0hBUkRGUCkK
KyNlbGlmIENQVShNSVBTKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhG
UFJSZWcgYXJnMSkKKyAgICB7CisgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJn
dW1lbnRGUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHMoRlBSUmVnIGFyZzEsIEZQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShh
cmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgICAgICBtb3ZlRG91YmxlKGFyZzIsIEZQ
UkluZm86OmFyZ3VtZW50RlBSMSk7CisgICAgfQogI2Vsc2UKICNlcnJvciAiREZHIEpJVCBub3Qg
c3VwcG9ydGVkIG9uIHRoaXMgcGxhdGZvcm0uIgogI2VuZGlmCkBAIC03MTYsNyArNzI3LDcgQEAg
cHVibGljOgogI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAogICAg
IC8vIFRoZXNlIG1ldGhvZHMgYXJlIHN1aXRhYmxlIGZvciBhbnkgY2FsbGluZyBjb252ZW50aW9u
IHRoYXQgcHJvdmlkZXMgZm9yCiAgICAgLy8gZXhhY3RseSA0IGFyZ3VtZW50IHJlZ2lzdGVycywg
ZS5nLiBBUk12Ny4KLSNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID09IDQKKyNpZiBO
VU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID09IDQgJiYgIUNQVShNSVBTKQogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewogICAgICAgICBwb2tl
KGFyZzQpOwpAQCAtODE0LDcgKzgyNSwxMDEgQEAgcHVibGljOgogICAgICAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCi0jZW5kaWYgLy8g
TlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA9PSA0CisjZW5kaWYgLy8gTlVNQkVSX09GX0FS
R1VNRU5UX1JFR0lTVEVSUyA9PSA0ICYmICFDUFUoTUlQUykKKworI2lmIENQVShNSVBTKQorICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAg
ICBwb2tlKGFyZzQsIDQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0z
MiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNCwgNCk7
CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsK
KyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgR1BSUmVnIGFyZzMsIEdQ
UlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc0LCA0KTsKKyAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbVB0ciBhcmc0KQorICAgIHsKKyAg
ICAgICAgcG9rZShhcmc0LCA0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwg
VHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAg
ICAgIHBva2UoYXJnNSwgNSk7CisgICAgICAgIHBva2UoYXJnNCwgNCk7CisgICAgICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAg
ICB7CisgICAgICAgIHBva2UoYXJnNSwgNSk7CisgICAgICAgIHBva2UoYXJnNCwgNCk7CisgICAg
ICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQor
ICAgIHsKKyAgICAgICAgcG9rZShhcmc0LCA0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJl
ZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbVB0ciBhcmc0KQorICAgIHsKKyAgICAgICAg
cG9rZShhcmc0LCA0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVk
SW1tMzIgYXJnMywgVHJ1c3RlZEltbVB0ciBhcmc0KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc0
LCA0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFy
ZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BS
UmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc1LCA1KTsKKyAg
ICAgICAgcG9rZShhcmc0LCA0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBH
UFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIFRydXN0ZWRJbW1QdHIgYXJnNSkKKyAgICB7CisgICAg
ICAgIHBva2UoYXJnNSwgNSk7CisgICAgICAgIHBva2UoYXJnNCwgNCk7CisgICAgICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0z
MiBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIFRydXN0ZWRJbW0zMiBhcmc0LCBUcnVz
dGVkSW1tMzIgYXJnNSkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNSwgNSk7CisgICAgICAgIHBv
a2UoYXJnNCwgNCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgVHJ1
c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAgICAg
IHBva2UoYXJnNSwgNSk7CisgICAgICAgIHBva2UoYXJnNCwgNCk7CisgICAgICAgIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBh
cmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkK
KyAgICB7CisgICAgICAgIHBva2UoYXJnNSwgNSk7CisgICAgICAgIHBva2UoYXJnNCwgNCk7Cisg
ICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAg
ICB9CisKKyNlbmRpZiAvLyBDUFUoTUlQUykKIAogI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJ
U1RFUlMgPj0gNQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMs
IEdQUlJlZyBhcmc0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
UFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaAppbmRleCBk
NmEwMzhhLi43Zjc3MWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaApA
QCAtMTY0LDYgKzE2NCw3NCBAQCBwdWJsaWM6CiAKICNlbmRpZgogCisjaWYgQ1BVKE1JUFMpCisK
K2NsYXNzIEZQUkluZm8geworcHVibGljOgorICAgIHR5cGVkZWYgRlBSUmVnIFJlZ2lzdGVyVHlw
ZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA2OworCisg
ICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVn
VDAgPSBNSVBTUmVnaXN0ZXJzOjpmMDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDEg
PSBNSVBTUmVnaXN0ZXJzOjpmNDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDIgPSBN
SVBTUmVnaXN0ZXJzOjpmNjsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDMgPSBNSVBT
UmVnaXN0ZXJzOjpmODsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDQgPSBNSVBTUmVn
aXN0ZXJzOjpmMTA7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Q1ID0gTUlQU1JlZ2lz
dGVyczo6ZjE4OworCisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyByZXR1cm5WYWx1ZUZQUiA9IE1J
UFNSZWdpc3RlcnM6OmYwOworCisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjAg
PSBNSVBTUmVnaXN0ZXJzOjpmMTI7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQ
UjEgPSBNSVBTUmVnaXN0ZXJzOjpmMTQ7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVu
dEZQUjIgPSBNSVBTUmVnaXN0ZXJzOjpmMTA7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1
bWVudEZQUjMgPSBNSVBTUmVnaXN0ZXJzOjpmMTg7CisKKyAgICBzdGF0aWMgRlBSUmVnIHRvUmVn
aXN0ZXIodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1i
ZXJPZlJlZ2lzdGVycyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgcmVnaXN0ZXJGb3JJ
bmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7IGZwUmVnVDAsIGZwUmVnVDEsIGZwUmVnVDIsIGZw
UmVnVDMsIGZwUmVnVDQsIGZwUmVnVDUgfTsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5k
ZXhbaW5kZXhdOworICAgIH0KKworICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEZQUlJlZyBy
ZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcpOworICAgICAg
ICBBU1NFUlQocmVnIDwgMjApOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhG
b3JSZWdpc3RlclsyMF0gPSB7CisgICAgICAgICAgICAwLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJ
bmRleCwgSW52YWxpZEluZGV4LAorICAgICAgICAgICAgMSwgSW52YWxpZEluZGV4LCAyLCBJbnZh
bGlkSW5kZXgsCisgICAgICAgICAgICAzLCBJbnZhbGlkSW5kZXgsIDQsIEludmFsaWRJbmRleCwK
KyAgICAgICAgICAgIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIElu
dmFsaWRJbmRleCwKKyAgICAgICAgICAgIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCA1LCBJ
bnZhbGlkSW5kZXgsCisgICAgICAgIH07CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGluZGV4
Rm9yUmVnaXN0ZXJbcmVnXTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdCAhPSBJbnZhbGlkSW5kZXgp
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBkZWJ1Z05hbWUoRlBSUmVnIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52
YWxpZEZQUlJlZyk7CisgICAgICAgIEFTU0VSVChyZWcgPCAzMik7CisgICAgICAgIHN0YXRpYyBj
b25zdCBjaGFyKiBuYW1lRm9yUmVnaXN0ZXJbMzJdID0geworICAgICAgICAgICAgImYwIiwgImYx
IiwgImYyIiwgImYzIiwKKyAgICAgICAgICAgICJmNCIsICJmNSIsICJmNiIsICJmNyIsCisgICAg
ICAgICAgICAiZjgiLCAiZjkiLCAiZjEwIiwgImYxMSIsCisgICAgICAgICAgICAiZjEyIiwgImYx
MyIsICJmMTQiLCAiZjE1IgorICAgICAgICAgICAgImYxNiIsICJmMTciLCAiZjE4IiwgImYxOSIK
KyAgICAgICAgICAgICJmMjAiLCAiZjIxIiwgImYyMiIsICJmMjMiCisgICAgICAgICAgICAiZjI0
IiwgImYyNSIsICJmMjYiLCAiZjI3IgorICAgICAgICAgICAgImYyOCIsICJmMjkiLCAiZjMwIiwg
ImYzMSIKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOwor
ICAgIH0KK3ByaXZhdGU6CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW52YWxpZEluZGV4
ID0gMHhmZmZmZmZmZjsKK307CisKKyNlbmRpZgorCiB0eXBlZGVmIFJlZ2lzdGVyQmFuazxGUFJJ
bmZvPjo6aXRlcmF0b3IgZnByX2l0ZXJhdG9yOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZH
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCmluZGV4IDNkMDc1NTYuLmUzMDBh
YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCkBAIC00NjEsNiArNDYx
LDc0IEBAIHByaXZhdGU6CiAKICNlbmRpZgogCisjaWYgQ1BVKE1JUFMpCisjZGVmaW5lIE5VTUJF
Ul9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgNAorCitjbGFzcyBHUFJJbmZvIHsKK3B1YmxpYzoKKyAg
ICB0eXBlZGVmIEdQUlJlZyBSZWdpc3RlclR5cGU7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IG51bWJlck9mUmVnaXN0ZXJzID0gNjsKKworICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMCA9IE1JUFNSZWdpc3RlcnM6OnYwOworICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgcmVnVDEgPSBNSVBTUmVnaXN0ZXJzOjp2MTsKKyAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIHJlZ1QyID0gTUlQU1JlZ2lzdGVyczo6dDQ7CisgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyByZWdUMyA9IE1JUFNSZWdpc3RlcnM6OnQ1OworICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgcmVnVDQgPSBNSVBTUmVnaXN0ZXJzOjp0NjsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJl
Z1Q1ID0gTUlQU1JlZ2lzdGVyczo6dDc7CisgICAgLy8gVGhlc2UgcmVnaXN0ZXJzIG1hdGNoIHRo
ZSBiYXNlbGluZSBKSVQuCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdp
c3RlciA9IHJlZ1QwOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0
ZXIyID0gcmVnVDE7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9
IE1JUFNSZWdpc3RlcnM6OnMwOworICAgIC8vIFRoZXNlIGNvbnN0YW50cyBwcm92aWRlIHRoZSBu
YW1lcyBmb3IgdGhlIGdlbmVyYWwgcHVycG9zZSBhcmd1bWVudCAmIHJldHVybiB2YWx1ZSByZWdp
c3RlcnMuCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjAgPSBNSVBTUmVnaXN0
ZXJzOjphMDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMSA9IE1JUFNSZWdp
c3RlcnM6OmExOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIyID0gTUlQU1Jl
Z2lzdGVyczo6YTI7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBNSVBT
UmVnaXN0ZXJzOjphMzsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjAgPSByZWdU
MjsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjEgPSByZWdUMzsKKyAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjIgPSByZWdUNDsKKyAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIHJldHVyblZhbHVlR1BSID0gcmVnVDA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1
cm5WYWx1ZUdQUjIgPSByZWdUMTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vblByZXNlcnZl
ZE5vblJldHVybkdQUiA9IHJlZ1Q1OworCisgICAgc3RhdGljIEdQUlJlZyB0b1JlZ2lzdGVyKHVu
c2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdp
c3RlcnMpOworICAgICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVt
YmVyT2ZSZWdpc3RlcnNdID0geworICAgICAgICAgICAgcmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVn
VDMsIHJlZ1Q0LCByZWdUNSB9OworICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRl
eF07CisgICAgfQorCisgICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgoR1BSUmVnIHJlZykKKyAg
ICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIEFTU0VS
VChyZWcgPCAxNik7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmRleEZvclJlZ2lz
dGVyWzE2XSA9IHsgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIDAsIDEsIEludmFsaWRJbmRl
eCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4
LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCAyLCAzLCA0LCA1IH07
CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGluZGV4Rm9yUmVnaXN0ZXJbcmVnXTsKKyAgICAg
ICAgQVNTRVJUKHJlc3VsdCAhPSBJbnZhbGlkSW5kZXgpOworICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoR1BSUmVnIHJlZykK
KyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIEFT
U0VSVChyZWcgPCAxNik7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lRm9yUmVnaXN0
ZXJbMTZdID0geworICAgICAgICAgICAgInplcm8iLCAiYXQiLCAidjAiLCAidjEiLAorICAgICAg
ICAgICAgImEwIiwgImExIiwgImEyIiwgImEzIiwKKyAgICAgICAgICAgICJ0MCIsICJ0MSIsICJ0
MiIsICJ0MyIsCisgICAgICAgICAgICAidDQiLCAidDUiLCAidDYiLCAidDciCisgICAgICAgIH07
CisgICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0ZXJbcmVnXTsKKyAgICB9Citwcml2YXRlOgor
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEludmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7Cit9
OworCisjZW5kaWYKKwogdHlwZWRlZiBSZWdpc3RlckJhbms8R1BSSW5mbz46Oml0ZXJhdG9yIGdw
cl9pdGVyYXRvcjsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDQ0NmVhN2QuLjczN2JjYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAg
LTE1MTIsNyArMTUxMiw3IEBAIHB1YmxpYzoKIAogLy8gRW5jb2RlZEpTVmFsdWUgaW4gSlNWQUxV
RTMyXzY0IGlzIGEgNjQtYml0IGludGVnZXIuIFdoZW4gYmVpbmcgY29tcGlsZWQgaW4gQVJNIEVB
QkksIGl0IG11c3QgYmUgYWxpZ25lZCBldmVuLW51bWJlcmVkIHJlZ2lzdGVyIChyMCwgcjIgb3Ig
W3NwXSkuCiAvLyBUbyBhdm9pZCBhc3NlbWJsaWVzIGZyb20gdXNpbmcgd3JvbmcgcmVnaXN0ZXJz
LCBsZXQncyBvY2N1cHkgcjEgb3IgcjMgd2l0aCBhIGR1bW15IGFyZ3VtZW50IHdoZW4gbmVjZXNz
YXJ5LgotI2lmIENPTVBJTEVSX1NVUFBPUlRTKEVBQkkpICYmIENQVShBUk0pCisjaWYgKENPTVBJ
TEVSX1NVUFBPUlRTKEVBQkkpICYmIENQVShBUk0pKSB8fCBDUFUoTUlQUykKICNkZWZpbmUgRUFC
SV8zMkJJVF9EVU1NWV9BUkcgICAgICBUcnVzdGVkSW1tMzIoMCksCiAjZWxzZQogI2RlZmluZSBF
QUJJXzMyQklUX0RVTU1ZX0FSRwpAQCAtMTkyMiw3ICsxOTIyLDcgQEAgcHVibGljOgogICAgIH0K
ICNlbmRpZgogICAgIAotI2lmICFkZWZpbmVkKE5ERUJVRykgJiYgIUNQVShBUk0pCisjaWYgIWRl
ZmluZWQoTkRFQlVHKSAmJiAhQ1BVKEFSTSkgJiYgIUNQVShNSVBTKQogICAgIHZvaWQgcHJlcGFy
ZUZvckV4dGVybmFsQ2FsbCgpCiAgICAgewogICAgICAgICAvLyBXZSdyZSBhYm91dCB0byBjYWxs
IG91dCB0byBhICJuYXRpdmUiIGhlbHBlciBmdW5jdGlvbi4gVGhlIGhlbHBlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCmluZGV4IGQyYTkxYmEuLjQzMWZjYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKQEAgLTEyNSw2
ICsxMjUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3Rl
cklEIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6djA7CiAgICAgICAgIHN0
YXRpYyBjb25zdCBSZWdpc3RlcklEIGZpcnN0QXJndW1lbnRSZWdpc3RlciA9IE1JUFNSZWdpc3Rl
cnM6OmEwOwogICAgICAgICAKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgICAgIHN0
YXRpYyBjb25zdCBSZWdpc3RlcklEIGJ1Y2tldENvdW50ZXJSZWdpc3RlciA9IE1JUFNSZWdpc3Rl
cnM6OnMzOworI2VuZGlmCisKICAgICAgICAgLy8gcmVnVDAgbXVzdCBiZSB2MCBmb3IgcmV0dXJu
aW5nIGEgMzItYml0IHZhbHVlLgogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdU
MCA9IE1JUFNSZWdpc3RlcnM6OnYwOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKaW5kZXggMGZmYWNjYi4uMDFlNjA1OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKQEAgLTEyOSwxNCArMTI5
LDE4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAg
ICAgfQogCi0gICAgICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90IGJ1ZmZl
clNpemUpIHsgcmV0dXJuIHNpemVvZihzaXplX3QpICsgYnVmZmVyU2l6ZTsgfQorICAgICAgICBz
dGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVfdCBidWZmZXJTaXplKSB7IHJldHVybiBz
aXplb2YoU2NyYXRjaEJ1ZmZlcikgKyBidWZmZXJTaXplOyB9CiAgICAgICAgIHZvaWQgc2V0QWN0
aXZlTGVuZ3RoKHNpemVfdCBhY3RpdmVMZW5ndGgpIHsgbV9hY3RpdmVMZW5ndGggPSBhY3RpdmVM
ZW5ndGg7IH0KICAgICAgICAgc2l6ZV90IGFjdGl2ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1f
YWN0aXZlTGVuZ3RoOyB9OwogICAgICAgICBzaXplX3QqIGFjdGl2ZUxlbmd0aFB0cigpIHsgcmV0
dXJuICZtX2FjdGl2ZUxlbmd0aDsgfTsKICAgICAgICAgdm9pZCogZGF0YUJ1ZmZlcigpIHsgcmV0
dXJuIG1fYnVmZmVyOyB9CiAKICAgICAgICAgc2l6ZV90IG1fYWN0aXZlTGVuZ3RoOworI2lmIENQ
VShNSVBTKSAmJiAoZGVmaW5lZCBXVEZfTUlQU19BUkNIX1JFViAmJiBXVEZfTUlQU19BUkNIX1JF
ViA9PSAyKQorICAgICAgICB2b2lkKiBtX2J1ZmZlclswXSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVk
KDgpKSk7CisjZWxzZQogICAgICAgICB2b2lkKiBtX2J1ZmZlclswXTsKKyNlbmRpZgogICAgIH07
CiAjaWYgQ09NUElMRVIoTVNWQykKICNwcmFnbWEgd2FybmluZyhwb3ApCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDM3YTVhYmQu
LjUxMjY2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTEtMDcgIEJhbGF6cyBLaWx2YWR5
ICA8a2lsdmFkeWJAaG9tZWppbm5pLmNvbT4KKworICAgICAgICBNSVBTIERGRyBpbXBsZW1lbnRh
dGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
MTMyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1J
UFMgaW1wbGVtZW50YXRpb24gZm9yIE1JUFMuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoK
KwogMjAxMi0xMS0wNyAgQ2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwu
Y29tPgogCiAgICAgICAgIEFkZCByZXBsYWNlV2l0aExpdGVyYWwoKSBtZXRob2QgdG8gV1RGOjpT
dHJpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybS5oCmluZGV4IDBhYjgwODYuLjMxNjEwYmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAt
OTQyLDYgKzk0MiwxMCBAQAogI2lmIENQVShBUk1fVFJBRElUSU9OQUwpCiAjZGVmaW5lIEVOQUJM
RV9ERkdfSklUIDEKICNlbmRpZgorLyogRW5hYmxlIHRoZSBERkcgSklUIG9uIE1JUFMuICovCisj
aWYgQ1BVKE1JUFMpCisjZGVmaW5lIEVOQUJMRV9ERkdfSklUIDEKKyNlbmRpZgogI2VuZGlmCiAK
IC8qIElmIHRoZSBqaXQgaXMgbm90IGF2YWlsYWJsZSwgZW5hYmxlIHRoZSBMTEludCBDIExvb3A6
ICovCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173088</attachid>
            <date>2012-11-08 12:04:15 -0800</date>
            <delta_ts>2012-11-14 10:16:48 -0800</delta_ts>
            <desc>DFG for MIPS.</desc>
            <filename>mips-dfg.diff</filename>
            <type>text/plain</type>
            <size>45909</size>
            <attacher name="Balazs Kilvady">kilvadyb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDQ4ZDY2NDcuLmQyNTQ0YmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDEyLTExLTA4ICBCYWxhenMgS2lsdmFk
eSAgPGtpbHZhZHliQGhvbWVqaW5uaS5jb20+CisKKyAgICAgICAgTUlQUyBERkcgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBN
SVBTIGltcGxlbWVudGF0aW9uIGZvciBNSVBTLgorCisgICAgICAgICogYXNzZW1ibGVyL01JUFNB
c3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6TUlQU0Fzc2VtYmxlcik6
CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6OnNsbHYpOgorICAgICAgICAoSlNDOjpNSVBT
QXNzZW1ibGVyOjptb3ZkKToKKyAgICAgICAgKE1JUFNBc3NlbWJsZXIpOgorICAgICAgICAoSlND
OjpNSVBTQXNzZW1ibGVyOjpuZWdkKToKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6bGFi
ZWxGb3JXYXRjaHBvaW50KToKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6bGFiZWwpOgor
ICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjp2bW92KToKKyAgICAgICAgKEpTQzo6TUlQU0Fz
c2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6
bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyTUlQUy5oOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmFkZDMyKToKKyAg
ICAgICAgKE1hY3JvQXNzZW1ibGVyTUlQUyk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
TUlQUzo6YW5kMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmxzaGlmdDMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjptdWwzMik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6b3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyTUlQUzo6cnNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnVy
c2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6c3ViMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnhvcjMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJNSVBTOjpzdG9yZTMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJN
SVBTOjpqdW1wKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hBZGQz
Mik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoTXVsMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5jaFN1YjMyKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hOZWczMik6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyTUlQUzo6Y2FsbCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6
bW92ZURvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6c3ViRG91Ymxl
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjptdWxEb3VibGUpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmRpdkRvdWJsZSk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6bmVnYXRlRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXJNSVBTOjpicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnRydW5jYXRlRG91YmxlVG9JbnQzMik6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6dHJ1bmNhdGVEb3VibGVUb1VpbnQzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlTm9uWmVybyk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlWmVyb09yTmFOKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjppbnZlcnQpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogZGZn
L0RGR0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoQXNzZW1ibHlIZWxwZXJzKToKKyAgICAg
ICAgKEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVy
Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlUmV0dXJu
QWRkcmVzc0JlZm9yZVJldHVybik6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJz
OjpkZWJ1Z0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAg
KENDYWxsSGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFy
Z3VtZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUpOgorICAgICAgICAqIGRmZy9ERkdGUFJJbmZvLmg6CisgICAgICAgIChE
RkcpOgorICAgICAgICAoRlBSSW5mbyk6CisgICAgICAgIChKU0M6OkRGRzo6RlBSSW5mbzo6dG9S
ZWdpc3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6RlBSSW5mbzo6dG9JbmRleCk6CisgICAgICAg
IChKU0M6OkRGRzo6RlBSSW5mbzo6ZGVidWdOYW1lKToKKyAgICAgICAgKiBkZmcvREZHR1BSSW5m
by5oOgorICAgICAgICAoREZHKToKKyAgICAgICAgKEdQUkluZm8pOgorICAgICAgICAoSlNDOjpE
Rkc6OkdQUkluZm86OnRvUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkdQUkluZm86OnRv
SW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OkdQUkluZm86OmRlYnVnTmFtZSk6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6Cisg
ICAgICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAgIChKU0ludGVyZmFjZUpJVCk6
CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpTQzo6U2NyYXRj
aEJ1ZmZlcjo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoU2NyYXRjaEJ1ZmZlcik6CisKIDIw
MTItMTEtMDggIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAg
T3BhcXVlSlNDbGFzc0NvbnRleHREYXRhKCkgc2hvdWxkIHVzZSBTdHJpbmdJbXBsOjppc29sYXRl
ZENvcHkoKSB0byBtYWtlIHN0cmluZyBjb3BpZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKaW5kZXggMzBmMTcyZi4uNWFkZjNlYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKQEAgLTE1
Miw2ICsxNTIsOCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBTZWdtZW50ZWRWZWN0b3I8QXNzZW1i
bGVyTGFiZWwsIDY0PiBKdW1wczsKIAogICAgIE1JUFNBc3NlbWJsZXIoKQorICAgICAgICA6IG1f
aW5kZXhPZkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCisgICAgICAgICwgbV9pbmRleE9mVGFpbE9m
TGFzdFdhdGNocG9pbnQoSU5UX01JTikKICAgICB7CiAgICAgfQogCkBAIC0zMjUsNyArMzI3LDcg
QEAgcHVibGljOgogICAgICAgICBlbWl0SW5zdCgweDAwMDAwMDAwIHwgKHJkIDw8IE9QX1NIX1JE
KSB8IChydCA8PCBPUF9TSF9SVCkgfCAoKHNoYW10ICYgMHgxZikgPDwgT1BfU0hfU0hBTVQpKTsK
ICAgICB9CiAKLSAgICB2b2lkIHNsbHYoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBydCwgaW50
IHJzKQorICAgIHZvaWQgc2xsdihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJ0LCBSZWdpc3Rl
cklEIHJzKQogICAgIHsKICAgICAgICAgZW1pdEluc3QoMHgwMDAwMDAwNCB8IChyZCA8PCBPUF9T
SF9SRCkgfCAocnQgPDwgT1BfU0hfUlQpIHwgKHJzIDw8IE9QX1NIX1JTKSk7CiAgICAgfQpAQCAt
NTI3LDYgKzUyOSwxNiBAQCBwdWJsaWM6CiAgICAgICAgIGVtaXRJbnN0KDB4NDYyMDAwMDQgfCAo
ZmQgPDwgT1BfU0hfRkQpIHwgKGZzIDw8IE9QX1NIX0ZTKSk7CiAgICAgfQogCisgICAgdm9pZCBt
b3ZkKEZQUmVnaXN0ZXJJRCBmZCwgRlBSZWdpc3RlcklEIGZzKQorICAgIHsKKyAgICAgICAgZW1p
dEluc3QoMHg0NjIwMDAwNiB8IChmZCA8PCBPUF9TSF9GRCkgfCAoZnMgPDwgT1BfU0hfRlMpKTsK
KyAgICB9CisKKyAgICB2b2lkIG5lZ2QoRlBSZWdpc3RlcklEIGZkLCBGUFJlZ2lzdGVySUQgZnMp
CisgICAgeworICAgICAgICBlbWl0SW5zdCgweDQ2MjAwMDA3IHwgKGZkIDw8IE9QX1NIX0ZEKSB8
IChmcyA8PCBPUF9TSF9GUykpOworICAgIH0KKwogICAgIHZvaWQgdHJ1bmN3ZChGUFJlZ2lzdGVy
SUQgZmQsIEZQUmVnaXN0ZXJJRCBmcykKICAgICB7CiAgICAgICAgIGVtaXRJbnN0KDB4NDYyMDAw
MGQgfCAoZmQgPDwgT1BfU0hfRkQpIHwgKGZzIDw8IE9QX1NIX0ZTKSk7CkBAIC02MTksOSArNjMx
LDI0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fYnVmZmVyLmxhYmVsKCk7CiAgICAgfQog
CisgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWxGb3JXYXRjaHBvaW50KCkKKyAgICB7CisgICAgICAg
IEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IG1fYnVmZmVyLmxhYmVsKCk7CisgICAgICAgIGlmIChz
dGF0aWNfY2FzdDxpbnQ+KHJlc3VsdC5tX29mZnNldCkgIT0gbV9pbmRleE9mTGFzdFdhdGNocG9p
bnQpCisgICAgICAgICAgICByZXN1bHQgPSBsYWJlbCgpOworICAgICAgICBtX2luZGV4T2ZMYXN0
V2F0Y2hwb2ludCA9IHJlc3VsdC5tX29mZnNldDsKKyAgICAgICAgbV9pbmRleE9mVGFpbE9mTGFz
dFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQgKyBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCk7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgQXNzZW1ibGVyTGFiZWwgbGFi
ZWwoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYnVmZmVyLmxhYmVsKCk7CisgICAgICAgIEFz
c2VtYmxlckxhYmVsIHJlc3VsdCA9IG1fYnVmZmVyLmxhYmVsKCk7CisgICAgICAgIHdoaWxlIChV
TkxJS0VMWShzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdC5tX29mZnNldCkgPCBtX2luZGV4T2ZUYWls
T2ZMYXN0V2F0Y2hwb2ludCkpIHsKKyAgICAgICAgICAgIG5vcCgpOworICAgICAgICAgICAgcmVz
dWx0ID0gbV9idWZmZXIubGFiZWwoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgIH0KIAogICAgIEFzc2VtYmxlckxhYmVsIGFsaWduKGludCBhbGlnbm1lbnQpCkBAIC02
NjQsMTQgKzY5MSwyNCBAQCBwdWJsaWM6CiAgICAgLy8gQXNzZW1ibHkgaGVscGVycyBmb3IgbW92
aW5nIGRhdGEgYmV0d2VlbiBmcCBhbmQgcmVnaXN0ZXJzLgogICAgIHZvaWQgdm1vdihSZWdpc3Rl
cklEIHJkMSwgUmVnaXN0ZXJJRCByZDIsIEZQUmVnaXN0ZXJJRCBybikKICAgICB7CisjaWYgV1RG
X01JUFNfSVNBX1JFVigyKSAmJiBXVEZfTUlQU19GUDY0CisgICAgICAgIG1mYzEocmQxLCBybik7
CisgICAgICAgIG1maGMxKHJkMiwgcm4pOworI2Vsc2UKICAgICAgICAgbWZjMShyZDEsIHJuKTsK
ICAgICAgICAgbWZjMShyZDIsIEZQUmVnaXN0ZXJJRChybiArIDEpKTsKKyNlbmRpZgogICAgIH0K
IAogICAgIHZvaWQgdm1vdihGUFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4xLCBSZWdpc3Rl
cklEIHJuMikKICAgICB7CisjaWYgV1RGX01JUFNfSVNBX1JFVigyKSAmJiBXVEZfTUlQU19GUDY0
CisgICAgICAgIG10YzEocm4xLCByZCk7CisgICAgICAgIG10aGMxKHJuMiwgcmQpOworI2Vsc2UK
ICAgICAgICAgbXRjMShybjEsIHJkKTsKICAgICAgICAgbXRjMShybjIsIEZQUmVnaXN0ZXJJRChy
ZCArIDEpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHN0YXRpYyB1bnNpZ25lZCBnZXRDYWxsUmV0
dXJuT2Zmc2V0KEFzc2VtYmxlckxhYmVsIGNhbGwpCkBAIC04MjUsNiArODYyLDI5IEBAIHB1Ymxp
YzoKICNlbmRpZgogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lk
KiBpbnN0cnVjdGlvblN0YXJ0LCB2b2lkKiB0bykKKyAgICB7CisgICAgICAgIE1JUFNXb3JkKiBp
bnN0cnVjdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8TUlQU1dvcmQqPihpbnN0cnVjdGlvblN0YXJ0
KTsKKyAgICAgICAgaW50cHRyX3QganVtcFRvID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4o
dG8pOworCisgICAgICAgIC8vIExvYWQgdGFyZ2V0LgorICAgICAgICAvKiBsdWkgKi8KKyAgICAg
ICAgaW5zdHJ1Y3Rpb25bMF0gPSAweDNjMDAwMDAwIHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9Q
X1NIX1JUKSB8ICgoanVtcFRvID4+IDE2KSAmIDB4ZmZmZik7CisgICAgICAgIC8qIG9yaSAqLwor
ICAgICAgICBpbnN0cnVjdGlvblsxXSA9IDB4MzQwMDAwMDAgfCAoTUlQU1JlZ2lzdGVyczo6dDkg
PDwgT1BfU0hfUlQpIHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JTKSB8IChqdW1wVG8g
JiAweGZmZmYpOworICAgICAgICAvKiBqciAqLworICAgICAgICBpbnN0cnVjdGlvblsyXSA9IDB4
MDAwMDAwMDggfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlMpOworICAgICAgICAvKiBu
b3AgKi8KKyAgICAgICAgaW5zdHJ1Y3Rpb25bM10gPSAweDA7CisKKyAgICAgICAgY2FjaGVGbHVz
aChpbnN0cnVjdGlvbiwgc2l6ZW9mKE1JUFNXb3JkKSAqIDQpOworICAgIH0KKworICAgIHN0YXRp
YyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCisgICAgeworICAgICAgICByZXR1
cm4gc2l6ZW9mKE1JUFNXb3JkKSAqIDQ7CisgICAgfQorCiAgICAgc3RhdGljIHZvaWQgcmVwbGFj
ZVdpdGhMb2FkKHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCiAgICAgewogICAgICAgICBNSVBTV29y
ZCogaW5zbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8TUlQU1dvcmQqPihpbnN0cnVjdGlvblN0YXJ0KTsK
QEAgLTk5OCw2ICsxMDU4LDggQEAgcHJpdmF0ZToKIAogICAgIEFzc2VtYmxlckJ1ZmZlciBtX2J1
ZmZlcjsKICAgICBKdW1wcyBtX2p1bXBzOworICAgIGludCBtX2luZGV4T2ZMYXN0V2F0Y2hwb2lu
dDsKKyAgICBpbnQgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQ7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJNSVBTLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyTUlQUy5oCmluZGV4IGZjNmY5ZjQuLjYzYmM4MTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaApAQCAt
MTE0LDYgKzExNCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoZGVzdCwg
ZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIGFkZDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdp
c3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
YWRkdShkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCBhZGQzMihUcnVzdGVkSW1t
MzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBhZGQzMihpbW0sIGRlc3Qs
IGRlc3QpOwpAQCAtMjQ5LDYgKzI1NCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVy
LmFuZEluc24oZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKFJlZ2lz
dGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYW5kSW5zbihkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9p
ZCBhbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAg
ICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCkBAIC0yNjUsOSArMjc1LDE2IEBA
IHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgbHNoaWZ0MzIoVHJ1c3RlZElt
bTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLnNsbChkZXN0LCBkZXN0LCBpbW0ubV92YWx1ZSk7CisgICAgICAgIGlmICghaW1tLm1f
dmFsdWUgJiYgIW1fZml4ZWRXaWR0aCkKKyAgICAgICAgICAgIG1vdmUoTUlQU1JlZ2lzdGVyczo6
emVybywgZGVzdCk7CisgICAgICAgIGVsc2UgaWYgKGltbS5tX3ZhbHVlID4gMCAmJiBpbW0ubV92
YWx1ZSA8IDY1NTM1ICYmICFtX2ZpeGVkV2lkdGgpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5h
bmRpKGRlc3QsIHNyYywgaW1tLm1fdmFsdWUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYW5k
SW5zbihkZXN0LCBzcmMsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIH0KICAgICB9CiAKICAg
ICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkK
QEAgLTI3NSwxMSArMjkyLDMzIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc2xsdihk
ZXN0LCBkZXN0LCBzaGlmdEFtb3VudCk7CiAgICAgfQogCisgICAgdm9pZCBsc2hpZnQzMihSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc2xsdihkZXN0LCBzcmMsIHNoaWZ0QW1vdW50KTsKKyAg
ICB9CisKKyAgICB2b2lkIGxzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICBt
X2Fzc2VtYmxlci5zbGx2KGRlc3QsIGRlc3QsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgfQorCisg
ICAgdm9pZCBsc2hpZnQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnNsbHYoZGVzdCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIpOworICAg
IH0KKwogICAgIHZvaWQgbXVsMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm11bChkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAor
ICAgIHZvaWQgbXVsMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tdWwoZGVzdCwgb3AxLCBvcDIpOwor
ICAgIH0KKwogICAgIHZvaWQgbXVsMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmICghaW1tLm1fdmFsdWUgJiYgIW1f
Zml4ZWRXaWR0aCkKQEAgLTMzMCw2ICszNjksMjUgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2Vt
Ymxlci5vckluc24oZGVzdCwgZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCisgICAg
dm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID4gMCAmJiBpbW0u
bV92YWx1ZSA8IDY1NTM1CisgICAgICAgICAgICAmJiAhbV9maXhlZFdpZHRoKSB7CisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5vcmkoZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgICAgbGkgICAgICBk
YXRhVGVtcCwgaW1tCisgICAgICAgICAgICBvciAgICAgIGRlc3QsIHNyYywgZGF0YVRlbXAKKyAg
ICAgICAgKi8KKyAgICAgICAgbW92ZShpbW0sIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBt
X2Fzc2VtYmxlci5vckluc24oZGVzdCwgc3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisK
ICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIEFic29sdXRlQWRkcmVzcyBkZXN0KQogICAg
IHsKICAgICAgICAgbG9hZDMyKGRlc3QubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwpAQCAtMzQy
LDYgKzQwMCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnNyYXYoZGVzdCwgZGVz
dCwgc2hpZnRBbW91bnQpOwogICAgIH0KIAorICAgIHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnNyYXYoZGVzdCwgc3JjLCBzaGlmdEFtb3VudCk7CisgICAgfQorCiAg
ICAgdm9pZCByc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewogICAgICAgICBtX2Fzc2VtYmxlci5zcmEoZGVzdCwgZGVzdCwgaW1tLm1fdmFsdWUpOwpAQCAt
MzU3LDE2ICs0MjAsMzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zcmx2KGRlc3Qs
IGRlc3QsIHNoaWZ0QW1vdW50KTsKICAgICB9CiAKKyAgICB2b2lkIHVyc2hpZnQzMihSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIuc3JsdihkZXN0LCBzcmMsIHNoaWZ0QW1vdW50KTsKKyAgICB9
CisKICAgICB2b2lkIHVyc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zcmwoZGVzdCwgZGVzdCwgaW1tLm1fdmFsdWUp
OwogICAgIH0KIAorICAgIHZvaWQgdXJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1t
MzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zcmwo
ZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3Vi
dShkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgc3ViMzIoUmVnaXN0ZXJJRCBv
cDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5zdWJ1KGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKFRy
dXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChpbW0u
bV92YWx1ZSA+PSAtMzI3NjcgJiYgaW1tLm1fdmFsdWUgPD0gMzI3NjgKQEAgLTQ3Nyw2ICs1NTUs
MTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIGRlc3QsIHNy
Yyk7CiAgICAgfQogCisgICAgdm9pZCB4b3IzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBv
cDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24o
ZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0x
KSB7CkBAIC00OTIsNiArNTc1LDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIueG9y
SW5zbihkZXN0LCBkZXN0LCBpbW1UZW1wUmVnaXN0ZXIpOwogICAgIH0KIAorICAgIHZvaWQgeG9y
MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkgeworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubm9yKGRlc3QsIHNyYywgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgICAgbGkgIGltbVRlbXAs
IGltbQorICAgICAgICAgICAgeG9yIGRlc3QsIGRlc3QsIGltbVRlbXAKKyAgICAgICAgKi8KKyAg
ICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLnhv
ckluc24oZGVzdCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgIH0KKwogICAgIHZvaWQgc3Fy
dERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAg
ICAgbV9hc3NlbWJsZXIuc3FydGQoZHN0LCBzcmMpOwpAQCAtOTcxLDYgKzEwNjksNDQgQEAgcHVi
bGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCBzdG9yZTMyKFRydXN0ZWRJbW0zMiBp
bW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKGFkZHJlc3Mub2Zmc2V0
ID49IC0zMjc2OCAmJiBhZGRyZXNzLm9mZnNldCA8PSAzMjc2NyAmJiAhbV9maXhlZFdpZHRoKSB7
CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgIHNsbCAgICAgYWRkclRlbXAsIGFkZHJl
c3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUKKyAgICAgICAgICAgICAgICBhZGR1ICAgIGFkZHJUZW1w
LCBhZGRyVGVtcCwgYWRkcmVzcy5iYXNlCisgICAgICAgICAgICAgICAgc3cgICAgICBzcmMsIGFk
ZHJlc3Mub2Zmc2V0KGFkZHJUZW1wKQorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnNsbChhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoYWRkclRlbXBSZWdpc3RlciwgYWRkclRl
bXBSZWdpc3RlciwgYWRkcmVzcy5iYXNlKTsKKyAgICAgICAgICAgIGlmICghaW1tLm1fdmFsdWUp
CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3coTUlQU1JlZ2lzdGVyczo6emVybywgYWRk
clRlbXBSZWdpc3RlciwgYWRkcmVzcy5vZmZzZXQpOworICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAg
bV9hc3NlbWJsZXIuc3coaW1tVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNz
Lm9mZnNldCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAv
KgorICAgICAgICAgICAgICAgIHNsbCAgICAgYWRkclRlbXAsIGFkZHJlc3MuaW5kZXgsIGFkZHJl
c3Muc2NhbGUKKyAgICAgICAgICAgICAgICBhZGR1ICAgIGFkZHJUZW1wLCBhZGRyVGVtcCwgYWRk
cmVzcy5iYXNlCisgICAgICAgICAgICAgICAgbHVpICAgICBpbW1UZW1wLCAoYWRkcmVzcy5vZmZz
ZXQgKyAweDgwMDApID4+IDE2CisgICAgICAgICAgICAgICAgYWRkdSAgICBhZGRyVGVtcCwgYWRk
clRlbXAsIGltbVRlbXAKKyAgICAgICAgICAgICAgICBzdyAgICAgIHNyYywgKGFkZHJlc3Mub2Zm
c2V0ICYgMHhmZmZmKShhdCkKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5zbGwoYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7Cisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVn
aXN0ZXIsIGFkZHJlc3MuYmFzZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sdWkoaW1tVGVt
cFJlZ2lzdGVyLCAoYWRkcmVzcy5vZmZzZXQgKyAweDgwMDApID4+IDE2KTsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmFkZHUoYWRkclRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgaW1t
VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlmICghaW1tLm1fdmFsdWUgJiYgIW1fZml4ZWRX
aWR0aCkKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdyhNSVBTUmVnaXN0ZXJzOjp6ZXJv
LCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5zdyhpbW1UZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFk
ZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworCiAgICAg
dm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCBjb25zdCB2b2lkKiBhZGRyZXNzKQogICAgIHsK
ICAgICAgICAgLyoKQEAgLTEzMTcsNiArMTQ1MywxNSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZml4
ZWRXaWR0aCA9IGZhbHNlOwogICAgIH0KIAorICAgIHZvaWQganVtcChBYnNvbHV0ZUFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fZml4ZWRXaWR0aCA9IHRydWU7CisgICAgICAgIGxv
YWQzMihhZGRyZXNzLm1fcHRyLCBNSVBTUmVnaXN0ZXJzOjp0OSk7CisgICAgICAgIG1fYXNzZW1i
bGVyLmpyKE1JUFNSZWdpc3RlcnM6OnQ5KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7Cisg
ICAgICAgIG1fZml4ZWRXaWR0aCA9IGZhbHNlOworICAgIH0KKwogICAgIHZvaWQgbW92ZURvdWJs
ZVRvSW50cyhGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRl
c3QyKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIudm1vdihkZXN0MSwgZGVzdDIsIHNyYyk7
CkBAIC0xMzg1LDYgKzE1MzAsNTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcCgpOwog
ICAgIH0KIAorICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25k
ID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKKyAgICAgICAgaWYgKGNvbmQgPT0gT3Zl
cmZsb3cpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgbW92ZSAgICBkZXN0LCBk
YXRhVGVtcAorICAgICAgICAgICAgICAgIHhvciAgICAgY21wVGVtcCwgZGF0YVRlbXAsIHNyYwor
ICAgICAgICAgICAgICAgIGJsdHogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBkaWZmIHNp
Z24gYml0IC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgYWRkdSAgICBkZXN0LCBkYXRh
VGVtcCwgc3JjCisgICAgICAgICAgICAgICAgeG9yICAgICBjbXBUZW1wLCBkZXN0LCBkYXRhVGVt
cAorICAgICAgICAgICAgICAgIGJnZXogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBzYW1l
IHNpZ24gYmlnIC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAg
ICAgICAgYiAgICAgICBPdmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAg
ICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAg
ICAgICAgICAgIG5vcAorICAgICAgICAgICAgTm9fb3ZlcmZsb3c6CisgICAgICAgICAgICAqLwor
ICAgICAgICAgICAgbW92ZShvcDEsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9h
c3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRlbXBSZWdpc3RlciwgMTApOworICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuYWRkdShkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyLCBvcDIpOwor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIGRh
dGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVn
aXN0ZXIsIDcpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICBy
ZXR1cm4ganVtcCgpOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IFNpZ25lZCkgewor
ICAgICAgICAgICAgYWRkMzIob3AxLCBvcDIsIGRlc3QpOworICAgICAgICAgICAgLy8gQ2hlY2sg
aWYgZGVzdCBpcyBuZWdhdGl2ZS4KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1w
UmVnaXN0ZXIsIGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgcmV0dXJu
IGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gWmVybykgeworICAgICAgICAgICAgYWRkMzIo
b3AxLCBvcDIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKGRlc3QsIE1J
UFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IE5vblpl
cm8pIHsKKyAgICAgICAgICAgIGFkZDMyKG9wMSwgb3AyLCBkZXN0KTsKKyAgICAgICAgICAgIHJl
dHVybiBicmFuY2hOb3RFcXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAg
fQorICAgICAgICBBU1NFUlQoMCk7CisgICAgICAgIHJldHVybiBKdW1wKCk7CisgICAgfQorCiAg
ICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdp
c3Rlcik7CkBAIC0xMzk4LDYgKzE1OTAsMTExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJy
YW5jaEFkZDMyKGNvbmQsIGltbVRlbXBSZWdpc3RlciwgZGVzdCk7CiAgICAgfQogCisgICAgSnVt
cCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgQWJz
b2x1dGVBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZs
b3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9u
WmVybykpOworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgeworICAgICAgICAgICAgLyoK
KyAgICAgICAgICAgICAgICBtb3ZlICAgIGRhdGFUZW1wLCBkZXN0CisgICAgICAgICAgICAgICAg
eG9yaSAgICBjbXBUZW1wLCBkYXRhVGVtcCwgaW1tCisgICAgICAgICAgICAgICAgYmx0eiAgICBj
bXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIGRpZmYgc2lnbiBiaXQgLT4gbm8gb3ZlcmZsb3cKKyAg
ICAgICAgICAgICAgICBhZGRpdSAgIGRhdGFUZW1wLCBkYXRhVGVtcCwgaW1tCisgICAgICAgICAg
ICAgICAgbW92ZSAgICBkZXN0LCBkYXRhVGVtcAorICAgICAgICAgICAgICAgIHhvcmkgICAgY21w
VGVtcCwgZGF0YVRlbXAsIGltbQorICAgICAgICAgICAgICAgIGJnZXogICAgY21wVGVtcCwgTm9f
b3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24gYmlnIC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAg
ICAgbm9wCisgICAgICAgICAgICAgICAgYiAgICAgICBPdmVyZmxvdworICAgICAgICAgICAgICAg
IG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAg
ICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgTm9fb3ZlcmZsb3c6
CisgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID49IC0zMjc2OCAm
JiBpbW0ubV92YWx1ZSAgPD0gMzI3NjcgJiYgIW1fZml4ZWRXaWR0aCkgeworICAgICAgICAgICAg
ICAgIGxvYWQzMihkZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAg
ICBtX2Fzc2VtYmxlci54b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1t
Lm1fdmFsdWUpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lz
dGVyLCAxMCk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkaXUoZGF0YVRlbXBSZWdp
c3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1fdmFsdWUpOworICAgICAgICAgICAgICAgIHN0
b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdC5tX3B0cik7CisgICAgICAgICAgICAgICAgbV9h
c3NlbWJsZXIueG9yaShjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbS5tX3Zh
bHVlKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3Rlciwg
Nyk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIGxvYWQzMihkZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVy
KTsKKyAgICAgICAgICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAg
ICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdp
c3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6
KGNtcFRlbXBSZWdpc3RlciwgMTApOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGl1
KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7Cisg
ICAgICAgICAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0Lm1fcHRyKTsKKyAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBS
ZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5i
Z2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9w
KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4ganVtcCgpOworICAgICAgICB9
CisgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICBsb2FkMzIoZGVz
dC5tX3B0ciwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIGFkZDMyKGltbVRlbXBSZWdpc3Rl
ciwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3Rlciwg
ZGVzdC5tX3B0cik7CisgICAgICAgIGlmIChjb25kID09IFNpZ25lZCkgeworICAgICAgICAgICAg
Ly8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdhdGl2ZS4KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNs
dChjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8p
OworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQ
U1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gWmVybykK
KyAgICAgICAgICAgIHJldHVybiBicmFuY2hFcXVhbChkYXRhVGVtcFJlZ2lzdGVyLCBNSVBTUmVn
aXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykKKyAgICAgICAgICAg
IHJldHVybiBicmFuY2hOb3RFcXVhbChkYXRhVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6
ZXJvKTsKKyAgICAgICAgQVNTRVJUKDApOworICAgICAgICByZXR1cm4gSnVtcCgpOworICAgIH0K
KworICAgIEp1bXAgYnJhbmNoTXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQg
c3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBB
U1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0g
WmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxv
dykgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICBtdWx0ICAgIHNyYywgZGVzdAor
ICAgICAgICAgICAgICAgIG1maGkgICAgZGF0YVRlbXAKKyAgICAgICAgICAgICAgICBtZmxvICAg
IGRlc3QKKyAgICAgICAgICAgICAgICBzcmEgICAgIGFkZHJUZW1wLCBkZXN0LCAzMQorICAgICAg
ICAgICAgICAgIGJlcSAgICAgZGF0YVRlbXAsIGFkZHJUZW1wLCBOb19vdmVyZmxvdyAjIGFsbCBz
aWduIGJpdHMgKGJpdCA2MyB0byBiaXQgMzEpIGFyZSB0aGUgc2FtZSAtPiBubyBvdmVyZmxvdwor
ICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIGIgICAgICAgT3ZlcmZsb3cKKyAg
ICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBu
b3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAg
IE5vX292ZXJmbG93OgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm11
bHQoc3JjMSwgc3JjMik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tZmhpKGRhdGFUZW1wUmVn
aXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubWZsbyhkZXN0KTsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnNyYShhZGRyVGVtcFJlZ2lzdGVyLCBkZXN0LCAzMSk7CisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5iZXEoZGF0YVRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgNyk7
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAgIHJldHVybiBqdW1w
KCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7CisgICAgICAgICAg
ICBtdWwzMihzcmMxLCBzcmMyLCBkZXN0KTsKKyAgICAgICAgICAgIC8vIENoZWNrIGlmIGRlc3Qg
aXMgbmVnYXRpdmUuCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHQoY21wVGVtcFJlZ2lzdGVy
LCBkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hO
b3RFcXVhbChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9
CisgICAgICAgIGlmIChjb25kID09IFplcm8pIHsKKyAgICAgICAgICAgIG11bDMyKHNyYzEsIHNy
YzIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKGRlc3QsIE1JUFNSZWdp
c3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IE5vblplcm8pIHsK
KyAgICAgICAgICAgIG11bDMyKHNyYzEsIHNyYzIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJu
IGJyYW5jaE5vdEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9Cisg
ICAgICAgIEFTU0VSVCgwKTsKKyAgICAgICAgcmV0dXJuIEp1bXAoKTsKKyAgICB9CisKICAgICBK
dW1wIGJyYW5jaE11bDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8
fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8p
KTsKQEAgLTE0NDYsOCArMTc0Myw3IEBAIHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaE11bDMyKFJl
c3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7
Ci0gICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMyKGNv
bmQsIGltbVRlbXBSZWdpc3RlciwgZGVzdCk7CisgICAgICAgIHJldHVybiBicmFuY2hNdWwzMihj
b25kLCBpbW1UZW1wUmVnaXN0ZXIsIHNyYywgZGVzdCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFu
Y2hTdWIzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKQEAgLTE1MDYsOCArMTgwMiw2MCBAQCBwdWJsaWM6CiAgICAgSnVtcCBicmFuY2hTdWIz
MihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0s
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0
ZXIpOwotICAgICAgICBtb3ZlKHNyYywgZGVzdCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hTdWIz
Mihjb25kLCBpbW1UZW1wUmVnaXN0ZXIsIGRlc3QpOworICAgICAgICByZXR1cm4gYnJhbmNoU3Vi
MzIoY29uZCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIsIGRlc3QpOworICAgIH0KKworICAgIEp1bXAg
YnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBSZWdpc3Rl
cklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKChjb25kID09
IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25k
ID09IE5vblplcm8pKTsKKyAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKKyAgICAgICAg
ICAgIC8qCisgICAgICAgICAgICAgICAgbW92ZSAgICBkZXN0LCBkYXRhVGVtcAorICAgICAgICAg
ICAgICAgIHhvciAgICAgY21wVGVtcCwgZGF0YVRlbXAsIHNyYworICAgICAgICAgICAgICAgIGJn
ZXogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24gYml0IC0+IG5vIG92ZXJm
bG93CisgICAgICAgICAgICAgICAgc3VidSAgICBkZXN0LCBkYXRhVGVtcCwgc3JjCisgICAgICAg
ICAgICAgICAgeG9yICAgICBjbXBUZW1wLCBkZXN0LCBkYXRhVGVtcAorICAgICAgICAgICAgICAg
IGJnZXogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24gYml0IC0+IG5vIG92
ZXJmbG93CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgYiAgICAgICBPdmVy
ZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAg
ICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAg
ICAgICAgICAgTm9fb3ZlcmZsb3c6CisgICAgICAgICAgICAqLworICAgICAgICAgICAgbW92ZShv
cDEsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihj
bXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7CisgICAgICAgICAgICBtX2Fz
c2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgMTApOworICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuc3VidShkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyLCBvcDIpOworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIpOwor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDcpOworICAgICAg
ICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICByZXR1cm4ganVtcCgpOworICAg
ICAgICB9CisgICAgICAgIGlmIChjb25kID09IFNpZ25lZCkgeworICAgICAgICAgICAgc3ViMzIo
b3AxLCBvcDIsIGRlc3QpOworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdhdGl2
ZS4KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIE1J
UFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGNt
cFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGNvbmQgPT0gWmVybykgeworICAgICAgICAgICAgc3ViMzIob3AxLCBvcDIsIGRlc3QpOwor
ICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8p
OworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IE5vblplcm8pIHsKKyAgICAgICAgICAg
IHN1YjMyKG9wMSwgb3AyLCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVh
bChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQo
MCk7CisgICAgICAgIHJldHVybiBKdW1wKCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hOZWcz
MihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmNEZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubGkoZGF0YVRlbXBSZWdpc3RlciwgLTEpOworICAgICAgICByZXR1cm4g
YnJhbmNoTXVsMzIoY29uZCwgZGF0YVRlbXBSZWdpc3Rlciwgc3JjRGVzdCk7CiAgICAgfQogCiAg
ICAgSnVtcCBicmFuY2hPcjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBkZXN0KQpAQCAtMTU1OSw3ICsxOTA3LDggQEAgcHVibGljOgogCiAgICAgQ2Fs
bCBjYWxsKFJlZ2lzdGVySUQgdGFyZ2V0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuamFs
cih0YXJnZXQpOworICAgICAgICBtb3ZlKHRhcmdldCwgTUlQU1JlZ2lzdGVyczo6dDkpOworICAg
ICAgICBtX2Fzc2VtYmxlci5qYWxyKE1JUFNSZWdpc3RlcnM6OnQ5KTsKICAgICAgICAgbV9hc3Nl
bWJsZXIubm9wKCk7CiAgICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVyLmxhYmVsKCksIENh
bGw6Ok5vbmUpOwogICAgIH0KQEAgLTE5OTAsNiArMjMzOSwxMSBAQCBwdWJsaWM6CiAjZW5kaWYK
ICAgICB9CiAKKyAgICB2b2lkIG1vdmVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZkKGRlc3QsIHNyYyk7Cisg
ICAgfQorCiAgICAgdm9pZCBhZGREb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hZGRkKGRlc3QsIGRlc3QsIHNyYyk7
CkBAIC0yMDE3LDYgKzIzNzEsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zdWJk
KGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBzdWJEb3VibGUoRlBSZWdpc3Rl
cklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5zdWJkKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lk
IHN1YkRvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAg
ICBsb2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIpOwpAQCAtMjAzNCwxMSArMjM5MywzMiBA
QCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm11bGQoZGVzdCwgZGVzdCwgZnBUZW1wUmVn
aXN0ZXIpOwogICAgIH0KIAorICAgIHZvaWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQ
UmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubXVsZChkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCBkaXZEb3VibGUo
RlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fz
c2VtYmxlci5kaXZkKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBkaXZEb3Vi
bGUoRlBSZWdpc3RlcklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5kaXZkKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9
CisKKyAgICB2b2lkIGRpdkRvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBsb2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIpOworICAgICAgICBt
X2Fzc2VtYmxlci5kaXZkKGRlc3QsIGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKKyAg
ICB2b2lkIG5lZ2F0ZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ2QoZGVzdCwgc3JjKTsKKyAgICB9CisKICAg
ICB2b2lkIGNvbnZlcnRJbnQzMlRvRG91YmxlKFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm10YzEoc3JjLCBmcFRlbXBSZWdpc3Rl
cik7CkBAIC0yMTczLDExICsyNTUzLDMzIEBAIHB1YmxpYzoKICAgICAvLyBJZiB0aGUgcmVzdWx0
IGlzIG5vdCByZXByZXNlbnRhYmxlIGFzIGEgMzIgYml0IHZhbHVlLCBicmFuY2guCiAgICAgLy8g
TWF5IGFsc28gYnJhbmNoIGZvciBzb21lIHZhbHVlcyB0aGF0IGFyZSByZXByZXNlbnRhYmxlIGlu
IDMyIGJpdHMKICAgICAvLyAoc3BlY2lmaWNhbGx5LCBpbiB0aGlzIGNhc2UsIElOVF9NQVggMHg3
ZmZmZmZmZikuCi0gICAgSnVtcCBicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoRlBSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIGVudW0gQnJhbmNoVHJ1bmNhdGVUeXBlIHsg
QnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCwgQnJhbmNoSWZUcnVuY2F0ZVN1Y2Nlc3NmdWwgfTsKKyAg
ICBKdW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QsIEJyYW5jaFRydW5jYXRlVHlwZSBicmFuY2hUeXBlID0gQnJhbmNoSWZUcnVu
Y2F0ZUZhaWxlZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnRydW5jd2QoZnBUZW1wUmVn
aXN0ZXIsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1mYzEoZGVzdCwgZnBUZW1wUmVnaXN0
ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoYnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRydW5j
YXRlRmFpbGVkID8gRXF1YWwgOiBOb3RFcXVhbCwgZGVzdCwgVHJ1c3RlZEltbTMyKDB4N2ZmZmZm
ZmYpKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIoRlBS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBCcmFuY2hUcnVuY2F0ZVR5cGUgYnJhbmNo
VHlwZSA9IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci50cnVuY3dkKGZwVGVtcFJlZ2lzdGVyLCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci5tZmMx
KGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGJyYW5jaFR5
cGUgPT0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCA/IEVxdWFsIDogTm90RXF1YWwsIGRlc3QsIFRy
dXN0ZWRJbW0zMigwKSk7CisgICAgfQorCisgICAgLy8gUmVzdWx0IGlzIHVuZGVmaW5lZCBpZiB0
aGUgdmFsdWUgaXMgb3V0c2lkZSBvZiB0aGUgaW50ZWdlciByYW5nZS4KKyAgICB2b2lkIHRydW5j
YXRlRG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci50cnVuY3dkKGZwVGVtcFJlZ2lzdGVyLCBzcmMpOworICAg
ICAgICBtX2Fzc2VtYmxlci5tZmMxKGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKKyAg
ICAvLyBSZXN1bHQgaXMgdW5kZWZpbmVkIGlmIHNyYyA+IDJeMzEKKyAgICB2b2lkIHRydW5jYXRl
RG91YmxlVG9VaW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICAgICAgICAgbV9hc3NlbWJsZXIudHJ1bmN3ZChmcFRlbXBSZWdpc3Rlciwgc3JjKTsKICAgICAg
ICAgbV9hc3NlbWJsZXIubWZjMShkZXN0LCBmcFRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVy
biBicmFuY2gzMihFcXVhbCwgZGVzdCwgVHJ1c3RlZEltbTMyKDB4N2ZmZmZmZmYpKTsKICAgICB9
CiAKICAgICAvLyBDb252ZXJ0ICdzcmMnIHRvIGFuIGludGVnZXIsIGFuZCBwbGFjZXMgdGhlIHJl
c3VsdGluZyAnZGVzdCcuCkBAIC0yMTk5LDI4ICsyNjAxLDQzIEBAIHB1YmxpYzoKIAogICAgIEp1
bXAgYnJhbmNoRG91YmxlTm9uWmVybyhGUFJlZ2lzdGVySUQgcmVnLCBGUFJlZ2lzdGVySUQgc2Ny
YXRjaCkKICAgICB7Ci0jaWYgV1RGX01JUFNfSVNBX1JFVigyKSAmJiBXVEZfTUlQU19GUDY0Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQU1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLm10aGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0Y2gpOwot
I2Vsc2UKLSAgICAgICAgbV9hc3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzY3Jh
dGNoKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBGUFJl
Z2lzdGVySUQoc2NyYXRjaCArIDEpKTsKLSNlbmRpZgorICAgICAgICBtX2Fzc2VtYmxlci52bW92
KHNjcmF0Y2gsIE1JUFNSZWdpc3RlcnM6Onplcm8sIE1JUFNSZWdpc3RlcnM6Onplcm8pOwogICAg
ICAgICByZXR1cm4gYnJhbmNoRG91YmxlKERvdWJsZU5vdEVxdWFsLCByZWcsIHNjcmF0Y2gpOwog
ICAgIH0KIAogICAgIEp1bXAgYnJhbmNoRG91YmxlWmVyb09yTmFOKEZQUmVnaXN0ZXJJRCByZWcs
IEZQUmVnaXN0ZXJJRCBzY3JhdGNoKQogICAgIHsKLSNpZiBXVEZfTUlQU19JU0FfUkVWKDIpICYm
IFdURl9NSVBTX0ZQNjQKLSAgICAgICAgbV9hc3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6
ZXJvLCBzY3JhdGNoKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubXRoYzEoTUlQU1JlZ2lzdGVyczo6
emVybywgc2NyYXRjaCk7Ci0jZWxzZQotICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdp
c3RlcnM6Onplcm8sIHNjcmF0Y2gpOwotICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdp
c3RlcnM6Onplcm8sIEZQUmVnaXN0ZXJJRChzY3JhdGNoICsgMSkpOwotI2VuZGlmCisgICAgICAg
IG1fYXNzZW1ibGVyLnZtb3Yoc2NyYXRjaCwgTUlQU1JlZ2lzdGVyczo6emVybywgTUlQU1JlZ2lz
dGVyczo6emVybyk7CiAgICAgICAgIHJldHVybiBicmFuY2hEb3VibGUoRG91YmxlRXF1YWxPclVu
b3JkZXJlZCwgcmVnLCBzY3JhdGNoKTsKICAgICB9CiAKKyAgICAvLyBJbnZlcnQgYSByZWxhdGlv
bmFsIGNvbmRpdGlvbiwgZS5nLiA9PSBiZWNvbWVzICE9LCA8IGJlY29tZXMgPj0sIGV0Yy4KKyAg
ICBzdGF0aWMgUmVsYXRpb25hbENvbmRpdGlvbiBpbnZlcnQoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kKQorICAgIHsKKyAgICAgICAgUmVsYXRpb25hbENvbmRpdGlvbiByOworICAgICAgICBpZiAo
Y29uZCA9PSBFcXVhbCkKKyAgICAgICAgICAgIHIgPSBOb3RFcXVhbDsKKyAgICAgICAgZWxzZSBp
ZiAoY29uZCA9PSBOb3RFcXVhbCkKKyAgICAgICAgICAgIHIgPSBFcXVhbDsKKyAgICAgICAgZWxz
ZSBpZiAoY29uZCA9PSBBYm92ZSkKKyAgICAgICAgICAgIHIgPSBCZWxvd09yRXF1YWw7CisgICAg
ICAgIGVsc2UgaWYgKGNvbmQgPT0gQWJvdmVPckVxdWFsKQorICAgICAgICAgICAgciA9IEJlbG93
OworICAgICAgICBlbHNlIGlmIChjb25kID09IEJlbG93KQorICAgICAgICAgICAgciA9IEFib3Zl
T3JFcXVhbDsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBCZWxvd09yRXF1YWwpCisgICAgICAg
ICAgICByID0gQWJvdmU7CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gR3JlYXRlclRoYW4pCisg
ICAgICAgICAgICByID0gTGVzc1RoYW5PckVxdWFsOworICAgICAgICBlbHNlIGlmIChjb25kID09
IEdyZWF0ZXJUaGFuT3JFcXVhbCkKKyAgICAgICAgICAgIHIgPSBMZXNzVGhhbjsKKyAgICAgICAg
ZWxzZSBpZiAoY29uZCA9PSBMZXNzVGhhbikKKyAgICAgICAgICAgIHIgPSBHcmVhdGVyVGhhbk9y
RXF1YWw7CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gTGVzc1RoYW5PckVxdWFsKQorICAgICAg
ICAgICAgciA9IEdyZWF0ZXJUaGFuOworICAgICAgICByZXR1cm4gcjsKKyAgICB9CisKICAgICB2
b2lkIG5vcCgpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKQEAgLTIyMzMsMTIg
KzI2NTAsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENv
ZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3Rp
bmF0aW9uKQogICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIE1J
UFNBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmRhdGFMb2NhdGlv
bigpLCBkZXN0aW5hdGlvbi5kYXRhTG9jYXRpb24oKSk7CiAgICAgfQogICAgIAogICAgIHN0YXRp
YyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCiAgICAgewotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgTUlQU0Fzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2Vt
ZW50U2l6ZSgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IDc1YjljNzAuLmMwNjAxNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaApA
QCAtOTMsNiArOTMsMjMgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogCisjaWYgQ1BVKE1JUFMp
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChS
ZWdpc3RlcklEIHJlZykKKyAgICB7CisgICAgICAgIG1vdmUocmV0dXJuQWRkcmVzc1JlZ2lzdGVy
LCByZWcpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybihSZWdpc3RlcklEIHJlZykKKyAgICB7CisgICAgICAgIG1vdmUocmVn
LCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBsb2FkUHRyKGFkZHJlc3MsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7CisgICAg
fQorI2VuZGlmCisKICAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3Rh
Y2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5LCBHUFJSZWcgdG8pCiAgICAgewogICAgICAg
ICBsb2FkUHRyKEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5ICogc2l6
ZW9mKFJlZ2lzdGVyKSksIHRvKTsKQEAgLTE5Myw3ICsyMTAsNyBAQCBwdWJsaWM6CiAgICAgICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hY3RpdmVMZW5ndGhQdHIoKSksIEdQ
UkluZm86OnJlZ1QwKTsKICAgICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihzY3JhdGNoU2l6
ZSksIEdQUkluZm86OnJlZ1QwKTsKIAotI2lmIENQVShYODZfNjQpIHx8IENQVShBUk0pCisjaWYg
Q1BVKFg4Nl82NCkgfHwgQ1BVKEFSTSkgfHwgQ1BVKE1JUFMpCiAgICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihhcmd1bWVudCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAgICAgICAgIG1vdmUo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAg
ICAgIEdQUlJlZyBzY3JhdGNoID0gc2VsZWN0U2NyYXRjaEdQUihHUFJJbmZvOjphcmd1bWVudEdQ
UjAsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDQ2FsbEhlbHBlcnMuaAppbmRleCBhMjU3MGI3Li43NTc1ODQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgKQEAgLTQ5Nyw2ICs0OTcsMTcgQEAgcHVi
bGljOgogICAgICAgICBhc3NlbWJsZXIoKS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BS
SW5mbzo6YXJndW1lbnRHUFIzLCBhcmcyKTsKICAgICB9CiAjZW5kaWYgLy8gQ1BVKEFSTV9IQVJE
RlApCisjZWxpZiBDUFUoTUlQUykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHMoRlBSUmVnIGFyZzEpCisgICAgeworICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86
OmFyZ3VtZW50RlBSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzKEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIG1vdmVEb3Vi
bGUoYXJnMSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICAgICAgbW92ZURvdWJsZShhcmcy
LCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgIH0KICNlbHNlCiAjZXJyb3IgIkRGRyBKSVQg
bm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKICNlbmRpZgpAQCAtNzE2LDcgKzcyNyw3
IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID49IDQK
ICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzdWl0YWJsZSBmb3IgYW55IGNhbGxpbmcgY29udmVu
dGlvbiB0aGF0IHByb3ZpZGVzIGZvcgogICAgIC8vIGV4YWN0bHkgNCBhcmd1bWVudCByZWdpc3Rl
cnMsIGUuZy4gQVJNdjcuCi0jaWYgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA9PSA0Cisj
aWYgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA9PSA0ICYmICFDUFUoTUlQUykKICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcx
LCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKICAgICAgICAg
cG9rZShhcmc0KTsKQEAgLTgxNCw3ICs4MjUsMTAxIEBAIHB1YmxpYzoKICAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAotI2VuZGlm
IC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNAorI2VuZGlmIC8vIE5VTUJFUl9P
Rl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNCAmJiAhQ1BVKE1JUFMpCisKKyNpZiBDUFUoTUlQUykK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAg
ICAgICAgcG9rZShhcmc0LCA0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVk
SW1tMzIgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQpCisgICAgeworICAgICAgICBwb2tlKGFyZzQs
IDQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJn
Myk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBhcmcz
LCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNCwgNCk7CisgICAgICAgIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkKKyAgICB7
CisgICAgICAgIHBva2UoYXJnNCwgNCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFy
ZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgewor
ICAgICAgICBwb2tlKGFyZzUsIDUpOworICAgICAgICBwb2tlKGFyZzQsIDQpOworICAgICAgICBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUp
CisgICAgeworICAgICAgICBwb2tlKGFyZzUsIDUpOworICAgICAgICBwb2tlKGFyZzQsIDQpOwor
ICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Cisg
ICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJn
NCkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNCwgNCk7CisgICAgICAgIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBH
UFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkKKyAgICB7CisgICAg
ICAgIHBva2UoYXJnNCwgNCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1
c3RlZEltbTMyIGFyZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2Uo
YXJnNCwgNCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMs
IEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNSwgNSk7
CisgICAgICAgIHBva2UoYXJnNCwgNCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJn
MiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBUcnVzdGVkSW1tUHRyIGFyZzUpCisgICAgewor
ICAgICAgICBwb2tlKGFyZzUsIDUpOworICAgICAgICBwb2tlKGFyZzQsIDQpOworICAgICAgICBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCwg
VHJ1c3RlZEltbTMyIGFyZzUpCisgICAgeworICAgICAgICBwb2tlKGFyZzUsIDUpOworICAgICAg
ICBwb2tlKGFyZzQsIDQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIs
IFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAg
ICAgICBwb2tlKGFyZzUsIDUpOworICAgICAgICBwb2tlKGFyZzQsIDQpOworICAgICAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
MzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFy
ZzUpCisgICAgeworICAgICAgICBwb2tlKGFyZzUsIDUpOworICAgICAgICBwb2tlKGFyZzQsIDQp
OworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7
CisgICAgfQorCisjZW5kaWYgLy8gQ1BVKE1JUFMpCiAKICNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRf
UkVHSVNURVJTID49IDUKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBh
cmczLCBHUFJSZWcgYXJnNCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRlBSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmgKaW5k
ZXggZDZhMDM4YS4uN2Y3NzFhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZv
LmgKQEAgLTE2NCw2ICsxNjQsNzQgQEAgcHVibGljOgogCiAjZW5kaWYKIAorI2lmIENQVShNSVBT
KQorCitjbGFzcyBGUFJJbmZvIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEZQUlJlZyBSZWdpc3Rl
clR5cGU7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gNjsK
KworICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBm
cFJlZ1QwID0gTUlQU1JlZ2lzdGVyczo6ZjA7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJl
Z1QxID0gTUlQU1JlZ2lzdGVyczo6ZjQ7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Qy
ID0gTUlQU1JlZ2lzdGVyczo6ZjY7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QzID0g
TUlQU1JlZ2lzdGVyczo6Zjg7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Q0ID0gTUlQ
U1JlZ2lzdGVyczo6ZjEwOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNSA9IE1JUFNS
ZWdpc3RlcnM6OmYxODsKKworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgcmV0dXJuVmFsdWVGUFIg
PSBNSVBTUmVnaXN0ZXJzOjpmMDsKKworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRG
UFIwID0gTUlQU1JlZ2lzdGVyczo6ZjEyOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1l
bnRGUFIxID0gTUlQU1JlZ2lzdGVyczo6ZjE0OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJn
dW1lbnRGUFIyID0gTUlQU1JlZ2lzdGVyczo6ZjEwOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcg
YXJndW1lbnRGUFIzID0gTUlQU1JlZ2lzdGVyczo6ZjE4OworCisgICAgc3RhdGljIEZQUlJlZyB0
b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwg
bnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAgICBzdGF0aWMgY29uc3QgRlBSUmVnIHJlZ2lzdGVy
Rm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0geyBmcFJlZ1QwLCBmcFJlZ1QxLCBmcFJlZ1Qy
LCBmcFJlZ1QzLCBmcFJlZ1Q0LCBmcFJlZ1Q1IH07CisgICAgICAgIHJldHVybiByZWdpc3RlckZv
ckluZGV4W2luZGV4XTsKKyAgICB9CisKKyAgICBzdGF0aWMgdW5zaWduZWQgdG9JbmRleChGUFJS
ZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkRlBSUmVnKTsKKyAg
ICAgICAgQVNTRVJUKHJlZyA8IDIwKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGlu
ZGV4Rm9yUmVnaXN0ZXJbMjBdID0geworICAgICAgICAgICAgMCwgSW52YWxpZEluZGV4LCBJbnZh
bGlkSW5kZXgsIEludmFsaWRJbmRleCwKKyAgICAgICAgICAgIDEsIEludmFsaWRJbmRleCwgMiwg
SW52YWxpZEluZGV4LAorICAgICAgICAgICAgMywgSW52YWxpZEluZGV4LCA0LCBJbnZhbGlkSW5k
ZXgsCisgICAgICAgICAgICBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4
LCBJbnZhbGlkSW5kZXgsCisgICAgICAgICAgICBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwg
NSwgSW52YWxpZEluZGV4LAorICAgICAgICB9OworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBp
bmRleEZvclJlZ2lzdGVyW3JlZ107CisgICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxpZElu
ZGV4KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3Qg
Y2hhciogZGVidWdOYW1lKEZQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9
IEludmFsaWRGUFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwgMzIpOworICAgICAgICBzdGF0
aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzMyXSA9IHsKKyAgICAgICAgICAgICJmMCIs
ICJmMSIsICJmMiIsICJmMyIsCisgICAgICAgICAgICAiZjQiLCAiZjUiLCAiZjYiLCAiZjciLAor
ICAgICAgICAgICAgImY4IiwgImY5IiwgImYxMCIsICJmMTEiLAorICAgICAgICAgICAgImYxMiIs
ICJmMTMiLCAiZjE0IiwgImYxNSIKKyAgICAgICAgICAgICJmMTYiLCAiZjE3IiwgImYxOCIsICJm
MTkiCisgICAgICAgICAgICAiZjIwIiwgImYyMSIsICJmMjIiLCAiZjIzIgorICAgICAgICAgICAg
ImYyNCIsICJmMjUiLCAiZjI2IiwgImYyNyIKKyAgICAgICAgICAgICJmMjgiLCAiZjI5IiwgImYz
MCIsICJmMzEiCisgICAgICAgIH07CisgICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0ZXJbcmVn
XTsKKyAgICB9Citwcml2YXRlOgorCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEludmFsaWRJ
bmRleCA9IDB4ZmZmZmZmZmY7Cit9OworCisjZW5kaWYKKwogdHlwZWRlZiBSZWdpc3RlckJhbms8
RlBSSW5mbz46Oml0ZXJhdG9yIGZwcl9pdGVyYXRvcjsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaAppbmRleCAzZDA3NTU2Li5l
MzAwYWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaApAQCAtNDYxLDYg
KzQ2MSw3NCBAQCBwcml2YXRlOgogCiAjZW5kaWYKIAorI2lmIENQVShNSVBTKQorI2RlZmluZSBO
VU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDQKKworY2xhc3MgR1BSSW5mbyB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBHUFJSZWcgUmVnaXN0ZXJUeXBlOworICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDY7CisKKyAgICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJz
LgorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDAgPSBNSVBTUmVnaXN0ZXJzOjp2MDsKKyAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QxID0gTUlQU1JlZ2lzdGVyczo6djE7CisgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyByZWdUMiA9IE1JUFNSZWdpc3RlcnM6OnQ0OworICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgcmVnVDMgPSBNSVBTUmVnaXN0ZXJzOjp0NTsKKyAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIHJlZ1Q0ID0gTUlQU1JlZ2lzdGVyczo6dDY7CisgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyByZWdUNSA9IE1JUFNSZWdpc3RlcnM6OnQ3OworICAgIC8vIFRoZXNlIHJlZ2lzdGVycyBtYXRj
aCB0aGUgYmFzZWxpbmUgSklULgorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0
UmVnaXN0ZXIgPSByZWdUMDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJl
Z2lzdGVyMiA9IHJlZ1QxOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0
ZXIgPSBNSVBTUmVnaXN0ZXJzOjpzMDsKKyAgICAvLyBUaGVzZSBjb25zdGFudHMgcHJvdmlkZSB0
aGUgbmFtZXMgZm9yIHRoZSBnZW5lcmFsIHB1cnBvc2UgYXJndW1lbnQgJiByZXR1cm4gdmFsdWUg
cmVnaXN0ZXJzLgorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIwID0gTUlQU1Jl
Z2lzdGVyczo6YTA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjEgPSBNSVBT
UmVnaXN0ZXJzOjphMTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMiA9IE1J
UFNSZWdpc3RlcnM6OmEyOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIzID0g
TUlQU1JlZ2lzdGVyczo6YTM7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIwID0g
cmVnVDI7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIxID0gcmVnVDM7CisgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIyID0gcmVnVDQ7CisgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IHJlZ1QwOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
cmV0dXJuVmFsdWVHUFIyID0gcmVnVDE7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25QcmVz
ZXJ2ZWROb25SZXR1cm5HUFIgPSByZWdUNTsKKworICAgIHN0YXRpYyBHUFJSZWcgdG9SZWdpc3Rl
cih1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9m
UmVnaXN0ZXJzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdpc3RlckZvckluZGV4
W251bWJlck9mUmVnaXN0ZXJzXSA9IHsKKyAgICAgICAgICAgIHJlZ1QwLCByZWdUMSwgcmVnVDIs
IHJlZ1QzLCByZWdUNCwgcmVnVDUgfTsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhb
aW5kZXhdOworICAgIH0KKworICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEdQUlJlZyByZWcp
CisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBB
U1NFUlQocmVnIDwgMTYpOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JS
ZWdpc3RlclsxNl0gPSB7IEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCAwLCAxLCBJbnZhbGlk
SW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJ
bmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgMiwgMywgNCwg
NSB9OworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBpbmRleEZvclJlZ2lzdGVyW3JlZ107Cisg
ICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxpZEluZGV4KTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEdQUlJlZyBy
ZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAg
ICBBU1NFUlQocmVnIDwgMTYpOworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJl
Z2lzdGVyWzE2XSA9IHsKKyAgICAgICAgICAgICJ6ZXJvIiwgImF0IiwgInYwIiwgInYxIiwKKyAg
ICAgICAgICAgICJhMCIsICJhMSIsICJhMiIsICJhMyIsCisgICAgICAgICAgICAidDAiLCAidDEi
LCAidDIiLCAidDMiLAorICAgICAgICAgICAgInQ0IiwgInQ1IiwgInQ2IiwgInQ3IgorICAgICAg
ICB9OworICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107CisgICAgfQorcHJpdmF0
ZToKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZmZmZmZmZm
OworfTsKKworI2VuZGlmCisKIHR5cGVkZWYgUmVnaXN0ZXJCYW5rPEdQUkluZm8+OjppdGVyYXRv
ciBncHJfaXRlcmF0b3I7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA0NDZlYTdkLi43Mzdi
Y2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CkBAIC0xNTEyLDcgKzE1MTIsNyBAQCBwdWJsaWM6CiAKIC8vIEVuY29kZWRKU1ZhbHVlIGluIEpT
VkFMVUUzMl82NCBpcyBhIDY0LWJpdCBpbnRlZ2VyLiBXaGVuIGJlaW5nIGNvbXBpbGVkIGluIEFS
TSBFQUJJLCBpdCBtdXN0IGJlIGFsaWduZWQgZXZlbi1udW1iZXJlZCByZWdpc3RlciAocjAsIHIy
IG9yIFtzcF0pLgogLy8gVG8gYXZvaWQgYXNzZW1ibGllcyBmcm9tIHVzaW5nIHdyb25nIHJlZ2lz
dGVycywgbGV0J3Mgb2NjdXB5IHIxIG9yIHIzIHdpdGggYSBkdW1teSBhcmd1bWVudCB3aGVuIG5l
Y2Vzc2FyeS4KLSNpZiBDT01QSUxFUl9TVVBQT1JUUyhFQUJJKSAmJiBDUFUoQVJNKQorI2lmIChD
T01QSUxFUl9TVVBQT1JUUyhFQUJJKSAmJiBDUFUoQVJNKSkgfHwgQ1BVKE1JUFMpCiAjZGVmaW5l
IEVBQklfMzJCSVRfRFVNTVlfQVJHICAgICAgVHJ1c3RlZEltbTMyKDApLAogI2Vsc2UKICNkZWZp
bmUgRUFCSV8zMkJJVF9EVU1NWV9BUkcKQEAgLTE5MjIsNyArMTkyMiw3IEBAIHB1YmxpYzoKICAg
ICB9CiAjZW5kaWYKICAgICAKLSNpZiAhZGVmaW5lZChOREVCVUcpICYmICFDUFUoQVJNKQorI2lm
ICFkZWZpbmVkKE5ERUJVRykgJiYgIUNQVShBUk0pICYmICFDUFUoTUlQUykKICAgICB2b2lkIHBy
ZXBhcmVGb3JFeHRlcm5hbENhbGwoKQogICAgIHsKICAgICAgICAgLy8gV2UncmUgYWJvdXQgdG8g
Y2FsbCBvdXQgdG8gYSAibmF0aXZlIiBoZWxwZXIgZnVuY3Rpb24uIFRoZSBoZWxwZXIKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAppbmRleCBkMmE5MWJhLi40MzFm
Y2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklU
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCkBAIC0x
MjUsNiArMTI1LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgUmVn
aXN0ZXJJRCBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OnYwOwogICAgICAg
ICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmaXJzdEFyZ3VtZW50UmVnaXN0ZXIgPSBNSVBTUmVn
aXN0ZXJzOjphMDsKICAgICAgICAgCisjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgICAg
ICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBidWNrZXRDb3VudGVyUmVnaXN0ZXIgPSBNSVBTUmVn
aXN0ZXJzOjpzMzsKKyNlbmRpZgorCiAgICAgICAgIC8vIHJlZ1QwIG11c3QgYmUgdjAgZm9yIHJl
dHVybmluZyBhIDMyLWJpdCB2YWx1ZS4KICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQg
cmVnVDAgPSBNSVBTUmVnaXN0ZXJzOjp2MDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCmluZGV4IDBmZmFjY2IuLjAxZTYwNTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCkBAIC0xMjksMTQg
KzEyOSwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVfdCBi
dWZmZXJTaXplKSB7IHJldHVybiBzaXplb2Yoc2l6ZV90KSArIGJ1ZmZlclNpemU7IH0KKyAgICAg
ICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkgeyByZXR1
cm4gc2l6ZW9mKFNjcmF0Y2hCdWZmZXIpICsgYnVmZmVyU2l6ZTsgfQogICAgICAgICB2b2lkIHNl
dEFjdGl2ZUxlbmd0aChzaXplX3QgYWN0aXZlTGVuZ3RoKSB7IG1fYWN0aXZlTGVuZ3RoID0gYWN0
aXZlTGVuZ3RoOyB9CiAgICAgICAgIHNpemVfdCBhY3RpdmVMZW5ndGgoKSBjb25zdCB7IHJldHVy
biBtX2FjdGl2ZUxlbmd0aDsgfTsKICAgICAgICAgc2l6ZV90KiBhY3RpdmVMZW5ndGhQdHIoKSB7
IHJldHVybiAmbV9hY3RpdmVMZW5ndGg7IH07CiAgICAgICAgIHZvaWQqIGRhdGFCdWZmZXIoKSB7
IHJldHVybiBtX2J1ZmZlcjsgfQogCiAgICAgICAgIHNpemVfdCBtX2FjdGl2ZUxlbmd0aDsKKyNp
ZiBDUFUoTUlQUykgJiYgKGRlZmluZWQgV1RGX01JUFNfQVJDSF9SRVYgJiYgV1RGX01JUFNfQVJD
SF9SRVYgPT0gMikKKyAgICAgICAgdm9pZCogbV9idWZmZXJbMF0gX19hdHRyaWJ1dGVfXygoYWxp
Z25lZCg4KSkpOworI2Vsc2UKICAgICAgICAgdm9pZCogbV9idWZmZXJbMF07CisjZW5kaWYKICAg
ICB9OwogI2lmIENPTVBJTEVSKE1TVkMpCiAjcHJhZ21hIHdhcm5pbmcocG9wKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAyNGY2
MjExLi4xMTIxZjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTExLTA4ICBCYWxhenMgS2ls
dmFkeSAgPGtpbHZhZHliQGhvbWVqaW5uaS5jb20+CisKKyAgICAgICAgTUlQUyBERkcgaW1wbGVt
ZW50YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDEzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNSVBTIGltcGxlbWVudGF0aW9uIGZvciBNSVBTLgorCisgICAgICAgICogd3RmL1BsYXRmb3Jt
Lmg6CisKIDIwMTItMTEtMDggIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAK
ICAgICAgICAgSGFzaEFuZFVURjhDaGFyYWN0ZXJzVHJhbnNsYXRvciBzaG91bGQgY3JlYXRlIGFu
IDggYml0IHN0cmluZyBpZiBwb3NzaWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggMGFiODA4Ni4uMzE2MTBi
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybS5oCkBAIC05NDIsNiArOTQyLDEwIEBACiAjaWYgQ1BVKEFSTV9UUkFESVRJ
T05BTCkKICNkZWZpbmUgRU5BQkxFX0RGR19KSVQgMQogI2VuZGlmCisvKiBFbmFibGUgdGhlIERG
RyBKSVQgb24gTUlQUy4gKi8KKyNpZiBDUFUoTUlQUykKKyNkZWZpbmUgRU5BQkxFX0RGR19KSVQg
MQorI2VuZGlmCiAjZW5kaWYKIAogLyogSWYgdGhlIGppdCBpcyBub3QgYXZhaWxhYmxlLCBlbmFi
bGUgdGhlIExMSW50IEMgTG9vcDogKi8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174190</attachid>
            <date>2012-11-14 10:16:48 -0800</date>
            <delta_ts>2012-11-14 10:35:42 -0800</delta_ts>
            <desc>DFG for MIPS.</desc>
            <filename>mips-dfg.diff</filename>
            <type>text/plain</type>
            <size>48005</size>
            <attacher name="Balazs Kilvady">kilvadyb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDhiOWM5MTQuLjA5NTU3MzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDEyLTExLTE0ICBCYWxhenMgS2lsdmFk
eSAgPGtpbHZhZHliQGhvbWVqaW5uaS5jb20+CisKKyAgICAgICAgTUlQUyBERkcgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
RkcgaW1wbGVtZW50YXRpb24gZm9yIE1JUFMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTUlQU0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpNSVBTQXNzZW1ibGVyKToK
KyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6c2xsdik6CisgICAgICAgIChKU0M6Ok1JUFNB
c3NlbWJsZXI6Om1vdmQpOgorICAgICAgICAoTUlQU0Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6
Ok1JUFNBc3NlbWJsZXI6Om5lZ2QpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJl
bEZvcldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJlbCk6Cisg
ICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6OnZtb3YpOgorICAgICAgICAoSlNDOjpNSVBTQXNz
ZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXApOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpt
YXhKdW1wUmVwbGFjZW1lbnRTaXplKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaDoKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXI6OnBva2UpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjphZGQzMik6CisgICAgICAgIChNYWNy
b0Fzc2VtYmxlck1JUFMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmFuZDMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpsc2hpZnQzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6bXVsMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlck1JUFM6Om9yMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJz
aGlmdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjp1cnNoaWZ0MzIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnN1YjMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJNSVBTOjp4b3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
TUlQUzo6c3RvcmUzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6anVtcCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoQWRkMzIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5jaE11bDMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hTdWIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyTUlQUzo6YnJhbmNoTmVnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1J
UFM6OmNhbGwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om1vdmVEb3VibGUp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnN3YXBEb3VibGUpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnN1YkRvdWJsZSk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6bXVsRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJNSVBTOjpkaXZEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om5l
Z2F0ZURvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoVHJ1
bmNhdGVEb3VibGVUb0ludDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpi
cmFuY2hUcnVuY2F0ZURvdWJsZVRvVWludDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJNSVBTOjp0cnVuY2F0ZURvdWJsZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OnRydW5jYXRlRG91YmxlVG9VaW50MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlck1JUFM6OmJyYW5jaERvdWJsZU5vblplcm8pOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlck1JUFM6OmJyYW5jaERvdWJsZVplcm9Pck5hTik6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyTUlQUzo6aW52ZXJ0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
OjpyZXBsYWNlV2l0aEp1bXApOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om1h
eEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGRmZy9ERkdBc3NlbWJseUhlbHBlcnMu
aDoKKyAgICAgICAgKEFzc2VtYmx5SGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1i
bHlIZWxwZXJzOjpwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwpOgorICAgICAgICAoSlND
OjpERkc6OkFzc2VtYmx5SGVscGVyczo6cmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4p
OgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6ZGVidWdDYWxsKToKKyAgICAg
ICAgKiBkZmcvREZHQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChDQ2FsbEhlbHBlcnMpOgorICAg
ICAgICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHMpOgorICAgICAgICAo
SlNDOjpERkc6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKToKKyAg
ICAgICAgKiBkZmcvREZHRlBSSW5mby5oOgorICAgICAgICAoREZHKToKKyAgICAgICAgKEZQUklu
Zm8pOgorICAgICAgICAoSlNDOjpERkc6OkZQUkluZm86OnRvUmVnaXN0ZXIpOgorICAgICAgICAo
SlNDOjpERkc6OkZQUkluZm86OnRvSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OkZQUkluZm86
OmRlYnVnTmFtZSk6CisgICAgICAgICogZGZnL0RGR0dQUkluZm8uaDoKKyAgICAgICAgKERGRyk6
CisgICAgICAgIChHUFJJbmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpHUFJJbmZvOjp0b1JlZ2lz
dGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpHUFJJbmZvOjp0b0luZGV4KToKKyAgICAgICAgKEpT
Qzo6REZHOjpHUFJJbmZvOjpkZWJ1Z05hbWUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oOgorICAgICAgICAoU3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAqIGppdC9KU0ludGVy
ZmFjZUpJVC5oOgorICAgICAgICAoSlNJbnRlcmZhY2VKSVQpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0M6OlNjcmF0Y2hCdWZmZXI6OmFsbG9jYXRpb25T
aXplKToKKyAgICAgICAgKFNjcmF0Y2hCdWZmZXIpOgorCiAyMDEyLTExLTE0ICBQZXRlciBHYWwg
IDxnYWxwZXRlckBpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgW1F0XVtBUk1dUkVHUkVTU0lP
TihyMTMzOTg1KTogSXQgYnJva2UgdGhlIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCmluZGV4IDMwZjE3MmYuLjVhZGYzZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCkBAIC0x
NTIsNiArMTUyLDggQEAgcHVibGljOgogICAgIHR5cGVkZWYgU2VnbWVudGVkVmVjdG9yPEFzc2Vt
YmxlckxhYmVsLCA2ND4gSnVtcHM7CiAKICAgICBNSVBTQXNzZW1ibGVyKCkKKyAgICAgICAgOiBt
X2luZGV4T2ZMYXN0V2F0Y2hwb2ludChJTlRfTUlOKQorICAgICAgICAsIG1faW5kZXhPZlRhaWxP
Zkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCiAgICAgewogICAgIH0KIApAQCAtMzI1LDcgKzMyNyw3
IEBAIHB1YmxpYzoKICAgICAgICAgZW1pdEluc3QoMHgwMDAwMDAwMCB8IChyZCA8PCBPUF9TSF9S
RCkgfCAocnQgPDwgT1BfU0hfUlQpIHwgKChzaGFtdCAmIDB4MWYpIDw8IE9QX1NIX1NIQU1UKSk7
CiAgICAgfQogCi0gICAgdm9pZCBzbGx2KFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcnQsIGlu
dCBycykKKyAgICB2b2lkIHNsbHYoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBydCwgUmVnaXN0
ZXJJRCBycykKICAgICB7CiAgICAgICAgIGVtaXRJbnN0KDB4MDAwMDAwMDQgfCAocmQgPDwgT1Bf
U0hfUkQpIHwgKHJ0IDw8IE9QX1NIX1JUKSB8IChycyA8PCBPUF9TSF9SUykpOwogICAgIH0KQEAg
LTUyNyw2ICs1MjksMTYgQEAgcHVibGljOgogICAgICAgICBlbWl0SW5zdCgweDQ2MjAwMDA0IHwg
KGZkIDw8IE9QX1NIX0ZEKSB8IChmcyA8PCBPUF9TSF9GUykpOwogICAgIH0KIAorICAgIHZvaWQg
bW92ZChGUFJlZ2lzdGVySUQgZmQsIEZQUmVnaXN0ZXJJRCBmcykKKyAgICB7CisgICAgICAgIGVt
aXRJbnN0KDB4NDYyMDAwMDYgfCAoZmQgPDwgT1BfU0hfRkQpIHwgKGZzIDw8IE9QX1NIX0ZTKSk7
CisgICAgfQorCisgICAgdm9pZCBuZWdkKEZQUmVnaXN0ZXJJRCBmZCwgRlBSZWdpc3RlcklEIGZz
KQorICAgIHsKKyAgICAgICAgZW1pdEluc3QoMHg0NjIwMDAwNyB8IChmZCA8PCBPUF9TSF9GRCkg
fCAoZnMgPDwgT1BfU0hfRlMpKTsKKyAgICB9CisKICAgICB2b2lkIHRydW5jd2QoRlBSZWdpc3Rl
cklEIGZkLCBGUFJlZ2lzdGVySUQgZnMpCiAgICAgewogICAgICAgICBlbWl0SW5zdCgweDQ2MjAw
MDBkIHwgKGZkIDw8IE9QX1NIX0ZEKSB8IChmcyA8PCBPUF9TSF9GUykpOwpAQCAtNjE5LDkgKzYz
MSwyNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2J1ZmZlci5sYWJlbCgpOwogICAgIH0K
IAorICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsRm9yV2F0Y2hwb2ludCgpCisgICAgeworICAgICAg
ICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2J1ZmZlci5sYWJlbCgpOworICAgICAgICBpZiAo
c3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpICE9IG1faW5kZXhPZkxhc3RXYXRjaHBv
aW50KQorICAgICAgICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKKyAgICAgICAgbV9pbmRleE9mTGFz
dFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQ7CisgICAgICAgIG1faW5kZXhPZlRhaWxPZkxh
c3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgp
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIEFzc2VtYmxlckxhYmVsIGxh
YmVsKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2J1ZmZlci5sYWJlbCgpOworICAgICAgICBB
c3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2J1ZmZlci5sYWJlbCgpOworICAgICAgICB3aGlsZSAo
VU5MSUtFTFkoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpIDwgbV9pbmRleE9mVGFp
bE9mTGFzdFdhdGNocG9pbnQpKSB7CisgICAgICAgICAgICBub3AoKTsKKyAgICAgICAgICAgIHJl
c3VsdCA9IG1fYnVmZmVyLmxhYmVsKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAKICAgICBBc3NlbWJsZXJMYWJlbCBhbGlnbihpbnQgYWxpZ25tZW50KQpAQCAt
NjY0LDE0ICs2OTEsMjQgQEAgcHVibGljOgogICAgIC8vIEFzc2VtYmx5IGhlbHBlcnMgZm9yIG1v
dmluZyBkYXRhIGJldHdlZW4gZnAgYW5kIHJlZ2lzdGVycy4KICAgICB2b2lkIHZtb3YoUmVnaXN0
ZXJJRCByZDEsIFJlZ2lzdGVySUQgcmQyLCBGUFJlZ2lzdGVySUQgcm4pCiAgICAgeworI2lmIFdU
Rl9NSVBTX0lTQV9SRVYoMikgJiYgV1RGX01JUFNfRlA2NAorICAgICAgICBtZmMxKHJkMSwgcm4p
OworICAgICAgICBtZmhjMShyZDIsIHJuKTsKKyNlbHNlCiAgICAgICAgIG1mYzEocmQxLCBybik7
CiAgICAgICAgIG1mYzEocmQyLCBGUFJlZ2lzdGVySUQocm4gKyAxKSk7CisjZW5kaWYKICAgICB9
CiAKICAgICB2b2lkIHZtb3YoRlBSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuMSwgUmVnaXN0
ZXJJRCBybjIpCiAgICAgeworI2lmIFdURl9NSVBTX0lTQV9SRVYoMikgJiYgV1RGX01JUFNfRlA2
NAorICAgICAgICBtdGMxKHJuMSwgcmQpOworICAgICAgICBtdGhjMShybjIsIHJkKTsKKyNlbHNl
CiAgICAgICAgIG10YzEocm4xLCByZCk7CiAgICAgICAgIG10YzEocm4yLCBGUFJlZ2lzdGVySUQo
cmQgKyAxKSk7CisjZW5kaWYKICAgICB9CiAKICAgICBzdGF0aWMgdW5zaWduZWQgZ2V0Q2FsbFJl
dHVybk9mZnNldChBc3NlbWJsZXJMYWJlbCBjYWxsKQpAQCAtODI1LDYgKzg2MiwyOSBAQCBwdWJs
aWM6CiAjZW5kaWYKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9p
ZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCisgICAgeworICAgICAgICBNSVBTV29yZCog
aW5zdHJ1Y3Rpb24gPSByZWludGVycHJldF9jYXN0PE1JUFNXb3JkKj4oaW5zdHJ1Y3Rpb25TdGFy
dCk7CisgICAgICAgIGludHB0cl90IGp1bXBUbyA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+
KHRvKTsKKworICAgICAgICAvLyBMb2FkIHRhcmdldC4KKyAgICAgICAgLyogbHVpICovCisgICAg
ICAgIGluc3RydWN0aW9uWzBdID0gMHgzYzAwMDAwMCB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBP
UF9TSF9SVCkgfCAoKGp1bXBUbyA+PiAxNikgJiAweGZmZmYpOworICAgICAgICAvKiBvcmkgKi8K
KyAgICAgICAgaW5zdHJ1Y3Rpb25bMV0gPSAweDM0MDAwMDAwIHwgKE1JUFNSZWdpc3RlcnM6OnQ5
IDw8IE9QX1NIX1JUKSB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SUykgfCAoanVtcFRv
ICYgMHhmZmZmKTsKKyAgICAgICAgLyoganIgKi8KKyAgICAgICAgaW5zdHJ1Y3Rpb25bMl0gPSAw
eDAwMDAwMDA4IHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JTKTsKKyAgICAgICAgLyog
bm9wICovCisgICAgICAgIGluc3RydWN0aW9uWzNdID0gMHgwOworCisgICAgICAgIGNhY2hlRmx1
c2goaW5zdHJ1Y3Rpb24sIHNpemVvZihNSVBTV29yZCkgKiA0KTsKKyAgICB9CisKKyAgICBzdGF0
aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHNpemVvZihNSVBTV29yZCkgKiA0OworICAgIH0KKwogICAgIHN0YXRpYyB2b2lkIHJlcGxh
Y2VXaXRoTG9hZCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQogICAgIHsKICAgICAgICAgTUlQU1dv
cmQqIGluc24gPSByZWludGVycHJldF9jYXN0PE1JUFNXb3JkKj4oaW5zdHJ1Y3Rpb25TdGFydCk7
CkBAIC05OTgsNiArMTA1OCw4IEBAIHByaXZhdGU6CiAKICAgICBBc3NlbWJsZXJCdWZmZXIgbV9i
dWZmZXI7CiAgICAgSnVtcHMgbV9qdW1wczsKKyAgICBpbnQgbV9pbmRleE9mTGFzdFdhdGNocG9p
bnQ7CisgICAgaW50IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyLmgKaW5kZXggNjQyYjVjYS4uOTBjMmUyYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaApAQCAtMjAwLDYgKzIwMCwxMyBA
QCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAgICAgCisjaWYgQ1BVKE1JUFMpCisgICAgdm9pZCBw
b2tlKEZQUmVnaXN0ZXJJRCBzcmMsIGludCBpbmRleCA9IDApCisgICAgeworICAgICAgICBBU1NF
UlQoIShpbmRleCAmIDEpKTsKKyAgICAgICAgc3RvcmVEb3VibGUoc3JjLCBhZGRyZXNzRm9yUG9r
ZShpbmRleCkpOworICAgIH0KKyNlbmRpZgogCiAgICAgLy8gQmFja3dhcmRzIGJhbmNoZXMsIHRo
ZXNlIGFyZSBjdXJyZW50bHkgYWxsIGltcGxlbWVudGVkIHVzaW5nIGV4aXN0aW5nIGZvcndhcmRz
IGJyYW5jaCBtZWNoYW5pc21zLgogICAgIHZvaWQgYnJhbmNoUHRyKFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIFRydXN0ZWRJbW1QdHIgaW1tLCBMYWJlbCB0YXJnZXQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyTUlQUy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ck1JUFMuaAppbmRleCA1YjZkYTk2Li4yNjIwNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKQEAgLTExNCw2ICsxMTQs
MTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGRlc3QsIGRlc3QsIHNyYyk7
CiAgICAgfQogCisgICAgdm9pZCBhZGQzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIs
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoZGVzdCwg
b3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgYWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgYWRkMzIoaW1tLCBkZXN0LCBkZXN0KTsKQEAg
LTI0OSw2ICsyNTQsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5hbmRJbnNuKGRl
c3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBhbmQzMihSZWdpc3RlcklEIG9wMSwg
UmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmFuZEluc24oZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgYW5kMzIoVHJ1
c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKCFpbW0u
bV92YWx1ZSAmJiAhbV9maXhlZFdpZHRoKQpAQCAtMjY1LDkgKzI3NSwxNiBAQCBwdWJsaWM6CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIGxzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5zbGwo
ZGVzdCwgZGVzdCwgaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFt
X2ZpeGVkV2lkdGgpCisgICAgICAgICAgICBtb3ZlKE1JUFNSZWdpc3RlcnM6Onplcm8sIGRlc3Qp
OworICAgICAgICBlbHNlIGlmIChpbW0ubV92YWx1ZSA+IDAgJiYgaW1tLm1fdmFsdWUgPCA2NTUz
NSAmJiAhbV9maXhlZFdpZHRoKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuYW5kaShkZXN0LCBz
cmMsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtb3ZlKGltbSwg
aW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFuZEluc24oZGVzdCwg
c3JjLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBsc2hp
ZnQzMihSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCkBAIC0yNzUsMTEg
KzI5MiwzMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnNsbHYoZGVzdCwgZGVzdCwg
c2hpZnRBbW91bnQpOwogICAgIH0KIAorICAgIHZvaWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLnNsbHYoZGVzdCwgc3JjLCBzaGlmdEFtb3VudCk7CisgICAgfQorCisgICAg
dm9pZCBsc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIu
c2xsdihkZXN0LCBkZXN0LCBpbW1UZW1wUmVnaXN0ZXIpOworICAgIH0KKworICAgIHZvaWQgbHNo
aWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fz
c2VtYmxlci5zbGx2KGRlc3QsIHNyYywgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKICAgICB2
b2lkIG11bDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAg
ICBtX2Fzc2VtYmxlci5tdWwoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIG11
bDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubXVsKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAg
ICB2b2lkIG11bDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgp
CkBAIC0zMzAsNiArMzY5LDI0IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIub3JJbnNu
KGRlc3QsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgIH0KIAorICAgIHZvaWQgb3IzMihU
cnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSAmJiAhbV9maXhlZFdpZHRoKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA+IDAgJiYgaW1tLm1fdmFsdWUgPCA2
NTUzNSAmJiAhbV9maXhlZFdpZHRoKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5vcmkoZGVz
dCwgc3JjLCBpbW0ubV92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICAvKgorICAgICAgICAgICAgbGkgICAgICBkYXRhVGVtcCwgaW1tCisgICAgICAgICAg
ICBvciAgICAgIGRlc3QsIHNyYywgZGF0YVRlbXAKKyAgICAgICAgKi8KKyAgICAgICAgbW92ZShp
bW0sIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5vckluc24oZGVzdCwg
c3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJ
RCBzcmMsIEFic29sdXRlQWRkcmVzcyBkZXN0KQogICAgIHsKICAgICAgICAgbG9hZDMyKGRlc3Qu
bV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwpAQCAtMzQyLDYgKzM5OSwxMSBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLnNyYXYoZGVzdCwgZGVzdCwgc2hpZnRBbW91bnQpOwogICAgIH0K
IAorICAgIHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91
bnQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnNyYXYoZGVz
dCwgc3JjLCBzaGlmdEFtb3VudCk7CisgICAgfQorCiAgICAgdm9pZCByc2hpZnQzMihUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5z
cmEoZGVzdCwgZGVzdCwgaW1tLm1fdmFsdWUpOwpAQCAtMzU3LDE2ICs0MTksMzEgQEAgcHVibGlj
OgogICAgICAgICBtX2Fzc2VtYmxlci5zcmx2KGRlc3QsIGRlc3QsIHNoaWZ0QW1vdW50KTsKICAg
ICB9CiAKKyAgICB2b2lkIHVyc2hpZnQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBzaGlm
dEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Js
dihkZXN0LCBzcmMsIHNoaWZ0QW1vdW50KTsKKyAgICB9CisKICAgICB2b2lkIHVyc2hpZnQzMihU
cnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2Vt
Ymxlci5zcmwoZGVzdCwgZGVzdCwgaW1tLm1fdmFsdWUpOwogICAgIH0KIAorICAgIHZvaWQgdXJz
aGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zcmwoZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7
CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3VidShkZXN0LCBkZXN0LCBzcmMpOwogICAg
IH0KIAorICAgIHZvaWQgc3ViMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdp
c3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJ1KGRlc3QsIG9wMSwg
b3AyKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA+PSAtMzI3NjcgJiYgaW1t
Lm1fdmFsdWUgPD0gMzI3NjgKQEAgLTQ3Nyw2ICs1NTQsMTEgQEAgcHVibGljOgogICAgICAgICBt
X2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCB4
b3IzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oZGVzdCwgb3AxLCBvcDIpOworICAgIH0K
KwogICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKSB7CkBAIC00OTIsNiArNTc0LDIxIEBA
IHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihkZXN0LCBkZXN0LCBpbW1UZW1w
UmVnaXN0ZXIpOwogICAgIH0KIAorICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChpbW0ubV92
YWx1ZSA9PSAtMSkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9yKGRlc3QsIHNyYywgTUlQ
U1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICAvKgorICAgICAgICAgICAgbGkgIGltbVRlbXAsIGltbQorICAgICAgICAgICAgeG9yIGRl
c3QsIGRlc3QsIGltbVRlbXAKKyAgICAgICAgKi8KKyAgICAgICAgbW92ZShpbW0sIGltbVRlbXBS
ZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oZGVzdCwgc3JjLCBpbW1UZW1w
UmVnaXN0ZXIpOworICAgIH0KKwogICAgIHZvaWQgc3FydERvdWJsZShGUFJlZ2lzdGVySUQgc3Jj
LCBGUFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3FydGQoZHN0
LCBzcmMpOwpAQCAtOTcxLDYgKzEwNjgsNDQgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQog
CisgICAgdm9pZCBzdG9yZTMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgaWYgKGFkZHJlc3Mub2Zmc2V0ID49IC0zMjc2OCAmJiBhZGRyZXNzLm9m
ZnNldCA8PSAzMjc2NyAmJiAhbV9maXhlZFdpZHRoKSB7CisgICAgICAgICAgICAvKgorICAgICAg
ICAgICAgICAgIHNsbCAgICAgYWRkclRlbXAsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUK
KyAgICAgICAgICAgICAgICBhZGR1ICAgIGFkZHJUZW1wLCBhZGRyVGVtcCwgYWRkcmVzcy5iYXNl
CisgICAgICAgICAgICAgICAgc3cgICAgICBzcmMsIGFkZHJlc3Mub2Zmc2V0KGFkZHJUZW1wKQor
ICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsbChhZGRyVGVtcFJlZ2lz
dGVyLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmFkZHUoYWRkclRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5iYXNl
KTsKKyAgICAgICAgICAgIGlmICghaW1tLm1fdmFsdWUpCisgICAgICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuc3coTUlQU1JlZ2lzdGVyczo6emVybywgYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5v
ZmZzZXQpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbW92ZShpbW0sIGlt
bVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3coaW1tVGVtcFJl
Z2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgIHNsbCAg
ICAgYWRkclRlbXAsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUKKyAgICAgICAgICAgICAg
ICBhZGR1ICAgIGFkZHJUZW1wLCBhZGRyVGVtcCwgYWRkcmVzcy5iYXNlCisgICAgICAgICAgICAg
ICAgbHVpICAgICBpbW1UZW1wLCAoYWRkcmVzcy5vZmZzZXQgKyAweDgwMDApID4+IDE2CisgICAg
ICAgICAgICAgICAgYWRkdSAgICBhZGRyVGVtcCwgYWRkclRlbXAsIGltbVRlbXAKKyAgICAgICAg
ICAgICAgICBzdyAgICAgIHNyYywgKGFkZHJlc3Mub2Zmc2V0ICYgMHhmZmZmKShhdCkKKyAgICAg
ICAgICAgICovCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbGwoYWRkclRlbXBSZWdpc3Rlciwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5h
ZGR1KGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSk7Cisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5sdWkoaW1tVGVtcFJlZ2lzdGVyLCAoYWRkcmVzcy5vZmZz
ZXQgKyAweDgwMDApID4+IDE2KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoYWRkclRl
bXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAg
ICAgIGlmICghaW1tLm1fdmFsdWUgJiYgIW1fZml4ZWRXaWR0aCkKKyAgICAgICAgICAgICAgICBt
X2Fzc2VtYmxlci5zdyhNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRy
ZXNzLm9mZnNldCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBtb3ZlKGlt
bSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdyhpbW1U
ZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworCiAgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQg
c3JjLCBjb25zdCB2b2lkKiBhZGRyZXNzKQogICAgIHsKICAgICAgICAgLyoKQEAgLTEzMTcsNiAr
MTQ1MiwxNSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZml4ZWRXaWR0aCA9IGZhbHNlOwogICAgIH0K
IAorICAgIHZvaWQganVtcChBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fZml4ZWRXaWR0aCA9IHRydWU7CisgICAgICAgIGxvYWQzMihhZGRyZXNzLm1fcHRyLCBNSVBT
UmVnaXN0ZXJzOjp0OSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmpyKE1JUFNSZWdpc3RlcnM6OnQ5
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgIG1fZml4ZWRXaWR0aCA9IGZh
bHNlOworICAgIH0KKwogICAgIHZvaWQgbW92ZURvdWJsZVRvSW50cyhGUFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQogICAgIHsKICAgICAgICAgbV9h
c3NlbWJsZXIudm1vdihkZXN0MSwgZGVzdDIsIHNyYyk7CkBAIC0xMzg1LDYgKzE1MjksNTMgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gSnVtcCgpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNo
QWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9w
MiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJm
bG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5v
blplcm8pKTsKKyAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIC8q
CisgICAgICAgICAgICAgICAgbW92ZSAgICBkZXN0LCBkYXRhVGVtcAorICAgICAgICAgICAgICAg
IHhvciAgICAgY21wVGVtcCwgZGF0YVRlbXAsIHNyYworICAgICAgICAgICAgICAgIGJsdHogICAg
Y21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBkaWZmIHNpZ24gYml0IC0+IG5vIG92ZXJmbG93Cisg
ICAgICAgICAgICAgICAgYWRkdSAgICBkZXN0LCBkYXRhVGVtcCwgc3JjCisgICAgICAgICAgICAg
ICAgeG9yICAgICBjbXBUZW1wLCBkZXN0LCBkYXRhVGVtcAorICAgICAgICAgICAgICAgIGJnZXog
ICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24gYmlnIC0+IG5vIG92ZXJmbG93
CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgYiAgICAgICBPdmVyZmxvdwor
ICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAg
IG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAg
ICAgTm9fb3ZlcmZsb3c6CisgICAgICAgICAgICAqLworICAgICAgICAgICAgbW92ZShvcDEsIGRh
dGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1w
UmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7CisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5ibHR6KGNtcFRlbXBSZWdpc3RlciwgMTApOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRk
dShkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyLCBvcDIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
eG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDcpOworICAgICAgICAgICAg
bV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICByZXR1cm4ganVtcCgpOworICAgICAgICB9
CisgICAgICAgIGlmIChjb25kID09IFNpZ25lZCkgeworICAgICAgICAgICAgYWRkMzIob3AxLCBv
cDIsIGRlc3QpOworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdhdGl2ZS4KKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIE1JUFNSZWdp
c3RlcnM6Onplcm8pOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBS
ZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNv
bmQgPT0gWmVybykgeworICAgICAgICAgICAgYWRkMzIob3AxLCBvcDIsIGRlc3QpOworICAgICAg
ICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAg
ICAgICB9CisgICAgICAgIGlmIChjb25kID09IE5vblplcm8pIHsKKyAgICAgICAgICAgIGFkZDMy
KG9wMSwgb3AyLCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChkZXN0
LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoMCk7Cisg
ICAgICAgIHJldHVybiBKdW1wKCk7CisgICAgfQorCiAgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1
bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CkBAIC0xMzk4LDYgKzE1ODks
MTExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaEFkZDMyKGNvbmQsIGltbVRlbXBS
ZWdpc3RlciwgZGVzdCk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25k
aXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGRlc3QpCisgICAg
eworICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkg
fHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOworICAgICAgICBpZiAoY29u
ZCA9PSBPdmVyZmxvdykgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICBtb3ZlICAg
IGRhdGFUZW1wLCBkZXN0CisgICAgICAgICAgICAgICAgeG9yaSAgICBjbXBUZW1wLCBkYXRhVGVt
cCwgaW1tCisgICAgICAgICAgICAgICAgYmx0eiAgICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAj
IGRpZmYgc2lnbiBiaXQgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBhZGRpdSAgIGRh
dGFUZW1wLCBkYXRhVGVtcCwgaW1tCisgICAgICAgICAgICAgICAgbW92ZSAgICBkZXN0LCBkYXRh
VGVtcAorICAgICAgICAgICAgICAgIHhvcmkgICAgY21wVGVtcCwgZGF0YVRlbXAsIGltbQorICAg
ICAgICAgICAgICAgIGJnZXogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24g
YmlnIC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAg
YiAgICAgICBPdmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5v
cAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAg
ICAgIG5vcAorICAgICAgICAgICAgTm9fb3ZlcmZsb3c6CisgICAgICAgICAgICAqLworICAgICAg
ICAgICAgaWYgKGltbS5tX3ZhbHVlID49IC0zMjc2OCAmJiBpbW0ubV92YWx1ZSAgPD0gMzI3Njcg
JiYgIW1fZml4ZWRXaWR0aCkgeworICAgICAgICAgICAgICAgIGxvYWQzMihkZXN0Lm1fcHRyLCBk
YXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JpKGNtcFRl
bXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1fdmFsdWUpOworICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxMCk7CisgICAgICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkaXUoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwg
aW1tLm1fdmFsdWUpOworICAgICAgICAgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3Rlciwg
ZGVzdC5tX3B0cik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yaShjbXBUZW1wUmVn
aXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBt
X2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7CisgICAgICAgICAgICAgICAgbV9h
c3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxv
YWQzMihkZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtb3Zl
KGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJ
bnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsK
KyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRlbXBSZWdpc3RlciwgMTApOwor
ICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGl1KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFU
ZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgc3RvcmUzMihk
YXRhVGVtcFJlZ2lzdGVyLCBkZXN0Lm1fcHRyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci54b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVy
KTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7
CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm4ganVtcCgpOworICAgICAgICB9CisgICAgICAgIG1vdmUoaW1tLCBpbW1U
ZW1wUmVnaXN0ZXIpOworICAgICAgICBsb2FkMzIoZGVzdC5tX3B0ciwgZGF0YVRlbXBSZWdpc3Rl
cik7CisgICAgICAgIGFkZDMyKGltbVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlcik7Cisg
ICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdC5tX3B0cik7CisgICAgICAgIGlm
IChjb25kID09IFNpZ25lZCkgeworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdh
dGl2ZS4KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIsIGRhdGFU
ZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgcmV0dXJuIGJy
YW5jaE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gWmVybykKKyAgICAgICAgICAgIHJldHVybiBicmFu
Y2hFcXVhbChkYXRhVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAg
aWYgKGNvbmQgPT0gTm9uWmVybykKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChk
YXRhVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgQVNTRVJUKDAp
OworICAgICAgICByZXR1cm4gSnVtcCgpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoTXVsMzIo
UmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cp
IHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVy
bykpOworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgeworICAgICAgICAgICAgLyoKKyAg
ICAgICAgICAgICAgICBtdWx0ICAgIHNyYywgZGVzdAorICAgICAgICAgICAgICAgIG1maGkgICAg
ZGF0YVRlbXAKKyAgICAgICAgICAgICAgICBtZmxvICAgIGRlc3QKKyAgICAgICAgICAgICAgICBz
cmEgICAgIGFkZHJUZW1wLCBkZXN0LCAzMQorICAgICAgICAgICAgICAgIGJlcSAgICAgZGF0YVRl
bXAsIGFkZHJUZW1wLCBOb19vdmVyZmxvdyAjIGFsbCBzaWduIGJpdHMgKGJpdCA2MyB0byBiaXQg
MzEpIGFyZSB0aGUgc2FtZSAtPiBubyBvdmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAg
ICAgICAgICAgICAgIGIgICAgICAgT3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBub3AKKyAgICAg
ICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AK
KyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgIE5vX292ZXJmbG93OgorICAgICAgICAg
ICAgKi8KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm11bHQoc3JjMSwgc3JjMik7CisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5tZmhpKGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9h
c3NlbWJsZXIubWZsbyhkZXN0KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNyYShhZGRyVGVt
cFJlZ2lzdGVyLCBkZXN0LCAzMSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZXEoZGF0YVRl
bXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgNyk7CisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5ub3AoKTsKKyAgICAgICAgICAgIHJldHVybiBqdW1wKCk7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGNvbmQgPT0gU2lnbmVkKSB7CisgICAgICAgICAgICBtdWwzMihzcmMxLCBzcmMyLCBkZXN0
KTsKKyAgICAgICAgICAgIC8vIENoZWNrIGlmIGRlc3QgaXMgbmVnYXRpdmUuCisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5zbHQoY21wVGVtcFJlZ2lzdGVyLCBkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6
ZXJvKTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChjbXBUZW1wUmVnaXN0ZXIs
IE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IFpl
cm8pIHsKKyAgICAgICAgICAgIG11bDMyKHNyYzEsIHNyYzIsIGRlc3QpOworICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9
CisgICAgICAgIGlmIChjb25kID09IE5vblplcm8pIHsKKyAgICAgICAgICAgIG11bDMyKHNyYzEs
IHNyYzIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGRlc3QsIE1J
UFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIEFTU0VSVCgwKTsKKyAgICAg
ICAgcmV0dXJuIEp1bXAoKTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChj
b25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKQEAgLTE0NDYsOCArMTc0Miw3IEBA
IHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVz
dGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1vdmUoc3JjLCBkZXN0
KTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMyKGNvbmQsIGltbVRlbXBSZWdpc3RlciwgZGVz
dCk7CisgICAgICAgIHJldHVybiBicmFuY2hNdWwzMihjb25kLCBpbW1UZW1wUmVnaXN0ZXIsIHNy
YywgZGVzdCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTE1MDYsOCArMTgwMSw2
MCBAQCBwdWJsaWM6CiAgICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
CiAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICBtb3ZlKHNyYywg
ZGVzdCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hTdWIzMihjb25kLCBpbW1UZW1wUmVnaXN0ZXIs
IGRlc3QpOworICAgICAgICByZXR1cm4gYnJhbmNoU3ViMzIoY29uZCwgc3JjLCBpbW1UZW1wUmVn
aXN0ZXIsIGRlc3QpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBT
aWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKKyAgICAgICAg
aWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAg
bW92ZSAgICBkZXN0LCBkYXRhVGVtcAorICAgICAgICAgICAgICAgIHhvciAgICAgY21wVGVtcCwg
ZGF0YVRlbXAsIHNyYworICAgICAgICAgICAgICAgIGJnZXogICAgY21wVGVtcCwgTm9fb3ZlcmZs
b3cgICAgIyBzYW1lIHNpZ24gYml0IC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgc3Vi
dSAgICBkZXN0LCBkYXRhVGVtcCwgc3JjCisgICAgICAgICAgICAgICAgeG9yICAgICBjbXBUZW1w
LCBkZXN0LCBkYXRhVGVtcAorICAgICAgICAgICAgICAgIGJnZXogICAgY21wVGVtcCwgTm9fb3Zl
cmZsb3cgICAgIyBzYW1lIHNpZ24gYml0IC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAg
bm9wCisgICAgICAgICAgICAgICAgYiAgICAgICBPdmVyZmxvdworICAgICAgICAgICAgICAgIG5v
cAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAg
ICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgTm9fb3ZlcmZsb3c6Cisg
ICAgICAgICAgICAqLworICAgICAgICAgICAgbW92ZShvcDEsIGRhdGFUZW1wUmVnaXN0ZXIpOwor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1w
UmVnaXN0ZXIsIG9wMik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdp
c3RlciwgMTApOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3VidShkZXN0LCBkYXRhVGVtcFJl
Z2lzdGVyLCBvcDIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVn
aXN0ZXIsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
YmdleihjbXBUZW1wUmVnaXN0ZXIsIDcpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7
CisgICAgICAgICAgICByZXR1cm4ganVtcCgpOworICAgICAgICB9CisgICAgICAgIGlmIChjb25k
ID09IFNpZ25lZCkgeworICAgICAgICAgICAgc3ViMzIob3AxLCBvcDIsIGRlc3QpOworICAgICAg
ICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdhdGl2ZS4KKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAg
ICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lz
dGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gWmVybykgeworICAg
ICAgICAgICAgc3ViMzIob3AxLCBvcDIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5j
aEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIGlm
IChjb25kID09IE5vblplcm8pIHsKKyAgICAgICAgICAgIHN1YjMyKG9wMSwgb3AyLCBkZXN0KTsK
KyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6
ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoMCk7CisgICAgICAgIHJldHVybiBKdW1w
KCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hOZWczMihSZXN1bHRDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBzcmNEZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGkoZGF0YVRl
bXBSZWdpc3RlciwgLTEpOworICAgICAgICByZXR1cm4gYnJhbmNoTXVsMzIoY29uZCwgZGF0YVRl
bXBSZWdpc3Rlciwgc3JjRGVzdCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hPcjMyKFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMTU1
OSw3ICsxOTA2LDggQEAgcHVibGljOgogCiAgICAgQ2FsbCBjYWxsKFJlZ2lzdGVySUQgdGFyZ2V0
KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuamFscih0YXJnZXQpOworICAgICAgICBtb3Zl
KHRhcmdldCwgTUlQU1JlZ2lzdGVyczo6dDkpOworICAgICAgICBtX2Fzc2VtYmxlci5qYWxyKE1J
UFNSZWdpc3RlcnM6OnQ5KTsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgICAgIHJl
dHVybiBDYWxsKG1fYXNzZW1ibGVyLmxhYmVsKCksIENhbGw6Ok5vbmUpOwogICAgIH0KQEAgLTE5
OTAsNiArMjMzOCwxOSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKKyAgICB2b2lkIG1vdmVE
b3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBpZiAoc3JjICE9IGRlc3QgfHwgbV9maXhlZFdpZHRoKQorICAgICAgICAgICAgbV9hc3NlbWJs
ZXIubW92ZChkZXN0LCBzcmMpOworICAgIH0KKworICAgIHZvaWQgc3dhcERvdWJsZShGUFJlZ2lz
dGVySUQgZnIxLCBGUFJlZ2lzdGVySUQgZnIyKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShm
cjEsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbW92ZURvdWJsZShmcjIsIGZyMSk7CisgICAg
ICAgIG1vdmVEb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGZyMik7CisgICAgfQorCiAgICAgdm9pZCBh
ZGREb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5hZGRkKGRlc3QsIGRlc3QsIHNyYyk7CkBAIC0yMDE3LDYgKzIzNzgs
MTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zdWJkKGRlc3QsIGRlc3QsIHNyYyk7
CiAgICAgfQogCisgICAgdm9pZCBzdWJEb3VibGUoRlBSZWdpc3RlcklEIG9wMSwgRlBSZWdpc3Rl
cklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5z
dWJkKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIHN1YkRvdWJsZShBZGRyZXNz
IHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBsb2FkRG91YmxlKHNyYywg
ZnBUZW1wUmVnaXN0ZXIpOwpAQCAtMjAzNCwxMSArMjQwMCwzMiBAQCBwdWJsaWM6CiAgICAgICAg
IG1fYXNzZW1ibGVyLm11bGQoZGVzdCwgZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOwogICAgIH0KIAor
ICAgIHZvaWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQ
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubXVsZChkZXN0LCBv
cDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCBkaXZEb3VibGUoRlBSZWdpc3RlcklEIHNyYywg
RlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5kaXZkKGRlc3Qs
IGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBkaXZEb3VibGUoRlBSZWdpc3RlcklEIG9w
MSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5kaXZkKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKKyAgICB2b2lkIGRpdkRv
dWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2Fk
RG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5kaXZkKGRl
c3QsIGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ2F0ZURvdWJs
ZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLm5lZ2QoZGVzdCwgc3JjKTsKKyAgICB9CisKICAgICB2b2lkIGNvbnZlcnRJbnQz
MlRvRG91YmxlKFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLm10YzEoc3JjLCBmcFRlbXBSZWdpc3Rlcik7CkBAIC0yMTczLDExICsy
NTYwLDMzIEBAIHB1YmxpYzoKICAgICAvLyBJZiB0aGUgcmVzdWx0IGlzIG5vdCByZXByZXNlbnRh
YmxlIGFzIGEgMzIgYml0IHZhbHVlLCBicmFuY2guCiAgICAgLy8gTWF5IGFsc28gYnJhbmNoIGZv
ciBzb21lIHZhbHVlcyB0aGF0IGFyZSByZXByZXNlbnRhYmxlIGluIDMyIGJpdHMKICAgICAvLyAo
c3BlY2lmaWNhbGx5LCBpbiB0aGlzIGNhc2UsIElOVF9NQVggMHg3ZmZmZmZmZikuCi0gICAgSnVt
cCBicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIGVudW0gQnJhbmNoVHJ1bmNhdGVUeXBlIHsgQnJhbmNoSWZUcnVuY2F0ZUZh
aWxlZCwgQnJhbmNoSWZUcnVuY2F0ZVN1Y2Nlc3NmdWwgfTsKKyAgICBKdW1wIGJyYW5jaFRydW5j
YXRlRG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEJyYW5j
aFRydW5jYXRlVHlwZSBicmFuY2hUeXBlID0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnRydW5jd2QoZnBUZW1wUmVnaXN0ZXIsIHNyYyk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLm1mYzEoZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1
cm4gYnJhbmNoMzIoYnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRydW5jYXRlRmFpbGVkID8gRXF1YWwg
OiBOb3RFcXVhbCwgZGVzdCwgVHJ1c3RlZEltbTMyKDB4N2ZmZmZmZmYpKTsKKyAgICB9CisKKyAg
ICBKdW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0LCBCcmFuY2hUcnVuY2F0ZVR5cGUgYnJhbmNoVHlwZSA9IEJyYW5jaElmVHJ1
bmNhdGVGYWlsZWQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci50cnVuY3dkKGZwVGVtcFJl
Z2lzdGVyLCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci5tZmMxKGRlc3QsIGZwVGVtcFJlZ2lz
dGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGJyYW5jaFR5cGUgPT0gQnJhbmNoSWZUcnVu
Y2F0ZUZhaWxlZCA/IEVxdWFsIDogTm90RXF1YWwsIGRlc3QsIFRydXN0ZWRJbW0zMigwKSk7Cisg
ICAgfQorCisgICAgLy8gUmVzdWx0IGlzIHVuZGVmaW5lZCBpZiB0aGUgdmFsdWUgaXMgb3V0c2lk
ZSBvZiB0aGUgaW50ZWdlciByYW5nZS4KKyAgICB2b2lkIHRydW5jYXRlRG91YmxlVG9JbnQzMihG
UFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci50cnVuY3dkKGZwVGVtcFJlZ2lzdGVyLCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci5t
ZmMxKGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICAvLyBSZXN1bHQgaXMgdW5k
ZWZpbmVkIGlmIHNyYyA+IDJeMzEKKyAgICB2b2lkIHRydW5jYXRlRG91YmxlVG9VaW50MzIoRlBS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJs
ZXIudHJ1bmN3ZChmcFRlbXBSZWdpc3Rlciwgc3JjKTsKICAgICAgICAgbV9hc3NlbWJsZXIubWZj
MShkZXN0LCBmcFRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBicmFuY2gzMihFcXVhbCwg
ZGVzdCwgVHJ1c3RlZEltbTMyKDB4N2ZmZmZmZmYpKTsKICAgICB9CiAKICAgICAvLyBDb252ZXJ0
ICdzcmMnIHRvIGFuIGludGVnZXIsIGFuZCBwbGFjZXMgdGhlIHJlc3VsdGluZyAnZGVzdCcuCkBA
IC0yMTk5LDI4ICsyNjA4LDQzIEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoRG91YmxlTm9u
WmVybyhGUFJlZ2lzdGVySUQgcmVnLCBGUFJlZ2lzdGVySUQgc2NyYXRjaCkKICAgICB7Ci0jaWYg
V1RGX01JUFNfSVNBX1JFVigyKSAmJiBXVEZfTUlQU19GUDY0Ci0gICAgICAgIG1fYXNzZW1ibGVy
Lm10YzEoTUlQU1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7Ci0gICAgICAgIG1fYXNzZW1ibGVy
Lm10aGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0Y2gpOwotI2Vsc2UKLSAgICAgICAgbV9h
c3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzY3JhdGNoKTsKLSAgICAgICAgbV9h
c3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBGUFJlZ2lzdGVySUQoc2NyYXRjaCAr
IDEpKTsKLSNlbmRpZgorICAgICAgICBtX2Fzc2VtYmxlci52bW92KHNjcmF0Y2gsIE1JUFNSZWdp
c3RlcnM6Onplcm8sIE1JUFNSZWdpc3RlcnM6Onplcm8pOwogICAgICAgICByZXR1cm4gYnJhbmNo
RG91YmxlKERvdWJsZU5vdEVxdWFsLCByZWcsIHNjcmF0Y2gpOwogICAgIH0KIAogICAgIEp1bXAg
YnJhbmNoRG91YmxlWmVyb09yTmFOKEZQUmVnaXN0ZXJJRCByZWcsIEZQUmVnaXN0ZXJJRCBzY3Jh
dGNoKQogICAgIHsKLSNpZiBXVEZfTUlQU19JU0FfUkVWKDIpICYmIFdURl9NSVBTX0ZQNjQKLSAg
ICAgICAgbV9hc3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzY3JhdGNoKTsKLSAg
ICAgICAgbV9hc3NlbWJsZXIubXRoYzEoTUlQU1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7Ci0j
ZWxzZQotICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0
Y2gpOwotICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIEZQUmVn
aXN0ZXJJRChzY3JhdGNoICsgMSkpOwotI2VuZGlmCisgICAgICAgIG1fYXNzZW1ibGVyLnZtb3Yo
c2NyYXRjaCwgTUlQU1JlZ2lzdGVyczo6emVybywgTUlQU1JlZ2lzdGVyczo6emVybyk7CiAgICAg
ICAgIHJldHVybiBicmFuY2hEb3VibGUoRG91YmxlRXF1YWxPclVub3JkZXJlZCwgcmVnLCBzY3Jh
dGNoKTsKICAgICB9CiAKKyAgICAvLyBJbnZlcnQgYSByZWxhdGlvbmFsIGNvbmRpdGlvbiwgZS5n
LiA9PSBiZWNvbWVzICE9LCA8IGJlY29tZXMgPj0sIGV0Yy4KKyAgICBzdGF0aWMgUmVsYXRpb25h
bENvbmRpdGlvbiBpbnZlcnQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAg
ICAgUmVsYXRpb25hbENvbmRpdGlvbiByOworICAgICAgICBpZiAoY29uZCA9PSBFcXVhbCkKKyAg
ICAgICAgICAgIHIgPSBOb3RFcXVhbDsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBOb3RFcXVh
bCkKKyAgICAgICAgICAgIHIgPSBFcXVhbDsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBBYm92
ZSkKKyAgICAgICAgICAgIHIgPSBCZWxvd09yRXF1YWw7CisgICAgICAgIGVsc2UgaWYgKGNvbmQg
PT0gQWJvdmVPckVxdWFsKQorICAgICAgICAgICAgciA9IEJlbG93OworICAgICAgICBlbHNlIGlm
IChjb25kID09IEJlbG93KQorICAgICAgICAgICAgciA9IEFib3ZlT3JFcXVhbDsKKyAgICAgICAg
ZWxzZSBpZiAoY29uZCA9PSBCZWxvd09yRXF1YWwpCisgICAgICAgICAgICByID0gQWJvdmU7Cisg
ICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gR3JlYXRlclRoYW4pCisgICAgICAgICAgICByID0gTGVz
c1RoYW5PckVxdWFsOworICAgICAgICBlbHNlIGlmIChjb25kID09IEdyZWF0ZXJUaGFuT3JFcXVh
bCkKKyAgICAgICAgICAgIHIgPSBMZXNzVGhhbjsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBM
ZXNzVGhhbikKKyAgICAgICAgICAgIHIgPSBHcmVhdGVyVGhhbk9yRXF1YWw7CisgICAgICAgIGVs
c2UgaWYgKGNvbmQgPT0gTGVzc1RoYW5PckVxdWFsKQorICAgICAgICAgICAgciA9IEdyZWF0ZXJU
aGFuOworICAgICAgICByZXR1cm4gcjsKKyAgICB9CisKICAgICB2b2lkIG5vcCgpCiAgICAgewog
ICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKQEAgLTIyMzMsMTIgKzI2NTcsMTIgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGlu
c3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQogICAgIHsKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIE1JUFNBc3NlbWJsZXI6OnJlcGxh
Y2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5k
YXRhTG9jYXRpb24oKSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVt
cFJlcGxhY2VtZW50U2l6ZSgpCiAgICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgTUlQU0Fzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fz
c2VtYmx5SGVscGVycy5oCmluZGV4IDc1YjljNzAuLmMwNjAxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaApAQCAtOTMsNiArOTMsMjMgQEAg
cHVibGljOgogICAgIH0KICNlbmRpZgogCisjaWYgQ1BVKE1JUFMpCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChSZWdpc3RlcklEIHJlZykKKyAg
ICB7CisgICAgICAgIG1vdmUocmV0dXJuQWRkcmVzc1JlZ2lzdGVyLCByZWcpOworICAgIH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihS
ZWdpc3RlcklEIHJlZykKKyAgICB7CisgICAgICAgIG1vdmUocmVnLCByZXR1cm5BZGRyZXNzUmVn
aXN0ZXIpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybihBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBsb2FkUHRy
KGFkZHJlc3MsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7CisgICAgfQorI2VuZGlmCisKICAgICB2
b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRl
ckVudHJ5IGVudHJ5LCBHUFJSZWcgdG8pCiAgICAgewogICAgICAgICBsb2FkUHRyKEFkZHJlc3Mo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSksIHRv
KTsKQEAgLTE5Myw3ICsyMTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihzY3JhdGNoQnVmZmVyLT5hY3RpdmVMZW5ndGhQdHIoKSksIEdQUkluZm86OnJlZ1QwKTsKICAg
ICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihzY3JhdGNoU2l6ZSksIEdQUkluZm86OnJlZ1Qw
KTsKIAotI2lmIENQVShYODZfNjQpIHx8IENQVShBUk0pCisjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BV
KEFSTSkgfHwgQ1BVKE1JUFMpCiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhcmd1bWVudCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNo
ID0gc2VsZWN0U2NyYXRjaEdQUihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxs
SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaApp
bmRleCA4YWRkZTA1Li43ODVmYTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q0NhbGxIZWxwZXJzLmgKQEAgLTU3Niw2ICs1NzYsMzkgQEAgcHVibGljOgogICAgICAgICBwb2tl
KEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIH0KICNlbmRpZiAvLyBDUFUoQVJNX0hBUkRGUCkK
KyNlbGlmIENQVShNSVBTKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhG
UFJSZWcgYXJnMSkKKyAgICB7CisgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJn
dW1lbnRGUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHMoRlBSUmVnIGFyZzEsIEZQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgaWYgKGFyZzIgIT0g
RlBSSW5mbzo6YXJndW1lbnRGUFIwKSB7CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQ
UkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzIsIEZQUklu
Zm86OmFyZ3VtZW50RlBSMSk7CisgICAgICAgIH0gZWxzZSBpZiAoYXJnMSAhPSBGUFJJbmZvOjph
cmd1bWVudEZQUjEpIHsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMiwgRlBSSW5mbzo6YXJn
dW1lbnRGUFIxKTsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJndW1l
bnRGUFIwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFN3YXAgYXJnMSwgYXJn
Mi4KKyAgICAgICAgICAgIHN3YXBEb3VibGUoRlBSSW5mbzo6YXJndW1lbnRGUFIwLCBGUFJJbmZv
Ojphcmd1bWVudEZQUjEpOworICAgICAgICB9CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShGUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIp
CisgICAgeworICAgICAgICBhc3NlbWJsZXIoKS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMiwg
R1BSSW5mbzo6YXJndW1lbnRHUFIzLCBhcmcxKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcG9rZShhcmcy
LCA0KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgRlBSUmVnIGFyZzMpCisgICAgewor
ICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7CisgICAgICAgIG1vdmUoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAg
IHBva2UoYXJnMywgNCk7CisgICAgfQogI2Vsc2UKICNlcnJvciAiREZHIEpJVCBub3Qgc3VwcG9y
dGVkIG9uIHRoaXMgcGxhdGZvcm0uIgogI2VuZGlmCkBAIC04MDIsNyArODM1LDcgQEAgcHVibGlj
OgogI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAogICAgIC8vIFRo
ZXNlIG1ldGhvZHMgYXJlIHN1aXRhYmxlIGZvciBhbnkgY2FsbGluZyBjb252ZW50aW9uIHRoYXQg
cHJvdmlkZXMgZm9yCiAgICAgLy8gZXhhY3RseSA0IGFyZ3VtZW50IHJlZ2lzdGVycywgZS5nLiBB
Uk12Ny4KLSNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID09IDQKKyNpZiBOVU1CRVJf
T0ZfQVJHVU1FTlRfUkVHSVNURVJTID09IDQgJiYgIUNQVShNSVBTKQogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewogICAgICAgICBwb2tlKGFyZzQp
OwpAQCAtOTE5LDcgKzk1MiwxMTQgQEAgcHVibGljOgogICAgICAgICBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCi0jZW5kaWYgLy8gTlVNQkVS
X09GX0FSR1VNRU5UX1JFR0lTVEVSUyA9PSA0CisjZW5kaWYgLy8gTlVNQkVSX09GX0FSR1VNRU5U
X1JFR0lTVEVSUyA9PSA0ICYmICFDUFUoTUlQUykKKworI2lmIENQVShNSVBTKQorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBwb2tl
KGFyZzQsIDQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
MiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmcz
LCBUcnVzdGVkSW1tMzIgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNCwgNCk7CisgICAg
ICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBh
cmc0KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc0LCA0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJl
ZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbVB0ciBhcmc0KQorICAgIHsKKyAgICAgICAg
cG9rZShhcmc0LCA0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3Rl
ZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAgICAgIHBv
a2UoYXJnNSwgNSk7CisgICAgICAgIHBva2UoYXJnNCwgNCk7CisgICAgICAgIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAgICB7Cisg
ICAgICAgIHBva2UoYXJnNSwgNSk7CisgICAgICAgIHBva2UoYXJnNCwgNCk7CisgICAgICAgIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsK
KyAgICAgICAgcG9rZShhcmc0LCA0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcy
LCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbVB0ciBhcmc0KQorICAgIHsKKyAgICAgICAgcG9rZShh
cmc0LCA0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIs
IGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIg
YXJnMywgVHJ1c3RlZEltbVB0ciBhcmc0KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc0LCA0KTsK
KyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwor
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BS
UmVnIGFyZzQpCisgICAgeworICAgICAgICBwb2tlKGFyZzQsIDQpOworICAgICAgICBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUp
CisgICAgeworICAgICAgICBwb2tlKGFyZzUsIDUpOworICAgICAgICBwb2tlKGFyZzQsIDQpOwor
ICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Cisg
ICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJn
NCwgVHJ1c3RlZEltbTMyIGFyZzUpCisgICAgeworICAgICAgICBwb2tlKGFyZzUsIDUpOworICAg
ICAgICBwb2tlKGFyZzQsIDQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQ
UlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgVHJ1c3RlZEltbVB0ciBhcmc1KQorICAgIHsKKyAgICAg
ICAgcG9rZShhcmc1LCA1KTsKKyAgICAgICAgcG9rZShhcmc0LCA0KTsKKyAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMy
IGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQsIFRydXN0
ZWRJbW0zMiBhcmc1KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc1LCA1KTsKKyAgICAgICAgcG9r
ZShhcmc0LCA0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBUcnVz
dGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAg
cG9rZShhcmc1LCA1KTsKKyAgICAgICAgcG9rZShhcmc0LCA0KTsKKyAgICAgICAgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQor
ICAgIHsKKyAgICAgICAgcG9rZShhcmc1LCA1KTsKKyAgICAgICAgcG9rZShhcmc0LCA0KTsKKyAg
ICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAg
IH0KKworI2VuZGlmIC8vIENQVShNSVBTKQogCiAjaWYgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lT
VEVSUyA+PSA1CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywg
R1BSUmVnIGFyZzQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQ
UkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oCmluZGV4IGQ2
YTAzOGEuLjZmOTY4ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RlBSSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oCkBA
IC0xNjQsNiArMTY0LDc0IEBAIHB1YmxpYzoKIAogI2VuZGlmCiAKKyNpZiBDUFUoTUlQUykKKwor
Y2xhc3MgRlBSSW5mbyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBGUFJSZWcgUmVnaXN0ZXJUeXBl
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDY7CisKKyAg
ICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgorICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdU
MCA9IE1JUFNSZWdpc3RlcnM6OmYwOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMSA9
IE1JUFNSZWdpc3RlcnM6OmY0OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMiA9IE1J
UFNSZWdpc3RlcnM6OmY2OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMyA9IE1JUFNS
ZWdpc3RlcnM6OmY4OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNCA9IE1JUFNSZWdp
c3RlcnM6OmYxMDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDUgPSBNSVBTUmVnaXN0
ZXJzOjpmMTg7CisKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIHJldHVyblZhbHVlRlBSID0gTUlQ
U1JlZ2lzdGVyczo6ZjA7CisKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMCA9
IE1JUFNSZWdpc3RlcnM6OmYxMjsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBS
MSA9IE1JUFNSZWdpc3RlcnM6OmYxNDsKKworICAgIHN0YXRpYyBGUFJSZWcgdG9SZWdpc3Rlcih1
bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgcmVnaXN0
ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7CisgICAgICAgICAgICBmcFJlZ1QwLCBm
cFJlZ1QxLCBmcFJlZ1QyLCBmcFJlZ1QzLCBmcFJlZ1Q0LCBmcFJlZ1Q1IH07CisKKyAgICAgICAg
QVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAgICByZXR1cm4gcmVnaXN0
ZXJGb3JJbmRleFtpbmRleF07CisgICAgfQorCisgICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgo
RlBSUmVnIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7
CisgICAgICAgIEFTU0VSVChyZWcgPCAyMCk7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBpbmRleEZvclJlZ2lzdGVyWzIwXSA9IHsKKyAgICAgICAgICAgIDAsIEludmFsaWRJbmRleCwg
SW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsCisgICAgICAgICAgICAxLCBJbnZhbGlkSW5kZXgs
IDIsIEludmFsaWRJbmRleCwKKyAgICAgICAgICAgIDMsIEludmFsaWRJbmRleCwgNCwgSW52YWxp
ZEluZGV4LAorICAgICAgICAgICAgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJ
bmRleCwgSW52YWxpZEluZGV4LAorICAgICAgICAgICAgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5k
ZXgsIDUsIEludmFsaWRJbmRleCwKKyAgICAgICAgfTsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0
ID0gaW5kZXhGb3JSZWdpc3RlcltyZWddOworICAgICAgICBBU1NFUlQocmVzdWx0ICE9IEludmFs
aWRJbmRleCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIGRlYnVnTmFtZShGUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJl
ZyAhPSBJbnZhbGlkRlBSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDMyKTsKKyAgICAgICAg
c3RhdGljIGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclszMl0gPSB7CisgICAgICAgICAgICAi
ZjAiLCAiZjEiLCAiZjIiLCAiZjMiLAorICAgICAgICAgICAgImY0IiwgImY1IiwgImY2IiwgImY3
IiwKKyAgICAgICAgICAgICJmOCIsICJmOSIsICJmMTAiLCAiZjExIiwKKyAgICAgICAgICAgICJm
MTIiLCAiZjEzIiwgImYxNCIsICJmMTUiCisgICAgICAgICAgICAiZjE2IiwgImYxNyIsICJmMTgi
LCAiZjE5IgorICAgICAgICAgICAgImYyMCIsICJmMjEiLCAiZjIyIiwgImYyMyIKKyAgICAgICAg
ICAgICJmMjQiLCAiZjI1IiwgImYyNiIsICJmMjciCisgICAgICAgICAgICAiZjI4IiwgImYyOSIs
ICJmMzAiLCAiZjMxIgorICAgICAgICB9OworICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVy
W3JlZ107CisgICAgfQorcHJpdmF0ZToKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZh
bGlkSW5kZXggPSAweGZmZmZmZmZmOworfTsKKworI2VuZGlmCisKIHR5cGVkZWYgUmVnaXN0ZXJC
YW5rPEZQUkluZm8+OjppdGVyYXRvciBmcHJfaXRlcmF0b3I7CiAKIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpERkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5m
by5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgKaW5kZXggM2QwNzU1
Ni4uYWE2MzRjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJ
bmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgKQEAgLTQ2
MSw2ICs0NjEsNzMgQEAgcHJpdmF0ZToKIAogI2VuZGlmCiAKKyNpZiBDUFUoTUlQUykKKyNkZWZp
bmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA0CisKK2NsYXNzIEdQUkluZm8geworcHVi
bGljOgorICAgIHR5cGVkZWYgR1BSUmVnIFJlZ2lzdGVyVHlwZTsKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA2OworCisgICAgLy8gVGVtcG9yYXJ5IHJlZ2lz
dGVycy4KKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QwID0gTUlQU1JlZ2lzdGVyczo6djA7
CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMSA9IE1JUFNSZWdpc3RlcnM6OnYxOworICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDIgPSBNSVBTUmVnaXN0ZXJzOjp0NDsKKyAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIHJlZ1QzID0gTUlQU1JlZ2lzdGVyczo6dDU7CisgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyByZWdUNCA9IE1JUFNSZWdpc3RlcnM6OnQ2OworICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgcmVnVDUgPSBNSVBTUmVnaXN0ZXJzOjp0NzsKKyAgICAvLyBUaGVzZSByZWdpc3RlcnMg
bWF0Y2ggdGhlIGJhc2VsaW5lIEpJVC4KKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJl
c3VsdFJlZ2lzdGVyID0gcmVnVDA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1
bHRSZWdpc3RlcjIgPSByZWdUMTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhbGxGcmFtZVJl
Z2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6czA7CisgICAgLy8gVGhlc2UgY29uc3RhbnRzIHByb3Zp
ZGUgdGhlIG5hbWVzIGZvciB0aGUgZ2VuZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYgcmV0dXJuIHZh
bHVlIHJlZ2lzdGVycy4KKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMCA9IE1J
UFNSZWdpc3RlcnM6OmEwOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIxID0g
TUlQU1JlZ2lzdGVyczo6YTE7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjIg
PSBNSVBTUmVnaXN0ZXJzOjphMjsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BS
MyA9IE1JUFNSZWdpc3RlcnM6OmEzOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BS
MCA9IHJlZ1QyOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IHJlZ1QzOwor
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMiA9IHJlZ1Q0OworICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSByZWdUMDsKKyAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIHJldHVyblZhbHVlR1BSMiA9IHJlZ1QxOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9u
UHJlc2VydmVkTm9uUmV0dXJuR1BSID0gcmVnVDU7CisKKyAgICBzdGF0aWMgR1BSUmVnIHRvUmVn
aXN0ZXIodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1i
ZXJPZlJlZ2lzdGVycyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJ
bmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCBy
ZWdUNCwgcmVnVDUgfTsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOwor
ICAgIH0KKworICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEdQUlJlZyByZWcpCisgICAgewor
ICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQocmVn
IDwgMTYpOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3Rlclsx
Nl0gPSB7IEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCAwLCAxLCBJbnZhbGlkSW5kZXgsIElu
dmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52
YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgMiwgMywgNCwgNSB9OworICAg
ICAgICB1bnNpZ25lZCByZXN1bHQgPSBpbmRleEZvclJlZ2lzdGVyW3JlZ107CisgICAgICAgIEFT
U0VSVChyZXN1bHQgIT0gSW52YWxpZEluZGV4KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcpCisgICAg
eworICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQo
cmVnIDwgMTYpOworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzE2
XSA9IHsKKyAgICAgICAgICAgICJ6ZXJvIiwgImF0IiwgInYwIiwgInYxIiwKKyAgICAgICAgICAg
ICJhMCIsICJhMSIsICJhMiIsICJhMyIsCisgICAgICAgICAgICAidDAiLCAidDEiLCAidDIiLCAi
dDMiLAorICAgICAgICAgICAgInQ0IiwgInQ1IiwgInQ2IiwgInQ3IgorICAgICAgICB9OworICAg
ICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107CisgICAgfQorcHJpdmF0ZToKKworICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOworfTsKKwor
I2VuZGlmCisKIHR5cGVkZWYgUmVnaXN0ZXJCYW5rPEdQUkluZm8+OjppdGVyYXRvciBncHJfaXRl
cmF0b3I7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBmMTM4NGUyLi5lZWYwNjM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xNTI3
LDcgKzE1MjcsNyBAQCBwdWJsaWM6CiAKIC8vIEVuY29kZWRKU1ZhbHVlIGluIEpTVkFMVUUzMl82
NCBpcyBhIDY0LWJpdCBpbnRlZ2VyLiBXaGVuIGJlaW5nIGNvbXBpbGVkIGluIEFSTSBFQUJJLCBp
dCBtdXN0IGJlIGFsaWduZWQgZXZlbi1udW1iZXJlZCByZWdpc3RlciAocjAsIHIyIG9yIFtzcF0p
LgogLy8gVG8gYXZvaWQgYXNzZW1ibGllcyBmcm9tIHVzaW5nIHdyb25nIHJlZ2lzdGVycywgbGV0
J3Mgb2NjdXB5IHIxIG9yIHIzIHdpdGggYSBkdW1teSBhcmd1bWVudCB3aGVuIG5lY2Vzc2FyeS4K
LSNpZiBDT01QSUxFUl9TVVBQT1JUUyhFQUJJKSAmJiBDUFUoQVJNKQorI2lmIChDT01QSUxFUl9T
VVBQT1JUUyhFQUJJKSAmJiBDUFUoQVJNKSkgfHwgQ1BVKE1JUFMpCiAjZGVmaW5lIEVBQklfMzJC
SVRfRFVNTVlfQVJHICAgICAgVHJ1c3RlZEltbTMyKDApLAogI2Vsc2UKICNkZWZpbmUgRUFCSV8z
MkJJVF9EVU1NWV9BUkcKQEAgLTE5NjIsNyArMTk2Miw3IEBAIHB1YmxpYzoKICAgICB9CiAjZW5k
aWYKICAgICAKLSNpZiAhZGVmaW5lZChOREVCVUcpICYmICFDUFUoQVJNKQorI2lmICFkZWZpbmVk
KE5ERUJVRykgJiYgIUNQVShBUk0pICYmICFDUFUoTUlQUykKICAgICB2b2lkIHByZXBhcmVGb3JF
eHRlcm5hbENhbGwoKQogICAgIHsKICAgICAgICAgLy8gV2UncmUgYWJvdXQgdG8gY2FsbCBvdXQg
dG8gYSAibmF0aXZlIiBoZWxwZXIgZnVuY3Rpb24uIFRoZSBoZWxwZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAppbmRleCBkMmE5MWJhLi40MzFmY2MzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCkBAIC0xMjUsNiArMTI1
LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBj
YWNoZWRSZXN1bHRSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OnYwOwogICAgICAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCBmaXJzdEFyZ3VtZW50UmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjph
MDsKICAgICAgICAgCisjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgICAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCBidWNrZXRDb3VudGVyUmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjpz
MzsKKyNlbmRpZgorCiAgICAgICAgIC8vIHJlZ1QwIG11c3QgYmUgdjAgZm9yIHJldHVybmluZyBh
IDMyLWJpdCB2YWx1ZS4KICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDAgPSBN
SVBTUmVnaXN0ZXJzOjp2MDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsRGF0YS5oCmluZGV4IDBmZmFjY2IuLjk5MGU0MjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCkBAIC0xMjksMTQgKzEyOSwxOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0K
IAotICAgICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVfdCBidWZmZXJTaXpl
KSB7IHJldHVybiBzaXplb2Yoc2l6ZV90KSArIGJ1ZmZlclNpemU7IH0KKyAgICAgICAgc3RhdGlj
IHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkgeyByZXR1cm4gc2l6ZW9m
KFNjcmF0Y2hCdWZmZXIpICsgYnVmZmVyU2l6ZTsgfQogICAgICAgICB2b2lkIHNldEFjdGl2ZUxl
bmd0aChzaXplX3QgYWN0aXZlTGVuZ3RoKSB7IG1fYWN0aXZlTGVuZ3RoID0gYWN0aXZlTGVuZ3Ro
OyB9CiAgICAgICAgIHNpemVfdCBhY3RpdmVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2
ZUxlbmd0aDsgfTsKICAgICAgICAgc2l6ZV90KiBhY3RpdmVMZW5ndGhQdHIoKSB7IHJldHVybiAm
bV9hY3RpdmVMZW5ndGg7IH07CiAgICAgICAgIHZvaWQqIGRhdGFCdWZmZXIoKSB7IHJldHVybiBt
X2J1ZmZlcjsgfQogCiAgICAgICAgIHNpemVfdCBtX2FjdGl2ZUxlbmd0aDsKKyNpZiBDUFUoTUlQ
UykgJiYgV1RGX01JUFNfSVNBX1JFVigyKQorICAgICAgICB2b2lkKiBtX2J1ZmZlclswXSBfX2F0
dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSk7CisjZWxzZQogICAgICAgICB2b2lkKiBtX2J1ZmZlclsw
XTsKKyNlbmRpZgogICAgIH07CiAjaWYgQ09NUElMRVIoTVNWQykKICNwcmFnbWEgd2FybmluZyhw
b3ApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCmluZGV4IGY2MzZmZmMuLmM1MjdmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTEt
MTQgIEJhbGF6cyBLaWx2YWR5ICA8a2lsdmFkeWJAaG9tZWppbm5pLmNvbT4KKworICAgICAgICBN
SVBTIERGRyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMTMyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIERGRyBpbXBsZW1lbnRhdGlvbiBmb3IgTUlQUy4KKworICAgICAgICAq
IHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDEyLTExLTE0ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XVtBUk1dIEVuYWJsZSB0aGUgREZHIEpJVCBvbiBB
Uk12NyhUaHVtYjIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291
cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCBiMDdlZmI1Li5kYjI4NGQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
LmgKQEAgLTk0Miw2ICs5NDIsMTAgQEAKICNpZiBDUFUoQVJNX1RSQURJVElPTkFMKQogI2RlZmlu
ZSBFTkFCTEVfREZHX0pJVCAxCiAjZW5kaWYKKy8qIEVuYWJsZSB0aGUgREZHIEpJVCBvbiBNSVBT
LiAqLworI2lmIENQVShNSVBTKQorI2RlZmluZSBFTkFCTEVfREZHX0pJVCAxCisjZW5kaWYKICNl
bmRpZgogCiAvKiBJZiB0aGUgaml0IGlzIG5vdCBhdmFpbGFibGUsIGVuYWJsZSB0aGUgTExJbnQg
QyBMb29wOiAqLwo=
</data>
<flag name="commit-queue"
          id="189156"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174198</attachid>
            <date>2012-11-14 10:35:42 -0800</date>
            <delta_ts>2012-12-18 03:27:59 -0800</delta_ts>
            <desc>DFG for MIPS.</desc>
            <filename>mips-dfg.diff</filename>
            <type>text/plain</type>
            <size>48039</size>
            <attacher name="Balazs Kilvady">kilvadyb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDhiOWM5MTQuLjA5NTU3MzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDEyLTExLTE0ICBCYWxhenMgS2lsdmFk
eSAgPGtpbHZhZHliQGhvbWVqaW5uaS5jb20+CisKKyAgICAgICAgTUlQUyBERkcgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
RkcgaW1wbGVtZW50YXRpb24gZm9yIE1JUFMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTUlQU0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpNSVBTQXNzZW1ibGVyKToK
KyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6c2xsdik6CisgICAgICAgIChKU0M6Ok1JUFNB
c3NlbWJsZXI6Om1vdmQpOgorICAgICAgICAoTUlQU0Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6
Ok1JUFNBc3NlbWJsZXI6Om5lZ2QpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJl
bEZvcldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJlbCk6Cisg
ICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6OnZtb3YpOgorICAgICAgICAoSlNDOjpNSVBTQXNz
ZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXApOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpt
YXhKdW1wUmVwbGFjZW1lbnRTaXplKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaDoKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3Nl
bWJsZXI6OnBva2UpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjphZGQzMik6CisgICAgICAgIChNYWNy
b0Fzc2VtYmxlck1JUFMpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmFuZDMy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpsc2hpZnQzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6bXVsMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlck1JUFM6Om9yMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJz
aGlmdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjp1cnNoaWZ0MzIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnN1YjMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJNSVBTOjp4b3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
TUlQUzo6c3RvcmUzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6anVtcCk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoQWRkMzIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5jaE11bDMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hTdWIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyTUlQUzo6YnJhbmNoTmVnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1J
UFM6OmNhbGwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om1vdmVEb3VibGUp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnN3YXBEb3VibGUpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnN1YkRvdWJsZSk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6bXVsRG91YmxlKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJNSVBTOjpkaXZEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om5l
Z2F0ZURvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoVHJ1
bmNhdGVEb3VibGVUb0ludDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpi
cmFuY2hUcnVuY2F0ZURvdWJsZVRvVWludDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJNSVBTOjp0cnVuY2F0ZURvdWJsZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OnRydW5jYXRlRG91YmxlVG9VaW50MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlck1JUFM6OmJyYW5jaERvdWJsZU5vblplcm8pOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlck1JUFM6OmJyYW5jaERvdWJsZVplcm9Pck5hTik6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyTUlQUzo6aW52ZXJ0KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
OjpyZXBsYWNlV2l0aEp1bXApOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om1h
eEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGRmZy9ERkdBc3NlbWJseUhlbHBlcnMu
aDoKKyAgICAgICAgKEFzc2VtYmx5SGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1i
bHlIZWxwZXJzOjpwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwpOgorICAgICAgICAoSlND
OjpERkc6OkFzc2VtYmx5SGVscGVyczo6cmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4p
OgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6ZGVidWdDYWxsKToKKyAgICAg
ICAgKiBkZmcvREZHQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChDQ2FsbEhlbHBlcnMpOgorICAg
ICAgICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHMpOgorICAgICAgICAo
SlNDOjpERkc6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKToKKyAg
ICAgICAgKiBkZmcvREZHRlBSSW5mby5oOgorICAgICAgICAoREZHKToKKyAgICAgICAgKEZQUklu
Zm8pOgorICAgICAgICAoSlNDOjpERkc6OkZQUkluZm86OnRvUmVnaXN0ZXIpOgorICAgICAgICAo
SlNDOjpERkc6OkZQUkluZm86OnRvSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OkZQUkluZm86
OmRlYnVnTmFtZSk6CisgICAgICAgICogZGZnL0RGR0dQUkluZm8uaDoKKyAgICAgICAgKERGRyk6
CisgICAgICAgIChHUFJJbmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpHUFJJbmZvOjp0b1JlZ2lz
dGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpHUFJJbmZvOjp0b0luZGV4KToKKyAgICAgICAgKEpT
Qzo6REZHOjpHUFJJbmZvOjpkZWJ1Z05hbWUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oOgorICAgICAgICAoU3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAqIGppdC9KU0ludGVy
ZmFjZUpJVC5oOgorICAgICAgICAoSlNJbnRlcmZhY2VKSVQpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0M6OlNjcmF0Y2hCdWZmZXI6OmFsbG9jYXRpb25T
aXplKToKKyAgICAgICAgKFNjcmF0Y2hCdWZmZXIpOgorCiAyMDEyLTExLTE0ICBQZXRlciBHYWwg
IDxnYWxwZXRlckBpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgW1F0XVtBUk1dUkVHUkVTU0lP
TihyMTMzOTg1KTogSXQgYnJva2UgdGhlIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCmluZGV4IDMwZjE3MmYuLjVhZGYzZWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCkBAIC0x
NTIsNiArMTUyLDggQEAgcHVibGljOgogICAgIHR5cGVkZWYgU2VnbWVudGVkVmVjdG9yPEFzc2Vt
YmxlckxhYmVsLCA2ND4gSnVtcHM7CiAKICAgICBNSVBTQXNzZW1ibGVyKCkKKyAgICAgICAgOiBt
X2luZGV4T2ZMYXN0V2F0Y2hwb2ludChJTlRfTUlOKQorICAgICAgICAsIG1faW5kZXhPZlRhaWxP
Zkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCiAgICAgewogICAgIH0KIApAQCAtMzI1LDcgKzMyNyw3
IEBAIHB1YmxpYzoKICAgICAgICAgZW1pdEluc3QoMHgwMDAwMDAwMCB8IChyZCA8PCBPUF9TSF9S
RCkgfCAocnQgPDwgT1BfU0hfUlQpIHwgKChzaGFtdCAmIDB4MWYpIDw8IE9QX1NIX1NIQU1UKSk7
CiAgICAgfQogCi0gICAgdm9pZCBzbGx2KFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcnQsIGlu
dCBycykKKyAgICB2b2lkIHNsbHYoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBydCwgUmVnaXN0
ZXJJRCBycykKICAgICB7CiAgICAgICAgIGVtaXRJbnN0KDB4MDAwMDAwMDQgfCAocmQgPDwgT1Bf
U0hfUkQpIHwgKHJ0IDw8IE9QX1NIX1JUKSB8IChycyA8PCBPUF9TSF9SUykpOwogICAgIH0KQEAg
LTUyNyw2ICs1MjksMTYgQEAgcHVibGljOgogICAgICAgICBlbWl0SW5zdCgweDQ2MjAwMDA0IHwg
KGZkIDw8IE9QX1NIX0ZEKSB8IChmcyA8PCBPUF9TSF9GUykpOwogICAgIH0KIAorICAgIHZvaWQg
bW92ZChGUFJlZ2lzdGVySUQgZmQsIEZQUmVnaXN0ZXJJRCBmcykKKyAgICB7CisgICAgICAgIGVt
aXRJbnN0KDB4NDYyMDAwMDYgfCAoZmQgPDwgT1BfU0hfRkQpIHwgKGZzIDw8IE9QX1NIX0ZTKSk7
CisgICAgfQorCisgICAgdm9pZCBuZWdkKEZQUmVnaXN0ZXJJRCBmZCwgRlBSZWdpc3RlcklEIGZz
KQorICAgIHsKKyAgICAgICAgZW1pdEluc3QoMHg0NjIwMDAwNyB8IChmZCA8PCBPUF9TSF9GRCkg
fCAoZnMgPDwgT1BfU0hfRlMpKTsKKyAgICB9CisKICAgICB2b2lkIHRydW5jd2QoRlBSZWdpc3Rl
cklEIGZkLCBGUFJlZ2lzdGVySUQgZnMpCiAgICAgewogICAgICAgICBlbWl0SW5zdCgweDQ2MjAw
MDBkIHwgKGZkIDw8IE9QX1NIX0ZEKSB8IChmcyA8PCBPUF9TSF9GUykpOwpAQCAtNjE5LDkgKzYz
MSwyNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2J1ZmZlci5sYWJlbCgpOwogICAgIH0K
IAorICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsRm9yV2F0Y2hwb2ludCgpCisgICAgeworICAgICAg
ICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2J1ZmZlci5sYWJlbCgpOworICAgICAgICBpZiAo
c3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpICE9IG1faW5kZXhPZkxhc3RXYXRjaHBv
aW50KQorICAgICAgICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKKyAgICAgICAgbV9pbmRleE9mTGFz
dFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQ7CisgICAgICAgIG1faW5kZXhPZlRhaWxPZkxh
c3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgp
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIEFzc2VtYmxlckxhYmVsIGxh
YmVsKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2J1ZmZlci5sYWJlbCgpOworICAgICAgICBB
c3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2J1ZmZlci5sYWJlbCgpOworICAgICAgICB3aGlsZSAo
VU5MSUtFTFkoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpIDwgbV9pbmRleE9mVGFp
bE9mTGFzdFdhdGNocG9pbnQpKSB7CisgICAgICAgICAgICBub3AoKTsKKyAgICAgICAgICAgIHJl
c3VsdCA9IG1fYnVmZmVyLmxhYmVsKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CiAKICAgICBBc3NlbWJsZXJMYWJlbCBhbGlnbihpbnQgYWxpZ25tZW50KQpAQCAt
NjY0LDE0ICs2OTEsMjQgQEAgcHVibGljOgogICAgIC8vIEFzc2VtYmx5IGhlbHBlcnMgZm9yIG1v
dmluZyBkYXRhIGJldHdlZW4gZnAgYW5kIHJlZ2lzdGVycy4KICAgICB2b2lkIHZtb3YoUmVnaXN0
ZXJJRCByZDEsIFJlZ2lzdGVySUQgcmQyLCBGUFJlZ2lzdGVySUQgcm4pCiAgICAgeworI2lmIFdU
Rl9NSVBTX0lTQV9SRVYoMikgJiYgV1RGX01JUFNfRlA2NAorICAgICAgICBtZmMxKHJkMSwgcm4p
OworICAgICAgICBtZmhjMShyZDIsIHJuKTsKKyNlbHNlCiAgICAgICAgIG1mYzEocmQxLCBybik7
CiAgICAgICAgIG1mYzEocmQyLCBGUFJlZ2lzdGVySUQocm4gKyAxKSk7CisjZW5kaWYKICAgICB9
CiAKICAgICB2b2lkIHZtb3YoRlBSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuMSwgUmVnaXN0
ZXJJRCBybjIpCiAgICAgeworI2lmIFdURl9NSVBTX0lTQV9SRVYoMikgJiYgV1RGX01JUFNfRlA2
NAorICAgICAgICBtdGMxKHJuMSwgcmQpOworICAgICAgICBtdGhjMShybjIsIHJkKTsKKyNlbHNl
CiAgICAgICAgIG10YzEocm4xLCByZCk7CiAgICAgICAgIG10YzEocm4yLCBGUFJlZ2lzdGVySUQo
cmQgKyAxKSk7CisjZW5kaWYKICAgICB9CiAKICAgICBzdGF0aWMgdW5zaWduZWQgZ2V0Q2FsbFJl
dHVybk9mZnNldChBc3NlbWJsZXJMYWJlbCBjYWxsKQpAQCAtODI1LDYgKzg2MiwyOSBAQCBwdWJs
aWM6CiAjZW5kaWYKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9p
ZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCisgICAgeworICAgICAgICBNSVBTV29yZCog
aW5zdHJ1Y3Rpb24gPSByZWludGVycHJldF9jYXN0PE1JUFNXb3JkKj4oaW5zdHJ1Y3Rpb25TdGFy
dCk7CisgICAgICAgIGludHB0cl90IGp1bXBUbyA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+
KHRvKTsKKworICAgICAgICAvLyBMb2FkIHRhcmdldC4KKyAgICAgICAgLyogbHVpICovCisgICAg
ICAgIGluc3RydWN0aW9uWzBdID0gMHgzYzAwMDAwMCB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBP
UF9TSF9SVCkgfCAoKGp1bXBUbyA+PiAxNikgJiAweGZmZmYpOworICAgICAgICAvKiBvcmkgKi8K
KyAgICAgICAgaW5zdHJ1Y3Rpb25bMV0gPSAweDM0MDAwMDAwIHwgKE1JUFNSZWdpc3RlcnM6OnQ5
IDw8IE9QX1NIX1JUKSB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SUykgfCAoanVtcFRv
ICYgMHhmZmZmKTsKKyAgICAgICAgLyoganIgKi8KKyAgICAgICAgaW5zdHJ1Y3Rpb25bMl0gPSAw
eDAwMDAwMDA4IHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JTKTsKKyAgICAgICAgLyog
bm9wICovCisgICAgICAgIGluc3RydWN0aW9uWzNdID0gMHgwOworCisgICAgICAgIGNhY2hlRmx1
c2goaW5zdHJ1Y3Rpb24sIHNpemVvZihNSVBTV29yZCkgKiA0KTsKKyAgICB9CisKKyAgICBzdGF0
aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHNpemVvZihNSVBTV29yZCkgKiA0OworICAgIH0KKwogICAgIHN0YXRpYyB2b2lkIHJlcGxh
Y2VXaXRoTG9hZCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQogICAgIHsKICAgICAgICAgTUlQU1dv
cmQqIGluc24gPSByZWludGVycHJldF9jYXN0PE1JUFNXb3JkKj4oaW5zdHJ1Y3Rpb25TdGFydCk7
CkBAIC05OTgsNiArMTA1OCw4IEBAIHByaXZhdGU6CiAKICAgICBBc3NlbWJsZXJCdWZmZXIgbV9i
dWZmZXI7CiAgICAgSnVtcHMgbV9qdW1wczsKKyAgICBpbnQgbV9pbmRleE9mTGFzdFdhdGNocG9p
bnQ7CisgICAgaW50IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyLmgKaW5kZXggNjQyYjVjYS4uOTBjMmUyYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaApAQCAtMjAwLDYgKzIwMCwxMyBA
QCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAgICAgCisjaWYgQ1BVKE1JUFMpCisgICAgdm9pZCBw
b2tlKEZQUmVnaXN0ZXJJRCBzcmMsIGludCBpbmRleCA9IDApCisgICAgeworICAgICAgICBBU1NF
UlQoIShpbmRleCAmIDEpKTsKKyAgICAgICAgc3RvcmVEb3VibGUoc3JjLCBhZGRyZXNzRm9yUG9r
ZShpbmRleCkpOworICAgIH0KKyNlbmRpZgogCiAgICAgLy8gQmFja3dhcmRzIGJhbmNoZXMsIHRo
ZXNlIGFyZSBjdXJyZW50bHkgYWxsIGltcGxlbWVudGVkIHVzaW5nIGV4aXN0aW5nIGZvcndhcmRz
IGJyYW5jaCBtZWNoYW5pc21zLgogICAgIHZvaWQgYnJhbmNoUHRyKFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIFRydXN0ZWRJbW1QdHIgaW1tLCBMYWJlbCB0YXJnZXQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyTUlQUy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ck1JUFMuaAppbmRleCA1YjZkYTk2Li4yNjIwNzQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKQEAgLTExNCw2ICsxMTQs
MTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGRlc3QsIGRlc3QsIHNyYyk7
CiAgICAgfQogCisgICAgdm9pZCBhZGQzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIs
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoZGVzdCwg
b3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgYWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgYWRkMzIoaW1tLCBkZXN0LCBkZXN0KTsKQEAg
LTI0OSw2ICsyNTQsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5hbmRJbnNuKGRl
c3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBhbmQzMihSZWdpc3RlcklEIG9wMSwg
UmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmFuZEluc24oZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgYW5kMzIoVHJ1
c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKCFpbW0u
bV92YWx1ZSAmJiAhbV9maXhlZFdpZHRoKQpAQCAtMjY1LDkgKzI3NSwxNiBAQCBwdWJsaWM6CiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIGxzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5zbGwo
ZGVzdCwgZGVzdCwgaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFt
X2ZpeGVkV2lkdGgpCisgICAgICAgICAgICBtb3ZlKE1JUFNSZWdpc3RlcnM6Onplcm8sIGRlc3Qp
OworICAgICAgICBlbHNlIGlmIChpbW0ubV92YWx1ZSA+IDAgJiYgaW1tLm1fdmFsdWUgPCA2NTUz
NSAmJiAhbV9maXhlZFdpZHRoKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuYW5kaShkZXN0LCBz
cmMsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtb3ZlKGltbSwg
aW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFuZEluc24oZGVzdCwg
c3JjLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBsc2hp
ZnQzMihSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCkBAIC0yNzUsMTEg
KzI5MiwzMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnNsbHYoZGVzdCwgZGVzdCwg
c2hpZnRBbW91bnQpOwogICAgIH0KIAorICAgIHZvaWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLnNsbHYoZGVzdCwgc3JjLCBzaGlmdEFtb3VudCk7CisgICAgfQorCisgICAg
dm9pZCBsc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIu
c2xsdihkZXN0LCBkZXN0LCBpbW1UZW1wUmVnaXN0ZXIpOworICAgIH0KKworICAgIHZvaWQgbHNo
aWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fz
c2VtYmxlci5zbGx2KGRlc3QsIHNyYywgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKICAgICB2
b2lkIG11bDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAg
ICBtX2Fzc2VtYmxlci5tdWwoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIG11
bDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubXVsKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAg
ICB2b2lkIG11bDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgp
CkBAIC0zMzAsNiArMzY5LDI0IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIub3JJbnNu
KGRlc3QsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgIH0KIAorICAgIHZvaWQgb3IzMihU
cnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSAmJiAhbV9maXhlZFdpZHRoKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA+IDAgJiYgaW1tLm1fdmFsdWUgPCA2
NTUzNSAmJiAhbV9maXhlZFdpZHRoKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5vcmkoZGVz
dCwgc3JjLCBpbW0ubV92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICAvKgorICAgICAgICAgICAgbGkgICAgICBkYXRhVGVtcCwgaW1tCisgICAgICAgICAg
ICBvciAgICAgIGRlc3QsIHNyYywgZGF0YVRlbXAKKyAgICAgICAgKi8KKyAgICAgICAgbW92ZShp
bW0sIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5vckluc24oZGVzdCwg
c3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJ
RCBzcmMsIEFic29sdXRlQWRkcmVzcyBkZXN0KQogICAgIHsKICAgICAgICAgbG9hZDMyKGRlc3Qu
bV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwpAQCAtMzQyLDYgKzM5OSwxMSBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLnNyYXYoZGVzdCwgZGVzdCwgc2hpZnRBbW91bnQpOwogICAgIH0K
IAorICAgIHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91
bnQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnNyYXYoZGVz
dCwgc3JjLCBzaGlmdEFtb3VudCk7CisgICAgfQorCiAgICAgdm9pZCByc2hpZnQzMihUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5z
cmEoZGVzdCwgZGVzdCwgaW1tLm1fdmFsdWUpOwpAQCAtMzU3LDE2ICs0MTksMzEgQEAgcHVibGlj
OgogICAgICAgICBtX2Fzc2VtYmxlci5zcmx2KGRlc3QsIGRlc3QsIHNoaWZ0QW1vdW50KTsKICAg
ICB9CiAKKyAgICB2b2lkIHVyc2hpZnQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBzaGlm
dEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Js
dihkZXN0LCBzcmMsIHNoaWZ0QW1vdW50KTsKKyAgICB9CisKICAgICB2b2lkIHVyc2hpZnQzMihU
cnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2Vt
Ymxlci5zcmwoZGVzdCwgZGVzdCwgaW1tLm1fdmFsdWUpOwogICAgIH0KIAorICAgIHZvaWQgdXJz
aGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zcmwoZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7
CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3VidShkZXN0LCBkZXN0LCBzcmMpOwogICAg
IH0KIAorICAgIHZvaWQgc3ViMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdp
c3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJ1KGRlc3QsIG9wMSwg
b3AyKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA+PSAtMzI3NjcgJiYgaW1t
Lm1fdmFsdWUgPD0gMzI3NjgKQEAgLTQ3Nyw2ICs1NTQsMTEgQEAgcHVibGljOgogICAgICAgICBt
X2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCB4
b3IzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oZGVzdCwgb3AxLCBvcDIpOworICAgIH0K
KwogICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKSB7CkBAIC00OTIsNiArNTc0LDIxIEBA
IHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihkZXN0LCBkZXN0LCBpbW1UZW1w
UmVnaXN0ZXIpOwogICAgIH0KIAorICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChpbW0ubV92
YWx1ZSA9PSAtMSkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9yKGRlc3QsIHNyYywgTUlQ
U1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICAvKgorICAgICAgICAgICAgbGkgIGltbVRlbXAsIGltbQorICAgICAgICAgICAgeG9yIGRl
c3QsIGRlc3QsIGltbVRlbXAKKyAgICAgICAgKi8KKyAgICAgICAgbW92ZShpbW0sIGltbVRlbXBS
ZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oZGVzdCwgc3JjLCBpbW1UZW1w
UmVnaXN0ZXIpOworICAgIH0KKwogICAgIHZvaWQgc3FydERvdWJsZShGUFJlZ2lzdGVySUQgc3Jj
LCBGUFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3FydGQoZHN0
LCBzcmMpOwpAQCAtOTcxLDYgKzEwNjgsNDQgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQog
CisgICAgdm9pZCBzdG9yZTMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgaWYgKGFkZHJlc3Mub2Zmc2V0ID49IC0zMjc2OCAmJiBhZGRyZXNzLm9m
ZnNldCA8PSAzMjc2NyAmJiAhbV9maXhlZFdpZHRoKSB7CisgICAgICAgICAgICAvKgorICAgICAg
ICAgICAgICAgIHNsbCAgICAgYWRkclRlbXAsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUK
KyAgICAgICAgICAgICAgICBhZGR1ICAgIGFkZHJUZW1wLCBhZGRyVGVtcCwgYWRkcmVzcy5iYXNl
CisgICAgICAgICAgICAgICAgc3cgICAgICBzcmMsIGFkZHJlc3Mub2Zmc2V0KGFkZHJUZW1wKQor
ICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsbChhZGRyVGVtcFJlZ2lz
dGVyLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmFkZHUoYWRkclRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5iYXNl
KTsKKyAgICAgICAgICAgIGlmICghaW1tLm1fdmFsdWUpCisgICAgICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuc3coTUlQU1JlZ2lzdGVyczo6emVybywgYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5v
ZmZzZXQpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbW92ZShpbW0sIGlt
bVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3coaW1tVGVtcFJl
Z2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgIHNsbCAg
ICAgYWRkclRlbXAsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUKKyAgICAgICAgICAgICAg
ICBhZGR1ICAgIGFkZHJUZW1wLCBhZGRyVGVtcCwgYWRkcmVzcy5iYXNlCisgICAgICAgICAgICAg
ICAgbHVpICAgICBpbW1UZW1wLCAoYWRkcmVzcy5vZmZzZXQgKyAweDgwMDApID4+IDE2CisgICAg
ICAgICAgICAgICAgYWRkdSAgICBhZGRyVGVtcCwgYWRkclRlbXAsIGltbVRlbXAKKyAgICAgICAg
ICAgICAgICBzdyAgICAgIHNyYywgKGFkZHJlc3Mub2Zmc2V0ICYgMHhmZmZmKShhdCkKKyAgICAg
ICAgICAgICovCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbGwoYWRkclRlbXBSZWdpc3Rlciwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5h
ZGR1KGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSk7Cisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5sdWkoaW1tVGVtcFJlZ2lzdGVyLCAoYWRkcmVzcy5vZmZz
ZXQgKyAweDgwMDApID4+IDE2KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoYWRkclRl
bXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAg
ICAgIGlmICghaW1tLm1fdmFsdWUgJiYgIW1fZml4ZWRXaWR0aCkKKyAgICAgICAgICAgICAgICBt
X2Fzc2VtYmxlci5zdyhNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRy
ZXNzLm9mZnNldCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBtb3ZlKGlt
bSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdyhpbW1U
ZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworCiAgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQg
c3JjLCBjb25zdCB2b2lkKiBhZGRyZXNzKQogICAgIHsKICAgICAgICAgLyoKQEAgLTEzMTcsNiAr
MTQ1MiwxNSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZml4ZWRXaWR0aCA9IGZhbHNlOwogICAgIH0K
IAorICAgIHZvaWQganVtcChBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAg
IG1fZml4ZWRXaWR0aCA9IHRydWU7CisgICAgICAgIGxvYWQzMihhZGRyZXNzLm1fcHRyLCBNSVBT
UmVnaXN0ZXJzOjp0OSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmpyKE1JUFNSZWdpc3RlcnM6OnQ5
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgIG1fZml4ZWRXaWR0aCA9IGZh
bHNlOworICAgIH0KKwogICAgIHZvaWQgbW92ZURvdWJsZVRvSW50cyhGUFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQogICAgIHsKICAgICAgICAgbV9h
c3NlbWJsZXIudm1vdihkZXN0MSwgZGVzdDIsIHNyYyk7CkBAIC0xMzg1LDYgKzE1MjksNTMgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gSnVtcCgpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNo
QWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9w
MiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJm
bG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5v
blplcm8pKTsKKyAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIC8q
CisgICAgICAgICAgICAgICAgbW92ZSAgICBkZXN0LCBkYXRhVGVtcAorICAgICAgICAgICAgICAg
IHhvciAgICAgY21wVGVtcCwgZGF0YVRlbXAsIHNyYworICAgICAgICAgICAgICAgIGJsdHogICAg
Y21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBkaWZmIHNpZ24gYml0IC0+IG5vIG92ZXJmbG93Cisg
ICAgICAgICAgICAgICAgYWRkdSAgICBkZXN0LCBkYXRhVGVtcCwgc3JjCisgICAgICAgICAgICAg
ICAgeG9yICAgICBjbXBUZW1wLCBkZXN0LCBkYXRhVGVtcAorICAgICAgICAgICAgICAgIGJnZXog
ICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24gYmlnIC0+IG5vIG92ZXJmbG93
CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgYiAgICAgICBPdmVyZmxvdwor
ICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAg
IG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAg
ICAgTm9fb3ZlcmZsb3c6CisgICAgICAgICAgICAqLworICAgICAgICAgICAgbW92ZShvcDEsIGRh
dGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1w
UmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7CisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5ibHR6KGNtcFRlbXBSZWdpc3RlciwgMTApOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRk
dShkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyLCBvcDIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
eG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDcpOworICAgICAgICAgICAg
bV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICByZXR1cm4ganVtcCgpOworICAgICAgICB9
CisgICAgICAgIGlmIChjb25kID09IFNpZ25lZCkgeworICAgICAgICAgICAgYWRkMzIob3AxLCBv
cDIsIGRlc3QpOworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdhdGl2ZS4KKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIE1JUFNSZWdp
c3RlcnM6Onplcm8pOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBS
ZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNv
bmQgPT0gWmVybykgeworICAgICAgICAgICAgYWRkMzIob3AxLCBvcDIsIGRlc3QpOworICAgICAg
ICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAg
ICAgICB9CisgICAgICAgIGlmIChjb25kID09IE5vblplcm8pIHsKKyAgICAgICAgICAgIGFkZDMy
KG9wMSwgb3AyLCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChkZXN0
LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoMCk7Cisg
ICAgICAgIHJldHVybiBKdW1wKCk7CisgICAgfQorCiAgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1
bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CkBAIC0xMzk4LDYgKzE1ODks
MTExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaEFkZDMyKGNvbmQsIGltbVRlbXBS
ZWdpc3RlciwgZGVzdCk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25k
aXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGRlc3QpCisgICAg
eworICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkg
fHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOworICAgICAgICBpZiAoY29u
ZCA9PSBPdmVyZmxvdykgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICBtb3ZlICAg
IGRhdGFUZW1wLCBkZXN0CisgICAgICAgICAgICAgICAgeG9yaSAgICBjbXBUZW1wLCBkYXRhVGVt
cCwgaW1tCisgICAgICAgICAgICAgICAgYmx0eiAgICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAj
IGRpZmYgc2lnbiBiaXQgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBhZGRpdSAgIGRh
dGFUZW1wLCBkYXRhVGVtcCwgaW1tCisgICAgICAgICAgICAgICAgbW92ZSAgICBkZXN0LCBkYXRh
VGVtcAorICAgICAgICAgICAgICAgIHhvcmkgICAgY21wVGVtcCwgZGF0YVRlbXAsIGltbQorICAg
ICAgICAgICAgICAgIGJnZXogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24g
YmlnIC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAg
YiAgICAgICBPdmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5v
cAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAg
ICAgIG5vcAorICAgICAgICAgICAgTm9fb3ZlcmZsb3c6CisgICAgICAgICAgICAqLworICAgICAg
ICAgICAgaWYgKGltbS5tX3ZhbHVlID49IC0zMjc2OCAmJiBpbW0ubV92YWx1ZSAgPD0gMzI3Njcg
JiYgIW1fZml4ZWRXaWR0aCkgeworICAgICAgICAgICAgICAgIGxvYWQzMihkZXN0Lm1fcHRyLCBk
YXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JpKGNtcFRl
bXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1fdmFsdWUpOworICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxMCk7CisgICAgICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkaXUoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwg
aW1tLm1fdmFsdWUpOworICAgICAgICAgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3Rlciwg
ZGVzdC5tX3B0cik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yaShjbXBUZW1wUmVn
aXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBt
X2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7CisgICAgICAgICAgICAgICAgbV9h
c3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxv
YWQzMihkZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtb3Zl
KGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJ
bnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsK
KyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRlbXBSZWdpc3RlciwgMTApOwor
ICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGl1KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFU
ZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgc3RvcmUzMihk
YXRhVGVtcFJlZ2lzdGVyLCBkZXN0Lm1fcHRyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci54b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVy
KTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7
CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICByZXR1cm4ganVtcCgpOworICAgICAgICB9CisgICAgICAgIG1vdmUoaW1tLCBpbW1U
ZW1wUmVnaXN0ZXIpOworICAgICAgICBsb2FkMzIoZGVzdC5tX3B0ciwgZGF0YVRlbXBSZWdpc3Rl
cik7CisgICAgICAgIGFkZDMyKGltbVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlcik7Cisg
ICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdC5tX3B0cik7CisgICAgICAgIGlm
IChjb25kID09IFNpZ25lZCkgeworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdh
dGl2ZS4KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIsIGRhdGFU
ZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgcmV0dXJuIGJy
YW5jaE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gWmVybykKKyAgICAgICAgICAgIHJldHVybiBicmFu
Y2hFcXVhbChkYXRhVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAg
aWYgKGNvbmQgPT0gTm9uWmVybykKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChk
YXRhVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgQVNTRVJUKDAp
OworICAgICAgICByZXR1cm4gSnVtcCgpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoTXVsMzIo
UmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cp
IHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVy
bykpOworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgeworICAgICAgICAgICAgLyoKKyAg
ICAgICAgICAgICAgICBtdWx0ICAgIHNyYywgZGVzdAorICAgICAgICAgICAgICAgIG1maGkgICAg
ZGF0YVRlbXAKKyAgICAgICAgICAgICAgICBtZmxvICAgIGRlc3QKKyAgICAgICAgICAgICAgICBz
cmEgICAgIGFkZHJUZW1wLCBkZXN0LCAzMQorICAgICAgICAgICAgICAgIGJlcSAgICAgZGF0YVRl
bXAsIGFkZHJUZW1wLCBOb19vdmVyZmxvdyAjIGFsbCBzaWduIGJpdHMgKGJpdCA2MyB0byBiaXQg
MzEpIGFyZSB0aGUgc2FtZSAtPiBubyBvdmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAg
ICAgICAgICAgICAgIGIgICAgICAgT3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBub3AKKyAgICAg
ICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AK
KyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgIE5vX292ZXJmbG93OgorICAgICAgICAg
ICAgKi8KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm11bHQoc3JjMSwgc3JjMik7CisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5tZmhpKGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9h
c3NlbWJsZXIubWZsbyhkZXN0KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNyYShhZGRyVGVt
cFJlZ2lzdGVyLCBkZXN0LCAzMSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZXEoZGF0YVRl
bXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgNyk7CisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5ub3AoKTsKKyAgICAgICAgICAgIHJldHVybiBqdW1wKCk7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGNvbmQgPT0gU2lnbmVkKSB7CisgICAgICAgICAgICBtdWwzMihzcmMxLCBzcmMyLCBkZXN0
KTsKKyAgICAgICAgICAgIC8vIENoZWNrIGlmIGRlc3QgaXMgbmVnYXRpdmUuCisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5zbHQoY21wVGVtcFJlZ2lzdGVyLCBkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6
ZXJvKTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChjbXBUZW1wUmVnaXN0ZXIs
IE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IFpl
cm8pIHsKKyAgICAgICAgICAgIG11bDMyKHNyYzEsIHNyYzIsIGRlc3QpOworICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9
CisgICAgICAgIGlmIChjb25kID09IE5vblplcm8pIHsKKyAgICAgICAgICAgIG11bDMyKHNyYzEs
IHNyYzIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGRlc3QsIE1J
UFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIEFTU0VSVCgwKTsKKyAgICAg
ICAgcmV0dXJuIEp1bXAoKTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChj
b25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKQEAgLTE0NDYsOCArMTc0Miw3IEBA
IHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVz
dGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1vdmUoc3JjLCBkZXN0
KTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMyKGNvbmQsIGltbVRlbXBSZWdpc3RlciwgZGVz
dCk7CisgICAgICAgIHJldHVybiBicmFuY2hNdWwzMihjb25kLCBpbW1UZW1wUmVnaXN0ZXIsIHNy
YywgZGVzdCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRpb24g
Y29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTE1MDYsOCArMTgwMSw2
MCBAQCBwdWJsaWM6CiAgICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
CiAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICBtb3ZlKHNyYywg
ZGVzdCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hTdWIzMihjb25kLCBpbW1UZW1wUmVnaXN0ZXIs
IGRlc3QpOworICAgICAgICByZXR1cm4gYnJhbmNoU3ViMzIoY29uZCwgc3JjLCBpbW1UZW1wUmVn
aXN0ZXIsIGRlc3QpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBT
aWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKKyAgICAgICAg
aWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAg
bW92ZSAgICBkZXN0LCBkYXRhVGVtcAorICAgICAgICAgICAgICAgIHhvciAgICAgY21wVGVtcCwg
ZGF0YVRlbXAsIHNyYworICAgICAgICAgICAgICAgIGJnZXogICAgY21wVGVtcCwgTm9fb3ZlcmZs
b3cgICAgIyBzYW1lIHNpZ24gYml0IC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgc3Vi
dSAgICBkZXN0LCBkYXRhVGVtcCwgc3JjCisgICAgICAgICAgICAgICAgeG9yICAgICBjbXBUZW1w
LCBkZXN0LCBkYXRhVGVtcAorICAgICAgICAgICAgICAgIGJnZXogICAgY21wVGVtcCwgTm9fb3Zl
cmZsb3cgICAgIyBzYW1lIHNpZ24gYml0IC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAg
bm9wCisgICAgICAgICAgICAgICAgYiAgICAgICBPdmVyZmxvdworICAgICAgICAgICAgICAgIG5v
cAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAg
ICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgTm9fb3ZlcmZsb3c6Cisg
ICAgICAgICAgICAqLworICAgICAgICAgICAgbW92ZShvcDEsIGRhdGFUZW1wUmVnaXN0ZXIpOwor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1w
UmVnaXN0ZXIsIG9wMik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdp
c3RlciwgMTApOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3VidShkZXN0LCBkYXRhVGVtcFJl
Z2lzdGVyLCBvcDIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVn
aXN0ZXIsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
YmdleihjbXBUZW1wUmVnaXN0ZXIsIDcpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7
CisgICAgICAgICAgICByZXR1cm4ganVtcCgpOworICAgICAgICB9CisgICAgICAgIGlmIChjb25k
ID09IFNpZ25lZCkgeworICAgICAgICAgICAgc3ViMzIob3AxLCBvcDIsIGRlc3QpOworICAgICAg
ICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdhdGl2ZS4KKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAg
ICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lz
dGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gWmVybykgeworICAg
ICAgICAgICAgc3ViMzIob3AxLCBvcDIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5j
aEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIGlm
IChjb25kID09IE5vblplcm8pIHsKKyAgICAgICAgICAgIHN1YjMyKG9wMSwgb3AyLCBkZXN0KTsK
KyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6
ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoMCk7CisgICAgICAgIHJldHVybiBKdW1w
KCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hOZWczMihSZXN1bHRDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBzcmNEZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGkoZGF0YVRl
bXBSZWdpc3RlciwgLTEpOworICAgICAgICByZXR1cm4gYnJhbmNoTXVsMzIoY29uZCwgZGF0YVRl
bXBSZWdpc3Rlciwgc3JjRGVzdCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hPcjMyKFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMTU1
OSw3ICsxOTA2LDggQEAgcHVibGljOgogCiAgICAgQ2FsbCBjYWxsKFJlZ2lzdGVySUQgdGFyZ2V0
KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuamFscih0YXJnZXQpOworICAgICAgICBtb3Zl
KHRhcmdldCwgTUlQU1JlZ2lzdGVyczo6dDkpOworICAgICAgICBtX2Fzc2VtYmxlci5qYWxyKE1J
UFNSZWdpc3RlcnM6OnQ5KTsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgICAgIHJl
dHVybiBDYWxsKG1fYXNzZW1ibGVyLmxhYmVsKCksIENhbGw6Ok5vbmUpOwogICAgIH0KQEAgLTE5
OTAsNiArMjMzOCwxOSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKKyAgICB2b2lkIG1vdmVE
b3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBpZiAoc3JjICE9IGRlc3QgfHwgbV9maXhlZFdpZHRoKQorICAgICAgICAgICAgbV9hc3NlbWJs
ZXIubW92ZChkZXN0LCBzcmMpOworICAgIH0KKworICAgIHZvaWQgc3dhcERvdWJsZShGUFJlZ2lz
dGVySUQgZnIxLCBGUFJlZ2lzdGVySUQgZnIyKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShm
cjEsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbW92ZURvdWJsZShmcjIsIGZyMSk7CisgICAg
ICAgIG1vdmVEb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGZyMik7CisgICAgfQorCiAgICAgdm9pZCBh
ZGREb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5hZGRkKGRlc3QsIGRlc3QsIHNyYyk7CkBAIC0yMDE3LDYgKzIzNzgs
MTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zdWJkKGRlc3QsIGRlc3QsIHNyYyk7
CiAgICAgfQogCisgICAgdm9pZCBzdWJEb3VibGUoRlBSZWdpc3RlcklEIG9wMSwgRlBSZWdpc3Rl
cklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5z
dWJkKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIHN1YkRvdWJsZShBZGRyZXNz
IHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBsb2FkRG91YmxlKHNyYywg
ZnBUZW1wUmVnaXN0ZXIpOwpAQCAtMjAzNCwxMSArMjQwMCwzMiBAQCBwdWJsaWM6CiAgICAgICAg
IG1fYXNzZW1ibGVyLm11bGQoZGVzdCwgZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOwogICAgIH0KIAor
ICAgIHZvaWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQ
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubXVsZChkZXN0LCBv
cDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCBkaXZEb3VibGUoRlBSZWdpc3RlcklEIHNyYywg
RlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5kaXZkKGRlc3Qs
IGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBkaXZEb3VibGUoRlBSZWdpc3RlcklEIG9w
MSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5kaXZkKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKKyAgICB2b2lkIGRpdkRv
dWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2Fk
RG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5kaXZkKGRl
c3QsIGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ2F0ZURvdWJs
ZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLm5lZ2QoZGVzdCwgc3JjKTsKKyAgICB9CisKICAgICB2b2lkIGNvbnZlcnRJbnQz
MlRvRG91YmxlKFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLm10YzEoc3JjLCBmcFRlbXBSZWdpc3Rlcik7CkBAIC0yMTczLDExICsy
NTYwLDMzIEBAIHB1YmxpYzoKICAgICAvLyBJZiB0aGUgcmVzdWx0IGlzIG5vdCByZXByZXNlbnRh
YmxlIGFzIGEgMzIgYml0IHZhbHVlLCBicmFuY2guCiAgICAgLy8gTWF5IGFsc28gYnJhbmNoIGZv
ciBzb21lIHZhbHVlcyB0aGF0IGFyZSByZXByZXNlbnRhYmxlIGluIDMyIGJpdHMKICAgICAvLyAo
c3BlY2lmaWNhbGx5LCBpbiB0aGlzIGNhc2UsIElOVF9NQVggMHg3ZmZmZmZmZikuCi0gICAgSnVt
cCBicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIGVudW0gQnJhbmNoVHJ1bmNhdGVUeXBlIHsgQnJhbmNoSWZUcnVuY2F0ZUZh
aWxlZCwgQnJhbmNoSWZUcnVuY2F0ZVN1Y2Nlc3NmdWwgfTsKKyAgICBKdW1wIGJyYW5jaFRydW5j
YXRlRG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEJyYW5j
aFRydW5jYXRlVHlwZSBicmFuY2hUeXBlID0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnRydW5jd2QoZnBUZW1wUmVnaXN0ZXIsIHNyYyk7CisgICAg
ICAgIG1fYXNzZW1ibGVyLm1mYzEoZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1
cm4gYnJhbmNoMzIoYnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRydW5jYXRlRmFpbGVkID8gRXF1YWwg
OiBOb3RFcXVhbCwgZGVzdCwgVHJ1c3RlZEltbTMyKDB4N2ZmZmZmZmYpKTsKKyAgICB9CisKKyAg
ICBKdW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0LCBCcmFuY2hUcnVuY2F0ZVR5cGUgYnJhbmNoVHlwZSA9IEJyYW5jaElmVHJ1
bmNhdGVGYWlsZWQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci50cnVuY3dkKGZwVGVtcFJl
Z2lzdGVyLCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci5tZmMxKGRlc3QsIGZwVGVtcFJlZ2lz
dGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGJyYW5jaFR5cGUgPT0gQnJhbmNoSWZUcnVu
Y2F0ZUZhaWxlZCA/IEVxdWFsIDogTm90RXF1YWwsIGRlc3QsIFRydXN0ZWRJbW0zMigwKSk7Cisg
ICAgfQorCisgICAgLy8gUmVzdWx0IGlzIHVuZGVmaW5lZCBpZiB0aGUgdmFsdWUgaXMgb3V0c2lk
ZSBvZiB0aGUgaW50ZWdlciByYW5nZS4KKyAgICB2b2lkIHRydW5jYXRlRG91YmxlVG9JbnQzMihG
UFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci50cnVuY3dkKGZwVGVtcFJlZ2lzdGVyLCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci5t
ZmMxKGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICAvLyBSZXN1bHQgaXMgdW5k
ZWZpbmVkIGlmIHNyYyA+IDJeMzEKKyAgICB2b2lkIHRydW5jYXRlRG91YmxlVG9VaW50MzIoRlBS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJs
ZXIudHJ1bmN3ZChmcFRlbXBSZWdpc3Rlciwgc3JjKTsKICAgICAgICAgbV9hc3NlbWJsZXIubWZj
MShkZXN0LCBmcFRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBicmFuY2gzMihFcXVhbCwg
ZGVzdCwgVHJ1c3RlZEltbTMyKDB4N2ZmZmZmZmYpKTsKICAgICB9CiAKICAgICAvLyBDb252ZXJ0
ICdzcmMnIHRvIGFuIGludGVnZXIsIGFuZCBwbGFjZXMgdGhlIHJlc3VsdGluZyAnZGVzdCcuCkBA
IC0yMTk5LDI4ICsyNjA4LDQzIEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoRG91YmxlTm9u
WmVybyhGUFJlZ2lzdGVySUQgcmVnLCBGUFJlZ2lzdGVySUQgc2NyYXRjaCkKICAgICB7Ci0jaWYg
V1RGX01JUFNfSVNBX1JFVigyKSAmJiBXVEZfTUlQU19GUDY0Ci0gICAgICAgIG1fYXNzZW1ibGVy
Lm10YzEoTUlQU1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7Ci0gICAgICAgIG1fYXNzZW1ibGVy
Lm10aGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0Y2gpOwotI2Vsc2UKLSAgICAgICAgbV9h
c3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzY3JhdGNoKTsKLSAgICAgICAgbV9h
c3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBGUFJlZ2lzdGVySUQoc2NyYXRjaCAr
IDEpKTsKLSNlbmRpZgorICAgICAgICBtX2Fzc2VtYmxlci52bW92KHNjcmF0Y2gsIE1JUFNSZWdp
c3RlcnM6Onplcm8sIE1JUFNSZWdpc3RlcnM6Onplcm8pOwogICAgICAgICByZXR1cm4gYnJhbmNo
RG91YmxlKERvdWJsZU5vdEVxdWFsLCByZWcsIHNjcmF0Y2gpOwogICAgIH0KIAogICAgIEp1bXAg
YnJhbmNoRG91YmxlWmVyb09yTmFOKEZQUmVnaXN0ZXJJRCByZWcsIEZQUmVnaXN0ZXJJRCBzY3Jh
dGNoKQogICAgIHsKLSNpZiBXVEZfTUlQU19JU0FfUkVWKDIpICYmIFdURl9NSVBTX0ZQNjQKLSAg
ICAgICAgbV9hc3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzY3JhdGNoKTsKLSAg
ICAgICAgbV9hc3NlbWJsZXIubXRoYzEoTUlQU1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7Ci0j
ZWxzZQotICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0
Y2gpOwotICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIEZQUmVn
aXN0ZXJJRChzY3JhdGNoICsgMSkpOwotI2VuZGlmCisgICAgICAgIG1fYXNzZW1ibGVyLnZtb3Yo
c2NyYXRjaCwgTUlQU1JlZ2lzdGVyczo6emVybywgTUlQU1JlZ2lzdGVyczo6emVybyk7CiAgICAg
ICAgIHJldHVybiBicmFuY2hEb3VibGUoRG91YmxlRXF1YWxPclVub3JkZXJlZCwgcmVnLCBzY3Jh
dGNoKTsKICAgICB9CiAKKyAgICAvLyBJbnZlcnQgYSByZWxhdGlvbmFsIGNvbmRpdGlvbiwgZS5n
LiA9PSBiZWNvbWVzICE9LCA8IGJlY29tZXMgPj0sIGV0Yy4KKyAgICBzdGF0aWMgUmVsYXRpb25h
bENvbmRpdGlvbiBpbnZlcnQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAg
ICAgUmVsYXRpb25hbENvbmRpdGlvbiByOworICAgICAgICBpZiAoY29uZCA9PSBFcXVhbCkKKyAg
ICAgICAgICAgIHIgPSBOb3RFcXVhbDsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBOb3RFcXVh
bCkKKyAgICAgICAgICAgIHIgPSBFcXVhbDsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBBYm92
ZSkKKyAgICAgICAgICAgIHIgPSBCZWxvd09yRXF1YWw7CisgICAgICAgIGVsc2UgaWYgKGNvbmQg
PT0gQWJvdmVPckVxdWFsKQorICAgICAgICAgICAgciA9IEJlbG93OworICAgICAgICBlbHNlIGlm
IChjb25kID09IEJlbG93KQorICAgICAgICAgICAgciA9IEFib3ZlT3JFcXVhbDsKKyAgICAgICAg
ZWxzZSBpZiAoY29uZCA9PSBCZWxvd09yRXF1YWwpCisgICAgICAgICAgICByID0gQWJvdmU7Cisg
ICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gR3JlYXRlclRoYW4pCisgICAgICAgICAgICByID0gTGVz
c1RoYW5PckVxdWFsOworICAgICAgICBlbHNlIGlmIChjb25kID09IEdyZWF0ZXJUaGFuT3JFcXVh
bCkKKyAgICAgICAgICAgIHIgPSBMZXNzVGhhbjsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBM
ZXNzVGhhbikKKyAgICAgICAgICAgIHIgPSBHcmVhdGVyVGhhbk9yRXF1YWw7CisgICAgICAgIGVs
c2UgaWYgKGNvbmQgPT0gTGVzc1RoYW5PckVxdWFsKQorICAgICAgICAgICAgciA9IEdyZWF0ZXJU
aGFuOworICAgICAgICByZXR1cm4gcjsKKyAgICB9CisKICAgICB2b2lkIG5vcCgpCiAgICAgewog
ICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKQEAgLTIyMzMsMTIgKzI2NTcsMTIgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGlu
c3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQogICAgIHsKLSAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIE1JUFNBc3NlbWJsZXI6OnJlcGxh
Y2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5k
YXRhTG9jYXRpb24oKSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVt
cFJlcGxhY2VtZW50U2l6ZSgpCiAgICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgTUlQU0Fzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fz
c2VtYmx5SGVscGVycy5oCmluZGV4IDc1YjljNzAuLmMwNjAxNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaApAQCAtOTMsNiArOTMsMjMgQEAg
cHVibGljOgogICAgIH0KICNlbmRpZgogCisjaWYgQ1BVKE1JUFMpCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChSZWdpc3RlcklEIHJlZykKKyAg
ICB7CisgICAgICAgIG1vdmUocmV0dXJuQWRkcmVzc1JlZ2lzdGVyLCByZWcpOworICAgIH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihS
ZWdpc3RlcklEIHJlZykKKyAgICB7CisgICAgICAgIG1vdmUocmVnLCByZXR1cm5BZGRyZXNzUmVn
aXN0ZXIpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybihBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBsb2FkUHRy
KGFkZHJlc3MsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7CisgICAgfQorI2VuZGlmCisKICAgICB2
b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRl
ckVudHJ5IGVudHJ5LCBHUFJSZWcgdG8pCiAgICAgewogICAgICAgICBsb2FkUHRyKEFkZHJlc3Mo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSksIHRv
KTsKQEAgLTE5Myw3ICsyMTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihzY3JhdGNoQnVmZmVyLT5hY3RpdmVMZW5ndGhQdHIoKSksIEdQUkluZm86OnJlZ1QwKTsKICAg
ICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihzY3JhdGNoU2l6ZSksIEdQUkluZm86OnJlZ1Qw
KTsKIAotI2lmIENQVShYODZfNjQpIHx8IENQVShBUk0pCisjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BV
KEFSTSkgfHwgQ1BVKE1JUFMpCiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhcmd1bWVudCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1l
UmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNo
ID0gc2VsZWN0U2NyYXRjaEdQUihHUFJJbmZvOjphcmd1bWVudEdQUjAsIEdQUkluZm86OmFyZ3Vt
ZW50R1BSMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxs
SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaApp
bmRleCA4YWRkZTA1Li43ODVmYTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q0NhbGxIZWxwZXJzLmgKQEAgLTU3Niw2ICs1NzYsMzkgQEAgcHVibGljOgogICAgICAgICBwb2tl
KEdQUkluZm86Om5vbkFyZ0dQUjApOwogICAgIH0KICNlbmRpZiAvLyBDUFUoQVJNX0hBUkRGUCkK
KyNlbGlmIENQVShNSVBTKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhG
UFJSZWcgYXJnMSkKKyAgICB7CisgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJn
dW1lbnRGUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHMoRlBSUmVnIGFyZzEsIEZQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgaWYgKGFyZzIgIT0g
RlBSSW5mbzo6YXJndW1lbnRGUFIwKSB7CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQ
UkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzIsIEZQUklu
Zm86OmFyZ3VtZW50RlBSMSk7CisgICAgICAgIH0gZWxzZSBpZiAoYXJnMSAhPSBGUFJJbmZvOjph
cmd1bWVudEZQUjEpIHsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMiwgRlBSSW5mbzo6YXJn
dW1lbnRGUFIxKTsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJndW1l
bnRGUFIwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFN3YXAgYXJnMSwgYXJn
Mi4KKyAgICAgICAgICAgIHN3YXBEb3VibGUoRlBSSW5mbzo6YXJndW1lbnRGUFIwLCBGUFJJbmZv
Ojphcmd1bWVudEZQUjEpOworICAgICAgICB9CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShGUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIp
CisgICAgeworICAgICAgICBhc3NlbWJsZXIoKS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMiwg
R1BSSW5mbzo6YXJndW1lbnRHUFIzLCBhcmcxKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcG9rZShhcmcy
LCA0KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgRlBSUmVnIGFyZzMpCisgICAgewor
ICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7CisgICAgICAgIG1vdmUoR1BS
SW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAg
IHBva2UoYXJnMywgNCk7CisgICAgfQogI2Vsc2UKICNlcnJvciAiREZHIEpJVCBub3Qgc3VwcG9y
dGVkIG9uIHRoaXMgcGxhdGZvcm0uIgogI2VuZGlmCkBAIC04MDIsNyArODM1LDcgQEAgcHVibGlj
OgogI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNAogICAgIC8vIFRo
ZXNlIG1ldGhvZHMgYXJlIHN1aXRhYmxlIGZvciBhbnkgY2FsbGluZyBjb252ZW50aW9uIHRoYXQg
cHJvdmlkZXMgZm9yCiAgICAgLy8gZXhhY3RseSA0IGFyZ3VtZW50IHJlZ2lzdGVycywgZS5nLiBB
Uk12Ny4KLSNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID09IDQKKyNpZiBOVU1CRVJf
T0ZfQVJHVU1FTlRfUkVHSVNURVJTID09IDQgJiYgIUNQVShNSVBTKQogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBh
cmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewogICAgICAgICBwb2tlKGFyZzQp
OwpAQCAtOTE5LDcgKzk1MiwxMTQgQEAgcHVibGljOgogICAgICAgICBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCi0jZW5kaWYgLy8gTlVNQkVS
X09GX0FSR1VNRU5UX1JFR0lTVEVSUyA9PSA0CisjZW5kaWYgLy8gTlVNQkVSX09GX0FSR1VNRU5U
X1JFR0lTVEVSUyA9PSA0ICYmICFDUFUoTUlQUykKKworI2lmIENQVShNSVBTKQorICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBwb2tl
KGFyZzQsIDQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
MiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmcz
LCBUcnVzdGVkSW1tMzIgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNCwgNCk7CisgICAg
ICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBh
cmc0KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc0LCA0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJl
ZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbVB0ciBhcmc0KQorICAgIHsKKyAgICAgICAg
cG9rZShhcmc0LCA0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3Rl
ZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAgICAgIHBv
a2UoYXJnNSwgNSk7CisgICAgICAgIHBva2UoYXJnNCwgNCk7CisgICAgICAgIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJS
ZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAgICB7Cisg
ICAgICAgIHBva2UoYXJnNSwgNSk7CisgICAgICAgIHBva2UoYXJnNCwgNCk7CisgICAgICAgIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJ
bW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsK
KyAgICAgICAgcG9rZShhcmc0LCA0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcy
LCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbVB0ciBhcmc0KQorICAgIHsKKyAgICAgICAgcG9rZShh
cmc0LCA0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIs
IGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIg
YXJnMywgVHJ1c3RlZEltbVB0ciBhcmc0KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc0LCA0KTsK
KyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwor
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BS
UmVnIGFyZzQpCisgICAgeworICAgICAgICBwb2tlKGFyZzQsIDQpOworICAgICAgICBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUp
CisgICAgeworICAgICAgICBwb2tlKGFyZzUsIDUpOworICAgICAgICBwb2tlKGFyZzQsIDQpOwor
ICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Cisg
ICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJn
NCwgVHJ1c3RlZEltbTMyIGFyZzUpCisgICAgeworICAgICAgICBwb2tlKGFyZzUsIDUpOworICAg
ICAgICBwb2tlKGFyZzQsIDQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQ
UlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgVHJ1c3RlZEltbVB0ciBhcmc1KQorICAgIHsKKyAgICAg
ICAgcG9rZShhcmc1LCA1KTsKKyAgICAgICAgcG9rZShhcmc0LCA0KTsKKyAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMy
IGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQsIFRydXN0
ZWRJbW0zMiBhcmc1KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc1LCA1KTsKKyAgICAgICAgcG9r
ZShhcmc0LCA0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBUcnVz
dGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAg
cG9rZShhcmc1LCA1KTsKKyAgICAgICAgcG9rZShhcmc0LCA0KTsKKyAgICAgICAgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQor
ICAgIHsKKyAgICAgICAgcG9rZShhcmc1LCA1KTsKKyAgICAgICAgcG9rZShhcmc0LCA0KTsKKyAg
ICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAg
IH0KKworI2VuZGlmIC8vIENQVShNSVBTKQogCiAjaWYgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lT
VEVSUyA+PSA1CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywg
R1BSUmVnIGFyZzQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQ
UkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oCmluZGV4IGQ2
YTAzOGEuLjZmOTY4ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RlBSSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oCkBA
IC0xNjQsNiArMTY0LDc0IEBAIHB1YmxpYzoKIAogI2VuZGlmCiAKKyNpZiBDUFUoTUlQUykKKwor
Y2xhc3MgRlBSSW5mbyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBGUFJSZWcgUmVnaXN0ZXJUeXBl
OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDY7CisKKyAg
ICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgorICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdU
MCA9IE1JUFNSZWdpc3RlcnM6OmYwOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMSA9
IE1JUFNSZWdpc3RlcnM6OmY0OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMiA9IE1J
UFNSZWdpc3RlcnM6OmY2OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMyA9IE1JUFNS
ZWdpc3RlcnM6OmY4OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNCA9IE1JUFNSZWdp
c3RlcnM6OmYxMDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDUgPSBNSVBTUmVnaXN0
ZXJzOjpmMTg7CisKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIHJldHVyblZhbHVlRlBSID0gTUlQ
U1JlZ2lzdGVyczo6ZjA7CisKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMCA9
IE1JUFNSZWdpc3RlcnM6OmYxMjsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBS
MSA9IE1JUFNSZWdpc3RlcnM6OmYxNDsKKworICAgIHN0YXRpYyBGUFJSZWcgdG9SZWdpc3Rlcih1
bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgcmVnaXN0
ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7CisgICAgICAgICAgICBmcFJlZ1QwLCBm
cFJlZ1QxLCBmcFJlZ1QyLCBmcFJlZ1QzLCBmcFJlZ1Q0LCBmcFJlZ1Q1IH07CisKKyAgICAgICAg
QVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAgICByZXR1cm4gcmVnaXN0
ZXJGb3JJbmRleFtpbmRleF07CisgICAgfQorCisgICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgo
RlBSUmVnIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7
CisgICAgICAgIEFTU0VSVChyZWcgPCAyMCk7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBpbmRleEZvclJlZ2lzdGVyWzIwXSA9IHsKKyAgICAgICAgICAgIDAsIEludmFsaWRJbmRleCwg
SW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsCisgICAgICAgICAgICAxLCBJbnZhbGlkSW5kZXgs
IDIsIEludmFsaWRJbmRleCwKKyAgICAgICAgICAgIDMsIEludmFsaWRJbmRleCwgNCwgSW52YWxp
ZEluZGV4LAorICAgICAgICAgICAgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJ
bmRleCwgSW52YWxpZEluZGV4LAorICAgICAgICAgICAgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5k
ZXgsIDUsIEludmFsaWRJbmRleCwKKyAgICAgICAgfTsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0
ID0gaW5kZXhGb3JSZWdpc3RlcltyZWddOworICAgICAgICBBU1NFUlQocmVzdWx0ICE9IEludmFs
aWRJbmRleCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIGRlYnVnTmFtZShGUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJl
ZyAhPSBJbnZhbGlkRlBSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDMyKTsKKyAgICAgICAg
c3RhdGljIGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclszMl0gPSB7CisgICAgICAgICAgICAi
ZjAiLCAiZjEiLCAiZjIiLCAiZjMiLAorICAgICAgICAgICAgImY0IiwgImY1IiwgImY2IiwgImY3
IiwKKyAgICAgICAgICAgICJmOCIsICJmOSIsICJmMTAiLCAiZjExIiwKKyAgICAgICAgICAgICJm
MTIiLCAiZjEzIiwgImYxNCIsICJmMTUiCisgICAgICAgICAgICAiZjE2IiwgImYxNyIsICJmMTgi
LCAiZjE5IgorICAgICAgICAgICAgImYyMCIsICJmMjEiLCAiZjIyIiwgImYyMyIKKyAgICAgICAg
ICAgICJmMjQiLCAiZjI1IiwgImYyNiIsICJmMjciCisgICAgICAgICAgICAiZjI4IiwgImYyOSIs
ICJmMzAiLCAiZjMxIgorICAgICAgICB9OworICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVy
W3JlZ107CisgICAgfQorcHJpdmF0ZToKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZh
bGlkSW5kZXggPSAweGZmZmZmZmZmOworfTsKKworI2VuZGlmCisKIHR5cGVkZWYgUmVnaXN0ZXJC
YW5rPEZQUkluZm8+OjppdGVyYXRvciBmcHJfaXRlcmF0b3I7CiAKIH0gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpERkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5m
by5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgKaW5kZXggM2QwNzU1
Ni4uYWE2MzRjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJ
bmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgKQEAgLTQ2
MSw2ICs0NjEsNzMgQEAgcHJpdmF0ZToKIAogI2VuZGlmCiAKKyNpZiBDUFUoTUlQUykKKyNkZWZp
bmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA0CisKK2NsYXNzIEdQUkluZm8geworcHVi
bGljOgorICAgIHR5cGVkZWYgR1BSUmVnIFJlZ2lzdGVyVHlwZTsKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA2OworCisgICAgLy8gVGVtcG9yYXJ5IHJlZ2lz
dGVycy4KKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QwID0gTUlQU1JlZ2lzdGVyczo6djA7
CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMSA9IE1JUFNSZWdpc3RlcnM6OnYxOworICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDIgPSBNSVBTUmVnaXN0ZXJzOjp0NDsKKyAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIHJlZ1QzID0gTUlQU1JlZ2lzdGVyczo6dDU7CisgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyByZWdUNCA9IE1JUFNSZWdpc3RlcnM6OnQ2OworICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgcmVnVDUgPSBNSVBTUmVnaXN0ZXJzOjp0NzsKKyAgICAvLyBUaGVzZSByZWdpc3RlcnMg
bWF0Y2ggdGhlIGJhc2VsaW5lIEpJVC4KKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJl
c3VsdFJlZ2lzdGVyID0gcmVnVDA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1
bHRSZWdpc3RlcjIgPSByZWdUMTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhbGxGcmFtZVJl
Z2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6czA7CisgICAgLy8gVGhlc2UgY29uc3RhbnRzIHByb3Zp
ZGUgdGhlIG5hbWVzIGZvciB0aGUgZ2VuZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYgcmV0dXJuIHZh
bHVlIHJlZ2lzdGVycy4KKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMCA9IE1J
UFNSZWdpc3RlcnM6OmEwOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIxID0g
TUlQU1JlZ2lzdGVyczo6YTE7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjIg
PSBNSVBTUmVnaXN0ZXJzOjphMjsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BS
MyA9IE1JUFNSZWdpc3RlcnM6OmEzOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BS
MCA9IHJlZ1QyOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IHJlZ1QzOwor
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMiA9IHJlZ1Q0OworICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSByZWdUMDsKKyAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIHJldHVyblZhbHVlR1BSMiA9IHJlZ1QxOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9u
UHJlc2VydmVkTm9uUmV0dXJuR1BSID0gcmVnVDU7CisKKyAgICBzdGF0aWMgR1BSUmVnIHRvUmVn
aXN0ZXIodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1i
ZXJPZlJlZ2lzdGVycyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJ
bmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCBy
ZWdUNCwgcmVnVDUgfTsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOwor
ICAgIH0KKworICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEdQUlJlZyByZWcpCisgICAgewor
ICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQocmVn
IDwgMTYpOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3Rlclsx
Nl0gPSB7IEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCAwLCAxLCBJbnZhbGlkSW5kZXgsIElu
dmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52
YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgMiwgMywgNCwgNSB9OworICAg
ICAgICB1bnNpZ25lZCByZXN1bHQgPSBpbmRleEZvclJlZ2lzdGVyW3JlZ107CisgICAgICAgIEFT
U0VSVChyZXN1bHQgIT0gSW52YWxpZEluZGV4KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAg
ICB9CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcpCisgICAg
eworICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQo
cmVnIDwgMTYpOworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzE2
XSA9IHsKKyAgICAgICAgICAgICJ6ZXJvIiwgImF0IiwgInYwIiwgInYxIiwKKyAgICAgICAgICAg
ICJhMCIsICJhMSIsICJhMiIsICJhMyIsCisgICAgICAgICAgICAidDAiLCAidDEiLCAidDIiLCAi
dDMiLAorICAgICAgICAgICAgInQ0IiwgInQ1IiwgInQ2IiwgInQ3IgorICAgICAgICB9OworICAg
ICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107CisgICAgfQorcHJpdmF0ZToKKworICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOworfTsKKwor
I2VuZGlmCisKIHR5cGVkZWYgUmVnaXN0ZXJCYW5rPEdQUkluZm8+OjppdGVyYXRvciBncHJfaXRl
cmF0b3I7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCBmMTM4NGUyLi5lZWYwNjM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xNTI3
LDcgKzE1MjcsNyBAQCBwdWJsaWM6CiAKIC8vIEVuY29kZWRKU1ZhbHVlIGluIEpTVkFMVUUzMl82
NCBpcyBhIDY0LWJpdCBpbnRlZ2VyLiBXaGVuIGJlaW5nIGNvbXBpbGVkIGluIEFSTSBFQUJJLCBp
dCBtdXN0IGJlIGFsaWduZWQgZXZlbi1udW1iZXJlZCByZWdpc3RlciAocjAsIHIyIG9yIFtzcF0p
LgogLy8gVG8gYXZvaWQgYXNzZW1ibGllcyBmcm9tIHVzaW5nIHdyb25nIHJlZ2lzdGVycywgbGV0
J3Mgb2NjdXB5IHIxIG9yIHIzIHdpdGggYSBkdW1teSBhcmd1bWVudCB3aGVuIG5lY2Vzc2FyeS4K
LSNpZiBDT01QSUxFUl9TVVBQT1JUUyhFQUJJKSAmJiBDUFUoQVJNKQorI2lmIChDT01QSUxFUl9T
VVBQT1JUUyhFQUJJKSAmJiBDUFUoQVJNKSkgfHwgQ1BVKE1JUFMpCiAjZGVmaW5lIEVBQklfMzJC
SVRfRFVNTVlfQVJHICAgICAgVHJ1c3RlZEltbTMyKDApLAogI2Vsc2UKICNkZWZpbmUgRUFCSV8z
MkJJVF9EVU1NWV9BUkcKQEAgLTE5NjIsNyArMTk2Miw3IEBAIHB1YmxpYzoKICAgICB9CiAjZW5k
aWYKICAgICAKLSNpZiAhZGVmaW5lZChOREVCVUcpICYmICFDUFUoQVJNKQorI2lmICFkZWZpbmVk
KE5ERUJVRykgJiYgIUNQVShBUk0pICYmICFDUFUoTUlQUykKICAgICB2b2lkIHByZXBhcmVGb3JF
eHRlcm5hbENhbGwoKQogICAgIHsKICAgICAgICAgLy8gV2UncmUgYWJvdXQgdG8gY2FsbCBvdXQg
dG8gYSAibmF0aXZlIiBoZWxwZXIgZnVuY3Rpb24uIFRoZSBoZWxwZXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAppbmRleCBkMmE5MWJhLi40MzFmY2MzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCkBAIC0xMjUsNiArMTI1
LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBj
YWNoZWRSZXN1bHRSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OnYwOwogICAgICAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCBmaXJzdEFyZ3VtZW50UmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjph
MDsKICAgICAgICAgCisjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgICAgICBzdGF0aWMg
Y29uc3QgUmVnaXN0ZXJJRCBidWNrZXRDb3VudGVyUmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjpz
MzsKKyNlbmRpZgorCiAgICAgICAgIC8vIHJlZ1QwIG11c3QgYmUgdjAgZm9yIHJldHVybmluZyBh
IDMyLWJpdCB2YWx1ZS4KICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDAgPSBN
SVBTUmVnaXN0ZXJzOjp2MDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsRGF0YS5oCmluZGV4IDBmZmFjY2IuLjAxZTYwNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCkBAIC0xMjksMTQgKzEyOSwxOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0K
IAotICAgICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVfdCBidWZmZXJTaXpl
KSB7IHJldHVybiBzaXplb2Yoc2l6ZV90KSArIGJ1ZmZlclNpemU7IH0KKyAgICAgICAgc3RhdGlj
IHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkgeyByZXR1cm4gc2l6ZW9m
KFNjcmF0Y2hCdWZmZXIpICsgYnVmZmVyU2l6ZTsgfQogICAgICAgICB2b2lkIHNldEFjdGl2ZUxl
bmd0aChzaXplX3QgYWN0aXZlTGVuZ3RoKSB7IG1fYWN0aXZlTGVuZ3RoID0gYWN0aXZlTGVuZ3Ro
OyB9CiAgICAgICAgIHNpemVfdCBhY3RpdmVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2
ZUxlbmd0aDsgfTsKICAgICAgICAgc2l6ZV90KiBhY3RpdmVMZW5ndGhQdHIoKSB7IHJldHVybiAm
bV9hY3RpdmVMZW5ndGg7IH07CiAgICAgICAgIHZvaWQqIGRhdGFCdWZmZXIoKSB7IHJldHVybiBt
X2J1ZmZlcjsgfQogCiAgICAgICAgIHNpemVfdCBtX2FjdGl2ZUxlbmd0aDsKKyNpZiBDUFUoTUlQ
UykgJiYgKGRlZmluZWQgV1RGX01JUFNfQVJDSF9SRVYgJiYgV1RGX01JUFNfQVJDSF9SRVYgPT0g
MikKKyAgICAgICAgdm9pZCogbV9idWZmZXJbMF0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkp
OworI2Vsc2UKICAgICAgICAgdm9pZCogbV9idWZmZXJbMF07CisjZW5kaWYKICAgICB9OwogI2lm
IENPTVBJTEVSKE1TVkMpCiAjcHJhZ21hIHdhcm5pbmcocG9wKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBmNjM2ZmZjLi5jNTI3
ZjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTExLTE0ICBCYWxhenMgS2lsdmFkeSAgPGtp
bHZhZHliQGhvbWVqaW5uaS5jb20+CisKKyAgICAgICAgTUlQUyBERkcgaW1wbGVtZW50YXRpb24u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDEzMjgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBERkcgaW1w
bGVtZW50YXRpb24gZm9yIE1JUFMuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAx
Mi0xMS0xNCAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFtRdF1bQVJNXSBFbmFibGUgdGhlIERGRyBKSVQgb24gQVJNdjcoVGh1bWIyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgK
aW5kZXggYjA3ZWZiNS4uZGIyODRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC05NDIsNiArOTQyLDEwIEBA
CiAjaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKICNkZWZpbmUgRU5BQkxFX0RGR19KSVQgMQogI2Vu
ZGlmCisvKiBFbmFibGUgdGhlIERGRyBKSVQgb24gTUlQUy4gKi8KKyNpZiBDUFUoTUlQUykKKyNk
ZWZpbmUgRU5BQkxFX0RGR19KSVQgMQorI2VuZGlmCiAjZW5kaWYKIAogLyogSWYgdGhlIGppdCBp
cyBub3QgYXZhaWxhYmxlLCBlbmFibGUgdGhlIExMSW50IEMgTG9vcDogKi8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>179915</attachid>
            <date>2012-12-18 03:27:59 -0800</date>
            <delta_ts>2013-01-08 08:10:14 -0800</delta_ts>
            <desc>DFG for MIPS.</desc>
            <filename>mips-dfg.diff</filename>
            <type>text/plain</type>
            <size>51251</size>
            <attacher name="Balazs Kilvady">kilvadyb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGE1MjdhMjkuLjU5NjYzOTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDEyLTEyLTE4ICBCYWxhenMgS2lsdmFk
eSAgPGtpbHZhZHliQGhvbWVqaW5uaS5jb20+CisKKyAgICAgICAgTUlQUyBERkcgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
RkcgaW1wbGVtZW50YXRpb24gZm9yIE1JUFMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTUlQU0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpNSVBTQXNzZW1ibGVyKToK
KyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6c2xsdik6CisgICAgICAgIChKU0M6Ok1JUFNB
c3NlbWJsZXI6Om1vdmQpOgorICAgICAgICAoTUlQU0Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6
Ok1JUFNBc3NlbWJsZXI6Om5lZ2QpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJl
bEZvcldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJlbCk6Cisg
ICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6OnZtb3YpOgorICAgICAgICAoSlNDOjpNSVBTQXNz
ZW1ibGVyOjpsaW5rRGlyZWN0SnVtcCk6CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6Om1h
eEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpyZXZl
cnRKdW1wVG9Nb3ZlKToKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6Y2FuSnVtcFdpdGhK
KToKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKToKKyAgICAg
ICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVy
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBva2UpOgorICAgICAgICAqIGFzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJN
SVBTOjphZGQzMik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlck1JUFMpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlck1JUFM6OmFuZDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJNSVBTOjpsc2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6bXVs
MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om9yMzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJzaGlmdDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJNSVBTOjp1cnNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1J
UFM6OnN1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjp4b3IzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6c3RvcmUzMik6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyTUlQUzo6anVtcCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
TUlQUzo6YnJhbmNoQWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmJy
YW5jaE11bDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hTdWIz
Mik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoTmVnMzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmNhbGwpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OmxvYWREb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ck1JUFM6Om1vdmVEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnN3
YXBEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnN1YkRvdWJsZSk6
CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6bXVsRG91YmxlKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpkaXZEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6Om5lZ2F0ZURvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyTUlQUzo6YnJhbmNoVHJ1bmNhdGVEb3VibGVUb0ludDMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hUcnVuY2F0ZURvdWJsZVRvVWludDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjp0cnVuY2F0ZURvdWJsZVRvSW50MzIpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnRydW5jYXRlRG91YmxlVG9VaW50MzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5jaERvdWJsZU5vblplcm8pOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5jaERvdWJsZVplcm9Pck5hTik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6aW52ZXJ0KToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJNSVBTOjpyZXBsYWNlV2l0aEp1bXApOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6Om1heEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAqIGRmZy9E
RkdBc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEFzc2VtYmx5SGVscGVycyk6CisgICAgICAg
IChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNh
bGwpOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6cmVzdG9yZVJldHVybkFk
ZHJlc3NCZWZvcmVSZXR1cm4pOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6
ZGVidWdDYWxsKToKKyAgICAgICAgKiBkZmcvREZHQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChD
Q2FsbEhlbHBlcnMpOgorICAgICAgICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1
bWVudHMpOgorICAgICAgICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6c2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKToKKyAgICAgICAgKiBkZmcvREZHRlBSSW5mby5oOgorICAgICAgICAoREZH
KToKKyAgICAgICAgKEZQUkluZm8pOgorICAgICAgICAoSlNDOjpERkc6OkZQUkluZm86OnRvUmVn
aXN0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkZQUkluZm86OnRvSW5kZXgpOgorICAgICAgICAo
SlNDOjpERkc6OkZQUkluZm86OmRlYnVnTmFtZSk6CisgICAgICAgICogZGZnL0RGR0dQUkluZm8u
aDoKKyAgICAgICAgKERGRyk6CisgICAgICAgIChHUFJJbmZvKToKKyAgICAgICAgKEpTQzo6REZH
OjpHUFJJbmZvOjp0b1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpHUFJJbmZvOjp0b0lu
ZGV4KToKKyAgICAgICAgKEpTQzo6REZHOjpHUFJJbmZvOjpkZWJ1Z05hbWUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoU3BlY3VsYXRpdmVKSVQpOgorICAg
ICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAoSlNJbnRlcmZhY2VKSVQpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0M6OlNjcmF0Y2hC
dWZmZXI6OmFsbG9jYXRpb25TaXplKToKKyAgICAgICAgKFNjcmF0Y2hCdWZmZXIpOgorCiAyMDEy
LTEyLTE3ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29u
c3RhbnQgZm9sZCAhe251bWJlcn0gaW4gdGhlIHBhcnNlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaAppbmRleCAwMjZmODdlLi5iMTgyNzg2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaApA
QCAtMTUyLDYgKzE1Miw4IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIFNlZ21lbnRlZFZlY3RvcjxB
c3NlbWJsZXJMYWJlbCwgNjQ+IEp1bXBzOwogCiAgICAgTUlQU0Fzc2VtYmxlcigpCisgICAgICAg
IDogbV9pbmRleE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKKyAgICAgICAgLCBtX2luZGV4T2ZU
YWlsT2ZMYXN0V2F0Y2hwb2ludChJTlRfTUlOKQogICAgIHsKICAgICB9CiAKQEAgLTMyNSw3ICsz
MjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIGVtaXRJbnN0KDB4MDAwMDAwMDAgfCAocmQgPDwgT1Bf
U0hfUkQpIHwgKHJ0IDw8IE9QX1NIX1JUKSB8ICgoc2hhbXQgJiAweDFmKSA8PCBPUF9TSF9TSEFN
VCkpOwogICAgIH0KIAotICAgIHZvaWQgc2xsdihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJ0
LCBpbnQgcnMpCisgICAgdm9pZCBzbGx2KFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcnQsIFJl
Z2lzdGVySUQgcnMpCiAgICAgewogICAgICAgICBlbWl0SW5zdCgweDAwMDAwMDA0IHwgKHJkIDw8
IE9QX1NIX1JEKSB8IChydCA8PCBPUF9TSF9SVCkgfCAocnMgPDwgT1BfU0hfUlMpKTsKICAgICB9
CkBAIC01MjcsNiArNTI5LDE2IEBAIHB1YmxpYzoKICAgICAgICAgZW1pdEluc3QoMHg0NjIwMDAw
NCB8IChmZCA8PCBPUF9TSF9GRCkgfCAoZnMgPDwgT1BfU0hfRlMpKTsKICAgICB9CiAKKyAgICB2
b2lkIG1vdmQoRlBSZWdpc3RlcklEIGZkLCBGUFJlZ2lzdGVySUQgZnMpCisgICAgeworICAgICAg
ICBlbWl0SW5zdCgweDQ2MjAwMDA2IHwgKGZkIDw8IE9QX1NIX0ZEKSB8IChmcyA8PCBPUF9TSF9G
UykpOworICAgIH0KKworICAgIHZvaWQgbmVnZChGUFJlZ2lzdGVySUQgZmQsIEZQUmVnaXN0ZXJJ
RCBmcykKKyAgICB7CisgICAgICAgIGVtaXRJbnN0KDB4NDYyMDAwMDcgfCAoZmQgPDwgT1BfU0hf
RkQpIHwgKGZzIDw8IE9QX1NIX0ZTKSk7CisgICAgfQorCiAgICAgdm9pZCB0cnVuY3dkKEZQUmVn
aXN0ZXJJRCBmZCwgRlBSZWdpc3RlcklEIGZzKQogICAgIHsKICAgICAgICAgZW1pdEluc3QoMHg0
NjIwMDAwZCB8IChmZCA8PCBPUF9TSF9GRCkgfCAoZnMgPDwgT1BfU0hfRlMpKTsKQEAgLTYxOSw5
ICs2MzEsMjQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9idWZmZXIubGFiZWwoKTsKICAg
ICB9CiAKKyAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbEZvcldhdGNocG9pbnQoKQorICAgIHsKKyAg
ICAgICAgQXNzZW1ibGVyTGFiZWwgcmVzdWx0ID0gbV9idWZmZXIubGFiZWwoKTsKKyAgICAgICAg
aWYgKHN0YXRpY19jYXN0PGludD4ocmVzdWx0Lm1fb2Zmc2V0KSAhPSBtX2luZGV4T2ZMYXN0V2F0
Y2hwb2ludCkKKyAgICAgICAgICAgIHJlc3VsdCA9IGxhYmVsKCk7CisgICAgICAgIG1faW5kZXhP
Zkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0OworICAgICAgICBtX2luZGV4T2ZUYWls
T2ZMYXN0V2F0Y2hwb2ludCA9IHJlc3VsdC5tX29mZnNldCArIG1heEp1bXBSZXBsYWNlbWVudFNp
emUoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBBc3NlbWJsZXJMYWJl
bCBsYWJlbCgpCiAgICAgewotICAgICAgICByZXR1cm4gbV9idWZmZXIubGFiZWwoKTsKKyAgICAg
ICAgQXNzZW1ibGVyTGFiZWwgcmVzdWx0ID0gbV9idWZmZXIubGFiZWwoKTsKKyAgICAgICAgd2hp
bGUgKFVOTElLRUxZKHN0YXRpY19jYXN0PGludD4ocmVzdWx0Lm1fb2Zmc2V0KSA8IG1faW5kZXhP
ZlRhaWxPZkxhc3RXYXRjaHBvaW50KSkgeworICAgICAgICAgICAgbm9wKCk7CisgICAgICAgICAg
ICByZXN1bHQgPSBtX2J1ZmZlci5sYWJlbCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogCiAgICAgQXNzZW1ibGVyTGFiZWwgYWxpZ24oaW50IGFsaWdubWVudCkK
QEAgLTY2NCwxNCArNjkxLDI0IEBAIHB1YmxpYzoKICAgICAvLyBBc3NlbWJseSBoZWxwZXJzIGZv
ciBtb3ZpbmcgZGF0YSBiZXR3ZWVuIGZwIGFuZCByZWdpc3RlcnMuCiAgICAgdm9pZCB2bW92KFJl
Z2lzdGVySUQgcmQxLCBSZWdpc3RlcklEIHJkMiwgRlBSZWdpc3RlcklEIHJuKQogICAgIHsKKyNp
ZiBXVEZfTUlQU19JU0FfUkVWKDIpICYmIFdURl9NSVBTX0ZQNjQKKyAgICAgICAgbWZjMShyZDEs
IHJuKTsKKyAgICAgICAgbWZoYzEocmQyLCBybik7CisjZWxzZQogICAgICAgICBtZmMxKHJkMSwg
cm4pOwogICAgICAgICBtZmMxKHJkMiwgRlBSZWdpc3RlcklEKHJuICsgMSkpOworI2VuZGlmCiAg
ICAgfQogCiAgICAgdm9pZCB2bW92KEZQUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybjEsIFJl
Z2lzdGVySUQgcm4yKQogICAgIHsKKyNpZiBXVEZfTUlQU19JU0FfUkVWKDIpICYmIFdURl9NSVBT
X0ZQNjQKKyAgICAgICAgbXRjMShybjEsIHJkKTsKKyAgICAgICAgbXRoYzEocm4yLCByZCk7Cisj
ZWxzZQogICAgICAgICBtdGMxKHJuMSwgcmQpOwogICAgICAgICBtdGMxKHJuMiwgRlBSZWdpc3Rl
cklEKHJkICsgMSkpOworI2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIHVuc2lnbmVkIGdldENh
bGxSZXR1cm5PZmZzZXQoQXNzZW1ibGVyTGFiZWwgY2FsbCkKQEAgLTY4OCw2ICs3MjUsMzUgQEAg
cHVibGljOgogICAgIC8vIHdyaXRhYmxlIHJlZ2lvbiBvZiBtZW1vcnk7IHRvIG1vZGlmeSB0aGUg
Y29kZSBpbiBhbiBleGVjdXRlLW9ubHkgZXhlY3VhYmxlCiAgICAgLy8gcG9vbCB0aGUgJ3JlcGF0
Y2gnIGFuZCAncmVsaW5rJyBtZXRob2RzIHNob3VsZCBiZSB1c2VkLgogCisgICAgc3RhdGljIHNp
emVfdCBsaW5rRGlyZWN0SnVtcCh2b2lkKiBjb2RlLCB2b2lkKiB0bykKKyAgICB7CisgICAgICAg
IE1JUFNXb3JkKiBpbnNuID0gcmVpbnRlcnByZXRfY2FzdDxNSVBTV29yZCo+KHJlaW50ZXJwcmV0
X2Nhc3Q8aW50cHRyX3Q+KGNvZGUpKTsKKyAgICAgICAgc2l6ZV90IG9wcyA9IDA7CisgICAgICAg
IGludDMyX3Qgc2xvdEFkZHIgPSByZWludGVycHJldF9jYXN0PGludD4oaW5zbikgKyA0OworICAg
ICAgICBpbnQzMl90IHRvQWRkciA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50Pih0byk7CisKKyAgICAg
ICAgaWYgKChzbG90QWRkciAmIDB4ZjAwMDAwMDApICE9ICh0b0FkZHIgJiAweGYwMDAwMDAwKSkg
eworICAgICAgICAgICAgLy8gbHVpCisgICAgICAgICAgICAqaW5zbiA9IDB4M2MwMDAwMDAgfCAo
TUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlQpIHwgKCh0b0FkZHIgPj4gMTYpICYgMHhmZmZm
KTsKKyAgICAgICAgICAgICsraW5zbjsKKyAgICAgICAgICAgIC8vIG9yaQorICAgICAgICAgICAg
Kmluc24gPSAweDM0MDAwMDAwIHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JUKSB8IChN
SVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SUykgfCAodG9BZGRyICYgMHhmZmZmKTsKKyAgICAg
ICAgICAgICsraW5zbjsKKyAgICAgICAgICAgIC8vIGpyCisgICAgICAgICAgICAqaW5zbiA9IDB4
MDAwMDAwMDggfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlMpOworICAgICAgICAgICAg
KytpbnNuOworICAgICAgICAgICAgb3BzID0gNCAqIHNpemVvZihNSVBTV29yZCk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAvLyBqCisgICAgICAgICAgICAqaW5zbiA9IDB4MDgwMDAw
MDAgfCAoKHRvQWRkciAmIDB4MGZmZmZmZmYpID4+IDIpOworICAgICAgICAgICAgKytpbnNuOwor
ICAgICAgICAgICAgb3BzID0gMiAqIHNpemVvZihNSVBTV29yZCk7CisgICAgICAgIH0KKyAgICAg
ICAgLy8gbm9wCisgICAgICAgICppbnNuID0gMHgwMDAwMDAwMDsKKyAgICAgICAgcmV0dXJuIG9w
czsKKyAgICB9CisKICAgICB2b2lkIGxpbmtKdW1wKEFzc2VtYmxlckxhYmVsIGZyb20sIEFzc2Vt
YmxlckxhYmVsIHRvKQogICAgIHsKICAgICAgICAgQVNTRVJUKHRvLmlzU2V0KCkpOwpAQCAtODI1
LDI5ICs4OTEsMzQgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQg
cmV2ZXJ0SnVtcFRvTW92ZSh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCBSZWdpc3RlcklEIHJ0LCBp
bnQgaW1tKQorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCiAg
ICAgewotICAgICAgICBNSVBTV29yZCogaW5zbiA9IHN0YXRpY19jYXN0PE1JUFNXb3JkKj4oaW5z
dHJ1Y3Rpb25TdGFydCkgKyAxOwotICAgICAgICBBU1NFUlQoKCppbnNuICYgMHhmYzAwMDAwMCkg
PT0gMHgzNDAwMDAwMCk7Ci0gICAgICAgICppbnNuID0gKCppbnNuICYgMHhmYzFmMDAwMCkgfCAo
aW1tICYgMHhmZmZmKTsKLSAgICAgICAgY2FjaGVGbHVzaChpbnNuLCBzaXplb2YoTUlQU1dvcmQp
KTsKKyAgICAgICAgcmV0dXJuIHNpemVvZihNSVBTV29yZCkgKiA0OwogICAgIH0KIAotICAgIHN0
YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCB2b2lkKiB0
bykKKyAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wVG9Nb3ZlKHZvaWQqIGluc3RydWN0aW9uU3Rh
cnQsIFJlZ2lzdGVySUQgcnQsIGludCBpbW0pCiAgICAgewotICAgICAgICBNSVBTV29yZCogaW5z
dHJ1Y3Rpb24gPSByZWludGVycHJldF9jYXN0PE1JUFNXb3JkKj4oaW5zdHJ1Y3Rpb25TdGFydCk7
Ci0gICAgICAgIGludHB0cl90IGp1bXBUbyA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRv
KTsKKyAgICAgICAgTUlQU1dvcmQqIGluc24gPSBzdGF0aWNfY2FzdDxNSVBTV29yZCo+KGluc3Ry
dWN0aW9uU3RhcnQpOworICAgICAgICAqaW5zbiA9IDB4M2MwMDAwMDAgfCAocnQgPDwgT1BfU0hf
UlQpIHwgKChpbW0gPj4gMTYpICYgMHhmZmZmKTsKKyAgICAgICAgKytpbnNuOworICAgICAgICAq
aW5zbiA9IDB4MzQwMDAwMDAgfCAocnQgPDwgT1BfU0hfUlMpIHwgKHJ0IDw8IE9QX1NIX1JUKSB8
IChpbW0gJiAweGZmZmYpOworICAgICAgICBjYWNoZUZsdXNoKGluc24sIDIgKiBzaXplb2YoTUlQ
U1dvcmQpKTsKKyAgICB9CiAKLSAgICAgICAgLy8gbHVpCi0gICAgICAgIGluc3RydWN0aW9uWzBd
ID0gMHgzYzAwMDAwMCB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SVCkgfCAoKGp1bXBU
byA+PiAxNikgJiAweGZmZmYpOwotICAgICAgICAvLyBvcmkKLSAgICAgICAgaW5zdHJ1Y3Rpb25b
MV0gPSAweDM0MDAwMDAwIHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JUKSB8IChNSVBT
UmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SUykgfCAoanVtcFRvICYgMHhmZmZmKTsKLSAgICAgICAg
Ly8ganIKLSAgICAgICAgaW5zdHJ1Y3Rpb25bMl0gPSAweDAwMDAwMDA4IHwgKE1JUFNSZWdpc3Rl
cnM6OnQ5IDw8IE9QX1NIX1JTKTsKLSAgICAgICAgLy8gbm9wCi0gICAgICAgIGluc3RydWN0aW9u
WzNdID0gMHgwOworICAgIHN0YXRpYyBib29sIGNhbkp1bXBXaXRoSih2b2lkKiBpbnN0cnVjdGlv
blN0YXJ0LCB2b2lkKiB0bykKKyAgICB7CisgICAgICAgIGludHB0cl90IHNsb3RBZGRyID0gcmVp
bnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25TdGFydCkgKyA0OworICAgICAgICBp
bnRwdHJfdCB0b0FkZHIgPSByZWludGVycHJldF9jYXN0PGludHB0cl90Pih0byk7CisgICAgICAg
IHJldHVybiAoc2xvdEFkZHIgJiAweGYwMDAwMDAwKSA9PSAodG9BZGRyICYgMHhmMDAwMDAwMCk7
CisgICAgfQogCi0gICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1Y3Rpb24sIHNpemVvZihNSVBTV29y
ZCkgKiA0KTsKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1Y3Rp
b25TdGFydCwgdm9pZCogdG8pCisgICAgeworICAgICAgICBBU1NFUlQoIShiaXR3aXNlX2Nhc3Q8
dWludHB0cl90PihpbnN0cnVjdGlvblN0YXJ0KSAmIDMpKTsKKyAgICAgICAgQVNTRVJUKCEoYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4odG8pICYgMykpOworICAgICAgICBBU1NFUlQoY2FuSnVtcFdp
dGhKKGluc3RydWN0aW9uU3RhcnQsIHRvKSk7CisgICAgICAgIHNpemVfdCBvcHMgPSBsaW5rRGly
ZWN0SnVtcChpbnN0cnVjdGlvblN0YXJ0LCB0byk7CisgICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1
Y3Rpb25TdGFydCwgb3BzKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aExv
YWQodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKQEAgLTEwMjMsNiArMTA5NCw4IEBAIHByaXZhdGU6
CiAKICAgICBBc3NlbWJsZXJCdWZmZXIgbV9idWZmZXI7CiAgICAgSnVtcHMgbV9qdW1wczsKKyAg
ICBpbnQgbV9pbmRleE9mTGFzdFdhdGNocG9pbnQ7CisgICAgaW50IG1faW5kZXhPZlRhaWxPZkxh
c3RXYXRjaHBvaW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggM2Q1NzM0MC4uMmYy
NmZmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaApAQCAtMjAwLDYgKzIwMCwxMyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAgICAg
CisjaWYgQ1BVKE1JUFMpCisgICAgdm9pZCBwb2tlKEZQUmVnaXN0ZXJJRCBzcmMsIGludCBpbmRl
eCA9IDApCisgICAgeworICAgICAgICBBU1NFUlQoIShpbmRleCAmIDEpKTsKKyAgICAgICAgc3Rv
cmVEb3VibGUoc3JjLCBhZGRyZXNzRm9yUG9rZShpbmRleCkpOworICAgIH0KKyNlbmRpZgogCiAg
ICAgLy8gQmFja3dhcmRzIGJhbmNoZXMsIHRoZXNlIGFyZSBjdXJyZW50bHkgYWxsIGltcGxlbWVu
dGVkIHVzaW5nIGV4aXN0aW5nIGZvcndhcmRzIGJyYW5jaCBtZWNoYW5pc21zLgogICAgIHZvaWQg
YnJhbmNoUHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIFRydXN0
ZWRJbW1QdHIgaW1tLCBMYWJlbCB0YXJnZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAppbmRleCAzYWIyNTUzLi5kMjBkMTAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyTUlQUy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJNSVBTLmgKQEAgLTExNCw2ICsxMTQsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGR1KGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBhZGQzMihSZWdp
c3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmFkZHUoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQg
YWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
YWRkMzIoaW1tLCBkZXN0LCBkZXN0KTsKQEAgLTI2Nyw2ICsyNzIsMTEgQEAgcHVibGljOgogICAg
ICAgICBtX2Fzc2VtYmxlci5hbmRJbnNuKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAg
dm9pZCBhbmQzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZEluc24oZGVzdCwgb3AxLCBvcDIpOwor
ICAgIH0KKwogICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSAmJiAhbV9maXhlZFdpZHRoKQpAQCAt
MjgzLDkgKzI5MywxNiBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIGxz
aGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB2b2lkIGFuZDMy
KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewotICAgICAgICBtX2Fzc2VtYmxlci5zbGwoZGVzdCwgZGVzdCwgaW1tLm1fdmFsdWUpOworICAg
ICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCisgICAgICAgICAgICBtb3Zl
KE1JUFNSZWdpc3RlcnM6Onplcm8sIGRlc3QpOworICAgICAgICBlbHNlIGlmIChpbW0ubV92YWx1
ZSA+IDAgJiYgaW1tLm1fdmFsdWUgPCA2NTUzNSAmJiAhbV9maXhlZFdpZHRoKQorICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuYW5kaShkZXN0LCBzcmMsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmFuZEluc24oZGVzdCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAg
ICB9CiAgICAgfQogCiAgICAgdm9pZCBsc2hpZnQzMihSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBS
ZWdpc3RlcklEIGRlc3QpCkBAIC0yOTMsMTEgKzMxMCwzMyBAQCBwdWJsaWM6CiAgICAgICAgIG1f
YXNzZW1ibGVyLnNsbHYoZGVzdCwgZGVzdCwgc2hpZnRBbW91bnQpOwogICAgIH0KIAorICAgIHZv
aWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnNsbHYoZGVzdCwgc3JjLCBz
aGlmdEFtb3VudCk7CisgICAgfQorCisgICAgdm9pZCBsc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lz
dGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc2xsdihkZXN0LCBkZXN0LCBpbW1UZW1wUmVnaXN0
ZXIpOworICAgIH0KKworICAgIHZvaWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJ
bW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoaW1tLCBpbW1U
ZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5zbGx2KGRlc3QsIHNyYywgaW1tVGVt
cFJlZ2lzdGVyKTsKKyAgICB9CisKICAgICB2b2lkIG11bDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tdWwoZGVzdCwgZGVzdCwg
c3JjKTsKICAgICB9CiAKKyAgICB2b2lkIG11bDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklE
IG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubXVsKGRl
c3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIG11bDMyKFRydXN0ZWRJbW0zMiBpbW0s
IFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoIWlt
bS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCkBAIC0zNDgsNiArMzg3LDI0IEBAIHB1YmxpYzoK
ICAgICAgICAgbV9hc3NlbWJsZXIub3JJbnNuKGRlc3QsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIp
OwogICAgIH0KIAorICAgIHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSAmJiAh
bV9maXhlZFdpZHRoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChpbW0ubV92
YWx1ZSA+IDAgJiYgaW1tLm1fdmFsdWUgPCA2NTUzNSAmJiAhbV9maXhlZFdpZHRoKSB7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5vcmkoZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgICAgbGkgICAg
ICBkYXRhVGVtcCwgaW1tCisgICAgICAgICAgICBvciAgICAgIGRlc3QsIHNyYywgZGF0YVRlbXAK
KyAgICAgICAgKi8KKyAgICAgICAgbW92ZShpbW0sIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAg
ICBtX2Fzc2VtYmxlci5vckluc24oZGVzdCwgc3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICB9
CisKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIEFic29sdXRlQWRkcmVzcyBkZXN0KQog
ICAgIHsKICAgICAgICAgbG9hZDMyKGRlc3QubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwpAQCAt
MzYwLDYgKzQxNywxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnNyYXYoZGVzdCwg
ZGVzdCwgc2hpZnRBbW91bnQpOwogICAgIH0KIAorICAgIHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJ
RCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnNyYXYoZGVzdCwgc3JjLCBzaGlmdEFtb3VudCk7CisgICAgfQor
CiAgICAgdm9pZCByc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zcmEoZGVzdCwgZGVzdCwgaW1tLm1fdmFsdWUpOwpA
QCAtMzc1LDE2ICs0MzcsMzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zcmx2KGRl
c3QsIGRlc3QsIHNoaWZ0QW1vdW50KTsKICAgICB9CiAKKyAgICB2b2lkIHVyc2hpZnQzMihSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3JsdihkZXN0LCBzcmMsIHNoaWZ0QW1vdW50KTsKKyAg
ICB9CisKICAgICB2b2lkIHVyc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zcmwoZGVzdCwgZGVzdCwgaW1tLm1fdmFs
dWUpOwogICAgIH0KIAorICAgIHZvaWQgdXJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5z
cmwoZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
c3VidShkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgc3ViMzIoUmVnaXN0ZXJJ
RCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5zdWJ1KGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMy
KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChp
bW0ubV92YWx1ZSA+PSAtMzI3NjcgJiYgaW1tLm1fdmFsdWUgPD0gMzI3NjgKQEAgLTQ5NSw2ICs1
NzIsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIGRlc3Qs
IHNyYyk7CiAgICAgfQogCisgICAgdm9pZCB4b3IzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJ
RCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcklu
c24oZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMy
IGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09
IC0xKSB7CkBAIC01MTAsNiArNTkyLDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIu
eG9ySW5zbihkZXN0LCBkZXN0LCBpbW1UZW1wUmVnaXN0ZXIpOwogICAgIH0KIAorICAgIHZvaWQg
eG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkgeworICAgICAgICAgICAgbV9h
c3NlbWJsZXIubm9yKGRlc3QsIHNyYywgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgICAgbGkgIGltbVRl
bXAsIGltbQorICAgICAgICAgICAgeG9yIGRlc3QsIGRlc3QsIGltbVRlbXAKKyAgICAgICAgKi8K
KyAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVy
Lnhvckluc24oZGVzdCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgIH0KKwogICAgIHZvaWQg
c3FydERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAg
ICAgICAgbV9hc3NlbWJsZXIuc3FydGQoZHN0LCBzcmMpOwpAQCAtOTg5LDYgKzEwODYsNDQgQEAg
cHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCBzdG9yZTMyKFRydXN0ZWRJbW0z
MiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKGFkZHJlc3Mub2Zm
c2V0ID49IC0zMjc2OCAmJiBhZGRyZXNzLm9mZnNldCA8PSAzMjc2NyAmJiAhbV9maXhlZFdpZHRo
KSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgIHNsbCAgICAgYWRkclRlbXAsIGFk
ZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUKKyAgICAgICAgICAgICAgICBhZGR1ICAgIGFkZHJU
ZW1wLCBhZGRyVGVtcCwgYWRkcmVzcy5iYXNlCisgICAgICAgICAgICAgICAgc3cgICAgICBzcmMs
IGFkZHJlc3Mub2Zmc2V0KGFkZHJUZW1wKQorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLnNsbChhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNj
YWxlKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoYWRkclRlbXBSZWdpc3RlciwgYWRk
clRlbXBSZWdpc3RlciwgYWRkcmVzcy5iYXNlKTsKKyAgICAgICAgICAgIGlmICghaW1tLm1fdmFs
dWUpCisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3coTUlQU1JlZ2lzdGVyczo6emVybywg
YWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5vZmZzZXQpOworICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuc3coaW1tVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRy
ZXNzLm9mZnNldCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAvKgorICAgICAgICAgICAgICAgIHNsbCAgICAgYWRkclRlbXAsIGFkZHJlc3MuaW5kZXgsIGFk
ZHJlc3Muc2NhbGUKKyAgICAgICAgICAgICAgICBhZGR1ICAgIGFkZHJUZW1wLCBhZGRyVGVtcCwg
YWRkcmVzcy5iYXNlCisgICAgICAgICAgICAgICAgbHVpICAgICBpbW1UZW1wLCAoYWRkcmVzcy5v
ZmZzZXQgKyAweDgwMDApID4+IDE2CisgICAgICAgICAgICAgICAgYWRkdSAgICBhZGRyVGVtcCwg
YWRkclRlbXAsIGltbVRlbXAKKyAgICAgICAgICAgICAgICBzdyAgICAgIHNyYywgKGFkZHJlc3Mu
b2Zmc2V0ICYgMHhmZmZmKShhdCkKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5zbGwoYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJUZW1w
UmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sdWkoaW1t
VGVtcFJlZ2lzdGVyLCAoYWRkcmVzcy5vZmZzZXQgKyAweDgwMDApID4+IDE2KTsKKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmFkZHUoYWRkclRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3Rlciwg
aW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlmICghaW1tLm1fdmFsdWUgJiYgIW1fZml4
ZWRXaWR0aCkKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdyhNSVBTUmVnaXN0ZXJzOjp6
ZXJvLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5zdyhpbW1UZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIs
IGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworCiAg
ICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCBjb25zdCB2b2lkKiBhZGRyZXNzKQogICAg
IHsKICAgICAgICAgLyoKQEAgLTEzMzUsNiArMTQ3MCwxNSBAQCBwdWJsaWM6CiAgICAgICAgIG1f
Zml4ZWRXaWR0aCA9IGZhbHNlOwogICAgIH0KIAorICAgIHZvaWQganVtcChBYnNvbHV0ZUFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fZml4ZWRXaWR0aCA9IHRydWU7CisgICAgICAg
IGxvYWQzMihhZGRyZXNzLm1fcHRyLCBNSVBTUmVnaXN0ZXJzOjp0OSk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmpyKE1JUFNSZWdpc3RlcnM6OnQ5KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7
CisgICAgICAgIG1fZml4ZWRXaWR0aCA9IGZhbHNlOworICAgIH0KKwogICAgIHZvaWQgbW92ZURv
dWJsZVRvSW50cyhGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklE
IGRlc3QyKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIudm1vdihkZXN0MSwgZGVzdDIsIHNy
Yyk7CkBAIC0xNDAzLDYgKzE1NDcsNTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcCgp
OwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChj
b25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKKyAgICAgICAgaWYgKGNvbmQgPT0g
T3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgbW92ZSAgICBkYXRh
VGVtcCwgb3AxCisgICAgICAgICAgICAgICAgeG9yICAgICBjbXBUZW1wLCBkYXRhVGVtcCwgb3Ay
CisgICAgICAgICAgICAgICAgYmx0eiAgICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIGRpZmYg
c2lnbiBiaXQgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBhZGR1ICAgIGRlc3QsIGRh
dGFUZW1wLCBvcDIKKyAgICAgICAgICAgICAgICB4b3IgICAgIGNtcFRlbXAsIGRlc3QsIGRhdGFU
ZW1wCisgICAgICAgICAgICAgICAgYmdleiAgICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIHNh
bWUgc2lnbiBiaWcgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAg
ICAgICAgICBiICAgICAgIE92ZXJmbG93CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAg
ICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAg
ICAgICAgICAgICAgbm9wCisgICAgICAgICAgICBOb19vdmVyZmxvdzoKKyAgICAgICAgICAgICov
CisgICAgICAgICAgICBtb3ZlKG9wMSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBt
X2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwgb3Ay
KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxMCk7Cisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGVzdCwg
ZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBS
ZWdpc3RlciwgNyk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAg
IHJldHVybiBqdW1wKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7
CisgICAgICAgICAgICBhZGQzMihvcDEsIG9wMiwgZGVzdCk7CisgICAgICAgICAgICAvLyBDaGVj
ayBpZiBkZXN0IGlzIG5lZ2F0aXZlLgorICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0KGNtcFRl
bXBSZWdpc3RlciwgZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICByZXR1
cm4gYnJhbmNoTm90RXF1YWwoY21wVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBaZXJvKSB7CisgICAgICAgICAgICBhZGQz
MihvcDEsIG9wMiwgZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoRXF1YWwoZGVzdCwg
TUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gTm9u
WmVybykgeworICAgICAgICAgICAgYWRkMzIob3AxLCBvcDIsIGRlc3QpOworICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaE5vdEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAg
ICB9CisgICAgICAgIEFTU0VSVCgwKTsKKyAgICAgICAgcmV0dXJuIEp1bXAoKTsKKyAgICB9CisK
ICAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIg
aW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJl
Z2lzdGVyKTsKQEAgLTE0MTYsNiArMTYwNywxMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
YnJhbmNoQWRkMzIoY29uZCwgaW1tVGVtcFJlZ2lzdGVyLCBkZXN0KTsKICAgICB9CiAKKyAgICBK
dW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBB
YnNvbHV0ZUFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVy
ZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBO
b25aZXJvKSk7CisgICAgICAgIGlmIChjb25kID09IE92ZXJmbG93KSB7CisgICAgICAgICAgICAv
KgorICAgICAgICAgICAgICAgIG1vdmUgICAgZGF0YVRlbXAsIGRlc3QKKyAgICAgICAgICAgICAg
ICB4b3JpICAgIGNtcFRlbXAsIGRhdGFUZW1wLCBpbW0KKyAgICAgICAgICAgICAgICBibHR6ICAg
IGNtcFRlbXAsIE5vX292ZXJmbG93ICAgICMgZGlmZiBzaWduIGJpdCAtPiBubyBvdmVyZmxvdwor
ICAgICAgICAgICAgICAgIGFkZGl1ICAgZGF0YVRlbXAsIGRhdGFUZW1wLCBpbW0KKyAgICAgICAg
ICAgICAgICBtb3ZlICAgIGRlc3QsIGRhdGFUZW1wCisgICAgICAgICAgICAgICAgeG9yaSAgICBj
bXBUZW1wLCBkYXRhVGVtcCwgaW1tCisgICAgICAgICAgICAgICAgYmdleiAgICBjbXBUZW1wLCBO
b19vdmVyZmxvdyAgICAjIHNhbWUgc2lnbiBiaWcgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAg
ICAgICBub3AKKyAgICAgICAgICAgICAgICBiICAgICAgIE92ZXJmbG93CisgICAgICAgICAgICAg
ICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAg
ICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICBOb19vdmVyZmxv
dzoKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPj0gLTMyNzY4
ICYmIGltbS5tX3ZhbHVlICA8PSAzMjc2NyAmJiAhbV9maXhlZFdpZHRoKSB7CisgICAgICAgICAg
ICAgICAgbG9hZDMyKGRlc3QubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnhvcmkoY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBp
bW0ubV92YWx1ZSk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmx0eihjbXBUZW1wUmVn
aXN0ZXIsIDEwKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRpdShkYXRhVGVtcFJl
Z2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW0ubV92YWx1ZSk7CisgICAgICAgICAgICAgICAg
c3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0Lm1fcHRyKTsKKyAgICAgICAgICAgICAgICBt
X2Fzc2VtYmxlci54b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1f
dmFsdWUpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVy
LCA3KTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgbG9hZDMyKGRlc3QubV9wdHIsIGRhdGFUZW1wUmVnaXN0
ZXIpOworICAgICAgICAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJl
Z2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJs
dHooY21wVGVtcFJlZ2lzdGVyLCAxMCk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRk
aXUoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsK
KyAgICAgICAgICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QubV9wdHIpOwor
ICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmkoY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVt
cFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmJnZXooY21wVGVtcFJlZ2lzdGVyLCA3KTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5u
b3AoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBqdW1wKCk7CisgICAgICAg
IH0KKyAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIGxvYWQzMihk
ZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgYWRkMzIoaW1tVGVtcFJlZ2lz
dGVyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVy
LCBkZXN0Lm1fcHRyKTsKKyAgICAgICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7CisgICAgICAgICAg
ICAvLyBDaGVjayBpZiBkZXN0IGlzIG5lZ2F0aXZlLgorICAgICAgICAgICAgbV9hc3NlbWJsZXIu
c2x0KGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVy
byk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwoY21wVGVtcFJlZ2lzdGVyLCBN
SVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBaZXJv
KQorICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKGRhdGFUZW1wUmVnaXN0ZXIsIE1JUFNS
ZWdpc3RlcnM6Onplcm8pOworICAgICAgICBpZiAoY29uZCA9PSBOb25aZXJvKQorICAgICAgICAg
ICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGRhdGFUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6
Onplcm8pOworICAgICAgICBBU1NFUlQoMCk7CisgICAgICAgIHJldHVybiBKdW1wKCk7CisgICAg
fQorCisgICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9
PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CisgICAgICAgIGlmIChjb25kID09IE92ZXJm
bG93KSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgIG11bHQgICAgc3JjLCBkZXN0
CisgICAgICAgICAgICAgICAgbWZoaSAgICBkYXRhVGVtcAorICAgICAgICAgICAgICAgIG1mbG8g
ICAgZGVzdAorICAgICAgICAgICAgICAgIHNyYSAgICAgYWRkclRlbXAsIGRlc3QsIDMxCisgICAg
ICAgICAgICAgICAgYmVxICAgICBkYXRhVGVtcCwgYWRkclRlbXAsIE5vX292ZXJmbG93ICMgYWxs
IHNpZ24gYml0cyAoYml0IDYzIHRvIGJpdCAzMSkgYXJlIHRoZSBzYW1lIC0+IG5vIG92ZXJmbG93
CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgYiAgICAgICBPdmVyZmxvdwor
ICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAg
IG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAg
ICAgTm9fb3ZlcmZsb3c6CisgICAgICAgICAgICAqLworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
bXVsdChzcmMxLCBzcmMyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1maGkoZGF0YVRlbXBS
ZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tZmxvKGRlc3QpOworICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuc3JhKGFkZHJUZW1wUmVnaXN0ZXIsIGRlc3QsIDMxKTsKKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmJlcShkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCA3
KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGp1
bXAoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKKyAgICAgICAg
ICAgIG11bDMyKHNyYzEsIHNyYzIsIGRlc3QpOworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVz
dCBpcyBuZWdhdGl2ZS4KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0
ZXIsIGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgcmV0dXJuIGJyYW5j
aE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKGNvbmQgPT0gWmVybykgeworICAgICAgICAgICAgbXVsMzIoc3JjMSwg
c3JjMiwgZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoRXF1YWwoZGVzdCwgTUlQU1Jl
Z2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykg
eworICAgICAgICAgICAgbXVsMzIoc3JjMSwgc3JjMiwgZGVzdCk7CisgICAgICAgICAgICByZXR1
cm4gYnJhbmNoTm90RXF1YWwoZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0K
KyAgICAgICAgQVNTRVJUKDApOworICAgICAgICByZXR1cm4gSnVtcCgpOworICAgIH0KKwogICAg
IEp1bXAgYnJhbmNoTXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cp
IHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVy
bykpOwpAQCAtMTQ2NCw4ICsxNzYwLDcgQEAgcHVibGljOgogICAgIEp1bXAgYnJhbmNoTXVsMzIo
UmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVy
KTsKLSAgICAgICAgbW92ZShzcmMsIGRlc3QpOwotICAgICAgICByZXR1cm4gYnJhbmNoTXVsMzIo
Y29uZCwgaW1tVGVtcFJlZ2lzdGVyLCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMy
KGNvbmQsIGltbVRlbXBSZWdpc3Rlciwgc3JjLCBkZXN0KTsKICAgICB9CiAKICAgICBKdW1wIGJy
YW5jaFN1YjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0KQpAQCAtMTUyNCw4ICsxODE5LDYwIEBAIHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaFN1
YjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdp
c3Rlcik7Ci0gICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaFN1
YjMyKGNvbmQsIGltbVRlbXBSZWdpc3RlciwgZGVzdCk7CisgICAgICAgIHJldHVybiBicmFuY2hT
dWIzMihjb25kLCBzcmMsIGltbVRlbXBSZWdpc3RlciwgZGVzdCk7CisgICAgfQorCisgICAgSnVt
cCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIFJlZ2lz
dGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoKGNvbmQg
PT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNv
bmQgPT0gTm9uWmVybykpOworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgeworICAgICAg
ICAgICAgLyoKKyAgICAgICAgICAgICAgICBtb3ZlICAgIGRhdGFUZW1wLCBvcDEKKyAgICAgICAg
ICAgICAgICB4b3IgICAgIGNtcFRlbXAsIGRhdGFUZW1wLCBvcDIKKyAgICAgICAgICAgICAgICBi
Z2V6ICAgIGNtcFRlbXAsIE5vX292ZXJmbG93ICAgICMgc2FtZSBzaWduIGJpdCAtPiBubyBvdmVy
ZmxvdworICAgICAgICAgICAgICAgIHN1YnUgICAgZGVzdCwgZGF0YVRlbXAsIG9wMgorICAgICAg
ICAgICAgICAgIHhvciAgICAgY21wVGVtcCwgZGVzdCwgZGF0YVRlbXAKKyAgICAgICAgICAgICAg
ICBiZ2V6ICAgIGNtcFRlbXAsIE5vX292ZXJmbG93ICAgICMgc2FtZSBzaWduIGJpdCAtPiBubyBv
dmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIGIgICAgICAgT3Zl
cmZsb3cKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAg
ICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAg
ICAgICAgICAgIE5vX292ZXJmbG93OgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1vdmUo
b3AxLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24o
Y21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBvcDIpOworICAgICAgICAgICAgbV9h
c3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDEwKTsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnN1YnUoZGVzdCwgZGF0YVRlbXBSZWdpc3Rlciwgb3AyKTsKKyAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnhvckluc24oY21wVGVtcFJlZ2lzdGVyLCBkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyKTsK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCA3KTsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGp1bXAoKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKKyAgICAgICAgICAgIHN1YjMy
KG9wMSwgb3AyLCBkZXN0KTsKKyAgICAgICAgICAgIC8vIENoZWNrIGlmIGRlc3QgaXMgbmVnYXRp
dmUuCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHQoY21wVGVtcFJlZ2lzdGVyLCBkZXN0LCBN
SVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChj
bXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAg
IGlmIChjb25kID09IFplcm8pIHsKKyAgICAgICAgICAgIHN1YjMyKG9wMSwgb3AyLCBkZXN0KTsK
KyAgICAgICAgICAgIHJldHVybiBicmFuY2hFcXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJv
KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBOb25aZXJvKSB7CisgICAgICAgICAg
ICBzdWIzMihvcDEsIG9wMiwgZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1
YWwoZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJU
KDApOworICAgICAgICByZXR1cm4gSnVtcCgpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoTmVn
MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjRGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxpKGRhdGFUZW1wUmVnaXN0ZXIsIC0xKTsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaE11bDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHNyY0Rlc3QpOwogICAgIH0KIAog
ICAgIEp1bXAgYnJhbmNoT3IzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKQEAgLTE1NzcsNyArMTkyNCw4IEBAIHB1YmxpYzoKIAogICAgIENh
bGwgY2FsbChSZWdpc3RlcklEIHRhcmdldCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmph
bHIodGFyZ2V0KTsKKyAgICAgICAgbW92ZSh0YXJnZXQsIE1JUFNSZWdpc3RlcnM6OnQ5KTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuamFscihNSVBTUmVnaXN0ZXJzOjp0OSk7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLm5vcCgpOwogICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5sYWJlbCgpLCBD
YWxsOjpOb25lKTsKICAgICB9CkBAIC0xODIxLDcgKzIxNjksNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgbHVpICAgICBpbW1UZW1wLCAoYWRkcmVzcy5vZmZzZXQgKyAweDgwMDApID4+IDE2
CiAgICAgICAgICAgICAgICAgYWRkdSAgICBhZGRyVGVtcCwgYWRkclRlbXAsIGltbVRlbXAKICAg
ICAgICAgICAgICAgICBsd2MxICAgIGRlc3QsIChhZGRyZXNzLm9mZnNldCAmIDB4ZmZmZikoYXQp
Ci0gICAgICAgICAgICAgICAgbHdjMSAgICBkZXN0KzQsIChhZGRyZXNzLm9mZnNldCAmIDB4ZmZm
ZiArIDQpKGF0KQorICAgICAgICAgICAgICAgIGx3YzEgICAgZGVzdCsxLCAoYWRkcmVzcy5vZmZz
ZXQgJiAweGZmZmYgKyA0KShhdCkKICAgICAgICAgICAgICovCiAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5zbGwoYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJUZW1w
UmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSk7CkBAIC0yMDA4LDYgKzIzNTYsMTkgQEAgcHVibGljOgog
I2VuZGlmCiAgICAgfQogCisgICAgdm9pZCBtb3ZlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQ
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKHNyYyAhPSBkZXN0IHx8IG1fZml4
ZWRXaWR0aCkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmQoZGVzdCwgc3JjKTsKKyAgICB9
CisKKyAgICB2b2lkIHN3YXBEb3VibGUoRlBSZWdpc3RlcklEIGZyMSwgRlBSZWdpc3RlcklEIGZy
MikKKyAgICB7CisgICAgICAgIG1vdmVEb3VibGUoZnIxLCBmcFRlbXBSZWdpc3Rlcik7CisgICAg
ICAgIG1vdmVEb3VibGUoZnIyLCBmcjEpOworICAgICAgICBtb3ZlRG91YmxlKGZwVGVtcFJlZ2lz
dGVyLCBmcjIpOworICAgIH0KKwogICAgIHZvaWQgYWRkRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMs
IEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkZChkZXN0
LCBkZXN0LCBzcmMpOwpAQCAtMjAzNSw2ICsyMzk2LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9h
c3NlbWJsZXIuc3ViZChkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgc3ViRG91
YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViZChkZXN0LCBvcDEsIG9wMik7CisgICAg
fQorCiAgICAgdm9pZCBzdWJEb3VibGUoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgbG9hZERvdWJsZShzcmMsIGZwVGVtcFJlZ2lzdGVyKTsKQEAgLTIwNTIs
MTEgKzI0MTgsMzIgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5tdWxkKGRlc3QsIGRl
c3QsIGZwVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKKyAgICB2b2lkIG11bERvdWJsZShGUFJlZ2lz
dGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLm11bGQoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZv
aWQgZGl2RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICAgICAgICAgbV9hc3NlbWJsZXIuZGl2ZChkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAg
IHZvaWQgZGl2RG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuZGl2ZChkZXN0LCBvcDEs
IG9wMik7CisgICAgfQorCisgICAgdm9pZCBkaXZEb3VibGUoQWRkcmVzcyBzcmMsIEZQUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZERvdWJsZShzcmMsIGZwVGVtcFJlZ2lzdGVy
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZGl2ZChkZXN0LCBkZXN0LCBmcFRlbXBSZWdpc3Rlcik7
CisgICAgfQorCisgICAgdm9pZCBuZWdhdGVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdp
c3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdkKGRlc3QsIHNyYyk7
CisgICAgfQorCiAgICAgdm9pZCBjb252ZXJ0SW50MzJUb0RvdWJsZShSZWdpc3RlcklEIHNyYywg
RlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKHNyYywg
ZnBUZW1wUmVnaXN0ZXIpOwpAQCAtMjE5MSwxMSArMjU3OCwzMyBAQCBwdWJsaWM6CiAgICAgLy8g
SWYgdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50YWJsZSBhcyBhIDMyIGJpdCB2YWx1ZSwgYnJh
bmNoLgogICAgIC8vIE1heSBhbHNvIGJyYW5jaCBmb3Igc29tZSB2YWx1ZXMgdGhhdCBhcmUgcmVw
cmVzZW50YWJsZSBpbiAzMiBiaXRzCiAgICAgLy8gKHNwZWNpZmljYWxseSwgaW4gdGhpcyBjYXNl
LCBJTlRfTUFYIDB4N2ZmZmZmZmYpLgotICAgIEp1bXAgYnJhbmNoVHJ1bmNhdGVEb3VibGVUb0lu
dDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICBlbnVtIEJyYW5jaFRy
dW5jYXRlVHlwZSB7IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQsIEJyYW5jaElmVHJ1bmNhdGVTdWNj
ZXNzZnVsIH07CisgICAgSnVtcCBicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoRlBSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBCcmFuY2hUcnVuY2F0ZVR5cGUgYnJhbmNoVHlwZSA9
IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci50cnVu
Y3dkKGZwVGVtcFJlZ2lzdGVyLCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci5tZmMxKGRlc3Qs
IGZwVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGJyYW5jaFR5cGUgPT0g
QnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCA/IEVxdWFsIDogTm90RXF1YWwsIGRlc3QsIFRydXN0ZWRJ
bW0zMigweDdmZmZmZmZmKSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hUcnVuY2F0ZURvdWJs
ZVRvVWludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgQnJhbmNoVHJ1bmNh
dGVUeXBlIGJyYW5jaFR5cGUgPSBCcmFuY2hJZlRydW5jYXRlRmFpbGVkKQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIudHJ1bmN3ZChmcFRlbXBSZWdpc3Rlciwgc3JjKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIubWZjMShkZXN0LCBmcFRlbXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBicmFu
Y2gzMihicmFuY2hUeXBlID09IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQgPyBFcXVhbCA6IE5vdEVx
dWFsLCBkZXN0LCBUcnVzdGVkSW1tMzIoMCkpOworICAgIH0KKworICAgIC8vIFJlc3VsdCBpcyB1
bmRlZmluZWQgaWYgdGhlIHZhbHVlIGlzIG91dHNpZGUgb2YgdGhlIGludGVnZXIgcmFuZ2UuCisg
ICAgdm9pZCB0cnVuY2F0ZURvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudHJ1bmN3ZChmcFRlbXBSZWdpc3Rl
ciwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubWZjMShkZXN0LCBmcFRlbXBSZWdpc3Rlcik7
CisgICAgfQorCisgICAgLy8gUmVzdWx0IGlzIHVuZGVmaW5lZCBpZiBzcmMgPiAyXjMxCisgICAg
dm9pZCB0cnVuY2F0ZURvdWJsZVRvVWludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnRydW5jd2QoZnBUZW1wUmVnaXN0ZXIs
IHNyYyk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1mYzEoZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOwot
ICAgICAgICByZXR1cm4gYnJhbmNoMzIoRXF1YWwsIGRlc3QsIFRydXN0ZWRJbW0zMigweDdmZmZm
ZmZmKSk7CiAgICAgfQogCiAgICAgLy8gQ29udmVydCAnc3JjJyB0byBhbiBpbnRlZ2VyLCBhbmQg
cGxhY2VzIHRoZSByZXN1bHRpbmcgJ2Rlc3QnLgpAQCAtMjIxNywyOCArMjYyNiw0MyBAQCBwdWJs
aWM6CiAKICAgICBKdW1wIGJyYW5jaERvdWJsZU5vblplcm8oRlBSZWdpc3RlcklEIHJlZywgRlBS
ZWdpc3RlcklEIHNjcmF0Y2gpCiAgICAgewotI2lmIFdURl9NSVBTX0lTQV9SRVYoMikgJiYgV1RG
X01JUFNfRlA2NAotICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6Onplcm8s
IHNjcmF0Y2gpOwotICAgICAgICBtX2Fzc2VtYmxlci5tdGhjMShNSVBTUmVnaXN0ZXJzOjp6ZXJv
LCBzY3JhdGNoKTsKLSNlbHNlCi0gICAgICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQU1JlZ2lzdGVy
czo6emVybywgc2NyYXRjaCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQU1JlZ2lzdGVy
czo6emVybywgRlBSZWdpc3RlcklEKHNjcmF0Y2ggKyAxKSk7Ci0jZW5kaWYKKyAgICAgICAgbV9h
c3NlbWJsZXIudm1vdihzY3JhdGNoLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBNSVBTUmVnaXN0ZXJz
Ojp6ZXJvKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaERvdWJsZShEb3VibGVOb3RFcXVhbCwgcmVn
LCBzY3JhdGNoKTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaERvdWJsZVplcm9Pck5hTihGUFJl
Z2lzdGVySUQgcmVnLCBGUFJlZ2lzdGVySUQgc2NyYXRjaCkKICAgICB7Ci0jaWYgV1RGX01JUFNf
SVNBX1JFVigyKSAmJiBXVEZfTUlQU19GUDY0Ci0gICAgICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQ
U1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm10aGMxKE1J
UFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0Y2gpOwotI2Vsc2UKLSAgICAgICAgbV9hc3NlbWJsZXIu
bXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzY3JhdGNoKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
bXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBGUFJlZ2lzdGVySUQoc2NyYXRjaCArIDEpKTsKLSNl
bmRpZgorICAgICAgICBtX2Fzc2VtYmxlci52bW92KHNjcmF0Y2gsIE1JUFNSZWdpc3RlcnM6Onpl
cm8sIE1JUFNSZWdpc3RlcnM6Onplcm8pOwogICAgICAgICByZXR1cm4gYnJhbmNoRG91YmxlKERv
dWJsZUVxdWFsT3JVbm9yZGVyZWQsIHJlZywgc2NyYXRjaCk7CiAgICAgfQogCisgICAgLy8gSW52
ZXJ0IGEgcmVsYXRpb25hbCBjb25kaXRpb24sIGUuZy4gPT0gYmVjb21lcyAhPSwgPCBiZWNvbWVz
ID49LCBldGMuCisgICAgc3RhdGljIFJlbGF0aW9uYWxDb25kaXRpb24gaW52ZXJ0KFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCkKKyAgICB7CisgICAgICAgIFJlbGF0aW9uYWxDb25kaXRpb24gcjsK
KyAgICAgICAgaWYgKGNvbmQgPT0gRXF1YWwpCisgICAgICAgICAgICByID0gTm90RXF1YWw7Cisg
ICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gTm90RXF1YWwpCisgICAgICAgICAgICByID0gRXF1YWw7
CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gQWJvdmUpCisgICAgICAgICAgICByID0gQmVsb3dP
ckVxdWFsOworICAgICAgICBlbHNlIGlmIChjb25kID09IEFib3ZlT3JFcXVhbCkKKyAgICAgICAg
ICAgIHIgPSBCZWxvdzsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBCZWxvdykKKyAgICAgICAg
ICAgIHIgPSBBYm92ZU9yRXF1YWw7CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gQmVsb3dPckVx
dWFsKQorICAgICAgICAgICAgciA9IEFib3ZlOworICAgICAgICBlbHNlIGlmIChjb25kID09IEdy
ZWF0ZXJUaGFuKQorICAgICAgICAgICAgciA9IExlc3NUaGFuT3JFcXVhbDsKKyAgICAgICAgZWxz
ZSBpZiAoY29uZCA9PSBHcmVhdGVyVGhhbk9yRXF1YWwpCisgICAgICAgICAgICByID0gTGVzc1Ro
YW47CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gTGVzc1RoYW4pCisgICAgICAgICAgICByID0g
R3JlYXRlclRoYW5PckVxdWFsOworICAgICAgICBlbHNlIGlmIChjb25kID09IExlc3NUaGFuT3JF
cXVhbCkKKyAgICAgICAgICAgIHIgPSBHcmVhdGVyVGhhbjsKKyAgICAgICAgcmV0dXJuIHI7Cisg
ICAgfQorCiAgICAgdm9pZCBub3AoKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7
CkBAIC0yMjUxLDEyICsyNjc1LDEyIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHJlcGxh
Y2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRp
b25MYWJlbCBkZXN0aW5hdGlvbikKICAgICB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICBNSVBTQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoaW5zdHJ1Y3Rpb25TdGFy
dC5kYXRhTG9jYXRpb24oKSwgZGVzdGluYXRpb24uZGF0YUxvY2F0aW9uKCkpOwogICAgIH0KICAg
ICAKICAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQogICAgIHsK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIE1JUFNBc3NlbWJsZXI6Om1h
eEp1bXBSZXBsYWNlbWVudFNpemUoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaAppbmRleCA3NWI5
YzcwLi5jMDYwMTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fz
c2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1i
bHlIZWxwZXJzLmgKQEAgLTkzLDYgKzkzLDIzIEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAor
I2lmIENQVShNSVBTKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwcmVzZXJ2ZVJldHVybkFkZHJl
c3NBZnRlckNhbGwoUmVnaXN0ZXJJRCByZWcpCisgICAgeworICAgICAgICBtb3ZlKHJldHVybkFk
ZHJlc3NSZWdpc3RlciwgcmVnKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVz
dG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oUmVnaXN0ZXJJRCByZWcpCisgICAgeworICAg
ICAgICBtb3ZlKHJlZywgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbG9hZFB0cihhZGRyZXNzLCByZXR1cm5BZGRyZXNzUmVn
aXN0ZXIpOworICAgIH0KKyNlbmRpZgorCiAgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhl
YWRlclB0cihKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSwgR1BSUmVnIHRvKQog
ICAgIHsKICAgICAgICAgbG9hZFB0cihBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBlbnRyeSAqIHNpemVvZihSZWdpc3RlcikpLCB0byk7CkBAIC0xOTMsNyArMjEwLDcgQEAgcHVi
bGljOgogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWN0aXZlTGVu
Z3RoUHRyKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1Q
dHIoc2NyYXRjaFNpemUpLCBHUFJJbmZvOjpyZWdUMCk7CiAKLSNpZiBDUFUoWDg2XzY0KSB8fCBD
UFUoQVJNKQorI2lmIENQVShYODZfNjQpIHx8IENQVShBUk0pIHx8IENQVShNSVBTKQogICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoYXJndW1lbnQpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwog
ICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOwogICAgICAgICBHUFJSZWcgc2NyYXRjaCA9IHNlbGVjdFNjcmF0Y2hHUFIoR1BSSW5m
bzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgKaW5kZXggOGFkZGUwNS4uNzg1ZmEwOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCkBAIC01NzYsNiAr
NTc2LDM5IEBAIHB1YmxpYzoKICAgICAgICAgcG9rZShHUFJJbmZvOjpub25BcmdHUFIwKTsKICAg
ICB9CiAjZW5kaWYgLy8gQ1BVKEFSTV9IQVJERlApCisjZWxpZiBDUFUoTUlQUykKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCisgICAgeworICAgICAg
ICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgfQorCisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJn
MikKKyAgICB7CisgICAgICAgIGlmIChhcmcyICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMCkgewor
ICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAg
ICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgICAg
ICB9IGVsc2UgaWYgKGFyZzEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIxKSB7CisgICAgICAgICAg
ICBtb3ZlRG91YmxlKGFyZzIsIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7CisgICAgICAgICAgICBt
b3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAvLyBTd2FwIGFyZzEsIGFyZzIuCisgICAgICAgICAgICBzd2FwRG91Ymxl
KEZQUkluZm86OmFyZ3VtZW50RlBSMCwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoRlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgYXNzZW1ibGVy
KCkudm1vdihHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMywgYXJn
MSk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMCk7CisgICAgICAgIHBva2UoYXJnMiwgNCk7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIsIEZQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgc2V0dXBTdHViQXJndW1lbnRz
KGFyZzEsIGFyZzIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBwb2tlKGFyZzMsIDQpOworICAgIH0KICNl
bHNlCiAjZXJyb3IgIkRGRyBKSVQgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKICNl
bmRpZgpAQCAtODAyLDcgKzgzNSw3IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBOVU1CRVJfT0ZfQVJH
VU1FTlRfUkVHSVNURVJTID49IDQKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzdWl0YWJsZSBm
b3IgYW55IGNhbGxpbmcgY29udmVudGlvbiB0aGF0IHByb3ZpZGVzIGZvcgogICAgIC8vIGV4YWN0
bHkgNCBhcmd1bWVudCByZWdpc3RlcnMsIGUuZy4gQVJNdjcuCi0jaWYgTlVNQkVSX09GX0FSR1VN
RU5UX1JFR0lTVEVSUyA9PSA0CisjaWYgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA9PSA0
ICYmICFDUFUoTUlQUykKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBh
cmc0KQogICAgIHsKICAgICAgICAgcG9rZShhcmc0KTsKQEAgLTkxOSw3ICs5NTIsMTE0IEBAIHB1
YmxpYzoKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFy
ZzMpOwogICAgIH0KIAotI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0g
NAorI2VuZGlmIC8vIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNCAmJiAhQ1BVKE1J
UFMpCisKKyNpZiBDUFUoTUlQUykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQ
UlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc0LCA0KTsKKyAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQpCisgICAg
eworICAgICAgICBwb2tlKGFyZzQsIDQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZElt
bTMyIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2Uo
YXJnNCwgNCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIFRydXN0
ZWRJbW1QdHIgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNCwgNCk7CisgICAgICAgIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBh
cmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwg
R1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBwb2tlKGFyZzUsIDUpOworICAgICAgICBwb2tl
KGFyZzQsIDQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
MiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJS
ZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBwb2tlKGFyZzUsIDUpOworICAg
ICAgICBwb2tlKGFyZzQsIDQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQ
UlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNCwgNCk7Cisg
ICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAg
ICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIFRydXN0ZWRJbW1Q
dHIgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNCwgNCk7CisgICAgICAgIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBh
cmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkK
KyAgICB7CisgICAgICAgIHBva2UoYXJnNCwgNCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJS
ZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0KQorICAgIHsKKyAgICAgICAg
cG9rZShhcmc0LCA0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIg
YXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc1
LCA1KTsKKyAgICAgICAgcG9rZShhcmc0LCA0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcy
LCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQsIFRydXN0ZWRJbW0zMiBhcmc1KQorICAg
IHsKKyAgICAgICAgcG9rZShhcmc1LCA1KTsKKyAgICAgICAgcG9rZShhcmc0LCA0KTsKKyAgICAg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0K
KworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIFRy
dXN0ZWRJbW1QdHIgYXJnNSkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNSwgNSk7CisgICAgICAg
IHBva2UoYXJnNCwgNCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVn
IGFyZzMsIFRydXN0ZWRJbW0zMiBhcmc0LCBUcnVzdGVkSW1tMzIgYXJnNSkKKyAgICB7CisgICAg
ICAgIHBva2UoYXJnNSwgNSk7CisgICAgICAgIHBva2UoYXJnNCwgNCk7CisgICAgICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0z
MiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0
LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNSwgNSk7CisgICAgICAgIHBv
a2UoYXJnNCwgNCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFy
ZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNSwg
NSk7CisgICAgICAgIHBva2UoYXJnNCwgNCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyNlbmRpZiAvLyBDUFUoTUlQUykK
IAogI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPj0gNQogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJ
bW1QdHIgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0KQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZQUkluZm8uaAppbmRleCBkNmEwMzhhLi42Zjk2OGUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaApAQCAtMTY0LDYgKzE2NCw3NCBAQCBwdWJsaWM6
CiAKICNlbmRpZgogCisjaWYgQ1BVKE1JUFMpCisKK2NsYXNzIEZQUkluZm8geworcHVibGljOgor
ICAgIHR5cGVkZWYgRlBSUmVnIFJlZ2lzdGVyVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA2OworCisgICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4K
KyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDAgPSBNSVBTUmVnaXN0ZXJzOjpmMDsKKyAg
ICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDEgPSBNSVBTUmVnaXN0ZXJzOjpmNDsKKyAgICBz
dGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDIgPSBNSVBTUmVnaXN0ZXJzOjpmNjsKKyAgICBzdGF0
aWMgY29uc3QgRlBSUmVnIGZwUmVnVDMgPSBNSVBTUmVnaXN0ZXJzOjpmODsKKyAgICBzdGF0aWMg
Y29uc3QgRlBSUmVnIGZwUmVnVDQgPSBNSVBTUmVnaXN0ZXJzOjpmMTA7CisgICAgc3RhdGljIGNv
bnN0IEZQUlJlZyBmcFJlZ1Q1ID0gTUlQU1JlZ2lzdGVyczo6ZjE4OworCisgICAgc3RhdGljIGNv
bnN0IEZQUlJlZyByZXR1cm5WYWx1ZUZQUiA9IE1JUFNSZWdpc3RlcnM6OmYwOworCisgICAgc3Rh
dGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjAgPSBNSVBTUmVnaXN0ZXJzOjpmMTI7CisgICAg
c3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjEgPSBNSVBTUmVnaXN0ZXJzOjpmMTQ7CisK
KyAgICBzdGF0aWMgRlBSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCisgICAgeworICAg
ICAgICBzdGF0aWMgY29uc3QgRlBSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3Rl
cnNdID0geworICAgICAgICAgICAgZnBSZWdUMCwgZnBSZWdUMSwgZnBSZWdUMiwgZnBSZWdUMywg
ZnBSZWdUNCwgZnBSZWdUNSB9OworCisgICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mUmVn
aXN0ZXJzKTsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOworICAgIH0K
KworICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEZQUlJlZyByZWcpCisgICAgeworICAgICAg
ICBBU1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwgMjAp
OworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3RlclsyMF0gPSB7
CisgICAgICAgICAgICAwLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4
LAorICAgICAgICAgICAgMSwgSW52YWxpZEluZGV4LCAyLCBJbnZhbGlkSW5kZXgsCisgICAgICAg
ICAgICAzLCBJbnZhbGlkSW5kZXgsIDQsIEludmFsaWRJbmRleCwKKyAgICAgICAgICAgIEludmFs
aWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwKKyAgICAg
ICAgICAgIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCA1LCBJbnZhbGlkSW5kZXgsCisgICAg
ICAgIH07CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGluZGV4Rm9yUmVnaXN0ZXJbcmVnXTsK
KyAgICAgICAgQVNTRVJUKHJlc3VsdCAhPSBJbnZhbGlkSW5kZXgpOworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoRlBSUmVn
IHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7CisgICAg
ICAgIEFTU0VSVChyZWcgPCAzMik7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lRm9y
UmVnaXN0ZXJbMzJdID0geworICAgICAgICAgICAgImYwIiwgImYxIiwgImYyIiwgImYzIiwKKyAg
ICAgICAgICAgICJmNCIsICJmNSIsICJmNiIsICJmNyIsCisgICAgICAgICAgICAiZjgiLCAiZjki
LCAiZjEwIiwgImYxMSIsCisgICAgICAgICAgICAiZjEyIiwgImYxMyIsICJmMTQiLCAiZjE1Igor
ICAgICAgICAgICAgImYxNiIsICJmMTciLCAiZjE4IiwgImYxOSIKKyAgICAgICAgICAgICJmMjAi
LCAiZjIxIiwgImYyMiIsICJmMjMiCisgICAgICAgICAgICAiZjI0IiwgImYyNSIsICJmMjYiLCAi
ZjI3IgorICAgICAgICAgICAgImYyOCIsICJmMjkiLCAiZjMwIiwgImYzMSIKKyAgICAgICAgfTsK
KyAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOworICAgIH0KK3ByaXZhdGU6CisK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW52YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsKK307
CisKKyNlbmRpZgorCiB0eXBlZGVmIFJlZ2lzdGVyQmFuazxGUFJJbmZvPjo6aXRlcmF0b3IgZnBy
X2l0ZXJhdG9yOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR1BSSW5mby5oCmluZGV4IDNkMDc1NTYuLmFhNjM0Y2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCkBAIC00NjEsNiArNDYxLDczIEBAIHByaXZhdGU6CiAK
ICNlbmRpZgogCisjaWYgQ1BVKE1JUFMpCisjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJ
U1RFUlMgNAorCitjbGFzcyBHUFJJbmZvIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEdQUlJlZyBS
ZWdpc3RlclR5cGU7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJz
ID0gNjsKKworICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyByZWdUMCA9IE1JUFNSZWdpc3RlcnM6OnYwOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
cmVnVDEgPSBNSVBTUmVnaXN0ZXJzOjp2MTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Qy
ID0gTUlQU1JlZ2lzdGVyczo6dDQ7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMyA9IE1J
UFNSZWdpc3RlcnM6OnQ1OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDQgPSBNSVBTUmVn
aXN0ZXJzOjp0NjsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q1ID0gTUlQU1JlZ2lzdGVy
czo6dDc7CisgICAgLy8gVGhlc2UgcmVnaXN0ZXJzIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQuCisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IHJlZ1QwOworICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIyID0gcmVnVDE7CisgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OnMw
OworICAgIC8vIFRoZXNlIGNvbnN0YW50cyBwcm92aWRlIHRoZSBuYW1lcyBmb3IgdGhlIGdlbmVy
YWwgcHVycG9zZSBhcmd1bWVudCAmIHJldHVybiB2YWx1ZSByZWdpc3RlcnMuCisgICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjAgPSBNSVBTUmVnaXN0ZXJzOjphMDsKKyAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMSA9IE1JUFNSZWdpc3RlcnM6OmExOworICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIyID0gTUlQU1JlZ2lzdGVyczo6YTI7CisgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBNSVBTUmVnaXN0ZXJzOjphMzsKKyAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjAgPSByZWdUMjsKKyAgICBzdGF0aWMgY29u
c3QgR1BSUmVnIG5vbkFyZ0dQUjEgPSByZWdUMzsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5v
bkFyZ0dQUjIgPSByZWdUNDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BS
ID0gcmVnVDA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSByZWdU
MTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IHJl
Z1Q1OworCisgICAgc3RhdGljIEdQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQorICAg
IHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0g
eyByZWdUMCwgcmVnVDEsIHJlZ1QyLCByZWdUMywgcmVnVDQsIHJlZ1Q1IH07CisgICAgICAgIHJl
dHVybiByZWdpc3RlckZvckluZGV4W2luZGV4XTsKKyAgICB9CisKKyAgICBzdGF0aWMgdW5zaWdu
ZWQgdG9JbmRleChHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZh
bGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDE2KTsKKyAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVnaXN0ZXJbMTZdID0geyBJbnZhbGlkSW5kZXgsIEludmFs
aWRJbmRleCwgMCwgMSwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwg
SW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJ
bnZhbGlkSW5kZXgsIDIsIDMsIDQsIDUgfTsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gaW5k
ZXhGb3JSZWdpc3RlcltyZWddOworICAgICAgICBBU1NFUlQocmVzdWx0ICE9IEludmFsaWRJbmRl
eCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGNo
YXIqIGRlYnVnTmFtZShHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJ
bnZhbGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDE2KTsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclsxNl0gPSB7CisgICAgICAgICAgICAiemVybyIs
ICJhdCIsICJ2MCIsICJ2MSIsCisgICAgICAgICAgICAiYTAiLCAiYTEiLCAiYTIiLCAiYTMiLAor
ICAgICAgICAgICAgInQwIiwgInQxIiwgInQyIiwgInQzIiwKKyAgICAgICAgICAgICJ0NCIsICJ0
NSIsICJ0NiIsICJ0NyIKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3Rl
cltyZWddOworICAgIH0KK3ByaXZhdGU6CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW52
YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsKK307CisKKyNlbmRpZgorCiB0eXBlZGVmIFJlZ2lzdGVy
QmFuazxHUFJJbmZvPjo6aXRlcmF0b3IgZ3ByX2l0ZXJhdG9yOwogCiB9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKaW5kZXggNDFkMWY5Ny4uMjdlMDM1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTUzMyw3ICsxNTMzLDcgQEAgcHVibGljOgogCiAv
LyBFbmNvZGVkSlNWYWx1ZSBpbiBKU1ZBTFVFMzJfNjQgaXMgYSA2NC1iaXQgaW50ZWdlci4gV2hl
biBiZWluZyBjb21waWxlZCBpbiBBUk0gRUFCSSwgaXQgbXVzdCBiZSBhbGlnbmVkIGV2ZW4tbnVt
YmVyZWQgcmVnaXN0ZXIgKHIwLCByMiBvciBbc3BdKS4KIC8vIFRvIGF2b2lkIGFzc2VtYmxpZXMg
ZnJvbSB1c2luZyB3cm9uZyByZWdpc3RlcnMsIGxldCdzIG9jY3VweSByMSBvciByMyB3aXRoIGEg
ZHVtbXkgYXJndW1lbnQgd2hlbiBuZWNlc3NhcnkuCi0jaWYgQ09NUElMRVJfU1VQUE9SVFMoRUFC
SSkgJiYgQ1BVKEFSTSkKKyNpZiAoQ09NUElMRVJfU1VQUE9SVFMoRUFCSSkgJiYgQ1BVKEFSTSkp
IHx8IENQVShNSVBTKQogI2RlZmluZSBFQUJJXzMyQklUX0RVTU1ZX0FSRyAgICAgIFRydXN0ZWRJ
bW0zMigwKSwKICNlbHNlCiAjZGVmaW5lIEVBQklfMzJCSVRfRFVNTVlfQVJHCkBAIC0xOTczLDcg
KzE5NzMsNyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAgICAgCi0jaWYgIWRlZmluZWQoTkRF
QlVHKSAmJiAhQ1BVKEFSTSkKKyNpZiAhZGVmaW5lZChOREVCVUcpICYmICFDUFUoQVJNKSAmJiAh
Q1BVKE1JUFMpCiAgICAgdm9pZCBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCkKICAgICB7CiAgICAg
ICAgIC8vIFdlJ3JlIGFib3V0IHRvIGNhbGwgb3V0IHRvIGEgIm5hdGl2ZSIgaGVscGVyIGZ1bmN0
aW9uLiBUaGUgaGVscGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pT
SW50ZXJmYWNlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklU
LmgKaW5kZXggZDJhOTFiYS4uNDMxZmNjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SlNJbnRlcmZhY2VKSVQuaApAQCAtMTI1LDYgKzEyNSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSBNSVBT
UmVnaXN0ZXJzOjp2MDsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgZmlyc3RBcmd1
bWVudFJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6YTA7CiAgICAgICAgIAorI2lmIEVOQUJMRShW
QUxVRV9QUk9GSUxFUikKKyAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgYnVja2V0Q291
bnRlclJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6czM7CisjZW5kaWYKKwogICAgICAgICAvLyBy
ZWdUMCBtdXN0IGJlIHYwIGZvciByZXR1cm5pbmcgYSAzMi1iaXQgdmFsdWUuCiAgICAgICAgIHN0
YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QwID0gTUlQU1JlZ2lzdGVyczo6djA7CiAgICAgICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAppbmRleCBm
OTQ5MWM1Li5kYjBlMTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuaApAQCAtMTMwLDE0ICsxMzAsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHNpemVfdCBh
bGxvY2F0aW9uU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkgeyByZXR1cm4gc2l6ZW9mKHNpemVfdCkg
KyBidWZmZXJTaXplOyB9CisgICAgICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6
ZV90IGJ1ZmZlclNpemUpIHsgcmV0dXJuIHNpemVvZihTY3JhdGNoQnVmZmVyKSArIGJ1ZmZlclNp
emU7IH0KICAgICAgICAgdm9pZCBzZXRBY3RpdmVMZW5ndGgoc2l6ZV90IGFjdGl2ZUxlbmd0aCkg
eyBtX2FjdGl2ZUxlbmd0aCA9IGFjdGl2ZUxlbmd0aDsgfQogICAgICAgICBzaXplX3QgYWN0aXZl
TGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVMZW5ndGg7IH07CiAgICAgICAgIHNpemVf
dCogYWN0aXZlTGVuZ3RoUHRyKCkgeyByZXR1cm4gJm1fYWN0aXZlTGVuZ3RoOyB9OwogICAgICAg
ICB2b2lkKiBkYXRhQnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogICAgICAgICBzaXpl
X3QgbV9hY3RpdmVMZW5ndGg7CisjaWYgQ1BVKE1JUFMpICYmIChkZWZpbmVkIFdURl9NSVBTX0FS
Q0hfUkVWICYmIFdURl9NSVBTX0FSQ0hfUkVWID09IDIpCisgICAgICAgIHZvaWQqIG1fYnVmZmVy
WzBdIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKTsKKyNlbHNlCiAgICAgICAgIHZvaWQqIG1f
YnVmZmVyWzBdOworI2VuZGlmCiAgICAgfTsKICNpZiBDT01QSUxFUihNU1ZDKQogI3ByYWdtYSB3
YXJuaW5nKHBvcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKaW5kZXggM2IyY2JlYy4uNmU0YzI5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxMi0xMi0xOCAgQmFsYXpzIEtpbHZhZHkgIDxraWx2YWR5YkBob21lamlubmkuY29tPgorCisg
ICAgICAgIE1JUFMgREZHIGltcGxlbWVudGF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgREZHIGltcGxlbWVudGF0aW9uIGZvciBNSVBTLgorCisg
ICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTItMTItMTggIFVsaSBTY2hsYWNodGVyICA8
cHN5Y2hvbkB6bmMuaW4+CiAKICAgICAgICAgSW1wbGVtZW50IHVuY29tbWl0dGVkIG1lbW9yeSBm
b3IgTGludXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNl
L1dURi93dGYvUGxhdGZvcm0uaAppbmRleCBmMmZkM2IwLi44YmJlZGJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgK
QEAgLTk0NCw2ICs5NDQsMTAgQEAKICNpZiBDUFUoQVJNX1RSQURJVElPTkFMKQogI2RlZmluZSBF
TkFCTEVfREZHX0pJVCAxCiAjZW5kaWYKKy8qIEVuYWJsZSB0aGUgREZHIEpJVCBvbiBNSVBTLiAq
LworI2lmIENQVShNSVBTKQorI2RlZmluZSBFTkFCTEVfREZHX0pJVCAxCisjZW5kaWYKICNlbmRp
ZgogCiAvKiBJZiB0aGUgaml0IGlzIG5vdCBhdmFpbGFibGUsIGVuYWJsZSB0aGUgTExJbnQgQyBM
b29wOiAqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>180494</attachid>
            <date>2012-12-21 02:09:40 -0800</date>
            <delta_ts>2013-01-04 09:38:24 -0800</delta_ts>
            <desc>DFG for MIPS.</desc>
            <filename>mips-dfg.diff</filename>
            <type>text/plain</type>
            <size>51696</size>
            <attacher name="Balazs Kilvady">kilvadyb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDBmYTUzODMuLjkxMWE3MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDEyLTEyLTIxICBCYWxhenMgS2lsdmFk
eSAgPGtpbHZhZHliQGhvbWVqaW5uaS5jb20+CisKKyAgICAgICAgTUlQUyBERkcgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
RkcgaW1wbGVtZW50YXRpb24gZm9yIE1JUFMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTUlQU0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpNSVBTQXNzZW1ibGVyKToK
KyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6c2xsdik6CisgICAgICAgIChKU0M6Ok1JUFNB
c3NlbWJsZXI6Om1vdmQpOgorICAgICAgICAoTUlQU0Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6
Ok1JUFNBc3NlbWJsZXI6Om5lZ2QpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJl
bEZvcldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJlbCk6Cisg
ICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6OnZtb3YpOgorICAgICAgICAoSlNDOjpNSVBTQXNz
ZW1ibGVyOjpsaW5rRGlyZWN0SnVtcCk6CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6Om1h
eEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpyZXZl
cnRKdW1wVG9Nb3ZlKToKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhK
dW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKE1h
Y3JvQXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBva2UpOgorICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJNSVBTOjphZGQzMik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlck1JUFMpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmFuZDMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJNSVBTOjpsc2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyTUlQUzo6bXVsMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om9yMzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJzaGlmdDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjp1cnNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OnN1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
Ojp4b3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6c3RvcmUzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6anVtcCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoQWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OmJyYW5jaE11bDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
OjpicmFuY2hTdWIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNo
TmVnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmNhbGwpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmxvYWREb3VibGUpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6Om1vdmVEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OnN3YXBEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6
OnN1YkRvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6bXVsRG91Ymxl
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpkaXZEb3VibGUpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om5lZ2F0ZURvdWJsZSk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRXF1YWwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlck1JUFM6OmJyYW5jaE5vdEVxdWFsKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJNSVBTOjpicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OmJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnRydW5jYXRlRG91YmxlVG9JbnQzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6dHJ1bmNhdGVEb3VibGVUb1VpbnQzMik6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlTm9uWmVybyk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlWmVyb09yTmFOKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjppbnZlcnQpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyTUlQUzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogZGZnL0RG
R0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoQXNzZW1ibHlIZWxwZXJzKToKKyAgICAgICAg
KEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybik6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpk
ZWJ1Z0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEND
YWxsSGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3Vt
ZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUpOgorICAgICAgICAqIGRmZy9ERkdGUFJJbmZvLmg6CisgICAgICAgIChERkcp
OgorICAgICAgICAoRlBSSW5mbyk6CisgICAgICAgIChKU0M6OkRGRzo6RlBSSW5mbzo6dG9SZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6RlBSSW5mbzo6dG9JbmRleCk6CisgICAgICAgIChK
U0M6OkRGRzo6RlBSSW5mbzo6ZGVidWdOYW1lKToKKyAgICAgICAgKiBkZmcvREZHR1BSSW5mby5o
OgorICAgICAgICAoREZHKToKKyAgICAgICAgKEdQUkluZm8pOgorICAgICAgICAoSlNDOjpERkc6
OkdQUkluZm86OnRvUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkdQUkluZm86OnRvSW5k
ZXgpOgorICAgICAgICAoSlNDOjpERkc6OkdQUkluZm86OmRlYnVnTmFtZSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6CisgICAg
ICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAgIChKU0ludGVyZmFjZUpJVCk6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpTQzo6U2NyYXRjaEJ1
ZmZlcjo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoU2NyYXRjaEJ1ZmZlcik6CisKIDIwMTIt
MTItMjAgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaW5hbGx5
IGZvdW5kIHRoZSBwcm9ibGVtLiAgVXNpbmcgdGhlIHdyb25nIEpTQ29udGV4dEdyb3VwLgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaAppbmRleCAw
MjZmODdlLi43ZjU1M2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01JUFNBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01JUFNBc3NlbWJsZXIuaApAQCAtMTUyLDYgKzE1Miw4IEBAIHB1YmxpYzoKICAgICB0eXBlZGVm
IFNlZ21lbnRlZFZlY3RvcjxBc3NlbWJsZXJMYWJlbCwgNjQ+IEp1bXBzOwogCiAgICAgTUlQU0Fz
c2VtYmxlcigpCisgICAgICAgIDogbV9pbmRleE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKKyAg
ICAgICAgLCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludChJTlRfTUlOKQogICAgIHsKICAg
ICB9CiAKQEAgLTMyNSw3ICszMjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIGVtaXRJbnN0KDB4MDAw
MDAwMDAgfCAocmQgPDwgT1BfU0hfUkQpIHwgKHJ0IDw8IE9QX1NIX1JUKSB8ICgoc2hhbXQgJiAw
eDFmKSA8PCBPUF9TSF9TSEFNVCkpOwogICAgIH0KIAotICAgIHZvaWQgc2xsdihSZWdpc3RlcklE
IHJkLCBSZWdpc3RlcklEIHJ0LCBpbnQgcnMpCisgICAgdm9pZCBzbGx2KFJlZ2lzdGVySUQgcmQs
IFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQgcnMpCiAgICAgewogICAgICAgICBlbWl0SW5zdCgw
eDAwMDAwMDA0IHwgKHJkIDw8IE9QX1NIX1JEKSB8IChydCA8PCBPUF9TSF9SVCkgfCAocnMgPDwg
T1BfU0hfUlMpKTsKICAgICB9CkBAIC01MjcsNiArNTI5LDE2IEBAIHB1YmxpYzoKICAgICAgICAg
ZW1pdEluc3QoMHg0NjIwMDAwNCB8IChmZCA8PCBPUF9TSF9GRCkgfCAoZnMgPDwgT1BfU0hfRlMp
KTsKICAgICB9CiAKKyAgICB2b2lkIG1vdmQoRlBSZWdpc3RlcklEIGZkLCBGUFJlZ2lzdGVySUQg
ZnMpCisgICAgeworICAgICAgICBlbWl0SW5zdCgweDQ2MjAwMDA2IHwgKGZkIDw8IE9QX1NIX0ZE
KSB8IChmcyA8PCBPUF9TSF9GUykpOworICAgIH0KKworICAgIHZvaWQgbmVnZChGUFJlZ2lzdGVy
SUQgZmQsIEZQUmVnaXN0ZXJJRCBmcykKKyAgICB7CisgICAgICAgIGVtaXRJbnN0KDB4NDYyMDAw
MDcgfCAoZmQgPDwgT1BfU0hfRkQpIHwgKGZzIDw8IE9QX1NIX0ZTKSk7CisgICAgfQorCiAgICAg
dm9pZCB0cnVuY3dkKEZQUmVnaXN0ZXJJRCBmZCwgRlBSZWdpc3RlcklEIGZzKQogICAgIHsKICAg
ICAgICAgZW1pdEluc3QoMHg0NjIwMDAwZCB8IChmZCA8PCBPUF9TSF9GRCkgfCAoZnMgPDwgT1Bf
U0hfRlMpKTsKQEAgLTYxOSw5ICs2MzEsMjQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9i
dWZmZXIubGFiZWwoKTsKICAgICB9CiAKKyAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbEZvcldhdGNo
cG9pbnQoKQorICAgIHsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgcmVzdWx0ID0gbV9idWZmZXIu
bGFiZWwoKTsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4ocmVzdWx0Lm1fb2Zmc2V0KSAh
PSBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludCkKKyAgICAgICAgICAgIHJlc3VsdCA9IGxhYmVsKCk7
CisgICAgICAgIG1faW5kZXhPZkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0OworICAg
ICAgICBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCA9IHJlc3VsdC5tX29mZnNldCArIG1h
eEp1bXBSZXBsYWNlbWVudFNpemUoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisK
ICAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbCgpCiAgICAgewotICAgICAgICByZXR1cm4gbV9idWZm
ZXIubGFiZWwoKTsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgcmVzdWx0ID0gbV9idWZmZXIubGFi
ZWwoKTsKKyAgICAgICAgd2hpbGUgKFVOTElLRUxZKHN0YXRpY19jYXN0PGludD4ocmVzdWx0Lm1f
b2Zmc2V0KSA8IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50KSkgeworICAgICAgICAgICAg
bm9wKCk7CisgICAgICAgICAgICByZXN1bHQgPSBtX2J1ZmZlci5sYWJlbCgpOworICAgICAgICB9
CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAgQXNzZW1ibGVyTGFiZWwgYWxp
Z24oaW50IGFsaWdubWVudCkKQEAgLTY2NCwxNCArNjkxLDI0IEBAIHB1YmxpYzoKICAgICAvLyBB
c3NlbWJseSBoZWxwZXJzIGZvciBtb3ZpbmcgZGF0YSBiZXR3ZWVuIGZwIGFuZCByZWdpc3RlcnMu
CiAgICAgdm9pZCB2bW92KFJlZ2lzdGVySUQgcmQxLCBSZWdpc3RlcklEIHJkMiwgRlBSZWdpc3Rl
cklEIHJuKQogICAgIHsKKyNpZiBXVEZfTUlQU19JU0FfUkVWKDIpICYmIFdURl9NSVBTX0ZQNjQK
KyAgICAgICAgbWZjMShyZDEsIHJuKTsKKyAgICAgICAgbWZoYzEocmQyLCBybik7CisjZWxzZQog
ICAgICAgICBtZmMxKHJkMSwgcm4pOwogICAgICAgICBtZmMxKHJkMiwgRlBSZWdpc3RlcklEKHJu
ICsgMSkpOworI2VuZGlmCiAgICAgfQogCiAgICAgdm9pZCB2bW92KEZQUmVnaXN0ZXJJRCByZCwg
UmVnaXN0ZXJJRCBybjEsIFJlZ2lzdGVySUQgcm4yKQogICAgIHsKKyNpZiBXVEZfTUlQU19JU0Ff
UkVWKDIpICYmIFdURl9NSVBTX0ZQNjQKKyAgICAgICAgbXRjMShybjEsIHJkKTsKKyAgICAgICAg
bXRoYzEocm4yLCByZCk7CisjZWxzZQogICAgICAgICBtdGMxKHJuMSwgcmQpOwogICAgICAgICBt
dGMxKHJuMiwgRlBSZWdpc3RlcklEKHJkICsgMSkpOworI2VuZGlmCiAgICAgfQogCiAgICAgc3Rh
dGljIHVuc2lnbmVkIGdldENhbGxSZXR1cm5PZmZzZXQoQXNzZW1ibGVyTGFiZWwgY2FsbCkKQEAg
LTY4OCw2ICs3MjUsMzUgQEAgcHVibGljOgogICAgIC8vIHdyaXRhYmxlIHJlZ2lvbiBvZiBtZW1v
cnk7IHRvIG1vZGlmeSB0aGUgY29kZSBpbiBhbiBleGVjdXRlLW9ubHkgZXhlY3VhYmxlCiAgICAg
Ly8gcG9vbCB0aGUgJ3JlcGF0Y2gnIGFuZCAncmVsaW5rJyBtZXRob2RzIHNob3VsZCBiZSB1c2Vk
LgogCisgICAgc3RhdGljIHNpemVfdCBsaW5rRGlyZWN0SnVtcCh2b2lkKiBjb2RlLCB2b2lkKiB0
bykKKyAgICB7CisgICAgICAgIE1JUFNXb3JkKiBpbnNuID0gcmVpbnRlcnByZXRfY2FzdDxNSVBT
V29yZCo+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGNvZGUpKTsKKyAgICAgICAgc2l6ZV90
IG9wcyA9IDA7CisgICAgICAgIGludDMyX3Qgc2xvdEFkZHIgPSByZWludGVycHJldF9jYXN0PGlu
dD4oaW5zbikgKyA0OworICAgICAgICBpbnQzMl90IHRvQWRkciA9IHJlaW50ZXJwcmV0X2Nhc3Q8
aW50Pih0byk7CisKKyAgICAgICAgaWYgKChzbG90QWRkciAmIDB4ZjAwMDAwMDApICE9ICh0b0Fk
ZHIgJiAweGYwMDAwMDAwKSkgeworICAgICAgICAgICAgLy8gbHVpCisgICAgICAgICAgICAqaW5z
biA9IDB4M2MwMDAwMDAgfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlQpIHwgKCh0b0Fk
ZHIgPj4gMTYpICYgMHhmZmZmKTsKKyAgICAgICAgICAgICsraW5zbjsKKyAgICAgICAgICAgIC8v
IG9yaQorICAgICAgICAgICAgKmluc24gPSAweDM0MDAwMDAwIHwgKE1JUFNSZWdpc3RlcnM6OnQ5
IDw8IE9QX1NIX1JUKSB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SUykgfCAodG9BZGRy
ICYgMHhmZmZmKTsKKyAgICAgICAgICAgICsraW5zbjsKKyAgICAgICAgICAgIC8vIGpyCisgICAg
ICAgICAgICAqaW5zbiA9IDB4MDAwMDAwMDggfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hf
UlMpOworICAgICAgICAgICAgKytpbnNuOworICAgICAgICAgICAgb3BzID0gNCAqIHNpemVvZihN
SVBTV29yZCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBqCisgICAgICAgICAg
ICAqaW5zbiA9IDB4MDgwMDAwMDAgfCAoKHRvQWRkciAmIDB4MGZmZmZmZmYpID4+IDIpOworICAg
ICAgICAgICAgKytpbnNuOworICAgICAgICAgICAgb3BzID0gMiAqIHNpemVvZihNSVBTV29yZCk7
CisgICAgICAgIH0KKyAgICAgICAgLy8gbm9wCisgICAgICAgICppbnNuID0gMHgwMDAwMDAwMDsK
KyAgICAgICAgcmV0dXJuIG9wczsKKyAgICB9CisKICAgICB2b2lkIGxpbmtKdW1wKEFzc2VtYmxl
ckxhYmVsIGZyb20sIEFzc2VtYmxlckxhYmVsIHRvKQogICAgIHsKICAgICAgICAgQVNTRVJUKHRv
LmlzU2V0KCkpOwpAQCAtODI1LDI5ICs4OTEsMzYgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQog
Ci0gICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFRvTW92ZSh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0
LCBSZWdpc3RlcklEIHJ0LCBpbnQgaW1tKQorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJl
cGxhY2VtZW50U2l6ZSgpCiAgICAgewotICAgICAgICBNSVBTV29yZCogaW5zbiA9IHN0YXRpY19j
YXN0PE1JUFNXb3JkKj4oaW5zdHJ1Y3Rpb25TdGFydCkgKyAxOwotICAgICAgICBBU1NFUlQoKCpp
bnNuICYgMHhmYzAwMDAwMCkgPT0gMHgzNDAwMDAwMCk7Ci0gICAgICAgICppbnNuID0gKCppbnNu
ICYgMHhmYzFmMDAwMCkgfCAoaW1tICYgMHhmZmZmKTsKLSAgICAgICAgY2FjaGVGbHVzaChpbnNu
LCBzaXplb2YoTUlQU1dvcmQpKTsKKyAgICAgICAgcmV0dXJuIHNpemVvZihNSVBTV29yZCkgKiA0
OwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0cnVj
dGlvblN0YXJ0LCB2b2lkKiB0bykKKyAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wVG9Nb3ZlKHZv
aWQqIGluc3RydWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQgcnQsIGludCBpbW0pCiAgICAgewotICAg
ICAgICBNSVBTV29yZCogaW5zdHJ1Y3Rpb24gPSByZWludGVycHJldF9jYXN0PE1JUFNXb3JkKj4o
aW5zdHJ1Y3Rpb25TdGFydCk7Ci0gICAgICAgIGludHB0cl90IGp1bXBUbyA9IHJlaW50ZXJwcmV0
X2Nhc3Q8aW50cHRyX3Q+KHRvKTsKKyAgICAgICAgTUlQU1dvcmQqIGluc24gPSBzdGF0aWNfY2Fz
dDxNSVBTV29yZCo+KGluc3RydWN0aW9uU3RhcnQpOworICAgICAgICBzaXplX3QgY29kZVNpemUg
PSAyICogc2l6ZW9mKE1JUFNXb3JkKTsKIAogICAgICAgICAvLyBsdWkKLSAgICAgICAgaW5zdHJ1
Y3Rpb25bMF0gPSAweDNjMDAwMDAwIHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JUKSB8
ICgoanVtcFRvID4+IDE2KSAmIDB4ZmZmZik7CisgICAgICAgICppbnNuID0gMHgzYzAwMDAwMCB8
IChydCA8PCBPUF9TSF9SVCkgfCAoKGltbSA+PiAxNikgJiAweGZmZmYpOworICAgICAgICArK2lu
c247CiAgICAgICAgIC8vIG9yaQotICAgICAgICBpbnN0cnVjdGlvblsxXSA9IDB4MzQwMDAwMDAg
fCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlQpIHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8
IE9QX1NIX1JTKSB8IChqdW1wVG8gJiAweGZmZmYpOwotICAgICAgICAvLyBqcgotICAgICAgICBp
bnN0cnVjdGlvblsyXSA9IDB4MDAwMDAwMDggfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hf
UlMpOwotICAgICAgICAvLyBub3AKLSAgICAgICAgaW5zdHJ1Y3Rpb25bM10gPSAweDA7CisgICAg
ICAgICppbnNuID0gMHgzNDAwMDAwMCB8IChydCA8PCBPUF9TSF9SUykgfCAocnQgPDwgT1BfU0hf
UlQpIHwgKGltbSAmIDB4ZmZmZik7CisgICAgICAgICsraW5zbjsKKyAgICAgICAgLy8gaWYganIg
JHQ5CisgICAgICAgIGlmICgqaW5zbiA9PSAweDAzMjAwMDA4KSB7CisgICAgICAgICAgICAqaW5z
biA9IDB4MDAwMDAwMDA7CisgICAgICAgICAgICBjb2RlU2l6ZSArPSBzaXplb2YoTUlQU1dvcmQp
OworICAgICAgICB9CisgICAgICAgIGNhY2hlRmx1c2goaW5zbiwgY29kZVNpemUpOworICAgIH0K
IAotICAgICAgICBjYWNoZUZsdXNoKGluc3RydWN0aW9uLCBzaXplb2YoTUlQU1dvcmQpICogNCk7
CisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKHZvaWQqIGluc3RydWN0aW9uU3RhcnQs
IHZvaWQqIHRvKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEoYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4oaW5zdHJ1Y3Rpb25TdGFydCkgJiAzKSk7CisgICAgICAgIEFTU0VSVCghKGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KHRvKSAmIDMpKTsKKyAgICAgICAgc2l6ZV90IG9wcyA9IGxpbmtEaXJlY3RK
dW1wKGluc3RydWN0aW9uU3RhcnQsIHRvKTsKKyAgICAgICAgY2FjaGVGbHVzaChpbnN0cnVjdGlv
blN0YXJ0LCBvcHMpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoTG9hZCh2
b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQpAQCAtMTAyMyw2ICsxMDk2LDggQEAgcHJpdmF0ZToKIAog
ICAgIEFzc2VtYmxlckJ1ZmZlciBtX2J1ZmZlcjsKICAgICBKdW1wcyBtX2p1bXBzOworICAgIGlu
dCBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludDsKKyAgICBpbnQgbV9pbmRleE9mVGFpbE9mTGFzdFdh
dGNocG9pbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAppbmRleCAzZDU3MzQwLi4yZjI2ZmYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ci5oCkBAIC0yMDAsNiArMjAwLDEzIEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKICAgICAKKyNp
ZiBDUFUoTUlQUykKKyAgICB2b2lkIHBva2UoRlBSZWdpc3RlcklEIHNyYywgaW50IGluZGV4ID0g
MCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghKGluZGV4ICYgMSkpOworICAgICAgICBzdG9yZURv
dWJsZShzcmMsIGFkZHJlc3NGb3JQb2tlKGluZGV4KSk7CisgICAgfQorI2VuZGlmCiAKICAgICAv
LyBCYWNrd2FyZHMgYmFuY2hlcywgdGhlc2UgYXJlIGN1cnJlbnRseSBhbGwgaW1wbGVtZW50ZWQg
dXNpbmcgZXhpc3RpbmcgZm9yd2FyZHMgYnJhbmNoIG1lY2hhbmlzbXMuCiAgICAgdm9pZCBicmFu
Y2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwgVHJ1c3RlZElt
bVB0ciBpbW0sIExhYmVsIHRhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCmluZGV4IDNhYjI1NTMuLmYyOWI1N2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJN
SVBTLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
ck1JUFMuaApAQCAtMTE0LDYgKzExNCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVy
LmFkZHUoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIGFkZDMyKFJlZ2lzdGVy
SUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIuYWRkdShkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCBhZGQz
MihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBhZGQz
MihpbW0sIGRlc3QsIGRlc3QpOwpAQCAtMjY3LDYgKzI3MiwxMSBAQCBwdWJsaWM6CiAgICAgICAg
IG1fYXNzZW1ibGVyLmFuZEluc24oZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lk
IGFuZDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kSW5zbihkZXN0LCBvcDEsIG9wMik7CisgICAg
fQorCiAgICAgdm9pZCBhbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCkBAIC0yODMs
OSArMjkzLDE2IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgbHNoaWZ0
MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHZvaWQgYW5kMzIoVHJ1
c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0g
ICAgICAgIG1fYXNzZW1ibGVyLnNsbChkZXN0LCBkZXN0LCBpbW0ubV92YWx1ZSk7CisgICAgICAg
IGlmICghaW1tLm1fdmFsdWUgJiYgIW1fZml4ZWRXaWR0aCkKKyAgICAgICAgICAgIG1vdmUoTUlQ
U1JlZ2lzdGVyczo6emVybywgZGVzdCk7CisgICAgICAgIGVsc2UgaWYgKGltbS5tX3ZhbHVlID4g
MCAmJiBpbW0ubV92YWx1ZSA8IDY1NTM1ICYmICFtX2ZpeGVkV2lkdGgpCisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5hbmRpKGRlc3QsIHNyYywgaW1tLm1fdmFsdWUpOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9h
c3NlbWJsZXIuYW5kSW5zbihkZXN0LCBzcmMsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIH0K
ICAgICB9CiAKICAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lz
dGVySUQgZGVzdCkKQEAgLTI5MywxMSArMzEwLDMzIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3Nl
bWJsZXIuc2xsdihkZXN0LCBkZXN0LCBzaGlmdEFtb3VudCk7CiAgICAgfQogCisgICAgdm9pZCBs
c2hpZnQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc2xsdihkZXN0LCBzcmMsIHNoaWZ0
QW1vdW50KTsKKyAgICB9CisKKyAgICB2b2lkIGxzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIp
OworICAgICAgICBtX2Fzc2VtYmxlci5zbGx2KGRlc3QsIGRlc3QsIGltbVRlbXBSZWdpc3Rlcik7
CisgICAgfQorCisgICAgdm9pZCBsc2hpZnQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMy
IGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZShpbW0sIGltbVRlbXBS
ZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLnNsbHYoZGVzdCwgc3JjLCBpbW1UZW1wUmVn
aXN0ZXIpOworICAgIH0KKwogICAgIHZvaWQgbXVsMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm11bChkZXN0LCBkZXN0LCBzcmMp
OwogICAgIH0KIAorICAgIHZvaWQgbXVsMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3Ay
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tdWwoZGVzdCwg
b3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgbXVsMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmICghaW1tLm1f
dmFsdWUgJiYgIW1fZml4ZWRXaWR0aCkKQEAgLTM0OCw2ICszODcsMjQgQEAgcHVibGljOgogICAg
ICAgICBtX2Fzc2VtYmxlci5vckluc24oZGVzdCwgZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7CiAg
ICAgfQogCisgICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2Zp
eGVkV2lkdGgpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVl
ID4gMCAmJiBpbW0ubV92YWx1ZSA8IDY1NTM1ICYmICFtX2ZpeGVkV2lkdGgpIHsKKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLm9yaShkZXN0LCBzcmMsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAgICBsaSAgICAgIGRh
dGFUZW1wLCBpbW0KKyAgICAgICAgICAgIG9yICAgICAgZGVzdCwgc3JjLCBkYXRhVGVtcAorICAg
ICAgICAqLworICAgICAgICBtb3ZlKGltbSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1f
YXNzZW1ibGVyLm9ySW5zbihkZXN0LCBzcmMsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgIH0KKwog
ICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIHNyYywgQWJzb2x1dGVBZGRyZXNzIGRlc3QpCiAgICAg
ewogICAgICAgICBsb2FkMzIoZGVzdC5tX3B0ciwgZGF0YVRlbXBSZWdpc3Rlcik7CkBAIC0zNjAs
NiArNDE3LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3JhdihkZXN0LCBkZXN0
LCBzaGlmdEFtb3VudCk7CiAgICAgfQogCisgICAgdm9pZCByc2hpZnQzMihSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuc3JhdihkZXN0LCBzcmMsIHNoaWZ0QW1vdW50KTsKKyAgICB9CisKICAg
ICB2b2lkIHJzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
CiAgICAgICAgIG1fYXNzZW1ibGVyLnNyYShkZXN0LCBkZXN0LCBpbW0ubV92YWx1ZSk7CkBAIC0z
NzUsMTYgKzQzNywzMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnNybHYoZGVzdCwg
ZGVzdCwgc2hpZnRBbW91bnQpOwogICAgIH0KIAorICAgIHZvaWQgdXJzaGlmdDMyKFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5zcmx2KGRlc3QsIHNyYywgc2hpZnRBbW91bnQpOworICAgIH0K
KwogICAgIHZvaWQgdXJzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnNybChkZXN0LCBkZXN0LCBpbW0ubV92YWx1ZSk7
CiAgICAgfQogCisgICAgdm9pZCB1cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0z
MiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnNybChk
ZXN0LCBzcmMsIGltbS5tX3ZhbHVlKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJ1
KGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIG9w
MSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLnN1YnUoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgc3ViMzIoVHJ1
c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5t
X3ZhbHVlID49IC0zMjc2NyAmJiBpbW0ubV92YWx1ZSA8PSAzMjc2OApAQCAtNDk1LDYgKzU3Miwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oZGVzdCwgZGVzdCwgc3Jj
KTsKICAgICB9CiAKKyAgICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9w
MiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihk
ZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEp
IHsKQEAgLTUxMCw2ICs1OTIsMjEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci54b3JJ
bnNuKGRlc3QsIGRlc3QsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCisgICAgdm9pZCB4b3Iz
MihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKSB7CisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5ub3IoZGVzdCwgc3JjLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAgICBsaSAgaW1tVGVtcCwg
aW1tCisgICAgICAgICAgICB4b3IgZGVzdCwgZGVzdCwgaW1tVGVtcAorICAgICAgICAqLworICAg
ICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9y
SW5zbihkZXN0LCBzcmMsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgfQorCiAgICAgdm9pZCBzcXJ0
RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAg
ICBtX2Fzc2VtYmxlci5zcXJ0ZChkc3QsIHNyYyk7CkBAIC05ODksNiArMTA4Niw0NCBAQCBwdWJs
aWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIHN0b3JlMzIoVHJ1c3RlZEltbTMyIGlt
bSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBpZiAoYWRkcmVzcy5vZmZzZXQg
Pj0gLTMyNzY4ICYmIGFkZHJlc3Mub2Zmc2V0IDw9IDMyNzY3ICYmICFtX2ZpeGVkV2lkdGgpIHsK
KyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgc2xsICAgICBhZGRyVGVtcCwgYWRkcmVz
cy5pbmRleCwgYWRkcmVzcy5zY2FsZQorICAgICAgICAgICAgICAgIGFkZHUgICAgYWRkclRlbXAs
IGFkZHJUZW1wLCBhZGRyZXNzLmJhc2UKKyAgICAgICAgICAgICAgICBzdyAgICAgIHNyYywgYWRk
cmVzcy5vZmZzZXQoYWRkclRlbXApCisgICAgICAgICAgICAqLworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuc2xsKGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUp
OworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkdShhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyVGVt
cFJlZ2lzdGVyLCBhZGRyZXNzLmJhc2UpOworICAgICAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSkK
KyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdyhNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBhZGRy
VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBt
X2Fzc2VtYmxlci5zdyhpbW1UZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mu
b2Zmc2V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8q
CisgICAgICAgICAgICAgICAgc2xsICAgICBhZGRyVGVtcCwgYWRkcmVzcy5pbmRleCwgYWRkcmVz
cy5zY2FsZQorICAgICAgICAgICAgICAgIGFkZHUgICAgYWRkclRlbXAsIGFkZHJUZW1wLCBhZGRy
ZXNzLmJhc2UKKyAgICAgICAgICAgICAgICBsdWkgICAgIGltbVRlbXAsIChhZGRyZXNzLm9mZnNl
dCArIDB4ODAwMCkgPj4gMTYKKyAgICAgICAgICAgICAgICBhZGR1ICAgIGFkZHJUZW1wLCBhZGRy
VGVtcCwgaW1tVGVtcAorICAgICAgICAgICAgICAgIHN3ICAgICAgc3JjLCAoYWRkcmVzcy5vZmZz
ZXQgJiAweGZmZmYpKGF0KQorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
LnNsbChhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoYWRkclRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdp
c3RlciwgYWRkcmVzcy5iYXNlKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmx1aShpbW1UZW1w
UmVnaXN0ZXIsIChhZGRyZXNzLm9mZnNldCArIDB4ODAwMCkgPj4gMTYpOworICAgICAgICAgICAg
bV9hc3NlbWJsZXIuYWRkdShhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBpbW1U
ZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSAmJiAhbV9maXhlZFdp
ZHRoKQorICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN3KE1JUFNSZWdpc3RlcnM6Onplcm8s
IGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgICAgIGVsc2Ugewor
ICAgICAgICAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnN3KGltbVRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgYWRk
cmVzcy5vZmZzZXQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisKICAgICB2
b2lkIHN0b3JlMzIoUmVnaXN0ZXJJRCBzcmMsIGNvbnN0IHZvaWQqIGFkZHJlc3MpCiAgICAgewog
ICAgICAgICAvKgpAQCAtMTMzNSw2ICsxNDcwLDE1IEBAIHB1YmxpYzoKICAgICAgICAgbV9maXhl
ZFdpZHRoID0gZmFsc2U7CiAgICAgfQogCisgICAgdm9pZCBqdW1wKEFic29sdXRlQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9maXhlZFdpZHRoID0gdHJ1ZTsKKyAgICAgICAgbG9h
ZDMyKGFkZHJlc3MubV9wdHIsIE1JUFNSZWdpc3RlcnM6OnQ5KTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuanIoTUlQU1JlZ2lzdGVyczo6dDkpOworICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAg
ICAgICAgbV9maXhlZFdpZHRoID0gZmFsc2U7CisgICAgfQorCiAgICAgdm9pZCBtb3ZlRG91Ymxl
VG9JbnRzKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVz
dDIpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci52bW92KGRlc3QxLCBkZXN0Miwgc3JjKTsK
QEAgLTE0MDMsNiArMTU0Nyw1MyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKCk7CiAg
ICAgfQogCisgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQg
PT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOworICAgICAgICBpZiAoY29uZCA9PSBPdmVy
ZmxvdykgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICBtb3ZlICAgIGRhdGFUZW1w
LCBvcDEKKyAgICAgICAgICAgICAgICB4b3IgICAgIGNtcFRlbXAsIGRhdGFUZW1wLCBvcDIKKyAg
ICAgICAgICAgICAgICBibHR6ICAgIGNtcFRlbXAsIE5vX292ZXJmbG93ICAgICMgZGlmZiBzaWdu
IGJpdCAtPiBubyBvdmVyZmxvdworICAgICAgICAgICAgICAgIGFkZHUgICAgZGVzdCwgZGF0YVRl
bXAsIG9wMgorICAgICAgICAgICAgICAgIHhvciAgICAgY21wVGVtcCwgZGVzdCwgZGF0YVRlbXAK
KyAgICAgICAgICAgICAgICBiZ2V6ICAgIGNtcFRlbXAsIE5vX292ZXJmbG93ICAgICMgc2FtZSBz
aWduIGJpZyAtPiBubyBvdmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAg
ICAgIGIgICAgICAgT3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAg
ICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAg
ICAgICAgICBub3AKKyAgICAgICAgICAgIE5vX292ZXJmbG93OgorICAgICAgICAgICAgKi8KKyAg
ICAgICAgICAgIG1vdmUob3AxLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnhvckluc24oY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBvcDIpOwor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmx0eihjbXBUZW1wUmVnaXN0ZXIsIDEwKTsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoZGVzdCwgZGF0YVRlbXBSZWdpc3Rlciwgb3AyKTsKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oY21wVGVtcFJlZ2lzdGVyLCBkZXN0LCBkYXRh
VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lz
dGVyLCA3KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICAgICAgcmV0
dXJuIGp1bXAoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKKyAg
ICAgICAgICAgIGFkZDMyKG9wMSwgb3AyLCBkZXN0KTsKKyAgICAgICAgICAgIC8vIENoZWNrIGlm
IGRlc3QgaXMgbmVnYXRpdmUuCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHQoY21wVGVtcFJl
Z2lzdGVyLCBkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIHJldHVybiBi
cmFuY2hOb3RFcXVhbChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAg
ICAgICB9CisgICAgICAgIGlmIChjb25kID09IFplcm8pIHsKKyAgICAgICAgICAgIGFkZDMyKG9w
MSwgb3AyLCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hFcXVhbChkZXN0LCBNSVBT
UmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBOb25aZXJv
KSB7CisgICAgICAgICAgICBhZGQzMihvcDEsIG9wMiwgZGVzdCk7CisgICAgICAgICAgICByZXR1
cm4gYnJhbmNoTm90RXF1YWwoZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0K
KyAgICAgICAgQVNTRVJUKDApOworICAgICAgICByZXR1cm4gSnVtcCgpOworICAgIH0KKwogICAg
IEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0s
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0
ZXIpOwpAQCAtMTQxNiw2ICsxNjA3LDExMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFu
Y2hBZGQzMihjb25kLCBpbW1UZW1wUmVnaXN0ZXIsIGRlc3QpOwogICAgIH0KIAorICAgIEp1bXAg
YnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIEFic29s
dXRlQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93
KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblpl
cm8pKTsKKyAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIC8qCisg
ICAgICAgICAgICAgICAgbW92ZSAgICBkYXRhVGVtcCwgZGVzdAorICAgICAgICAgICAgICAgIHhv
cmkgICAgY21wVGVtcCwgZGF0YVRlbXAsIGltbQorICAgICAgICAgICAgICAgIGJsdHogICAgY21w
VGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBkaWZmIHNpZ24gYml0IC0+IG5vIG92ZXJmbG93CisgICAg
ICAgICAgICAgICAgYWRkaXUgICBkYXRhVGVtcCwgZGF0YVRlbXAsIGltbQorICAgICAgICAgICAg
ICAgIG1vdmUgICAgZGVzdCwgZGF0YVRlbXAKKyAgICAgICAgICAgICAgICB4b3JpICAgIGNtcFRl
bXAsIGRhdGFUZW1wLCBpbW0KKyAgICAgICAgICAgICAgICBiZ2V6ICAgIGNtcFRlbXAsIE5vX292
ZXJmbG93ICAgICMgc2FtZSBzaWduIGJpZyAtPiBubyBvdmVyZmxvdworICAgICAgICAgICAgICAg
IG5vcAorICAgICAgICAgICAgICAgIGIgICAgICAgT3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBu
b3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAg
ICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgIE5vX292ZXJmbG93Ogor
ICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA+PSAtMzI3NjggJiYg
aW1tLm1fdmFsdWUgIDw9IDMyNzY3ICYmICFtX2ZpeGVkV2lkdGgpIHsKKyAgICAgICAgICAgICAg
ICBsb2FkMzIoZGVzdC5tX3B0ciwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAg
bV9hc3NlbWJsZXIueG9yaShjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbS5t
X3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRlbXBSZWdpc3Rl
ciwgMTApOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGl1KGRhdGFUZW1wUmVnaXN0
ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBzdG9y
ZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QubV9wdHIpOworICAgICAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnhvcmkoY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW0ubV92YWx1
ZSk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDcp
OworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBsb2FkMzIoZGVzdC5tX3B0ciwgZGF0YVRlbXBSZWdpc3Rlcik7
CisgICAgICAgICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAg
ICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0
ZXIsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmx0eihj
bXBUZW1wUmVnaXN0ZXIsIDEwKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRpdShk
YXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOworICAg
ICAgICAgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdC5tX3B0cik7CisgICAg
ICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yaShjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVn
aXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdl
eihjbXBUZW1wUmVnaXN0ZXIsIDcpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGp1bXAoKTsKKyAgICAgICAgfQor
ICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbG9hZDMyKGRlc3Qu
bV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBhZGQzMihpbW1UZW1wUmVnaXN0ZXIs
IGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRl
c3QubV9wdHIpOworICAgICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKKyAgICAgICAgICAgIC8v
IENoZWNrIGlmIGRlc3QgaXMgbmVnYXRpdmUuCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHQo
Y21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsK
KyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNS
ZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IFplcm8pCisg
ICAgICAgICAgICByZXR1cm4gYnJhbmNoRXF1YWwoZGF0YVRlbXBSZWdpc3RlciwgTUlQU1JlZ2lz
dGVyczo6emVybyk7CisgICAgICAgIGlmIChjb25kID09IE5vblplcm8pCisgICAgICAgICAgICBy
ZXR1cm4gYnJhbmNoTm90RXF1YWwoZGF0YVRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVy
byk7CisgICAgICAgIEFTU0VSVCgwKTsKKyAgICAgICAgcmV0dXJuIEp1bXAoKTsKKyAgICB9CisK
KyAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNy
YzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNT
RVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFpl
cm8pIHx8IChjb25kID09IE5vblplcm8pKTsKKyAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cp
IHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgbXVsdCAgICBzcmMsIGRlc3QKKyAg
ICAgICAgICAgICAgICBtZmhpICAgIGRhdGFUZW1wCisgICAgICAgICAgICAgICAgbWZsbyAgICBk
ZXN0CisgICAgICAgICAgICAgICAgc3JhICAgICBhZGRyVGVtcCwgZGVzdCwgMzEKKyAgICAgICAg
ICAgICAgICBiZXEgICAgIGRhdGFUZW1wLCBhZGRyVGVtcCwgTm9fb3ZlcmZsb3cgIyBhbGwgc2ln
biBiaXRzIChiaXQgNjMgdG8gYml0IDMxKSBhcmUgdGhlIHNhbWUgLT4gbm8gb3ZlcmZsb3cKKyAg
ICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBiICAgICAgIE92ZXJmbG93CisgICAg
ICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9w
CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICBO
b19vdmVyZmxvdzoKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tdWx0
KHNyYzEsIHNyYzIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubWZoaShkYXRhVGVtcFJlZ2lz
dGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1mbG8oZGVzdCk7CisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5zcmEoYWRkclRlbXBSZWdpc3RlciwgZGVzdCwgMzEpOworICAgICAgICAgICAg
bV9hc3NlbWJsZXIuYmVxKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIDcpOwor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICByZXR1cm4ganVtcCgp
OworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IFNpZ25lZCkgeworICAgICAgICAgICAg
bXVsMzIoc3JjMSwgc3JjMiwgZGVzdCk7CisgICAgICAgICAgICAvLyBDaGVjayBpZiBkZXN0IGlz
IG5lZ2F0aXZlLgorICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0KGNtcFRlbXBSZWdpc3Rlciwg
ZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90
RXF1YWwoY21wVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoY29uZCA9PSBaZXJvKSB7CisgICAgICAgICAgICBtdWwzMihzcmMxLCBzcmMy
LCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hFcXVhbChkZXN0LCBNSVBTUmVnaXN0
ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBOb25aZXJvKSB7Cisg
ICAgICAgICAgICBtdWwzMihzcmMxLCBzcmMyLCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBi
cmFuY2hOb3RFcXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAg
ICAgICBBU1NFUlQoMCk7CisgICAgICAgIHJldHVybiBKdW1wKCk7CisgICAgfQorCiAgICAgSnVt
cCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwg
KGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7
CkBAIC0xNDY0LDggKzE3NjAsNyBAQCBwdWJsaWM6CiAgICAgSnVtcCBicmFuY2hNdWwzMihSZXN1
bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOwot
ICAgICAgICBtb3ZlKHNyYywgZGVzdCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hNdWwzMihjb25k
LCBpbW1UZW1wUmVnaXN0ZXIsIGRlc3QpOworICAgICAgICByZXR1cm4gYnJhbmNoTXVsMzIoY29u
ZCwgaW1tVGVtcFJlZ2lzdGVyLCBzcmMsIGRlc3QpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNo
U3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCkBAIC0xNTI0LDggKzE4MTksNjAgQEAgcHVibGljOgogICAgIEp1bXAgYnJhbmNoU3ViMzIo
UmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVy
KTsKLSAgICAgICAgbW92ZShzcmMsIGRlc3QpOwotICAgICAgICByZXR1cm4gYnJhbmNoU3ViMzIo
Y29uZCwgaW1tVGVtcFJlZ2lzdGVyLCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjMy
KGNvbmQsIHNyYywgaW1tVGVtcFJlZ2lzdGVyLCBkZXN0KTsKKyAgICB9CisKKyAgICBKdW1wIGJy
YW5jaFN1YjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJ
RCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgoY29uZCA9PSBP
dmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9
PSBOb25aZXJvKSk7CisgICAgICAgIGlmIChjb25kID09IE92ZXJmbG93KSB7CisgICAgICAgICAg
ICAvKgorICAgICAgICAgICAgICAgIG1vdmUgICAgZGF0YVRlbXAsIG9wMQorICAgICAgICAgICAg
ICAgIHhvciAgICAgY21wVGVtcCwgZGF0YVRlbXAsIG9wMgorICAgICAgICAgICAgICAgIGJnZXog
ICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24gYml0IC0+IG5vIG92ZXJmbG93
CisgICAgICAgICAgICAgICAgc3VidSAgICBkZXN0LCBkYXRhVGVtcCwgb3AyCisgICAgICAgICAg
ICAgICAgeG9yICAgICBjbXBUZW1wLCBkZXN0LCBkYXRhVGVtcAorICAgICAgICAgICAgICAgIGJn
ZXogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24gYml0IC0+IG5vIG92ZXJm
bG93CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgYiAgICAgICBPdmVyZmxv
dworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAg
ICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAg
ICAgICAgTm9fb3ZlcmZsb3c6CisgICAgICAgICAgICAqLworICAgICAgICAgICAgbW92ZShvcDEs
IGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBU
ZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7CisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgMTApOworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
c3VidShkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyLCBvcDIpOworICAgICAgICAgICAgbV9hc3NlbWJs
ZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDcpOworICAgICAgICAg
ICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICByZXR1cm4ganVtcCgpOworICAgICAg
ICB9CisgICAgICAgIGlmIChjb25kID09IFNpZ25lZCkgeworICAgICAgICAgICAgc3ViMzIob3Ax
LCBvcDIsIGRlc3QpOworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdhdGl2ZS4K
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIE1JUFNS
ZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRl
bXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGNvbmQgPT0gWmVybykgeworICAgICAgICAgICAgc3ViMzIob3AxLCBvcDIsIGRlc3QpOworICAg
ICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOwor
ICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IE5vblplcm8pIHsKKyAgICAgICAgICAgIHN1
YjMyKG9wMSwgb3AyLCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChk
ZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoMCk7
CisgICAgICAgIHJldHVybiBKdW1wKCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hOZWczMihS
ZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmNEZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubGkoZGF0YVRlbXBSZWdpc3RlciwgLTEpOworICAgICAgICByZXR1cm4gYnJh
bmNoTXVsMzIoY29uZCwgZGF0YVRlbXBSZWdpc3Rlciwgc3JjRGVzdCk7CiAgICAgfQogCiAgICAg
SnVtcCBicmFuY2hPcjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQpAQCAtMTU3Nyw3ICsxOTI0LDggQEAgcHVibGljOgogCiAgICAgQ2FsbCBj
YWxsKFJlZ2lzdGVySUQgdGFyZ2V0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuamFscih0
YXJnZXQpOworICAgICAgICBtb3ZlKHRhcmdldCwgTUlQU1JlZ2lzdGVyczo6dDkpOworICAgICAg
ICBtX2Fzc2VtYmxlci5qYWxyKE1JUFNSZWdpc3RlcnM6OnQ5KTsKICAgICAgICAgbV9hc3NlbWJs
ZXIubm9wKCk7CiAgICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVyLmxhYmVsKCksIENhbGw6
Ok5vbmUpOwogICAgIH0KQEAgLTE4MjEsNyArMjE2OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICBsdWkgICAgIGltbVRlbXAsIChhZGRyZXNzLm9mZnNldCArIDB4ODAwMCkgPj4gMTYKICAg
ICAgICAgICAgICAgICBhZGR1ICAgIGFkZHJUZW1wLCBhZGRyVGVtcCwgaW1tVGVtcAogICAgICAg
ICAgICAgICAgIGx3YzEgICAgZGVzdCwgKGFkZHJlc3Mub2Zmc2V0ICYgMHhmZmZmKShhdCkKLSAg
ICAgICAgICAgICAgICBsd2MxICAgIGRlc3QrNCwgKGFkZHJlc3Mub2Zmc2V0ICYgMHhmZmZmICsg
NCkoYXQpCisgICAgICAgICAgICAgICAgbHdjMSAgICBkZXN0KzEsIChhZGRyZXNzLm9mZnNldCAm
IDB4ZmZmZiArIDQpKGF0KQogICAgICAgICAgICAgKi8KICAgICAgICAgICAgIG1fYXNzZW1ibGVy
LnNsbChhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoYWRkclRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdp
c3RlciwgYWRkcmVzcy5iYXNlKTsKQEAgLTIwMDgsNiArMjM1NiwxOSBAQCBwdWJsaWM6CiAjZW5k
aWYKICAgICB9CiAKKyAgICB2b2lkIG1vdmVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdp
c3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAoc3JjICE9IGRlc3QgfHwgbV9maXhlZFdp
ZHRoKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92ZChkZXN0LCBzcmMpOworICAgIH0KKwor
ICAgIHZvaWQgc3dhcERvdWJsZShGUFJlZ2lzdGVySUQgZnIxLCBGUFJlZ2lzdGVySUQgZnIyKQor
ICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShmcjEsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAg
bW92ZURvdWJsZShmcjIsIGZyMSk7CisgICAgICAgIG1vdmVEb3VibGUoZnBUZW1wUmVnaXN0ZXIs
IGZyMik7CisgICAgfQorCiAgICAgdm9pZCBhZGREb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hZGRkKGRlc3QsIGRl
c3QsIHNyYyk7CkBAIC0yMDM1LDYgKzIzOTYsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2Vt
Ymxlci5zdWJkKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBzdWJEb3VibGUo
RlBSZWdpc3RlcklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJkKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisK
ICAgICB2b2lkIHN1YkRvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewogICAgICAgICBsb2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIpOwpAQCAtMjA1MiwxMSAr
MjQxOCwzMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm11bGQoZGVzdCwgZGVzdCwg
ZnBUZW1wUmVnaXN0ZXIpOwogICAgIH0KIAorICAgIHZvaWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJ
RCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubXVsZChkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCBk
aXZEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5kaXZkKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9p
ZCBkaXZEb3VibGUoRlBSZWdpc3RlcklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5kaXZkKGRlc3QsIG9wMSwgb3Ay
KTsKKyAgICB9CisKKyAgICB2b2lkIGRpdkRvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBsb2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5kaXZkKGRlc3QsIGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKKyAg
ICB9CisKKyAgICB2b2lkIG5lZ2F0ZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ2QoZGVzdCwgc3JjKTsKKyAg
ICB9CisKICAgICB2b2lkIGNvbnZlcnRJbnQzMlRvRG91YmxlKFJlZ2lzdGVySUQgc3JjLCBGUFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm10YzEoc3JjLCBmcFRl
bXBSZWdpc3Rlcik7CkBAIC0yMTE2LDYgKzI1MDMsOCBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJy
YW5jaEVxdWFsKFJlZ2lzdGVySUQgcnMsIFJlZ2lzdGVySUQgcnQpCiAgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgICAgIG1f
YXNzZW1ibGVyLmFwcGVuZEp1bXAoKTsKICAgICAgICAgbV9hc3NlbWJsZXIuYmVxKHJzLCBydCwg
MCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwpAQCAtMjEyNSw2ICsyNTE0LDggQEAgcHVi
bGljOgogCiAgICAgSnVtcCBicmFuY2hOb3RFcXVhbChSZWdpc3RlcklEIHJzLCBSZWdpc3RlcklE
IHJ0KQogICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgIG1fYXNzZW1i
bGVyLm5vcCgpOwogICAgICAgICBtX2Fzc2VtYmxlci5hcHBlbmRKdW1wKCk7CiAgICAgICAgIG1f
YXNzZW1ibGVyLmJuZShycywgcnQsIDApOwogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKQEAg
LTIxOTEsMTEgKzI1ODIsMzMgQEAgcHVibGljOgogICAgIC8vIElmIHRoZSByZXN1bHQgaXMgbm90
IHJlcHJlc2VudGFibGUgYXMgYSAzMiBiaXQgdmFsdWUsIGJyYW5jaC4KICAgICAvLyBNYXkgYWxz
byBicmFuY2ggZm9yIHNvbWUgdmFsdWVzIHRoYXQgYXJlIHJlcHJlc2VudGFibGUgaW4gMzIgYml0
cwogICAgIC8vIChzcGVjaWZpY2FsbHksIGluIHRoaXMgY2FzZSwgSU5UX01BWCAweDdmZmZmZmZm
KS4KLSAgICBKdW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgZW51bSBCcmFuY2hUcnVuY2F0ZVR5cGUgeyBCcmFuY2hJ
ZlRydW5jYXRlRmFpbGVkLCBCcmFuY2hJZlRydW5jYXRlU3VjY2Vzc2Z1bCB9OworICAgIEp1bXAg
YnJhbmNoVHJ1bmNhdGVEb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCwgQnJhbmNoVHJ1bmNhdGVUeXBlIGJyYW5jaFR5cGUgPSBCcmFuY2hJZlRydW5jYXRlRmFp
bGVkKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudHJ1bmN3ZChmcFRlbXBSZWdpc3Rlciwg
c3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubWZjMShkZXN0LCBmcFRlbXBSZWdpc3Rlcik7Cisg
ICAgICAgIHJldHVybiBicmFuY2gzMihicmFuY2hUeXBlID09IEJyYW5jaElmVHJ1bmNhdGVGYWls
ZWQgPyBFcXVhbCA6IE5vdEVxdWFsLCBkZXN0LCBUcnVzdGVkSW1tMzIoMHg3ZmZmZmZmZikpOwor
ICAgIH0KKworICAgIEp1bXAgYnJhbmNoVHJ1bmNhdGVEb3VibGVUb1VpbnQzMihGUFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEJyYW5jaFRydW5jYXRlVHlwZSBicmFuY2hUeXBlID0g
QnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnRydW5j
d2QoZnBUZW1wUmVnaXN0ZXIsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1mYzEoZGVzdCwg
ZnBUZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoYnJhbmNoVHlwZSA9PSBC
cmFuY2hJZlRydW5jYXRlRmFpbGVkID8gRXF1YWwgOiBOb3RFcXVhbCwgZGVzdCwgVHJ1c3RlZElt
bTMyKDApKTsKKyAgICB9CisKKyAgICAvLyBSZXN1bHQgaXMgdW5kZWZpbmVkIGlmIHRoZSB2YWx1
ZSBpcyBvdXRzaWRlIG9mIHRoZSBpbnRlZ2VyIHJhbmdlLgorICAgIHZvaWQgdHJ1bmNhdGVEb3Vi
bGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnRydW5jd2QoZnBUZW1wUmVnaXN0ZXIsIHNyYyk7CisgICAgICAgIG1f
YXNzZW1ibGVyLm1mYzEoZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOworICAgIH0KKworICAgIC8vIFJl
c3VsdCBpcyB1bmRlZmluZWQgaWYgc3JjID4gMl4zMQorICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVU
b1VpbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAg
ICBtX2Fzc2VtYmxlci50cnVuY3dkKGZwVGVtcFJlZ2lzdGVyLCBzcmMpOwogICAgICAgICBtX2Fz
c2VtYmxlci5tZmMxKGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5j
aDMyKEVxdWFsLCBkZXN0LCBUcnVzdGVkSW1tMzIoMHg3ZmZmZmZmZikpOwogICAgIH0KIAogICAg
IC8vIENvbnZlcnQgJ3NyYycgdG8gYW4gaW50ZWdlciwgYW5kIHBsYWNlcyB0aGUgcmVzdWx0aW5n
ICdkZXN0Jy4KQEAgLTIyMTcsMjggKzI2MzAsNDMgQEAgcHVibGljOgogCiAgICAgSnVtcCBicmFu
Y2hEb3VibGVOb25aZXJvKEZQUmVnaXN0ZXJJRCByZWcsIEZQUmVnaXN0ZXJJRCBzY3JhdGNoKQog
ICAgIHsKLSNpZiBXVEZfTUlQU19JU0FfUkVWKDIpICYmIFdURl9NSVBTX0ZQNjQKLSAgICAgICAg
bV9hc3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzY3JhdGNoKTsKLSAgICAgICAg
bV9hc3NlbWJsZXIubXRoYzEoTUlQU1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7Ci0jZWxzZQot
ICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0Y2gpOwot
ICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIEZQUmVnaXN0ZXJJ
RChzY3JhdGNoICsgMSkpOwotI2VuZGlmCisgICAgICAgIG1fYXNzZW1ibGVyLnZtb3Yoc2NyYXRj
aCwgTUlQU1JlZ2lzdGVyczo6emVybywgTUlQU1JlZ2lzdGVyczo6emVybyk7CiAgICAgICAgIHJl
dHVybiBicmFuY2hEb3VibGUoRG91YmxlTm90RXF1YWwsIHJlZywgc2NyYXRjaCk7CiAgICAgfQog
CiAgICAgSnVtcCBicmFuY2hEb3VibGVaZXJvT3JOYU4oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdp
c3RlcklEIHNjcmF0Y2gpCiAgICAgewotI2lmIFdURl9NSVBTX0lTQV9SRVYoMikgJiYgV1RGX01J
UFNfRlA2NAotICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIHNj
cmF0Y2gpOwotICAgICAgICBtX2Fzc2VtYmxlci5tdGhjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBz
Y3JhdGNoKTsKLSNlbHNlCi0gICAgICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQU1JlZ2lzdGVyczo6
emVybywgc2NyYXRjaCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQU1JlZ2lzdGVyczo6
emVybywgRlBSZWdpc3RlcklEKHNjcmF0Y2ggKyAxKSk7Ci0jZW5kaWYKKyAgICAgICAgbV9hc3Nl
bWJsZXIudm1vdihzY3JhdGNoLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBNSVBTUmVnaXN0ZXJzOjp6
ZXJvKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaERvdWJsZShEb3VibGVFcXVhbE9yVW5vcmRlcmVk
LCByZWcsIHNjcmF0Y2gpOwogICAgIH0KIAorICAgIC8vIEludmVydCBhIHJlbGF0aW9uYWwgY29u
ZGl0aW9uLCBlLmcuID09IGJlY29tZXMgIT0sIDwgYmVjb21lcyA+PSwgZXRjLgorICAgIHN0YXRp
YyBSZWxhdGlvbmFsQ29uZGl0aW9uIGludmVydChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCisg
ICAgeworICAgICAgICBSZWxhdGlvbmFsQ29uZGl0aW9uIHI7CisgICAgICAgIGlmIChjb25kID09
IEVxdWFsKQorICAgICAgICAgICAgciA9IE5vdEVxdWFsOworICAgICAgICBlbHNlIGlmIChjb25k
ID09IE5vdEVxdWFsKQorICAgICAgICAgICAgciA9IEVxdWFsOworICAgICAgICBlbHNlIGlmIChj
b25kID09IEFib3ZlKQorICAgICAgICAgICAgciA9IEJlbG93T3JFcXVhbDsKKyAgICAgICAgZWxz
ZSBpZiAoY29uZCA9PSBBYm92ZU9yRXF1YWwpCisgICAgICAgICAgICByID0gQmVsb3c7CisgICAg
ICAgIGVsc2UgaWYgKGNvbmQgPT0gQmVsb3cpCisgICAgICAgICAgICByID0gQWJvdmVPckVxdWFs
OworICAgICAgICBlbHNlIGlmIChjb25kID09IEJlbG93T3JFcXVhbCkKKyAgICAgICAgICAgIHIg
PSBBYm92ZTsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBHcmVhdGVyVGhhbikKKyAgICAgICAg
ICAgIHIgPSBMZXNzVGhhbk9yRXF1YWw7CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gR3JlYXRl
clRoYW5PckVxdWFsKQorICAgICAgICAgICAgciA9IExlc3NUaGFuOworICAgICAgICBlbHNlIGlm
IChjb25kID09IExlc3NUaGFuKQorICAgICAgICAgICAgciA9IEdyZWF0ZXJUaGFuT3JFcXVhbDsK
KyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBMZXNzVGhhbk9yRXF1YWwpCisgICAgICAgICAgICBy
ID0gR3JlYXRlclRoYW47CisgICAgICAgIHJldHVybiByOworICAgIH0KKwogICAgIHZvaWQgbm9w
KCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwpAQCAtMjI1MSwxMiArMjY3OSwx
MiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0
aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24p
CiAgICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgTUlQU0Fzc2Vt
Ymxlcjo6cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZGF0YUxvY2F0aW9uKCksIGRl
c3RpbmF0aW9uLmRhdGFMb2NhdGlvbigpKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIHB0cmRp
ZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICBNSVBTQXNzZW1ibGVyOjptYXhKdW1wUmVwbGFjZW1lbnRTaXpl
KCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggNzViOWM3MC4uYzA2MDE3OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oCkBAIC05Myw2
ICs5MywyMyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKKyNpZiBDUFUoTUlQUykKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKFJlZ2lzdGVy
SUQgcmVnKQorICAgIHsKKyAgICAgICAgbW92ZShyZXR1cm5BZGRyZXNzUmVnaXN0ZXIsIHJlZyk7
CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVm
b3JlUmV0dXJuKFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAgICAgbW92ZShyZWcsIHJldHVy
bkFkZHJlc3NSZWdpc3Rlcik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHJlc3Rv
cmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIGxvYWRQdHIoYWRkcmVzcywgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKKyAgICB9CisjZW5k
aWYKKwogICAgIHZvaWQgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2Fs
bEZyYW1lSGVhZGVyRW50cnkgZW50cnksIEdQUlJlZyB0bykKICAgICB7CiAgICAgICAgIGxvYWRQ
dHIoQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZW50cnkgKiBzaXplb2YoUmVn
aXN0ZXIpKSwgdG8pOwpAQCAtMTkzLDcgKzIxMCw3IEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFjdGl2ZUxlbmd0aFB0cigpKSwgR1BSSW5mbzo6
cmVnVDApOwogICAgICAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKHNjcmF0Y2hTaXplKSwgR1BS
SW5mbzo6cmVnVDApOwogCi0jaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTSkKKyNpZiBDUFUoWDg2
XzY0KSB8fCBDUFUoQVJNKSB8fCBDUFUoTUlQUykKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRy
KGFyZ3VtZW50KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICAgICAgbW92ZShHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICAgICAgR1BS
UmVnIHNjcmF0Y2ggPSBzZWxlY3RTY3JhdGNoR1BSKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BS
SW5mbzo6YXJndW1lbnRHUFIxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxs
SGVscGVycy5oCmluZGV4IDhhZGRlMDUuLjc4NWZhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaApAQCAtNTc2LDYgKzU3NiwzOSBAQCBwdWJsaWM6CiAg
ICAgICAgIHBva2UoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgfQogI2VuZGlmIC8vIENQVShB
Uk1fSEFSREZQKQorI2VsaWYgQ1BVKE1JUFMpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzKEZQUlJlZyBhcmcxKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmcxLCBG
UFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSwgRlBSUmVnIGFyZzIpCisgICAgeworICAgICAgICBp
ZiAoYXJnMiAhPSBGUFJJbmZvOjphcmd1bWVudEZQUjApIHsKKyAgICAgICAgICAgIG1vdmVEb3Vi
bGUoYXJnMSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICAgICAgICAgIG1vdmVEb3VibGUo
YXJnMiwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKKyAgICAgICAgfSBlbHNlIGlmIChhcmcxICE9
IEZQUkluZm86OmFyZ3VtZW50RlBSMSkgeworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBG
UFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJ
bmZvOjphcmd1bWVudEZQUjApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gU3dh
cCBhcmcxLCBhcmcyLgorICAgICAgICAgICAgc3dhcERvdWJsZShGUFJJbmZvOjphcmd1bWVudEZQ
UjAsIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEZQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJn
dW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjMsIGFyZzEpOworICAgICAgICBtb3ZlKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAg
ICBwb2tlKGFyZzIsIDQpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBGUFJSZWcgYXJn
MykKKyAgICB7CisgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKKyAgICAg
ICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICAgICAgcG9rZShhcmczLCA0KTsKKyAgICB9CiAjZWxzZQogI2Vycm9yICJERkcgSklU
IG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4iCiAjZW5kaWYKQEAgLTgwMiw3ICs4MzUs
NyBAQCBwdWJsaWM6CiAjZW5kaWYgLy8gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA+PSA0
CiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgc3VpdGFibGUgZm9yIGFueSBjYWxsaW5nIGNvbnZl
bnRpb24gdGhhdCBwcm92aWRlcyBmb3IKICAgICAvLyBleGFjdGx5IDQgYXJndW1lbnQgcmVnaXN0
ZXJzLCBlLmcuIEFSTXY3LgotI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNAor
I2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNCAmJiAhQ1BVKE1JUFMpCiAgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKICAgICB7CiAgICAgICAg
IHBva2UoYXJnNCk7CkBAIC05MTksNyArOTUyLDExNCBAQCBwdWJsaWM6CiAgICAgICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKLSNlbmRp
ZiAvLyBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID09IDQKKyNlbmRpZiAvLyBOVU1CRVJf
T0ZfQVJHVU1FTlRfUkVHSVNURVJTID09IDQgJiYgIUNQVShNSVBTKQorCisjaWYgQ1BVKE1JUFMp
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7Cisg
ICAgICAgIHBva2UoYXJnNCwgNCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3Rl
ZEltbTMyIGFyZzMsIFRydXN0ZWRJbW0zMiBhcmc0KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc0
LCA0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFy
ZzMpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBHUFJSZWcgYXJn
MywgR1BSUmVnIGFyZzQpCisgICAgeworICAgICAgICBwb2tlKGFyZzQsIDQpOworICAgICAgICBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tUHRyIGFyZzQpCisgICAg
eworICAgICAgICBwb2tlKGFyZzQsIDQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBh
cmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsK
KyAgICAgICAgcG9rZShhcmc1LCA1KTsKKyAgICAgICAgcG9rZShhcmc0LCA0KTsKKyAgICAgICAg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVn
IGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1
KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc1LCA1KTsKKyAgICAgICAgcG9rZShhcmc0LCA0KTsK
KyAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwor
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFy
ZzQpCisgICAgeworICAgICAgICBwb2tlKGFyZzQsIDQpOworICAgICAgICBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwg
R1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tUHRyIGFyZzQpCisgICAgeworICAg
ICAgICBwb2tlKGFyZzQsIDQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIFRy
dXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1tUHRyIGFyZzQpCisgICAgeworICAgICAgICBwb2tl
KGFyZzQsIDQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
MiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0z
MiBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNCwgNCk7CisgICAg
ICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9
CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQ
UlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0LCBH
UFJSZWcgYXJnNSkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNSwgNSk7CisgICAgICAgIHBva2Uo
YXJnNCwgNCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMs
IEdQUlJlZyBhcmc0LCBUcnVzdGVkSW1tMzIgYXJnNSkKKyAgICB7CisgICAgICAgIHBva2UoYXJn
NSwgNSk7CisgICAgICAgIHBva2UoYXJnNCwgNCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJS
ZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBUcnVzdGVkSW1tUHRyIGFyZzUpCisg
ICAgeworICAgICAgICBwb2tlKGFyZzUsIDUpOworICAgICAgICBwb2tlKGFyZzQsIDQpOworICAg
ICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAg
fQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tMzIg
YXJnNCwgVHJ1c3RlZEltbTMyIGFyZzUpCisgICAgeworICAgICAgICBwb2tlKGFyZzUsIDUpOwor
ICAgICAgICBwb2tlKGFyZzQsIDQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMy
IGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAg
eworICAgICAgICBwb2tlKGFyZzUsIDUpOworICAgICAgICBwb2tlKGFyZzQsIDQpOworICAgICAg
ICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQor
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVz
dGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BS
UmVnIGFyZzUpCisgICAgeworICAgICAgICBwb2tlKGFyZzUsIDUpOworICAgICAgICBwb2tlKGFy
ZzQsIDQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwg
YXJnMyk7CisgICAgfQorCisjZW5kaWYgLy8gQ1BVKE1JUFMpCiAKICNpZiBOVU1CRVJfT0ZfQVJH
VU1FTlRfUkVHSVNURVJTID49IDUKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIFRydXN0ZWRJ
bW0zMiBhcmczLCBHUFJSZWcgYXJnNCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRlBSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZv
LmgKaW5kZXggZDZhMDM4YS4uNmY5NjhlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
UFJJbmZvLmgKQEAgLTE2NCw2ICsxNjQsNzQgQEAgcHVibGljOgogCiAjZW5kaWYKIAorI2lmIENQ
VShNSVBTKQorCitjbGFzcyBGUFJJbmZvIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEZQUlJlZyBS
ZWdpc3RlclR5cGU7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJz
ID0gNjsKKworICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0IEZQ
UlJlZyBmcFJlZ1QwID0gTUlQU1JlZ2lzdGVyczo6ZjA7CisgICAgc3RhdGljIGNvbnN0IEZQUlJl
ZyBmcFJlZ1QxID0gTUlQU1JlZ2lzdGVyczo6ZjQ7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBm
cFJlZ1QyID0gTUlQU1JlZ2lzdGVyczo6ZjY7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJl
Z1QzID0gTUlQU1JlZ2lzdGVyczo6Zjg7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Q0
ID0gTUlQU1JlZ2lzdGVyczo6ZjEwOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNSA9
IE1JUFNSZWdpc3RlcnM6OmYxODsKKworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgcmV0dXJuVmFs
dWVGUFIgPSBNSVBTUmVnaXN0ZXJzOjpmMDsKKworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJn
dW1lbnRGUFIwID0gTUlQU1JlZ2lzdGVyczo6ZjEyOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcg
YXJndW1lbnRGUFIxID0gTUlQU1JlZ2lzdGVyczo6ZjE0OworCisgICAgc3RhdGljIEZQUlJlZyB0
b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IEZQ
UlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsKKyAgICAgICAgICAg
IGZwUmVnVDAsIGZwUmVnVDEsIGZwUmVnVDIsIGZwUmVnVDMsIGZwUmVnVDQsIGZwUmVnVDUgfTsK
KworICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlJlZ2lzdGVycyk7CisgICAgICAgIHJl
dHVybiByZWdpc3RlckZvckluZGV4W2luZGV4XTsKKyAgICB9CisKKyAgICBzdGF0aWMgdW5zaWdu
ZWQgdG9JbmRleChGUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZh
bGlkRlBSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDIwKTsKKyAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVnaXN0ZXJbMjBdID0geworICAgICAgICAgICAgMCwgSW52
YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwKKyAgICAgICAgICAgIDEsIElu
dmFsaWRJbmRleCwgMiwgSW52YWxpZEluZGV4LAorICAgICAgICAgICAgMywgSW52YWxpZEluZGV4
LCA0LCBJbnZhbGlkSW5kZXgsCisgICAgICAgICAgICBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRl
eCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsCisgICAgICAgICAgICBJbnZhbGlkSW5kZXgs
IEludmFsaWRJbmRleCwgNSwgSW52YWxpZEluZGV4LAorICAgICAgICB9OworICAgICAgICB1bnNp
Z25lZCByZXN1bHQgPSBpbmRleEZvclJlZ2lzdGVyW3JlZ107CisgICAgICAgIEFTU0VSVChyZXN1
bHQgIT0gSW52YWxpZEluZGV4KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAg
ICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEZQUlJlZyByZWcpCisgICAgeworICAgICAg
ICBBU1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwgMzIp
OworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzMyXSA9IHsKKyAg
ICAgICAgICAgICJmMCIsICJmMSIsICJmMiIsICJmMyIsCisgICAgICAgICAgICAiZjQiLCAiZjUi
LCAiZjYiLCAiZjciLAorICAgICAgICAgICAgImY4IiwgImY5IiwgImYxMCIsICJmMTEiLAorICAg
ICAgICAgICAgImYxMiIsICJmMTMiLCAiZjE0IiwgImYxNSIKKyAgICAgICAgICAgICJmMTYiLCAi
ZjE3IiwgImYxOCIsICJmMTkiCisgICAgICAgICAgICAiZjIwIiwgImYyMSIsICJmMjIiLCAiZjIz
IgorICAgICAgICAgICAgImYyNCIsICJmMjUiLCAiZjI2IiwgImYyNyIKKyAgICAgICAgICAgICJm
MjgiLCAiZjI5IiwgImYzMCIsICJmMzEiCisgICAgICAgIH07CisgICAgICAgIHJldHVybiBuYW1l
Rm9yUmVnaXN0ZXJbcmVnXTsKKyAgICB9Citwcml2YXRlOgorCisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIEludmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7Cit9OworCisjZW5kaWYKKwogdHlwZWRl
ZiBSZWdpc3RlckJhbms8RlBSSW5mbz46Oml0ZXJhdG9yIGZwcl9pdGVyYXRvcjsKIAogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaApp
bmRleCAzZDA3NTU2Li5hYTYzNGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUklu
Zm8uaApAQCAtNDYxLDYgKzQ2MSw3MyBAQCBwcml2YXRlOgogCiAjZW5kaWYKIAorI2lmIENQVShN
SVBTKQorI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDQKKworY2xhc3MgR1BS
SW5mbyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBHUFJSZWcgUmVnaXN0ZXJUeXBlOworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDY7CisKKyAgICAvLyBUZW1w
b3JhcnkgcmVnaXN0ZXJzLgorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDAgPSBNSVBTUmVn
aXN0ZXJzOjp2MDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QxID0gTUlQU1JlZ2lzdGVy
czo6djE7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMiA9IE1JUFNSZWdpc3RlcnM6OnQ0
OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDMgPSBNSVBTUmVnaXN0ZXJzOjp0NTsKKyAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q0ID0gTUlQU1JlZ2lzdGVyczo6dDY7CisgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyByZWdUNSA9IE1JUFNSZWdpc3RlcnM6OnQ3OworICAgIC8vIFRoZXNl
IHJlZ2lzdGVycyBtYXRjaCB0aGUgYmFzZWxpbmUgSklULgorICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSByZWdUMDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IGNhY2hlZFJlc3VsdFJlZ2lzdGVyMiA9IHJlZ1QxOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
Y2FsbEZyYW1lUmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjpzMDsKKyAgICAvLyBUaGVzZSBjb25z
dGFudHMgcHJvdmlkZSB0aGUgbmFtZXMgZm9yIHRoZSBnZW5lcmFsIHB1cnBvc2UgYXJndW1lbnQg
JiByZXR1cm4gdmFsdWUgcmVnaXN0ZXJzLgorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1l
bnRHUFIwID0gTUlQU1JlZ2lzdGVyczo6YTA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1
bWVudEdQUjEgPSBNSVBTUmVnaXN0ZXJzOjphMTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFy
Z3VtZW50R1BSMiA9IE1JUFNSZWdpc3RlcnM6OmEyOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
YXJndW1lbnRHUFIzID0gTUlQU1JlZ2lzdGVyczo6YTM7CisgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyBub25BcmdHUFIwID0gcmVnVDI7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIx
ID0gcmVnVDM7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIyID0gcmVnVDQ7Cisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IHJlZ1QwOworICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIyID0gcmVnVDE7CisgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSByZWdUNTsKKworICAgIHN0YXRpYyBH
UFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChp
bmRleCA8IG51bWJlck9mUmVnaXN0ZXJzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBy
ZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsgcmVnVDAsIHJlZ1QxLCByZWdU
MiwgcmVnVDMsIHJlZ1Q0LCByZWdUNSB9OworICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRl
eFtpbmRleF07CisgICAgfQorCisgICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgoR1BSUmVnIHJl
ZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAg
IEFTU0VSVChyZWcgPCAxNik7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmRleEZv
clJlZ2lzdGVyWzE2XSA9IHsgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIDAsIDEsIEludmFs
aWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxp
ZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCAyLCAzLCA0
LCA1IH07CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGluZGV4Rm9yUmVnaXN0ZXJbcmVnXTsK
KyAgICAgICAgQVNTRVJUKHJlc3VsdCAhPSBJbnZhbGlkSW5kZXgpOworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoR1BSUmVn
IHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CisgICAg
ICAgIEFTU0VSVChyZWcgPCAxNik7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lRm9y
UmVnaXN0ZXJbMTZdID0geworICAgICAgICAgICAgInplcm8iLCAiYXQiLCAidjAiLCAidjEiLAor
ICAgICAgICAgICAgImEwIiwgImExIiwgImEyIiwgImEzIiwKKyAgICAgICAgICAgICJ0MCIsICJ0
MSIsICJ0MiIsICJ0MyIsCisgICAgICAgICAgICAidDQiLCAidDUiLCAidDYiLCAidDciCisgICAg
ICAgIH07CisgICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0ZXJbcmVnXTsKKyAgICB9Citwcml2
YXRlOgorCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEludmFsaWRJbmRleCA9IDB4ZmZmZmZm
ZmY7Cit9OworCisjZW5kaWYKKwogdHlwZWRlZiBSZWdpc3RlckJhbms8R1BSSW5mbz46Oml0ZXJh
dG9yIGdwcl9pdGVyYXRvcjsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IGI2ODQyODIuLjM3
Yzg4NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmgKQEAgLTE1MzgsNyArMTUzOCw3IEBAIHB1YmxpYzoKIAogLy8gRW5jb2RlZEpTVmFsdWUgaW4g
SlNWQUxVRTMyXzY0IGlzIGEgNjQtYml0IGludGVnZXIuIFdoZW4gYmVpbmcgY29tcGlsZWQgaW4g
QVJNIEVBQkksIGl0IG11c3QgYmUgYWxpZ25lZCBldmVuLW51bWJlcmVkIHJlZ2lzdGVyIChyMCwg
cjIgb3IgW3NwXSkuCiAvLyBUbyBhdm9pZCBhc3NlbWJsaWVzIGZyb20gdXNpbmcgd3JvbmcgcmVn
aXN0ZXJzLCBsZXQncyBvY2N1cHkgcjEgb3IgcjMgd2l0aCBhIGR1bW15IGFyZ3VtZW50IHdoZW4g
bmVjZXNzYXJ5LgotI2lmIENPTVBJTEVSX1NVUFBPUlRTKEVBQkkpICYmIENQVShBUk0pCisjaWYg
KENPTVBJTEVSX1NVUFBPUlRTKEVBQkkpICYmIENQVShBUk0pKSB8fCBDUFUoTUlQUykKICNkZWZp
bmUgRUFCSV8zMkJJVF9EVU1NWV9BUkcgICAgICBUcnVzdGVkSW1tMzIoMCksCiAjZWxzZQogI2Rl
ZmluZSBFQUJJXzMyQklUX0RVTU1ZX0FSRwpAQCAtMTk4Myw3ICsxOTgzLDcgQEAgcHVibGljOgog
ICAgIH0KICNlbmRpZgogICAgIAotI2lmICFkZWZpbmVkKE5ERUJVRykgJiYgIUNQVShBUk0pCisj
aWYgIWRlZmluZWQoTkRFQlVHKSAmJiAhQ1BVKEFSTSkgJiYgIUNQVShNSVBTKQogICAgIHZvaWQg
cHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpCiAgICAgewogICAgICAgICAvLyBXZSdyZSBhYm91dCB0
byBjYWxsIG91dCB0byBhICJuYXRpdmUiIGhlbHBlciBmdW5jdGlvbi4gVGhlIGhlbHBlcgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCmluZGV4IGQyYTkxYmEuLjQz
MWZjYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VK
SVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKQEAg
LTEyNSw2ICsxMjUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBS
ZWdpc3RlcklEIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6djA7CiAgICAg
ICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGZpcnN0QXJndW1lbnRSZWdpc3RlciA9IE1JUFNS
ZWdpc3RlcnM6OmEwOwogICAgICAgICAKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAg
ICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGJ1Y2tldENvdW50ZXJSZWdpc3RlciA9IE1JUFNS
ZWdpc3RlcnM6OnMzOworI2VuZGlmCisKICAgICAgICAgLy8gcmVnVDAgbXVzdCBiZSB2MCBmb3Ig
cmV0dXJuaW5nIGEgMzItYml0IHZhbHVlLgogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJ
RCByZWdUMCA9IE1JUFNSZWdpc3RlcnM6OnYwOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKaW5kZXggZjk0OTFjNS4uZGIwZTE2NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKQEAgLTEzMCwx
NCArMTMwLDE4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90
IGJ1ZmZlclNpemUpIHsgcmV0dXJuIHNpemVvZihzaXplX3QpICsgYnVmZmVyU2l6ZTsgfQorICAg
ICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVfdCBidWZmZXJTaXplKSB7IHJl
dHVybiBzaXplb2YoU2NyYXRjaEJ1ZmZlcikgKyBidWZmZXJTaXplOyB9CiAgICAgICAgIHZvaWQg
c2V0QWN0aXZlTGVuZ3RoKHNpemVfdCBhY3RpdmVMZW5ndGgpIHsgbV9hY3RpdmVMZW5ndGggPSBh
Y3RpdmVMZW5ndGg7IH0KICAgICAgICAgc2l6ZV90IGFjdGl2ZUxlbmd0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fYWN0aXZlTGVuZ3RoOyB9OwogICAgICAgICBzaXplX3QqIGFjdGl2ZUxlbmd0aFB0cigp
IHsgcmV0dXJuICZtX2FjdGl2ZUxlbmd0aDsgfTsKICAgICAgICAgdm9pZCogZGF0YUJ1ZmZlcigp
IHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKICAgICAgICAgc2l6ZV90IG1fYWN0aXZlTGVuZ3RoOwor
I2lmIENQVShNSVBTKSAmJiAoZGVmaW5lZCBXVEZfTUlQU19BUkNIX1JFViAmJiBXVEZfTUlQU19B
UkNIX1JFViA9PSAyKQorICAgICAgICB2b2lkKiBtX2J1ZmZlclswXSBfX2F0dHJpYnV0ZV9fKChh
bGlnbmVkKDgpKSk7CisjZWxzZQogICAgICAgICB2b2lkKiBtX2J1ZmZlclswXTsKKyNlbmRpZgog
ICAgIH07CiAjaWYgQ09NUElMRVIoTVNWQykKICNwcmFnbWEgd2FybmluZyhwb3ApCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRh
OWIyZGIuLjMzM2IwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMTItMjEgIEJhbGF6cyBL
aWx2YWR5ICA8a2lsdmFkeWJAaG9tZWppbm5pLmNvbT4KKworICAgICAgICBNSVBTIERGRyBpbXBs
ZW1lbnRhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMTMyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIERGRyBpbXBsZW1lbnRhdGlvbiBmb3IgTUlQUy4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9y
bS5oOgorCiAyMDEyLTEyLTIwICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4K
IAogICAgICAgICBbRUZMXSBCdWlsZCBicmVhayB3aXRoIGxhdGVzdCBFRkwgbGlicmFyaWVzLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtLmgKaW5kZXggZjJmZDNiMC4uOGJiZWRiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC05NDQsNiAr
OTQ0LDEwIEBACiAjaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKICNkZWZpbmUgRU5BQkxFX0RGR19K
SVQgMQogI2VuZGlmCisvKiBFbmFibGUgdGhlIERGRyBKSVQgb24gTUlQUy4gKi8KKyNpZiBDUFUo
TUlQUykKKyNkZWZpbmUgRU5BQkxFX0RGR19KSVQgMQorI2VuZGlmCiAjZW5kaWYKIAogLyogSWYg
dGhlIGppdCBpcyBub3QgYXZhaWxhYmxlLCBlbmFibGUgdGhlIExMSW50IEMgTG9vcDogKi8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181319</attachid>
            <date>2013-01-04 09:38:24 -0800</date>
            <delta_ts>2013-01-08 08:10:14 -0800</delta_ts>
            <desc>DFG for MIPS.</desc>
            <filename>mips-dfg.diff</filename>
            <type>text/plain</type>
            <size>51837</size>
            <attacher name="Balazs Kilvady">kilvadyb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDcyYTJjNjkuLjYyZGFlNzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDEzLTAxLTA0ICBCYWxhenMgS2lsdmFk
eSAgPGtpbHZhZHliQGhvbWVqaW5uaS5jb20+CisKKyAgICAgICAgTUlQUyBERkcgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
RkcgaW1wbGVtZW50YXRpb24gZm9yIE1JUFMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTUlQU0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpNSVBTQXNzZW1ibGVyKToK
KyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6c2xsdik6CisgICAgICAgIChKU0M6Ok1JUFNB
c3NlbWJsZXI6Om1vdmQpOgorICAgICAgICAoTUlQU0Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6
Ok1JUFNBc3NlbWJsZXI6Om5lZ2QpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJl
bEZvcldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJlbCk6Cisg
ICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6OnZtb3YpOgorICAgICAgICAoSlNDOjpNSVBTQXNz
ZW1ibGVyOjpsaW5rRGlyZWN0SnVtcCk6CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6Om1h
eEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpyZXZl
cnRKdW1wVG9Nb3ZlKToKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhK
dW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKE1h
Y3JvQXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBva2UpOgorICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJNSVBTOjphZGQzMik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlck1JUFMpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmFuZDMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJNSVBTOjpsc2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyTUlQUzo6bXVsMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om9yMzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJzaGlmdDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjp1cnNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OnN1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
Ojp4b3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6c3RvcmUzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6anVtcCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoQWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OmJyYW5jaE11bDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
OjpicmFuY2hTdWIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNo
TmVnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmNhbGwpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmxvYWREb3VibGUpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6Om1vdmVEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OnN3YXBEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6
OnN1YkRvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6bXVsRG91Ymxl
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpkaXZEb3VibGUpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om5lZ2F0ZURvdWJsZSk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRXF1YWwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlck1JUFM6OmJyYW5jaE5vdEVxdWFsKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJNSVBTOjpicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OmJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnRydW5jYXRlRG91YmxlVG9JbnQzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6dHJ1bmNhdGVEb3VibGVUb1VpbnQzMik6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlTm9uWmVybyk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlWmVyb09yTmFOKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjppbnZlcnQpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyTUlQUzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogZGZnL0RG
R0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoQXNzZW1ibHlIZWxwZXJzKToKKyAgICAgICAg
KEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybik6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpk
ZWJ1Z0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEND
YWxsSGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3Vt
ZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUpOgorICAgICAgICAqIGRmZy9ERkdGUFJJbmZvLmg6CisgICAgICAgIChERkcp
OgorICAgICAgICAoRlBSSW5mbyk6CisgICAgICAgIChKU0M6OkRGRzo6RlBSSW5mbzo6dG9SZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6RlBSSW5mbzo6dG9JbmRleCk6CisgICAgICAgIChK
U0M6OkRGRzo6RlBSSW5mbzo6ZGVidWdOYW1lKToKKyAgICAgICAgKiBkZmcvREZHR1BSSW5mby5o
OgorICAgICAgICAoREZHKToKKyAgICAgICAgKEdQUkluZm8pOgorICAgICAgICAoSlNDOjpERkc6
OkdQUkluZm86OnRvUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkdQUkluZm86OnRvSW5k
ZXgpOgorICAgICAgICAoSlNDOjpERkc6OkdQUkluZm86OmRlYnVnTmFtZSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6CisgICAg
ICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAgIChKU0ludGVyZmFjZUpJVCk6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpTQzo6U2NyYXRjaEJ1
ZmZlcjo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoU2NyYXRjaEJ1ZmZlcik6CisKIDIwMTMt
MDEtMDMgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkc6OkJ5
dGVDb2RlQ2FjaGUgc2VydmVzIGxpdHRsZSBvciBubyBwdXJwb3NlIGV2ZXIgc2luY2Ugd2UgZGVj
aWRlZCB0byBrZWVwIGJ5dGVjb2RlIGFyb3VuZCBwZXJtYW5lbnRseQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaAppbmRleCAwMjZmODdlLi43ZjU1
M2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3Nl
bWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJs
ZXIuaApAQCAtMTUyLDYgKzE1Miw4IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIFNlZ21lbnRlZFZl
Y3RvcjxBc3NlbWJsZXJMYWJlbCwgNjQ+IEp1bXBzOwogCiAgICAgTUlQU0Fzc2VtYmxlcigpCisg
ICAgICAgIDogbV9pbmRleE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKKyAgICAgICAgLCBtX2lu
ZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludChJTlRfTUlOKQogICAgIHsKICAgICB9CiAKQEAgLTMy
NSw3ICszMjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIGVtaXRJbnN0KDB4MDAwMDAwMDAgfCAocmQg
PDwgT1BfU0hfUkQpIHwgKHJ0IDw8IE9QX1NIX1JUKSB8ICgoc2hhbXQgJiAweDFmKSA8PCBPUF9T
SF9TSEFNVCkpOwogICAgIH0KIAotICAgIHZvaWQgc2xsdihSZWdpc3RlcklEIHJkLCBSZWdpc3Rl
cklEIHJ0LCBpbnQgcnMpCisgICAgdm9pZCBzbGx2KFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQg
cnQsIFJlZ2lzdGVySUQgcnMpCiAgICAgewogICAgICAgICBlbWl0SW5zdCgweDAwMDAwMDA0IHwg
KHJkIDw8IE9QX1NIX1JEKSB8IChydCA8PCBPUF9TSF9SVCkgfCAocnMgPDwgT1BfU0hfUlMpKTsK
ICAgICB9CkBAIC01MjcsNiArNTI5LDE2IEBAIHB1YmxpYzoKICAgICAgICAgZW1pdEluc3QoMHg0
NjIwMDAwNCB8IChmZCA8PCBPUF9TSF9GRCkgfCAoZnMgPDwgT1BfU0hfRlMpKTsKICAgICB9CiAK
KyAgICB2b2lkIG1vdmQoRlBSZWdpc3RlcklEIGZkLCBGUFJlZ2lzdGVySUQgZnMpCisgICAgewor
ICAgICAgICBlbWl0SW5zdCgweDQ2MjAwMDA2IHwgKGZkIDw8IE9QX1NIX0ZEKSB8IChmcyA8PCBP
UF9TSF9GUykpOworICAgIH0KKworICAgIHZvaWQgbmVnZChGUFJlZ2lzdGVySUQgZmQsIEZQUmVn
aXN0ZXJJRCBmcykKKyAgICB7CisgICAgICAgIGVtaXRJbnN0KDB4NDYyMDAwMDcgfCAoZmQgPDwg
T1BfU0hfRkQpIHwgKGZzIDw8IE9QX1NIX0ZTKSk7CisgICAgfQorCiAgICAgdm9pZCB0cnVuY3dk
KEZQUmVnaXN0ZXJJRCBmZCwgRlBSZWdpc3RlcklEIGZzKQogICAgIHsKICAgICAgICAgZW1pdElu
c3QoMHg0NjIwMDAwZCB8IChmZCA8PCBPUF9TSF9GRCkgfCAoZnMgPDwgT1BfU0hfRlMpKTsKQEAg
LTYxOSw5ICs2MzEsMjQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9idWZmZXIubGFiZWwo
KTsKICAgICB9CiAKKyAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbEZvcldhdGNocG9pbnQoKQorICAg
IHsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgcmVzdWx0ID0gbV9idWZmZXIubGFiZWwoKTsKKyAg
ICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4ocmVzdWx0Lm1fb2Zmc2V0KSAhPSBtX2luZGV4T2ZM
YXN0V2F0Y2hwb2ludCkKKyAgICAgICAgICAgIHJlc3VsdCA9IGxhYmVsKCk7CisgICAgICAgIG1f
aW5kZXhPZkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0OworICAgICAgICBtX2luZGV4
T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCA9IHJlc3VsdC5tX29mZnNldCArIG1heEp1bXBSZXBsYWNl
bWVudFNpemUoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBBc3NlbWJs
ZXJMYWJlbCBsYWJlbCgpCiAgICAgewotICAgICAgICByZXR1cm4gbV9idWZmZXIubGFiZWwoKTsK
KyAgICAgICAgQXNzZW1ibGVyTGFiZWwgcmVzdWx0ID0gbV9idWZmZXIubGFiZWwoKTsKKyAgICAg
ICAgd2hpbGUgKFVOTElLRUxZKHN0YXRpY19jYXN0PGludD4ocmVzdWx0Lm1fb2Zmc2V0KSA8IG1f
aW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50KSkgeworICAgICAgICAgICAgbm9wKCk7CisgICAg
ICAgICAgICByZXN1bHQgPSBtX2J1ZmZlci5sYWJlbCgpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAgQXNzZW1ibGVyTGFiZWwgYWxpZ24oaW50IGFsaWdu
bWVudCkKQEAgLTY2NCwxNCArNjkxLDI0IEBAIHB1YmxpYzoKICAgICAvLyBBc3NlbWJseSBoZWxw
ZXJzIGZvciBtb3ZpbmcgZGF0YSBiZXR3ZWVuIGZwIGFuZCByZWdpc3RlcnMuCiAgICAgdm9pZCB2
bW92KFJlZ2lzdGVySUQgcmQxLCBSZWdpc3RlcklEIHJkMiwgRlBSZWdpc3RlcklEIHJuKQogICAg
IHsKKyNpZiBXVEZfTUlQU19JU0FfUkVWKDIpICYmIFdURl9NSVBTX0ZQNjQKKyAgICAgICAgbWZj
MShyZDEsIHJuKTsKKyAgICAgICAgbWZoYzEocmQyLCBybik7CisjZWxzZQogICAgICAgICBtZmMx
KHJkMSwgcm4pOwogICAgICAgICBtZmMxKHJkMiwgRlBSZWdpc3RlcklEKHJuICsgMSkpOworI2Vu
ZGlmCiAgICAgfQogCiAgICAgdm9pZCB2bW92KEZQUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBy
bjEsIFJlZ2lzdGVySUQgcm4yKQogICAgIHsKKyNpZiBXVEZfTUlQU19JU0FfUkVWKDIpICYmIFdU
Rl9NSVBTX0ZQNjQKKyAgICAgICAgbXRjMShybjEsIHJkKTsKKyAgICAgICAgbXRoYzEocm4yLCBy
ZCk7CisjZWxzZQogICAgICAgICBtdGMxKHJuMSwgcmQpOwogICAgICAgICBtdGMxKHJuMiwgRlBS
ZWdpc3RlcklEKHJkICsgMSkpOworI2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIHVuc2lnbmVk
IGdldENhbGxSZXR1cm5PZmZzZXQoQXNzZW1ibGVyTGFiZWwgY2FsbCkKQEAgLTY4OCw2ICs3MjUs
MzUgQEAgcHVibGljOgogICAgIC8vIHdyaXRhYmxlIHJlZ2lvbiBvZiBtZW1vcnk7IHRvIG1vZGlm
eSB0aGUgY29kZSBpbiBhbiBleGVjdXRlLW9ubHkgZXhlY3VhYmxlCiAgICAgLy8gcG9vbCB0aGUg
J3JlcGF0Y2gnIGFuZCAncmVsaW5rJyBtZXRob2RzIHNob3VsZCBiZSB1c2VkLgogCisgICAgc3Rh
dGljIHNpemVfdCBsaW5rRGlyZWN0SnVtcCh2b2lkKiBjb2RlLCB2b2lkKiB0bykKKyAgICB7Cisg
ICAgICAgIE1JUFNXb3JkKiBpbnNuID0gcmVpbnRlcnByZXRfY2FzdDxNSVBTV29yZCo+KHJlaW50
ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGNvZGUpKTsKKyAgICAgICAgc2l6ZV90IG9wcyA9IDA7Cisg
ICAgICAgIGludDMyX3Qgc2xvdEFkZHIgPSByZWludGVycHJldF9jYXN0PGludD4oaW5zbikgKyA0
OworICAgICAgICBpbnQzMl90IHRvQWRkciA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50Pih0byk7CisK
KyAgICAgICAgaWYgKChzbG90QWRkciAmIDB4ZjAwMDAwMDApICE9ICh0b0FkZHIgJiAweGYwMDAw
MDAwKSkgeworICAgICAgICAgICAgLy8gbHVpCisgICAgICAgICAgICAqaW5zbiA9IDB4M2MwMDAw
MDAgfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlQpIHwgKCh0b0FkZHIgPj4gMTYpICYg
MHhmZmZmKTsKKyAgICAgICAgICAgICsraW5zbjsKKyAgICAgICAgICAgIC8vIG9yaQorICAgICAg
ICAgICAgKmluc24gPSAweDM0MDAwMDAwIHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JU
KSB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SUykgfCAodG9BZGRyICYgMHhmZmZmKTsK
KyAgICAgICAgICAgICsraW5zbjsKKyAgICAgICAgICAgIC8vIGpyCisgICAgICAgICAgICAqaW5z
biA9IDB4MDAwMDAwMDggfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlMpOworICAgICAg
ICAgICAgKytpbnNuOworICAgICAgICAgICAgb3BzID0gNCAqIHNpemVvZihNSVBTV29yZCk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBqCisgICAgICAgICAgICAqaW5zbiA9IDB4
MDgwMDAwMDAgfCAoKHRvQWRkciAmIDB4MGZmZmZmZmYpID4+IDIpOworICAgICAgICAgICAgKytp
bnNuOworICAgICAgICAgICAgb3BzID0gMiAqIHNpemVvZihNSVBTV29yZCk7CisgICAgICAgIH0K
KyAgICAgICAgLy8gbm9wCisgICAgICAgICppbnNuID0gMHgwMDAwMDAwMDsKKyAgICAgICAgcmV0
dXJuIG9wczsKKyAgICB9CisKICAgICB2b2lkIGxpbmtKdW1wKEFzc2VtYmxlckxhYmVsIGZyb20s
IEFzc2VtYmxlckxhYmVsIHRvKQogICAgIHsKICAgICAgICAgQVNTRVJUKHRvLmlzU2V0KCkpOwpA
QCAtODI1LDI5ICs4OTEsMzYgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCi0gICAgc3RhdGlj
IHZvaWQgcmV2ZXJ0SnVtcFRvTW92ZSh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCBSZWdpc3RlcklE
IHJ0LCBpbnQgaW1tKQorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6
ZSgpCiAgICAgewotICAgICAgICBNSVBTV29yZCogaW5zbiA9IHN0YXRpY19jYXN0PE1JUFNXb3Jk
Kj4oaW5zdHJ1Y3Rpb25TdGFydCkgKyAxOwotICAgICAgICBBU1NFUlQoKCppbnNuICYgMHhmYzAw
MDAwMCkgPT0gMHgzNDAwMDAwMCk7Ci0gICAgICAgICppbnNuID0gKCppbnNuICYgMHhmYzFmMDAw
MCkgfCAoaW1tICYgMHhmZmZmKTsKLSAgICAgICAgY2FjaGVGbHVzaChpbnNuLCBzaXplb2YoTUlQ
U1dvcmQpKTsKKyAgICAgICAgcmV0dXJuIHNpemVvZihNSVBTV29yZCkgKiA0OwogICAgIH0KIAot
ICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCB2
b2lkKiB0bykKKyAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wVG9Nb3ZlKHZvaWQqIGluc3RydWN0
aW9uU3RhcnQsIFJlZ2lzdGVySUQgcnQsIGludCBpbW0pCiAgICAgewotICAgICAgICBNSVBTV29y
ZCogaW5zdHJ1Y3Rpb24gPSByZWludGVycHJldF9jYXN0PE1JUFNXb3JkKj4oaW5zdHJ1Y3Rpb25T
dGFydCk7Ci0gICAgICAgIGludHB0cl90IGp1bXBUbyA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRy
X3Q+KHRvKTsKKyAgICAgICAgTUlQU1dvcmQqIGluc24gPSBzdGF0aWNfY2FzdDxNSVBTV29yZCo+
KGluc3RydWN0aW9uU3RhcnQpOworICAgICAgICBzaXplX3QgY29kZVNpemUgPSAyICogc2l6ZW9m
KE1JUFNXb3JkKTsKIAogICAgICAgICAvLyBsdWkKLSAgICAgICAgaW5zdHJ1Y3Rpb25bMF0gPSAw
eDNjMDAwMDAwIHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JUKSB8ICgoanVtcFRvID4+
IDE2KSAmIDB4ZmZmZik7CisgICAgICAgICppbnNuID0gMHgzYzAwMDAwMCB8IChydCA8PCBPUF9T
SF9SVCkgfCAoKGltbSA+PiAxNikgJiAweGZmZmYpOworICAgICAgICArK2luc247CiAgICAgICAg
IC8vIG9yaQotICAgICAgICBpbnN0cnVjdGlvblsxXSA9IDB4MzQwMDAwMDAgfCAoTUlQU1JlZ2lz
dGVyczo6dDkgPDwgT1BfU0hfUlQpIHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JTKSB8
IChqdW1wVG8gJiAweGZmZmYpOwotICAgICAgICAvLyBqcgotICAgICAgICBpbnN0cnVjdGlvblsy
XSA9IDB4MDAwMDAwMDggfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlMpOwotICAgICAg
ICAvLyBub3AKLSAgICAgICAgaW5zdHJ1Y3Rpb25bM10gPSAweDA7CisgICAgICAgICppbnNuID0g
MHgzNDAwMDAwMCB8IChydCA8PCBPUF9TSF9SUykgfCAocnQgPDwgT1BfU0hfUlQpIHwgKGltbSAm
IDB4ZmZmZik7CisgICAgICAgICsraW5zbjsKKyAgICAgICAgLy8gaWYganIgJHQ5CisgICAgICAg
IGlmICgqaW5zbiA9PSAweDAzMjAwMDA4KSB7CisgICAgICAgICAgICAqaW5zbiA9IDB4MDAwMDAw
MDA7CisgICAgICAgICAgICBjb2RlU2l6ZSArPSBzaXplb2YoTUlQU1dvcmQpOworICAgICAgICB9
CisgICAgICAgIGNhY2hlRmx1c2goaW5zbiwgY29kZVNpemUpOworICAgIH0KIAotICAgICAgICBj
YWNoZUZsdXNoKGluc3RydWN0aW9uLCBzaXplb2YoTUlQU1dvcmQpICogNCk7CisgICAgc3RhdGlj
IHZvaWQgcmVwbGFjZVdpdGhKdW1wKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIHZvaWQqIHRvKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKCEoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rp
b25TdGFydCkgJiAzKSk7CisgICAgICAgIEFTU0VSVCghKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+
KHRvKSAmIDMpKTsKKyAgICAgICAgc2l6ZV90IG9wcyA9IGxpbmtEaXJlY3RKdW1wKGluc3RydWN0
aW9uU3RhcnQsIHRvKTsKKyAgICAgICAgY2FjaGVGbHVzaChpbnN0cnVjdGlvblN0YXJ0LCBvcHMp
OwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoTG9hZCh2b2lkKiBpbnN0cnVj
dGlvblN0YXJ0KQpAQCAtMTAyMyw2ICsxMDk2LDggQEAgcHJpdmF0ZToKIAogICAgIEFzc2VtYmxl
ckJ1ZmZlciBtX2J1ZmZlcjsKICAgICBKdW1wcyBtX2p1bXBzOworICAgIGludCBtX2luZGV4T2ZM
YXN0V2F0Y2hwb2ludDsKKyAgICBpbnQgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQ7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAppbmRleCAzZDU3MzQwLi4yZjI2ZmYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC0yMDAs
NiArMjAwLDEzIEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKICAgICAKKyNpZiBDUFUoTUlQUykK
KyAgICB2b2lkIHBva2UoRlBSZWdpc3RlcklEIHNyYywgaW50IGluZGV4ID0gMCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVCghKGluZGV4ICYgMSkpOworICAgICAgICBzdG9yZURvdWJsZShzcmMsIGFk
ZHJlc3NGb3JQb2tlKGluZGV4KSk7CisgICAgfQorI2VuZGlmCiAKICAgICAvLyBCYWNrd2FyZHMg
YmFuY2hlcywgdGhlc2UgYXJlIGN1cnJlbnRseSBhbGwgaW1wbGVtZW50ZWQgdXNpbmcgZXhpc3Rp
bmcgZm9yd2FyZHMgYnJhbmNoIG1lY2hhbmlzbXMuCiAgICAgdm9pZCBicmFuY2hQdHIoUmVsYXRp
b25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwgVHJ1c3RlZEltbVB0ciBpbW0sIExh
YmVsIHRhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJNSVBTLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyTUlQUy5oCmluZGV4IDNhYjI1NTMuLmYyOWI1N2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaApAQCAt
MTE0LDYgKzExNCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoZGVzdCwg
ZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIGFkZDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdp
c3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
YWRkdShkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCBhZGQzMihUcnVzdGVkSW1t
MzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBhZGQzMihpbW0sIGRlc3Qs
IGRlc3QpOwpAQCAtMjY3LDYgKzI3MiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVy
LmFuZEluc24oZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKFJlZ2lz
dGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYW5kSW5zbihkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9p
ZCBhbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAg
ICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCkBAIC0yODMsOSArMjkzLDE2IEBA
IHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgbHNoaWZ0MzIoVHJ1c3RlZElt
bTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLnNsbChkZXN0LCBkZXN0LCBpbW0ubV92YWx1ZSk7CisgICAgICAgIGlmICghaW1tLm1f
dmFsdWUgJiYgIW1fZml4ZWRXaWR0aCkKKyAgICAgICAgICAgIG1vdmUoTUlQU1JlZ2lzdGVyczo6
emVybywgZGVzdCk7CisgICAgICAgIGVsc2UgaWYgKGltbS5tX3ZhbHVlID4gMCAmJiBpbW0ubV92
YWx1ZSA8IDY1NTM1ICYmICFtX2ZpeGVkV2lkdGgpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5h
bmRpKGRlc3QsIHNyYywgaW1tLm1fdmFsdWUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAg
IG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYW5k
SW5zbihkZXN0LCBzcmMsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIH0KICAgICB9CiAKICAg
ICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkK
QEAgLTI5MywxMSArMzEwLDMzIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc2xsdihk
ZXN0LCBkZXN0LCBzaGlmdEFtb3VudCk7CiAgICAgfQogCisgICAgdm9pZCBsc2hpZnQzMihSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc2xsdihkZXN0LCBzcmMsIHNoaWZ0QW1vdW50KTsKKyAg
ICB9CisKKyAgICB2b2lkIGxzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICBt
X2Fzc2VtYmxlci5zbGx2KGRlc3QsIGRlc3QsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgfQorCisg
ICAgdm9pZCBsc2hpZnQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnNsbHYoZGVzdCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIpOworICAg
IH0KKwogICAgIHZvaWQgbXVsMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm11bChkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAor
ICAgIHZvaWQgbXVsMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tdWwoZGVzdCwgb3AxLCBvcDIpOwor
ICAgIH0KKwogICAgIHZvaWQgbXVsMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmICghaW1tLm1fdmFsdWUgJiYgIW1f
Zml4ZWRXaWR0aCkKQEAgLTM0OCw2ICszODcsMjQgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2Vt
Ymxlci5vckluc24oZGVzdCwgZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCisgICAg
dm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID4gMCAmJiBpbW0u
bV92YWx1ZSA8IDY1NTM1ICYmICFtX2ZpeGVkV2lkdGgpIHsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLm9yaShkZXN0LCBzcmMsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAgICBsaSAgICAgIGRhdGFUZW1wLCBpbW0K
KyAgICAgICAgICAgIG9yICAgICAgZGVzdCwgc3JjLCBkYXRhVGVtcAorICAgICAgICAqLworICAg
ICAgICBtb3ZlKGltbSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLm9y
SW5zbihkZXN0LCBzcmMsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgIH0KKwogICAgIHZvaWQgb3Iz
MihSZWdpc3RlcklEIHNyYywgQWJzb2x1dGVBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAgICBs
b2FkMzIoZGVzdC5tX3B0ciwgZGF0YVRlbXBSZWdpc3Rlcik7CkBAIC0zNjAsNiArNDE3LDExIEBA
IHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3JhdihkZXN0LCBkZXN0LCBzaGlmdEFtb3Vu
dCk7CiAgICAgfQogCisgICAgdm9pZCByc2hpZnQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuc3JhdihkZXN0LCBzcmMsIHNoaWZ0QW1vdW50KTsKKyAgICB9CisKICAgICB2b2lkIHJzaGlm
dDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1f
YXNzZW1ibGVyLnNyYShkZXN0LCBkZXN0LCBpbW0ubV92YWx1ZSk7CkBAIC0zNzUsMTYgKzQzNywz
MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnNybHYoZGVzdCwgZGVzdCwgc2hpZnRB
bW91bnQpOwogICAgIH0KIAorICAgIHZvaWQgdXJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5zcmx2KGRlc3QsIHNyYywgc2hpZnRBbW91bnQpOworICAgIH0KKwogICAgIHZvaWQg
dXJzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLnNybChkZXN0LCBkZXN0LCBpbW0ubV92YWx1ZSk7CiAgICAgfQogCisg
ICAgdm9pZCB1cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnNybChkZXN0LCBzcmMsIGlt
bS5tX3ZhbHVlKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJ1KGRlc3QsIGRlc3Qs
IHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJ
RCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YnUo
ZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID49IC0z
Mjc2NyAmJiBpbW0ubV92YWx1ZSA8PSAzMjc2OApAQCAtNDk1LDYgKzU3MiwxMSBAQCBwdWJsaWM6
CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAK
KyAgICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihkZXN0LCBvcDEsIG9w
Mik7CisgICAgfQorCiAgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpIHsKQEAgLTUxMCw2
ICs1OTIsMjEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIGRl
c3QsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCisgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1t
MzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
aWYgKGltbS5tX3ZhbHVlID09IC0xKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3IoZGVz
dCwgc3JjLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAgICBsaSAgaW1tVGVtcCwgaW1tCisgICAgICAg
ICAgICB4b3IgZGVzdCwgZGVzdCwgaW1tVGVtcAorICAgICAgICAqLworICAgICAgICBtb3ZlKGlt
bSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihkZXN0LCBz
cmMsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgfQorCiAgICAgdm9pZCBzcXJ0RG91YmxlKEZQUmVn
aXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxl
ci5zcXJ0ZChkc3QsIHNyYyk7CkBAIC05ODksNiArMTA4Niw0NCBAQCBwdWJsaWM6CiAgICAgICAg
IH0KICAgICB9CiAKKyAgICB2b2lkIHN0b3JlMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4
IGFkZHJlc3MpCisgICAgeworICAgICAgICBpZiAoYWRkcmVzcy5vZmZzZXQgPj0gLTMyNzY4ICYm
IGFkZHJlc3Mub2Zmc2V0IDw9IDMyNzY3ICYmICFtX2ZpeGVkV2lkdGgpIHsKKyAgICAgICAgICAg
IC8qCisgICAgICAgICAgICAgICAgc2xsICAgICBhZGRyVGVtcCwgYWRkcmVzcy5pbmRleCwgYWRk
cmVzcy5zY2FsZQorICAgICAgICAgICAgICAgIGFkZHUgICAgYWRkclRlbXAsIGFkZHJUZW1wLCBh
ZGRyZXNzLmJhc2UKKyAgICAgICAgICAgICAgICBzdyAgICAgIHNyYywgYWRkcmVzcy5vZmZzZXQo
YWRkclRlbXApCisgICAgICAgICAgICAqLworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2xsKGFk
ZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkdShhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBh
ZGRyZXNzLmJhc2UpOworICAgICAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSkKKyAgICAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5zdyhNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBhZGRyVGVtcFJlZ2lzdGVy
LCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBt
b3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5z
dyhpbW1UZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mub2Zmc2V0KTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAg
ICAgICAgc2xsICAgICBhZGRyVGVtcCwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZQorICAg
ICAgICAgICAgICAgIGFkZHUgICAgYWRkclRlbXAsIGFkZHJUZW1wLCBhZGRyZXNzLmJhc2UKKyAg
ICAgICAgICAgICAgICBsdWkgICAgIGltbVRlbXAsIChhZGRyZXNzLm9mZnNldCArIDB4ODAwMCkg
Pj4gMTYKKyAgICAgICAgICAgICAgICBhZGR1ICAgIGFkZHJUZW1wLCBhZGRyVGVtcCwgaW1tVGVt
cAorICAgICAgICAgICAgICAgIHN3ICAgICAgc3JjLCAoYWRkcmVzcy5vZmZzZXQgJiAweGZmZmYp
KGF0KQorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsbChhZGRyVGVt
cFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmFkZHUoYWRkclRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgYWRkcmVz
cy5iYXNlKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmx1aShpbW1UZW1wUmVnaXN0ZXIsIChh
ZGRyZXNzLm9mZnNldCArIDB4ODAwMCkgPj4gMTYpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
YWRkdShhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIp
OworICAgICAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSAmJiAhbV9maXhlZFdpZHRoKQorICAgICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnN3KE1JUFNSZWdpc3RlcnM6Onplcm8sIGFkZHJUZW1wUmVn
aXN0ZXIsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnN3KGltbVRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5vZmZzZXQp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisKICAgICB2b2lkIHN0b3JlMzIo
UmVnaXN0ZXJJRCBzcmMsIGNvbnN0IHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICAvKgpA
QCAtMTMzNSw2ICsxNDcwLDE1IEBAIHB1YmxpYzoKICAgICAgICAgbV9maXhlZFdpZHRoID0gZmFs
c2U7CiAgICAgfQogCisgICAgdm9pZCBqdW1wKEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQorICAg
IHsKKyAgICAgICAgbV9maXhlZFdpZHRoID0gdHJ1ZTsKKyAgICAgICAgbG9hZDMyKGFkZHJlc3Mu
bV9wdHIsIE1JUFNSZWdpc3RlcnM6OnQ5KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuanIoTUlQU1Jl
Z2lzdGVyczo6dDkpOworICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgbV9maXhl
ZFdpZHRoID0gZmFsc2U7CisgICAgfQorCiAgICAgdm9pZCBtb3ZlRG91YmxlVG9JbnRzKEZQUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCiAgICAgewog
ICAgICAgICBtX2Fzc2VtYmxlci52bW92KGRlc3QxLCBkZXN0Miwgc3JjKTsKQEAgLTE0MDMsNiAr
MTU0Nyw1MyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKCk7CiAgICAgfQogCisgICAg
SnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIFJl
Z2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoKGNv
bmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwg
KGNvbmQgPT0gTm9uWmVybykpOworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgeworICAg
ICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICBtb3ZlICAgIGRhdGFUZW1wLCBvcDEKKyAgICAg
ICAgICAgICAgICB4b3IgICAgIGNtcFRlbXAsIGRhdGFUZW1wLCBvcDIKKyAgICAgICAgICAgICAg
ICBibHR6ICAgIGNtcFRlbXAsIE5vX292ZXJmbG93ICAgICMgZGlmZiBzaWduIGJpdCAtPiBubyBv
dmVyZmxvdworICAgICAgICAgICAgICAgIGFkZHUgICAgZGVzdCwgZGF0YVRlbXAsIG9wMgorICAg
ICAgICAgICAgICAgIHhvciAgICAgY21wVGVtcCwgZGVzdCwgZGF0YVRlbXAKKyAgICAgICAgICAg
ICAgICBiZ2V6ICAgIGNtcFRlbXAsIE5vX292ZXJmbG93ICAgICMgc2FtZSBzaWduIGJpZyAtPiBu
byBvdmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIGIgICAgICAg
T3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAg
ICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AK
KyAgICAgICAgICAgIE5vX292ZXJmbG93OgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1v
dmUob3AxLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcklu
c24oY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBvcDIpOworICAgICAgICAgICAg
bV9hc3NlbWJsZXIuYmx0eihjbXBUZW1wUmVnaXN0ZXIsIDEwKTsKKyAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmFkZHUoZGVzdCwgZGF0YVRlbXBSZWdpc3Rlciwgb3AyKTsKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLnhvckluc24oY21wVGVtcFJlZ2lzdGVyLCBkZXN0LCBkYXRhVGVtcFJlZ2lzdGVy
KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCA3KTsKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGp1bXAoKTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKKyAgICAgICAgICAgIGFk
ZDMyKG9wMSwgb3AyLCBkZXN0KTsKKyAgICAgICAgICAgIC8vIENoZWNrIGlmIGRlc3QgaXMgbmVn
YXRpdmUuCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHQoY21wVGVtcFJlZ2lzdGVyLCBkZXN0
LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVh
bChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAg
ICAgIGlmIChjb25kID09IFplcm8pIHsKKyAgICAgICAgICAgIGFkZDMyKG9wMSwgb3AyLCBkZXN0
KTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hFcXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6
ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBOb25aZXJvKSB7CisgICAgICAg
ICAgICBhZGQzMihvcDEsIG9wMiwgZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90
RXF1YWwoZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgQVNT
RVJUKDApOworICAgICAgICByZXR1cm4gSnVtcCgpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNo
QWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOwpAQCAtMTQx
Niw2ICsxNjA3LDExMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hBZGQzMihjb25k
LCBpbW1UZW1wUmVnaXN0ZXIsIGRlc3QpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoQWRkMzIo
UmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBk
ZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9
PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKKyAgICAg
ICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAg
ICAgbW92ZSAgICBkYXRhVGVtcCwgZGVzdAorICAgICAgICAgICAgICAgIHhvcmkgICAgY21wVGVt
cCwgZGF0YVRlbXAsIGltbQorICAgICAgICAgICAgICAgIGJsdHogICAgY21wVGVtcCwgTm9fb3Zl
cmZsb3cgICAgIyBkaWZmIHNpZ24gYml0IC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAg
YWRkaXUgICBkYXRhVGVtcCwgZGF0YVRlbXAsIGltbQorICAgICAgICAgICAgICAgIG1vdmUgICAg
ZGVzdCwgZGF0YVRlbXAKKyAgICAgICAgICAgICAgICB4b3JpICAgIGNtcFRlbXAsIGRhdGFUZW1w
LCBpbW0KKyAgICAgICAgICAgICAgICBiZ2V6ICAgIGNtcFRlbXAsIE5vX292ZXJmbG93ICAgICMg
c2FtZSBzaWduIGJpZyAtPiBubyBvdmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAgICAg
ICAgICAgICAgIGIgICAgICAgT3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAg
ICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAg
ICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgIE5vX292ZXJmbG93OgorICAgICAgICAgICAg
Ki8KKyAgICAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA+PSAtMzI3NjggJiYgaW1tLm1fdmFsdWUg
IDw9IDMyNzY3ICYmICFtX2ZpeGVkV2lkdGgpIHsKKyAgICAgICAgICAgICAgICBsb2FkMzIoZGVz
dC5tX3B0ciwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIu
eG9yaShjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbS5tX3ZhbHVlKTsKKyAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRlbXBSZWdpc3RlciwgMTApOworICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGl1KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1w
UmVnaXN0ZXIsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBzdG9yZTMyKGRhdGFUZW1w
UmVnaXN0ZXIsIGRlc3QubV9wdHIpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmko
Y21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW0ubV92YWx1ZSk7CisgICAgICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDcpOworICAgICAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBsb2FkMzIoZGVzdC5tX3B0ciwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAg
ICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbV9hc3Nl
bWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBS
ZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmx0eihjbXBUZW1wUmVnaXN0
ZXIsIDEwKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRpdShkYXRhVGVtcFJlZ2lz
dGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAg
IHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdC5tX3B0cik7CisgICAgICAgICAgICAgICAg
bV9hc3NlbWJsZXIueG9yaShjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRl
bXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVn
aXN0ZXIsIDcpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcmV0dXJuIGp1bXAoKTsKKyAgICAgICAgfQorICAgICAgICBtb3Zl
KGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbG9hZDMyKGRlc3QubV9wdHIsIGRhdGFU
ZW1wUmVnaXN0ZXIpOworICAgICAgICBhZGQzMihpbW1UZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVn
aXN0ZXIpOworICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QubV9wdHIpOwor
ICAgICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKKyAgICAgICAgICAgIC8vIENoZWNrIGlmIGRl
c3QgaXMgbmVnYXRpdmUuCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHQoY21wVGVtcFJlZ2lz
dGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAg
IHJldHVybiBicmFuY2hOb3RFcXVhbChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onpl
cm8pOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IFplcm8pCisgICAgICAgICAgICBy
ZXR1cm4gYnJhbmNoRXF1YWwoZGF0YVRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7
CisgICAgICAgIGlmIChjb25kID09IE5vblplcm8pCisgICAgICAgICAgICByZXR1cm4gYnJhbmNo
Tm90RXF1YWwoZGF0YVRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAg
IEFTU0VSVCgwKTsKKyAgICAgICAgcmV0dXJuIEp1bXAoKTsKKyAgICB9CisKKyAgICBKdW1wIGJy
YW5jaE11bDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVy
SUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKChjb25kID09
IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25k
ID09IE5vblplcm8pKTsKKyAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKKyAgICAgICAg
ICAgIC8qCisgICAgICAgICAgICAgICAgbXVsdCAgICBzcmMsIGRlc3QKKyAgICAgICAgICAgICAg
ICBtZmhpICAgIGRhdGFUZW1wCisgICAgICAgICAgICAgICAgbWZsbyAgICBkZXN0CisgICAgICAg
ICAgICAgICAgc3JhICAgICBhZGRyVGVtcCwgZGVzdCwgMzEKKyAgICAgICAgICAgICAgICBiZXEg
ICAgIGRhdGFUZW1wLCBhZGRyVGVtcCwgTm9fb3ZlcmZsb3cgIyBhbGwgc2lnbiBiaXRzIChiaXQg
NjMgdG8gYml0IDMxKSBhcmUgdGhlIHNhbWUgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAg
ICBub3AKKyAgICAgICAgICAgICAgICBiICAgICAgIE92ZXJmbG93CisgICAgICAgICAgICAgICAg
bm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAg
ICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICBOb19vdmVyZmxvdzoK
KyAgICAgICAgICAgICovCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tdWx0KHNyYzEsIHNyYzIp
OworICAgICAgICAgICAgbV9hc3NlbWJsZXIubWZoaShkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLm1mbG8oZGVzdCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5z
cmEoYWRkclRlbXBSZWdpc3RlciwgZGVzdCwgMzEpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
YmVxKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIDcpOworICAgICAgICAgICAg
bV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICByZXR1cm4ganVtcCgpOworICAgICAgICB9
CisgICAgICAgIGlmIChjb25kID09IFNpZ25lZCkgeworICAgICAgICAgICAgbXVsMzIoc3JjMSwg
c3JjMiwgZGVzdCk7CisgICAgICAgICAgICAvLyBDaGVjayBpZiBkZXN0IGlzIG5lZ2F0aXZlLgor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0KGNtcFRlbXBSZWdpc3RlciwgZGVzdCwgTUlQU1Jl
Z2lzdGVyczo6emVybyk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwoY21wVGVt
cFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
Y29uZCA9PSBaZXJvKSB7CisgICAgICAgICAgICBtdWwzMihzcmMxLCBzcmMyLCBkZXN0KTsKKyAg
ICAgICAgICAgIHJldHVybiBicmFuY2hFcXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBOb25aZXJvKSB7CisgICAgICAgICAgICBt
dWwzMihzcmMxLCBzcmMyLCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVh
bChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQo
MCk7CisgICAgICAgIHJldHVybiBKdW1wKCk7CisgICAgfQorCiAgICAgSnVtcCBicmFuY2hNdWwz
MihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2ln
bmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CkBAIC0xNDY0LDgg
KzE3NjAsNyBAQCBwdWJsaWM6CiAgICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24g
Y29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7CiAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICBtb3Zl
KHNyYywgZGVzdCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hNdWwzMihjb25kLCBpbW1UZW1wUmVn
aXN0ZXIsIGRlc3QpOworICAgICAgICByZXR1cm4gYnJhbmNoTXVsMzIoY29uZCwgaW1tVGVtcFJl
Z2lzdGVyLCBzcmMsIGRlc3QpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCkBAIC0xNTI0
LDggKzE4MTksNjAgQEAgcHVibGljOgogICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAg
bW92ZShzcmMsIGRlc3QpOwotICAgICAgICByZXR1cm4gYnJhbmNoU3ViMzIoY29uZCwgaW1tVGVt
cFJlZ2lzdGVyLCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjMyKGNvbmQsIHNyYywg
aW1tVGVtcFJlZ2lzdGVyLCBkZXN0KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFN1YjMyKFJl
c3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwg
KGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7
CisgICAgICAgIGlmIChjb25kID09IE92ZXJmbG93KSB7CisgICAgICAgICAgICAvKgorICAgICAg
ICAgICAgICAgIG1vdmUgICAgZGF0YVRlbXAsIG9wMQorICAgICAgICAgICAgICAgIHhvciAgICAg
Y21wVGVtcCwgZGF0YVRlbXAsIG9wMgorICAgICAgICAgICAgICAgIGJnZXogICAgY21wVGVtcCwg
Tm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24gYml0IC0+IG5vIG92ZXJmbG93CisgICAgICAgICAg
ICAgICAgc3VidSAgICBkZXN0LCBkYXRhVGVtcCwgb3AyCisgICAgICAgICAgICAgICAgeG9yICAg
ICBjbXBUZW1wLCBkZXN0LCBkYXRhVGVtcAorICAgICAgICAgICAgICAgIGJnZXogICAgY21wVGVt
cCwgTm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24gYml0IC0+IG5vIG92ZXJmbG93CisgICAgICAg
ICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgYiAgICAgICBPdmVyZmxvdworICAgICAgICAg
ICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAg
ICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgTm9fb3Zl
cmZsb3c6CisgICAgICAgICAgICAqLworICAgICAgICAgICAgbW92ZShvcDEsIGRhdGFUZW1wUmVn
aXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIs
IGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNt
cFRlbXBSZWdpc3RlciwgMTApOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3VidShkZXN0LCBk
YXRhVGVtcFJlZ2lzdGVyLCBvcDIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihj
bXBUZW1wUmVnaXN0ZXIsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9h
c3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDcpOworICAgICAgICAgICAgbV9hc3NlbWJs
ZXIubm9wKCk7CisgICAgICAgICAgICByZXR1cm4ganVtcCgpOworICAgICAgICB9CisgICAgICAg
IGlmIChjb25kID09IFNpZ25lZCkgeworICAgICAgICAgICAgc3ViMzIob3AxLCBvcDIsIGRlc3Qp
OworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdhdGl2ZS4KKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIE1JUFNSZWdpc3RlcnM6Onpl
cm8pOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBSZWdpc3Rlciwg
TUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gWmVy
bykgeworICAgICAgICAgICAgc3ViMzIob3AxLCBvcDIsIGRlc3QpOworICAgICAgICAgICAgcmV0
dXJuIGJyYW5jaEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9Cisg
ICAgICAgIGlmIChjb25kID09IE5vblplcm8pIHsKKyAgICAgICAgICAgIHN1YjMyKG9wMSwgb3Ay
LCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChkZXN0LCBNSVBTUmVn
aXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoMCk7CisgICAgICAgIHJl
dHVybiBKdW1wKCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hOZWczMihSZXN1bHRDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBzcmNEZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bGkoZGF0YVRlbXBSZWdpc3RlciwgLTEpOworICAgICAgICByZXR1cm4gYnJhbmNoTXVsMzIoY29u
ZCwgZGF0YVRlbXBSZWdpc3Rlciwgc3JjRGVzdCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hP
cjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQpAQCAtMTU3Nyw3ICsxOTI0LDggQEAgcHVibGljOgogCiAgICAgQ2FsbCBjYWxsKFJlZ2lzdGVy
SUQgdGFyZ2V0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuamFscih0YXJnZXQpOworICAg
ICAgICBtb3ZlKHRhcmdldCwgTUlQU1JlZ2lzdGVyczo6dDkpOworICAgICAgICBtX2Fzc2VtYmxl
ci5qYWxyKE1JUFNSZWdpc3RlcnM6OnQ5KTsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAg
ICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVyLmxhYmVsKCksIENhbGw6Ok5vbmUpOwogICAg
IH0KQEAgLTE4MjEsNyArMjE2OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBsdWkgICAg
IGltbVRlbXAsIChhZGRyZXNzLm9mZnNldCArIDB4ODAwMCkgPj4gMTYKICAgICAgICAgICAgICAg
ICBhZGR1ICAgIGFkZHJUZW1wLCBhZGRyVGVtcCwgaW1tVGVtcAogICAgICAgICAgICAgICAgIGx3
YzEgICAgZGVzdCwgKGFkZHJlc3Mub2Zmc2V0ICYgMHhmZmZmKShhdCkKLSAgICAgICAgICAgICAg
ICBsd2MxICAgIGRlc3QrNCwgKGFkZHJlc3Mub2Zmc2V0ICYgMHhmZmZmICsgNCkoYXQpCisgICAg
ICAgICAgICAgICAgbHdjMSAgICBkZXN0KzEsIChhZGRyZXNzLm9mZnNldCAmIDB4ZmZmZiArIDQp
KGF0KQogICAgICAgICAgICAgKi8KICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsbChhZGRyVGVt
cFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmFkZHUoYWRkclRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgYWRkcmVz
cy5iYXNlKTsKQEAgLTIwMDgsNiArMjM1NiwxOSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAK
KyAgICB2b2lkIG1vdmVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBpZiAoc3JjICE9IGRlc3QgfHwgbV9maXhlZFdpZHRoKQorICAgICAg
ICAgICAgbV9hc3NlbWJsZXIubW92ZChkZXN0LCBzcmMpOworICAgIH0KKworICAgIHZvaWQgc3dh
cERvdWJsZShGUFJlZ2lzdGVySUQgZnIxLCBGUFJlZ2lzdGVySUQgZnIyKQorICAgIHsKKyAgICAg
ICAgbW92ZURvdWJsZShmcjEsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbW92ZURvdWJsZShm
cjIsIGZyMSk7CisgICAgICAgIG1vdmVEb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGZyMik7CisgICAg
fQorCiAgICAgdm9pZCBhZGREb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hZGRkKGRlc3QsIGRlc3QsIHNyYyk7CkBA
IC0yMDM1LDYgKzIzOTYsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zdWJkKGRl
c3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBzdWJEb3VibGUoRlBSZWdpc3RlcklE
IG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5zdWJkKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIHN1
YkRvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBs
b2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIpOwpAQCAtMjA1MiwxMSArMjQxOCwzMiBAQCBw
dWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm11bGQoZGVzdCwgZGVzdCwgZnBUZW1wUmVnaXN0
ZXIpOwogICAgIH0KIAorICAgIHZvaWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVn
aXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubXVsZChkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCBkaXZEb3VibGUoRlBS
ZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2Vt
Ymxlci5kaXZkKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBkaXZEb3VibGUo
RlBSZWdpc3RlcklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5kaXZkKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisK
KyAgICB2b2lkIGRpdkRvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBsb2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fz
c2VtYmxlci5kaXZkKGRlc3QsIGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICB2
b2lkIG5lZ2F0ZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ2QoZGVzdCwgc3JjKTsKKyAgICB9CisKICAgICB2
b2lkIGNvbnZlcnRJbnQzMlRvRG91YmxlKFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm10YzEoc3JjLCBmcFRlbXBSZWdpc3Rlcik7
CkBAIC0yMTE2LDYgKzI1MDMsOCBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaEVxdWFsKFJl
Z2lzdGVySUQgcnMsIFJlZ2lzdGVySUQgcnQpCiAgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5u
b3AoKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFw
cGVuZEp1bXAoKTsKICAgICAgICAgbV9hc3NlbWJsZXIuYmVxKHJzLCBydCwgMCk7CiAgICAgICAg
IG1fYXNzZW1ibGVyLm5vcCgpOwpAQCAtMjEyNSw2ICsyNTE0LDggQEAgcHVibGljOgogCiAgICAg
SnVtcCBicmFuY2hOb3RFcXVhbChSZWdpc3RlcklEIHJzLCBSZWdpc3RlcklEIHJ0KQogICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwog
ICAgICAgICBtX2Fzc2VtYmxlci5hcHBlbmRKdW1wKCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmJu
ZShycywgcnQsIDApOwogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKQEAgLTIxOTEsMTEgKzI1
ODIsMzMgQEAgcHVibGljOgogICAgIC8vIElmIHRoZSByZXN1bHQgaXMgbm90IHJlcHJlc2VudGFi
bGUgYXMgYSAzMiBiaXQgdmFsdWUsIGJyYW5jaC4KICAgICAvLyBNYXkgYWxzbyBicmFuY2ggZm9y
IHNvbWUgdmFsdWVzIHRoYXQgYXJlIHJlcHJlc2VudGFibGUgaW4gMzIgYml0cwogICAgIC8vIChz
cGVjaWZpY2FsbHksIGluIHRoaXMgY2FzZSwgSU5UX01BWCAweDdmZmZmZmZmKS4KLSAgICBKdW1w
IGJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgZW51bSBCcmFuY2hUcnVuY2F0ZVR5cGUgeyBCcmFuY2hJZlRydW5jYXRlRmFp
bGVkLCBCcmFuY2hJZlRydW5jYXRlU3VjY2Vzc2Z1bCB9OworICAgIEp1bXAgYnJhbmNoVHJ1bmNh
dGVEb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgQnJhbmNo
VHJ1bmNhdGVUeXBlIGJyYW5jaFR5cGUgPSBCcmFuY2hJZlRydW5jYXRlRmFpbGVkKQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIudHJ1bmN3ZChmcFRlbXBSZWdpc3Rlciwgc3JjKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubWZjMShkZXN0LCBmcFRlbXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVy
biBicmFuY2gzMihicmFuY2hUeXBlID09IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQgPyBFcXVhbCA6
IE5vdEVxdWFsLCBkZXN0LCBUcnVzdGVkSW1tMzIoMHg3ZmZmZmZmZikpOworICAgIH0KKworICAg
IEp1bXAgYnJhbmNoVHJ1bmNhdGVEb3VibGVUb1VpbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QsIEJyYW5jaFRydW5jYXRlVHlwZSBicmFuY2hUeXBlID0gQnJhbmNoSWZUcnVu
Y2F0ZUZhaWxlZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnRydW5jd2QoZnBUZW1wUmVn
aXN0ZXIsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1mYzEoZGVzdCwgZnBUZW1wUmVnaXN0
ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoYnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRydW5j
YXRlRmFpbGVkID8gRXF1YWwgOiBOb3RFcXVhbCwgZGVzdCwgVHJ1c3RlZEltbTMyKDApKTsKKyAg
ICB9CisKKyAgICAvLyBSZXN1bHQgaXMgdW5kZWZpbmVkIGlmIHRoZSB2YWx1ZSBpcyBvdXRzaWRl
IG9mIHRoZSBpbnRlZ2VyIHJhbmdlLgorICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb0ludDMyKEZQ
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLnRydW5jd2QoZnBUZW1wUmVnaXN0ZXIsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1m
YzEoZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOworICAgIH0KKworICAgIC8vIFJlc3VsdCBpcyB1bmRl
ZmluZWQgaWYgc3JjID4gMl4zMQorICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb1VpbnQzMihGUFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxl
ci50cnVuY3dkKGZwVGVtcFJlZ2lzdGVyLCBzcmMpOwogICAgICAgICBtX2Fzc2VtYmxlci5tZmMx
KGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKEVxdWFsLCBk
ZXN0LCBUcnVzdGVkSW1tMzIoMHg3ZmZmZmZmZikpOwogICAgIH0KIAogICAgIC8vIENvbnZlcnQg
J3NyYycgdG8gYW4gaW50ZWdlciwgYW5kIHBsYWNlcyB0aGUgcmVzdWx0aW5nICdkZXN0Jy4KQEAg
LTIyMTcsMjggKzI2MzAsNDMgQEAgcHVibGljOgogCiAgICAgSnVtcCBicmFuY2hEb3VibGVOb25a
ZXJvKEZQUmVnaXN0ZXJJRCByZWcsIEZQUmVnaXN0ZXJJRCBzY3JhdGNoKQogICAgIHsKLSNpZiBX
VEZfTUlQU19JU0FfUkVWKDIpICYmIFdURl9NSVBTX0ZQNjQKLSAgICAgICAgbV9hc3NlbWJsZXIu
bXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzY3JhdGNoKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
bXRoYzEoTUlQU1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7Ci0jZWxzZQotICAgICAgICBtX2Fz
c2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0Y2gpOwotICAgICAgICBtX2Fz
c2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIEZQUmVnaXN0ZXJJRChzY3JhdGNoICsg
MSkpOwotI2VuZGlmCisgICAgICAgIG1fYXNzZW1ibGVyLnZtb3Yoc2NyYXRjaCwgTUlQU1JlZ2lz
dGVyczo6emVybywgTUlQU1JlZ2lzdGVyczo6emVybyk7CiAgICAgICAgIHJldHVybiBicmFuY2hE
b3VibGUoRG91YmxlTm90RXF1YWwsIHJlZywgc2NyYXRjaCk7CiAgICAgfQogCiAgICAgSnVtcCBi
cmFuY2hEb3VibGVaZXJvT3JOYU4oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEIHNjcmF0
Y2gpCiAgICAgewotI2lmIFdURl9NSVBTX0lTQV9SRVYoMikgJiYgV1RGX01JUFNfRlA2NAotICAg
ICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0Y2gpOwotICAg
ICAgICBtX2Fzc2VtYmxlci5tdGhjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzY3JhdGNoKTsKLSNl
bHNlCi0gICAgICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQU1JlZ2lzdGVyczo6emVybywgc2NyYXRj
aCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQU1JlZ2lzdGVyczo6emVybywgRlBSZWdp
c3RlcklEKHNjcmF0Y2ggKyAxKSk7Ci0jZW5kaWYKKyAgICAgICAgbV9hc3NlbWJsZXIudm1vdihz
Y3JhdGNoLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKICAgICAg
ICAgcmV0dXJuIGJyYW5jaERvdWJsZShEb3VibGVFcXVhbE9yVW5vcmRlcmVkLCByZWcsIHNjcmF0
Y2gpOwogICAgIH0KIAorICAgIC8vIEludmVydCBhIHJlbGF0aW9uYWwgY29uZGl0aW9uLCBlLmcu
ID09IGJlY29tZXMgIT0sIDwgYmVjb21lcyA+PSwgZXRjLgorICAgIHN0YXRpYyBSZWxhdGlvbmFs
Q29uZGl0aW9uIGludmVydChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCisgICAgeworICAgICAg
ICBSZWxhdGlvbmFsQ29uZGl0aW9uIHI7CisgICAgICAgIGlmIChjb25kID09IEVxdWFsKQorICAg
ICAgICAgICAgciA9IE5vdEVxdWFsOworICAgICAgICBlbHNlIGlmIChjb25kID09IE5vdEVxdWFs
KQorICAgICAgICAgICAgciA9IEVxdWFsOworICAgICAgICBlbHNlIGlmIChjb25kID09IEFib3Zl
KQorICAgICAgICAgICAgciA9IEJlbG93T3JFcXVhbDsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9
PSBBYm92ZU9yRXF1YWwpCisgICAgICAgICAgICByID0gQmVsb3c7CisgICAgICAgIGVsc2UgaWYg
KGNvbmQgPT0gQmVsb3cpCisgICAgICAgICAgICByID0gQWJvdmVPckVxdWFsOworICAgICAgICBl
bHNlIGlmIChjb25kID09IEJlbG93T3JFcXVhbCkKKyAgICAgICAgICAgIHIgPSBBYm92ZTsKKyAg
ICAgICAgZWxzZSBpZiAoY29uZCA9PSBHcmVhdGVyVGhhbikKKyAgICAgICAgICAgIHIgPSBMZXNz
VGhhbk9yRXF1YWw7CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gR3JlYXRlclRoYW5PckVxdWFs
KQorICAgICAgICAgICAgciA9IExlc3NUaGFuOworICAgICAgICBlbHNlIGlmIChjb25kID09IExl
c3NUaGFuKQorICAgICAgICAgICAgciA9IEdyZWF0ZXJUaGFuT3JFcXVhbDsKKyAgICAgICAgZWxz
ZSBpZiAoY29uZCA9PSBMZXNzVGhhbk9yRXF1YWwpCisgICAgICAgICAgICByID0gR3JlYXRlclRo
YW47CisgICAgICAgIHJldHVybiByOworICAgIH0KKwogICAgIHZvaWQgbm9wKCkKICAgICB7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwpAQCAtMjI1MSwxMiArMjY3OSwxMiBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5z
dHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCiAgICAgewotICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgTUlQU0Fzc2VtYmxlcjo6cmVwbGFj
ZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZGF0YUxvY2F0aW9uKCksIGRlc3RpbmF0aW9uLmRh
dGFMb2NhdGlvbigpKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1w
UmVwbGFjZW1lbnRTaXplKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICBNSVBTQXNzZW1ibGVyOjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKCk7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNz
ZW1ibHlIZWxwZXJzLmgKaW5kZXggMTRlYWE0NS4uZDM5YzJmZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oCkBAIC05Myw2ICs5MywyMyBAQCBw
dWJsaWM6CiAgICAgfQogI2VuZGlmCiAKKyNpZiBDUFUoTUlQUykKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKFJlZ2lzdGVySUQgcmVnKQorICAg
IHsKKyAgICAgICAgbW92ZShyZXR1cm5BZGRyZXNzUmVnaXN0ZXIsIHJlZyk7CisgICAgfQorCisg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKFJl
Z2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAgICAgbW92ZShyZWcsIHJldHVybkFkZHJlc3NSZWdp
c3Rlcik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRy
ZXNzQmVmb3JlUmV0dXJuKEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGxvYWRQdHIo
YWRkcmVzcywgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKKyAgICB9CisjZW5kaWYKKwogICAgIHZv
aWQgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVy
RW50cnkgZW50cnksIEdQUlJlZyB0bykKICAgICB7CiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZW50cnkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgdG8p
OwpAQCAtMTkzLDcgKzIxMCw3IEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRy
KHNjcmF0Y2hCdWZmZXItPmFjdGl2ZUxlbmd0aFB0cigpKSwgR1BSSW5mbzo6cmVnVDApOwogICAg
ICAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKHNjcmF0Y2hTaXplKSwgR1BSSW5mbzo6cmVnVDAp
OwogCi0jaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTSkKKyNpZiBDUFUoWDg2XzY0KSB8fCBDUFUo
QVJNKSB8fCBDUFUoTUlQUykKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFyZ3VtZW50KSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2gg
PSBzZWxlY3RTY3JhdGNoR1BSKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1l
bnRHUFIxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxI
ZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCmlu
ZGV4IDhhZGRlMDUuLjc4NWZhMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
Q2FsbEhlbHBlcnMuaApAQCAtNTc2LDYgKzU3NiwzOSBAQCBwdWJsaWM6CiAgICAgICAgIHBva2Uo
R1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgfQogI2VuZGlmIC8vIENQVShBUk1fSEFSREZQKQor
I2VsaWYgQ1BVKE1JUFMpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQ
UlJlZyBhcmcxKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1
bWVudEZQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
cyhGUFJSZWcgYXJnMSwgRlBSUmVnIGFyZzIpCisgICAgeworICAgICAgICBpZiAoYXJnMiAhPSBG
UFJJbmZvOjphcmd1bWVudEZQUjApIHsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBS
SW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMiwgRlBSSW5m
bzo6YXJndW1lbnRGUFIxKTsKKyAgICAgICAgfSBlbHNlIGlmIChhcmcxICE9IEZQUkluZm86OmFy
Z3VtZW50RlBSMSkgeworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1
bWVudEZQUjEpOworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVu
dEZQUjApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gU3dhcCBhcmcxLCBhcmcy
LgorICAgICAgICAgICAgc3dhcERvdWJsZShGUFJJbmZvOjphcmd1bWVudEZQUjAsIEZQUkluZm86
OmFyZ3VtZW50RlBSMSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEZQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikK
KyAgICB7CisgICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjMsIGFyZzEpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBwb2tlKGFyZzIs
IDQpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBGUFJSZWcgYXJnMykKKyAgICB7Cisg
ICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKKyAgICAgICAgbW92ZShHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAg
cG9rZShhcmczLCA0KTsKKyAgICB9CiAjZWxzZQogI2Vycm9yICJERkcgSklUIG5vdCBzdXBwb3J0
ZWQgb24gdGhpcyBwbGF0Zm9ybS4iCiAjZW5kaWYKQEAgLTgwMiw3ICs4MzUsNyBAQCBwdWJsaWM6
CiAjZW5kaWYgLy8gTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA+PSA0CiAgICAgLy8gVGhl
c2UgbWV0aG9kcyBhcmUgc3VpdGFibGUgZm9yIGFueSBjYWxsaW5nIGNvbnZlbnRpb24gdGhhdCBw
cm92aWRlcyBmb3IKICAgICAvLyBleGFjdGx5IDQgYXJndW1lbnQgcmVnaXN0ZXJzLCBlLmcuIEFS
TXY3LgotI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNAorI2lmIE5VTUJFUl9P
Rl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNCAmJiAhQ1BVKE1JUFMpCiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKICAgICB7CiAgICAgICAgIHBva2UoYXJnNCk7
CkBAIC05MTksNyArOTUyLDExNCBAQCBwdWJsaWM6CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKLSNlbmRpZiAvLyBOVU1CRVJf
T0ZfQVJHVU1FTlRfUkVHSVNURVJTID09IDQKKyNlbmRpZiAvLyBOVU1CRVJfT0ZfQVJHVU1FTlRf
UkVHSVNURVJTID09IDQgJiYgIUNQVShNSVBTKQorCisjaWYgQ1BVKE1JUFMpCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2Uo
YXJnNCwgNCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMs
IFRydXN0ZWRJbW0zMiBhcmc0KQorICAgIHsKKyAgICAgICAgcG9rZShhcmc0LCA0KTsKKyAgICAg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0K
KworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFy
ZzQpCisgICAgeworICAgICAgICBwb2tlKGFyZzQsIDQpOworICAgICAgICBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tUHRyIGFyZzQpCisgICAgeworICAgICAgICBw
b2tlKGFyZzQsIDQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwg
YXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVk
SW1tMzIgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAgICAgICAgcG9r
ZShhcmc1LCA1KTsKKyAgICAgICAgcG9rZShhcmc0LCA0KTsKKyAgICAgICAgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJl
ZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQorICAgIHsKKyAg
ICAgICAgcG9rZShhcmc1LCA1KTsKKyAgICAgICAgcG9rZShhcmc0LCA0KTsKKyAgICAgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOworICAgIH0KKworICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCisgICAgewor
ICAgICAgICBwb2tlKGFyZzQsIDQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIs
IEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tUHRyIGFyZzQpCisgICAgeworICAgICAgICBwb2tlKGFy
ZzQsIDQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwg
YXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBh
cmczLCBUcnVzdGVkSW1tUHRyIGFyZzQpCisgICAgeworICAgICAgICBwb2tlKGFyZzQsIDQpOwor
ICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7Cisg
ICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJS
ZWcgYXJnNCkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNCwgNCk7CisgICAgICAgIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkK
KyAgICB7CisgICAgICAgIHBva2UoYXJnNSwgNSk7CisgICAgICAgIHBva2UoYXJnNCwgNCk7Cisg
ICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKKyAg
ICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0
LCBUcnVzdGVkSW1tMzIgYXJnNSkKKyAgICB7CisgICAgICAgIHBva2UoYXJnNSwgNSk7CisgICAg
ICAgIHBva2UoYXJnNCwgNCk7CisgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyLCBhcmczKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgR1BS
UmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBUcnVzdGVkSW1tUHRyIGFyZzUpCisgICAgeworICAgICAg
ICBwb2tlKGFyZzUsIDUpOworICAgICAgICBwb2tlKGFyZzQsIDQpOworICAgICAgICBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIg
YXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCwgVHJ1c3Rl
ZEltbTMyIGFyZzUpCisgICAgeworICAgICAgICBwb2tlKGFyZzUsIDUpOworICAgICAgICBwb2tl
KGFyZzQsIDQpOworICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
MiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIFRydXN0
ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisgICAgeworICAgICAgICBw
b2tlKGFyZzUsIDUpOworICAgICAgICBwb2tlKGFyZzQsIDQpOworICAgICAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJn
MSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCisg
ICAgeworICAgICAgICBwb2tlKGFyZzUsIDUpOworICAgICAgICBwb2tlKGFyZzQsIDQpOworICAg
ICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CisgICAg
fQorCisjZW5kaWYgLy8gQ1BVKE1JUFMpCiAKICNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNU
RVJTID49IDUKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBH
UFJSZWcgYXJnNCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBS
SW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmgKaW5kZXggZDZh
MDM4YS4uNmY5NjhlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
UFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmgKQEAg
LTE2NCw2ICsxNjQsNzQgQEAgcHVibGljOgogCiAjZW5kaWYKIAorI2lmIENQVShNSVBTKQorCitj
bGFzcyBGUFJJbmZvIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEZQUlJlZyBSZWdpc3RlclR5cGU7
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gNjsKKworICAg
IC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Qw
ID0gTUlQU1JlZ2lzdGVyczo6ZjA7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QxID0g
TUlQU1JlZ2lzdGVyczo6ZjQ7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QyID0gTUlQ
U1JlZ2lzdGVyczo6ZjY7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QzID0gTUlQU1Jl
Z2lzdGVyczo6Zjg7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Q0ID0gTUlQU1JlZ2lz
dGVyczo6ZjEwOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNSA9IE1JUFNSZWdpc3Rl
cnM6OmYxODsKKworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgcmV0dXJuVmFsdWVGUFIgPSBNSVBT
UmVnaXN0ZXJzOjpmMDsKKworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIwID0g
TUlQU1JlZ2lzdGVyczo6ZjEyOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIx
ID0gTUlQU1JlZ2lzdGVyczo6ZjE0OworCisgICAgc3RhdGljIEZQUlJlZyB0b1JlZ2lzdGVyKHVu
c2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IEZQUlJlZyByZWdpc3Rl
ckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsKKyAgICAgICAgICAgIGZwUmVnVDAsIGZw
UmVnVDEsIGZwUmVnVDIsIGZwUmVnVDMsIGZwUmVnVDQsIGZwUmVnVDUgfTsKKworICAgICAgICBB
U1NFUlQoaW5kZXggPCBudW1iZXJPZlJlZ2lzdGVycyk7CisgICAgICAgIHJldHVybiByZWdpc3Rl
ckZvckluZGV4W2luZGV4XTsKKyAgICB9CisKKyAgICBzdGF0aWMgdW5zaWduZWQgdG9JbmRleChG
UFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkRlBSUmVnKTsK
KyAgICAgICAgQVNTRVJUKHJlZyA8IDIwKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IGluZGV4Rm9yUmVnaXN0ZXJbMjBdID0geworICAgICAgICAgICAgMCwgSW52YWxpZEluZGV4LCBJ
bnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwKKyAgICAgICAgICAgIDEsIEludmFsaWRJbmRleCwg
MiwgSW52YWxpZEluZGV4LAorICAgICAgICAgICAgMywgSW52YWxpZEluZGV4LCA0LCBJbnZhbGlk
SW5kZXgsCisgICAgICAgICAgICBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZElu
ZGV4LCBJbnZhbGlkSW5kZXgsCisgICAgICAgICAgICBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRl
eCwgNSwgSW52YWxpZEluZGV4LAorICAgICAgICB9OworICAgICAgICB1bnNpZ25lZCByZXN1bHQg
PSBpbmRleEZvclJlZ2lzdGVyW3JlZ107CisgICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxp
ZEluZGV4KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgY29u
c3QgY2hhciogZGVidWdOYW1lKEZQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVn
ICE9IEludmFsaWRGUFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwgMzIpOworICAgICAgICBz
dGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzMyXSA9IHsKKyAgICAgICAgICAgICJm
MCIsICJmMSIsICJmMiIsICJmMyIsCisgICAgICAgICAgICAiZjQiLCAiZjUiLCAiZjYiLCAiZjci
LAorICAgICAgICAgICAgImY4IiwgImY5IiwgImYxMCIsICJmMTEiLAorICAgICAgICAgICAgImYx
MiIsICJmMTMiLCAiZjE0IiwgImYxNSIKKyAgICAgICAgICAgICJmMTYiLCAiZjE3IiwgImYxOCIs
ICJmMTkiCisgICAgICAgICAgICAiZjIwIiwgImYyMSIsICJmMjIiLCAiZjIzIgorICAgICAgICAg
ICAgImYyNCIsICJmMjUiLCAiZjI2IiwgImYyNyIKKyAgICAgICAgICAgICJmMjgiLCAiZjI5Iiwg
ImYzMCIsICJmMzEiCisgICAgICAgIH07CisgICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0ZXJb
cmVnXTsKKyAgICB9Citwcml2YXRlOgorCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEludmFs
aWRJbmRleCA9IDB4ZmZmZmZmZmY7Cit9OworCisjZW5kaWYKKwogdHlwZWRlZiBSZWdpc3RlckJh
bms8RlBSSW5mbz46Oml0ZXJhdG9yIGZwcl9pdGVyYXRvcjsKIAogfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZv
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaAppbmRleCAzZDA3NTU2
Li5hYTYzNGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUklu
Zm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaApAQCAtNDYx
LDYgKzQ2MSw3MyBAQCBwcml2YXRlOgogCiAjZW5kaWYKIAorI2lmIENQVShNSVBTKQorI2RlZmlu
ZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTIDQKKworY2xhc3MgR1BSSW5mbyB7CitwdWJs
aWM6CisgICAgdHlwZWRlZiBHUFJSZWcgUmVnaXN0ZXJUeXBlOworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDY7CisKKyAgICAvLyBUZW1wb3JhcnkgcmVnaXN0
ZXJzLgorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDAgPSBNSVBTUmVnaXN0ZXJzOjp2MDsK
KyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QxID0gTUlQU1JlZ2lzdGVyczo6djE7CisgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMiA9IE1JUFNSZWdpc3RlcnM6OnQ0OworICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgcmVnVDMgPSBNSVBTUmVnaXN0ZXJzOjp0NTsKKyAgICBzdGF0aWMgY29u
c3QgR1BSUmVnIHJlZ1Q0ID0gTUlQU1JlZ2lzdGVyczo6dDY7CisgICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyByZWdUNSA9IE1JUFNSZWdpc3RlcnM6OnQ3OworICAgIC8vIFRoZXNlIHJlZ2lzdGVycyBt
YXRjaCB0aGUgYmFzZWxpbmUgSklULgorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVz
dWx0UmVnaXN0ZXIgPSByZWdUMDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3Vs
dFJlZ2lzdGVyMiA9IHJlZ1QxOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FsbEZyYW1lUmVn
aXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjpzMDsKKyAgICAvLyBUaGVzZSBjb25zdGFudHMgcHJvdmlk
ZSB0aGUgbmFtZXMgZm9yIHRoZSBnZW5lcmFsIHB1cnBvc2UgYXJndW1lbnQgJiByZXR1cm4gdmFs
dWUgcmVnaXN0ZXJzLgorICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIwID0gTUlQ
U1JlZ2lzdGVyczo6YTA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjEgPSBN
SVBTUmVnaXN0ZXJzOjphMTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMiA9
IE1JUFNSZWdpc3RlcnM6OmEyOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIz
ID0gTUlQU1JlZ2lzdGVyczo6YTM7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIw
ID0gcmVnVDI7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIxID0gcmVnVDM7Cisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIyID0gcmVnVDQ7CisgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUiA9IHJlZ1QwOworICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgcmV0dXJuVmFsdWVHUFIyID0gcmVnVDE7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25Q
cmVzZXJ2ZWROb25SZXR1cm5HUFIgPSByZWdUNTsKKworICAgIHN0YXRpYyBHUFJSZWcgdG9SZWdp
c3Rlcih1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJl
ck9mUmVnaXN0ZXJzKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdpc3RlckZvcklu
ZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9IHsgcmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIHJl
Z1Q0LCByZWdUNSB9OworICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07Cisg
ICAgfQorCisgICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgoR1BSUmVnIHJlZykKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIEFTU0VSVChyZWcg
PCAxNik7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmRleEZvclJlZ2lzdGVyWzE2
XSA9IHsgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIDAsIDEsIEludmFsaWRJbmRleCwgSW52
YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZh
bGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCAyLCAzLCA0LCA1IH07CisgICAg
ICAgIHVuc2lnbmVkIHJlc3VsdCA9IGluZGV4Rm9yUmVnaXN0ZXJbcmVnXTsKKyAgICAgICAgQVNT
RVJUKHJlc3VsdCAhPSBJbnZhbGlkSW5kZXgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoR1BSUmVnIHJlZykKKyAgICB7
CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEdQUlJlZyk7CisgICAgICAgIEFTU0VSVChy
ZWcgPCAxNik7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lRm9yUmVnaXN0ZXJbMTZd
ID0geworICAgICAgICAgICAgInplcm8iLCAiYXQiLCAidjAiLCAidjEiLAorICAgICAgICAgICAg
ImEwIiwgImExIiwgImEyIiwgImEzIiwKKyAgICAgICAgICAgICJ0MCIsICJ0MSIsICJ0MiIsICJ0
MyIsCisgICAgICAgICAgICAidDQiLCAidDUiLCAidDYiLCAidDciCisgICAgICAgIH07CisgICAg
ICAgIHJldHVybiBuYW1lRm9yUmVnaXN0ZXJbcmVnXTsKKyAgICB9Citwcml2YXRlOgorCisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIEludmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7Cit9OworCisj
ZW5kaWYKKwogdHlwZWRlZiBSZWdpc3RlckJhbms8R1BSSW5mbz46Oml0ZXJhdG9yIGdwcl9pdGVy
YXRvcjsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDVlYTEwNzYuLmZhMWM4MzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTE1Mzks
NyArMTUzOSw3IEBAIHB1YmxpYzoKIAogLy8gRW5jb2RlZEpTVmFsdWUgaW4gSlNWQUxVRTMyXzY0
IGlzIGEgNjQtYml0IGludGVnZXIuIFdoZW4gYmVpbmcgY29tcGlsZWQgaW4gQVJNIEVBQkksIGl0
IG11c3QgYmUgYWxpZ25lZCBldmVuLW51bWJlcmVkIHJlZ2lzdGVyIChyMCwgcjIgb3IgW3NwXSku
CiAvLyBUbyBhdm9pZCBhc3NlbWJsaWVzIGZyb20gdXNpbmcgd3JvbmcgcmVnaXN0ZXJzLCBsZXQn
cyBvY2N1cHkgcjEgb3IgcjMgd2l0aCBhIGR1bW15IGFyZ3VtZW50IHdoZW4gbmVjZXNzYXJ5Lgot
I2lmIENPTVBJTEVSX1NVUFBPUlRTKEVBQkkpICYmIENQVShBUk0pCisjaWYgKENPTVBJTEVSX1NV
UFBPUlRTKEVBQkkpICYmIENQVShBUk0pKSB8fCBDUFUoTUlQUykKICNkZWZpbmUgRUFCSV8zMkJJ
VF9EVU1NWV9BUkcgICAgICBUcnVzdGVkSW1tMzIoMCksCiAjZWxzZQogI2RlZmluZSBFQUJJXzMy
QklUX0RVTU1ZX0FSRwpAQCAtMTk4NCw3ICsxOTg0LDcgQEAgcHVibGljOgogICAgIH0KICNlbmRp
ZgogICAgIAotI2lmICFkZWZpbmVkKE5ERUJVRykgJiYgIUNQVShBUk0pCisjaWYgIWRlZmluZWQo
TkRFQlVHKSAmJiAhQ1BVKEFSTSkgJiYgIUNQVShNSVBTKQogICAgIHZvaWQgcHJlcGFyZUZvckV4
dGVybmFsQ2FsbCgpCiAgICAgewogICAgICAgICAvLyBXZSdyZSBhYm91dCB0byBjYWxsIG91dCB0
byBhICJuYXRpdmUiIGhlbHBlciBmdW5jdGlvbi4gVGhlIGhlbHBlcgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCmluZGV4IDJmNGI0ZTMuLmEyOGYzNTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKQEAgLTEyNSw2ICsxMjUs
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGNh
Y2hlZFJlc3VsdFJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6djA7CiAgICAgICAgIHN0YXRpYyBj
b25zdCBSZWdpc3RlcklEIGZpcnN0QXJndW1lbnRSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OmEw
OwogICAgICAgICAKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgICAgIHN0YXRpYyBj
b25zdCBSZWdpc3RlcklEIGJ1Y2tldENvdW50ZXJSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OnMz
OworI2VuZGlmCisKICAgICAgICAgLy8gcmVnVDAgbXVzdCBiZSB2MCBmb3IgcmV0dXJuaW5nIGEg
MzItYml0IHZhbHVlLgogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMCA9IE1J
UFNSZWdpc3RlcnM6OnYwOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxEYXRhLmgKaW5kZXggMjYxNTU3YS4uMGZmNGRiNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKQEAgLTEzMSwxNCArMTMxLDE4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQog
Ci0gICAgICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90IGJ1ZmZlclNpemUp
IHsgcmV0dXJuIHNpemVvZihzaXplX3QpICsgYnVmZmVyU2l6ZTsgfQorICAgICAgICBzdGF0aWMg
c2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVfdCBidWZmZXJTaXplKSB7IHJldHVybiBzaXplb2Yo
U2NyYXRjaEJ1ZmZlcikgKyBidWZmZXJTaXplOyB9CiAgICAgICAgIHZvaWQgc2V0QWN0aXZlTGVu
Z3RoKHNpemVfdCBhY3RpdmVMZW5ndGgpIHsgbV9hY3RpdmVMZW5ndGggPSBhY3RpdmVMZW5ndGg7
IH0KICAgICAgICAgc2l6ZV90IGFjdGl2ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZl
TGVuZ3RoOyB9OwogICAgICAgICBzaXplX3QqIGFjdGl2ZUxlbmd0aFB0cigpIHsgcmV0dXJuICZt
X2FjdGl2ZUxlbmd0aDsgfTsKICAgICAgICAgdm9pZCogZGF0YUJ1ZmZlcigpIHsgcmV0dXJuIG1f
YnVmZmVyOyB9CiAKICAgICAgICAgc2l6ZV90IG1fYWN0aXZlTGVuZ3RoOworI2lmIENQVShNSVBT
KSAmJiAoZGVmaW5lZCBXVEZfTUlQU19BUkNIX1JFViAmJiBXVEZfTUlQU19BUkNIX1JFViA9PSAy
KQorICAgICAgICB2b2lkKiBtX2J1ZmZlclswXSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSk7
CisjZWxzZQogICAgICAgICB2b2lkKiBtX2J1ZmZlclswXTsKKyNlbmRpZgogICAgIH07CiAjaWYg
Q09NUElMRVIoTVNWQykKICNwcmFnbWEgd2FybmluZyhwb3ApCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRhODE5YTcuLmFlN2Y2
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMtMDEtMDQgIEJhbGF6cyBLaWx2YWR5ICA8a2ls
dmFkeWJAaG9tZWppbm5pLmNvbT4KKworICAgICAgICBNSVBTIERGRyBpbXBsZW1lbnRhdGlvbi4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTMyOAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERGRyBpbXBs
ZW1lbnRhdGlvbiBmb3IgTUlQUy4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDEz
LTAxLTAzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQ2FsbExp
bmtTdGF0dXMgc2hvdWxkIGJlIGF3YXJlIG9mIGNsb3N1cmUgY2FsbHMsIGFuZCB0aGUgREZHIGJ5
dGVjb2RlIHBhcnNlciBzaG91bGQgdXNlIHRoYXQgYXMgaXRzIHNvbGUgaW50ZXJuYWwgbm90aW9u
IG9mIGhvdyB0byBvcHRpbWl6ZSBjYWxscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggZjJmZDNiMC4uOGJiZWRi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybS5oCkBAIC05NDQsNiArOTQ0LDEwIEBACiAjaWYgQ1BVKEFSTV9UUkFESVRJ
T05BTCkKICNkZWZpbmUgRU5BQkxFX0RGR19KSVQgMQogI2VuZGlmCisvKiBFbmFibGUgdGhlIERG
RyBKSVQgb24gTUlQUy4gKi8KKyNpZiBDUFUoTUlQUykKKyNkZWZpbmUgRU5BQkxFX0RGR19KSVQg
MQorI2VuZGlmCiAjZW5kaWYKIAogLyogSWYgdGhlIGppdCBpcyBub3QgYXZhaWxhYmxlLCBlbmFi
bGUgdGhlIExMSW50IEMgTG9vcDogKi8K
</data>
<flag name="review"
          id="198888"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="199195"
          type_id="3"
          status="-"
          setter="fpizlo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181695</attachid>
            <date>2013-01-08 08:10:14 -0800</date>
            <delta_ts>2013-01-18 02:56:39 -0800</delta_ts>
            <desc>DFG for MIPS.</desc>
            <filename>mips-dfg-i.diff</filename>
            <type>text/plain</type>
            <size>52456</size>
            <attacher name="Balazs Kilvady">kilvadyb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDZhMTM1ZmYuLjg0Njg3NzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDEzLTAxLTA4ICBCYWxhenMgS2lsdmFk
eSAgPGtpbHZhZHliQGhvbWVqaW5uaS5jb20+CisKKyAgICAgICAgTUlQUyBERkcgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KKworICAgICAgICBERkcg
aW1wbGVtZW50YXRpb24gZm9yIE1JUFMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTUlQU0Fzc2Vt
Ymxlci5oOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpNSVBTQXNzZW1ibGVyKToKKyAg
ICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6c2xsdik6CisgICAgICAgIChKU0M6Ok1JUFNBc3Nl
bWJsZXI6Om1vdmQpOgorICAgICAgICAoTUlQU0Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6Ok1J
UFNBc3NlbWJsZXI6Om5lZ2QpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJlbEZv
cldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJlbCk6CisgICAg
ICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6OnZtb3YpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1i
bGVyOjpsaW5rRGlyZWN0SnVtcCk6CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6Om1heEp1
bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpyZXZlcnRK
dW1wVG9Nb3ZlKToKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1w
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKE1hY3Jv
QXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBva2UpOgorICAgICAg
ICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJNSVBTOjphZGQzMik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlck1JUFMpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmFuZDMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJNSVBTOjpsc2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
TUlQUzo6bXVsMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om9yMzIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJzaGlmdDMyKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjp1cnNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlck1JUFM6OnN1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjp4
b3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6c3RvcmUzMik6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6anVtcCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyTUlQUzo6YnJhbmNoQWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ck1JUFM6OmJyYW5jaE11bDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpi
cmFuY2hTdWIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoTmVn
MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmNhbGwpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmxvYWREb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6Om1vdmVEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ck1JUFM6OnN3YXBEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnN1
YkRvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6bXVsRG91YmxlKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpkaXZEb3VibGUpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om5lZ2F0ZURvdWJsZSk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRXF1YWwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OmJyYW5jaE5vdEVxdWFsKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJN
SVBTOjpicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlck1JUFM6OmJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlck1JUFM6OnRydW5jYXRlRG91YmxlVG9JbnQzMik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6dHJ1bmNhdGVEb3VibGVUb1VpbnQzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlTm9uWmVybyk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlWmVyb09yTmFOKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjppbnZlcnQpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyTUlQUzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogZGZnL0RGR0Fz
c2VtYmx5SGVscGVycy5oOgorICAgICAgICAoQXNzZW1ibHlIZWxwZXJzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlUmV0dXJuQWRkcmVz
c0JlZm9yZVJldHVybik6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpkZWJ1
Z0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKENDYWxs
SGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUpOgorICAgICAgICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6cG9rZUFyZ3VtZW50
KToKKyAgICAgICAgKiBkZmcvREZHRlBSSW5mby5oOgorICAgICAgICAoREZHKToKKyAgICAgICAg
KEZQUkluZm8pOgorICAgICAgICAoSlNDOjpERkc6OkZQUkluZm86OnRvUmVnaXN0ZXIpOgorICAg
ICAgICAoSlNDOjpERkc6OkZQUkluZm86OnRvSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6OkZQ
UkluZm86OmRlYnVnTmFtZSk6CisgICAgICAgICogZGZnL0RGR0dQUkluZm8uaDoKKyAgICAgICAg
KERGRyk6CisgICAgICAgIChHUFJJbmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpHUFJJbmZvOjp0
b1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpHUFJJbmZvOjp0b0luZGV4KToKKyAgICAg
ICAgKEpTQzo6REZHOjpHUFJJbmZvOjpkZWJ1Z05hbWUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oOgorICAgICAgICAoU3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAqIGppdC9K
U0ludGVyZmFjZUpJVC5oOgorICAgICAgICAoSlNJbnRlcmZhY2VKSVQpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0M6OlNjcmF0Y2hCdWZmZXI6OmFsbG9j
YXRpb25TaXplKToKKyAgICAgICAgKFNjcmF0Y2hCdWZmZXIpOgorCiAyMDEzLTAxLTA3ICBGaWxp
cCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgUmF0aW9uYWxpemUgY2xvc3Vy
ZSBjYWxsIGhldXJpc3RpY3MgYW5kIHByb2ZpbGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaAppbmRleCAwMjZmODdlLi43ZjU1M2JiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaApAQCAt
MTUyLDYgKzE1Miw4IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIFNlZ21lbnRlZFZlY3RvcjxBc3Nl
bWJsZXJMYWJlbCwgNjQ+IEp1bXBzOwogCiAgICAgTUlQU0Fzc2VtYmxlcigpCisgICAgICAgIDog
bV9pbmRleE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKKyAgICAgICAgLCBtX2luZGV4T2ZUYWls
T2ZMYXN0V2F0Y2hwb2ludChJTlRfTUlOKQogICAgIHsKICAgICB9CiAKQEAgLTMyNSw3ICszMjcs
NyBAQCBwdWJsaWM6CiAgICAgICAgIGVtaXRJbnN0KDB4MDAwMDAwMDAgfCAocmQgPDwgT1BfU0hf
UkQpIHwgKHJ0IDw8IE9QX1NIX1JUKSB8ICgoc2hhbXQgJiAweDFmKSA8PCBPUF9TSF9TSEFNVCkp
OwogICAgIH0KIAotICAgIHZvaWQgc2xsdihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJ0LCBp
bnQgcnMpCisgICAgdm9pZCBzbGx2KFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcnQsIFJlZ2lz
dGVySUQgcnMpCiAgICAgewogICAgICAgICBlbWl0SW5zdCgweDAwMDAwMDA0IHwgKHJkIDw8IE9Q
X1NIX1JEKSB8IChydCA8PCBPUF9TSF9SVCkgfCAocnMgPDwgT1BfU0hfUlMpKTsKICAgICB9CkBA
IC01MjcsNiArNTI5LDE2IEBAIHB1YmxpYzoKICAgICAgICAgZW1pdEluc3QoMHg0NjIwMDAwNCB8
IChmZCA8PCBPUF9TSF9GRCkgfCAoZnMgPDwgT1BfU0hfRlMpKTsKICAgICB9CiAKKyAgICB2b2lk
IG1vdmQoRlBSZWdpc3RlcklEIGZkLCBGUFJlZ2lzdGVySUQgZnMpCisgICAgeworICAgICAgICBl
bWl0SW5zdCgweDQ2MjAwMDA2IHwgKGZkIDw8IE9QX1NIX0ZEKSB8IChmcyA8PCBPUF9TSF9GUykp
OworICAgIH0KKworICAgIHZvaWQgbmVnZChGUFJlZ2lzdGVySUQgZmQsIEZQUmVnaXN0ZXJJRCBm
cykKKyAgICB7CisgICAgICAgIGVtaXRJbnN0KDB4NDYyMDAwMDcgfCAoZmQgPDwgT1BfU0hfRkQp
IHwgKGZzIDw8IE9QX1NIX0ZTKSk7CisgICAgfQorCiAgICAgdm9pZCB0cnVuY3dkKEZQUmVnaXN0
ZXJJRCBmZCwgRlBSZWdpc3RlcklEIGZzKQogICAgIHsKICAgICAgICAgZW1pdEluc3QoMHg0NjIw
MDAwZCB8IChmZCA8PCBPUF9TSF9GRCkgfCAoZnMgPDwgT1BfU0hfRlMpKTsKQEAgLTYxOSw5ICs2
MzEsMjQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9idWZmZXIubGFiZWwoKTsKICAgICB9
CiAKKyAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbEZvcldhdGNocG9pbnQoKQorICAgIHsKKyAgICAg
ICAgQXNzZW1ibGVyTGFiZWwgcmVzdWx0ID0gbV9idWZmZXIubGFiZWwoKTsKKyAgICAgICAgaWYg
KHN0YXRpY19jYXN0PGludD4ocmVzdWx0Lm1fb2Zmc2V0KSAhPSBtX2luZGV4T2ZMYXN0V2F0Y2hw
b2ludCkKKyAgICAgICAgICAgIHJlc3VsdCA9IGxhYmVsKCk7CisgICAgICAgIG1faW5kZXhPZkxh
c3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0OworICAgICAgICBtX2luZGV4T2ZUYWlsT2ZM
YXN0V2F0Y2hwb2ludCA9IHJlc3VsdC5tX29mZnNldCArIG1heEp1bXBSZXBsYWNlbWVudFNpemUo
KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBBc3NlbWJsZXJMYWJlbCBs
YWJlbCgpCiAgICAgewotICAgICAgICByZXR1cm4gbV9idWZmZXIubGFiZWwoKTsKKyAgICAgICAg
QXNzZW1ibGVyTGFiZWwgcmVzdWx0ID0gbV9idWZmZXIubGFiZWwoKTsKKyAgICAgICAgd2hpbGUg
KFVOTElLRUxZKHN0YXRpY19jYXN0PGludD4ocmVzdWx0Lm1fb2Zmc2V0KSA8IG1faW5kZXhPZlRh
aWxPZkxhc3RXYXRjaHBvaW50KSkgeworICAgICAgICAgICAgbm9wKCk7CisgICAgICAgICAgICBy
ZXN1bHQgPSBtX2J1ZmZlci5sYWJlbCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCiAgICAgQXNzZW1ibGVyTGFiZWwgYWxpZ24oaW50IGFsaWdubWVudCkKQEAg
LTY2NCwxNCArNjkxLDI0IEBAIHB1YmxpYzoKICAgICAvLyBBc3NlbWJseSBoZWxwZXJzIGZvciBt
b3ZpbmcgZGF0YSBiZXR3ZWVuIGZwIGFuZCByZWdpc3RlcnMuCiAgICAgdm9pZCB2bW92KFJlZ2lz
dGVySUQgcmQxLCBSZWdpc3RlcklEIHJkMiwgRlBSZWdpc3RlcklEIHJuKQogICAgIHsKKyNpZiBX
VEZfTUlQU19JU0FfUkVWKDIpICYmIFdURl9NSVBTX0ZQNjQKKyAgICAgICAgbWZjMShyZDEsIHJu
KTsKKyAgICAgICAgbWZoYzEocmQyLCBybik7CisjZWxzZQogICAgICAgICBtZmMxKHJkMSwgcm4p
OwogICAgICAgICBtZmMxKHJkMiwgRlBSZWdpc3RlcklEKHJuICsgMSkpOworI2VuZGlmCiAgICAg
fQogCiAgICAgdm9pZCB2bW92KEZQUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybjEsIFJlZ2lz
dGVySUQgcm4yKQogICAgIHsKKyNpZiBXVEZfTUlQU19JU0FfUkVWKDIpICYmIFdURl9NSVBTX0ZQ
NjQKKyAgICAgICAgbXRjMShybjEsIHJkKTsKKyAgICAgICAgbXRoYzEocm4yLCByZCk7CisjZWxz
ZQogICAgICAgICBtdGMxKHJuMSwgcmQpOwogICAgICAgICBtdGMxKHJuMiwgRlBSZWdpc3RlcklE
KHJkICsgMSkpOworI2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIHVuc2lnbmVkIGdldENhbGxS
ZXR1cm5PZmZzZXQoQXNzZW1ibGVyTGFiZWwgY2FsbCkKQEAgLTY4OCw2ICs3MjUsMzUgQEAgcHVi
bGljOgogICAgIC8vIHdyaXRhYmxlIHJlZ2lvbiBvZiBtZW1vcnk7IHRvIG1vZGlmeSB0aGUgY29k
ZSBpbiBhbiBleGVjdXRlLW9ubHkgZXhlY3VhYmxlCiAgICAgLy8gcG9vbCB0aGUgJ3JlcGF0Y2gn
IGFuZCAncmVsaW5rJyBtZXRob2RzIHNob3VsZCBiZSB1c2VkLgogCisgICAgc3RhdGljIHNpemVf
dCBsaW5rRGlyZWN0SnVtcCh2b2lkKiBjb2RlLCB2b2lkKiB0bykKKyAgICB7CisgICAgICAgIE1J
UFNXb3JkKiBpbnNuID0gcmVpbnRlcnByZXRfY2FzdDxNSVBTV29yZCo+KHJlaW50ZXJwcmV0X2Nh
c3Q8aW50cHRyX3Q+KGNvZGUpKTsKKyAgICAgICAgc2l6ZV90IG9wcyA9IDA7CisgICAgICAgIGlu
dDMyX3Qgc2xvdEFkZHIgPSByZWludGVycHJldF9jYXN0PGludD4oaW5zbikgKyA0OworICAgICAg
ICBpbnQzMl90IHRvQWRkciA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50Pih0byk7CisKKyAgICAgICAg
aWYgKChzbG90QWRkciAmIDB4ZjAwMDAwMDApICE9ICh0b0FkZHIgJiAweGYwMDAwMDAwKSkgewor
ICAgICAgICAgICAgLy8gbHVpCisgICAgICAgICAgICAqaW5zbiA9IDB4M2MwMDAwMDAgfCAoTUlQ
U1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlQpIHwgKCh0b0FkZHIgPj4gMTYpICYgMHhmZmZmKTsK
KyAgICAgICAgICAgICsraW5zbjsKKyAgICAgICAgICAgIC8vIG9yaQorICAgICAgICAgICAgKmlu
c24gPSAweDM0MDAwMDAwIHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JUKSB8IChNSVBT
UmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SUykgfCAodG9BZGRyICYgMHhmZmZmKTsKKyAgICAgICAg
ICAgICsraW5zbjsKKyAgICAgICAgICAgIC8vIGpyCisgICAgICAgICAgICAqaW5zbiA9IDB4MDAw
MDAwMDggfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlMpOworICAgICAgICAgICAgKytp
bnNuOworICAgICAgICAgICAgb3BzID0gNCAqIHNpemVvZihNSVBTV29yZCk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAvLyBqCisgICAgICAgICAgICAqaW5zbiA9IDB4MDgwMDAwMDAg
fCAoKHRvQWRkciAmIDB4MGZmZmZmZmYpID4+IDIpOworICAgICAgICAgICAgKytpbnNuOworICAg
ICAgICAgICAgb3BzID0gMiAqIHNpemVvZihNSVBTV29yZCk7CisgICAgICAgIH0KKyAgICAgICAg
Ly8gbm9wCisgICAgICAgICppbnNuID0gMHgwMDAwMDAwMDsKKyAgICAgICAgcmV0dXJuIG9wczsK
KyAgICB9CisKICAgICB2b2lkIGxpbmtKdW1wKEFzc2VtYmxlckxhYmVsIGZyb20sIEFzc2VtYmxl
ckxhYmVsIHRvKQogICAgIHsKICAgICAgICAgQVNTRVJUKHRvLmlzU2V0KCkpOwpAQCAtODI1LDI5
ICs4OTEsMzYgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgcmV2
ZXJ0SnVtcFRvTW92ZSh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCBSZWdpc3RlcklEIHJ0LCBpbnQg
aW1tKQorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCiAgICAg
ewotICAgICAgICBNSVBTV29yZCogaW5zbiA9IHN0YXRpY19jYXN0PE1JUFNXb3JkKj4oaW5zdHJ1
Y3Rpb25TdGFydCkgKyAxOwotICAgICAgICBBU1NFUlQoKCppbnNuICYgMHhmYzAwMDAwMCkgPT0g
MHgzNDAwMDAwMCk7Ci0gICAgICAgICppbnNuID0gKCppbnNuICYgMHhmYzFmMDAwMCkgfCAoaW1t
ICYgMHhmZmZmKTsKLSAgICAgICAgY2FjaGVGbHVzaChpbnNuLCBzaXplb2YoTUlQU1dvcmQpKTsK
KyAgICAgICAgcmV0dXJuIHNpemVvZihNSVBTV29yZCkgKiA0OwogICAgIH0KIAotICAgIHN0YXRp
YyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCB2b2lkKiB0bykK
KyAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wVG9Nb3ZlKHZvaWQqIGluc3RydWN0aW9uU3RhcnQs
IFJlZ2lzdGVySUQgcnQsIGludCBpbW0pCiAgICAgewotICAgICAgICBNSVBTV29yZCogaW5zdHJ1
Y3Rpb24gPSByZWludGVycHJldF9jYXN0PE1JUFNXb3JkKj4oaW5zdHJ1Y3Rpb25TdGFydCk7Ci0g
ICAgICAgIGludHB0cl90IGp1bXBUbyA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRvKTsK
KyAgICAgICAgTUlQU1dvcmQqIGluc24gPSBzdGF0aWNfY2FzdDxNSVBTV29yZCo+KGluc3RydWN0
aW9uU3RhcnQpOworICAgICAgICBzaXplX3QgY29kZVNpemUgPSAyICogc2l6ZW9mKE1JUFNXb3Jk
KTsKIAogICAgICAgICAvLyBsdWkKLSAgICAgICAgaW5zdHJ1Y3Rpb25bMF0gPSAweDNjMDAwMDAw
IHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JUKSB8ICgoanVtcFRvID4+IDE2KSAmIDB4
ZmZmZik7CisgICAgICAgICppbnNuID0gMHgzYzAwMDAwMCB8IChydCA8PCBPUF9TSF9SVCkgfCAo
KGltbSA+PiAxNikgJiAweGZmZmYpOworICAgICAgICArK2luc247CiAgICAgICAgIC8vIG9yaQot
ICAgICAgICBpbnN0cnVjdGlvblsxXSA9IDB4MzQwMDAwMDAgfCAoTUlQU1JlZ2lzdGVyczo6dDkg
PDwgT1BfU0hfUlQpIHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JTKSB8IChqdW1wVG8g
JiAweGZmZmYpOwotICAgICAgICAvLyBqcgotICAgICAgICBpbnN0cnVjdGlvblsyXSA9IDB4MDAw
MDAwMDggfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlMpOwotICAgICAgICAvLyBub3AK
LSAgICAgICAgaW5zdHJ1Y3Rpb25bM10gPSAweDA7CisgICAgICAgICppbnNuID0gMHgzNDAwMDAw
MCB8IChydCA8PCBPUF9TSF9SUykgfCAocnQgPDwgT1BfU0hfUlQpIHwgKGltbSAmIDB4ZmZmZik7
CisgICAgICAgICsraW5zbjsKKyAgICAgICAgLy8gaWYganIgJHQ5CisgICAgICAgIGlmICgqaW5z
biA9PSAweDAzMjAwMDA4KSB7CisgICAgICAgICAgICAqaW5zbiA9IDB4MDAwMDAwMDA7CisgICAg
ICAgICAgICBjb2RlU2l6ZSArPSBzaXplb2YoTUlQU1dvcmQpOworICAgICAgICB9CisgICAgICAg
IGNhY2hlRmx1c2goaW5zbiwgY29kZVNpemUpOworICAgIH0KIAotICAgICAgICBjYWNoZUZsdXNo
KGluc3RydWN0aW9uLCBzaXplb2YoTUlQU1dvcmQpICogNCk7CisgICAgc3RhdGljIHZvaWQgcmVw
bGFjZVdpdGhKdW1wKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIHZvaWQqIHRvKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKCEoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25TdGFydCkg
JiAzKSk7CisgICAgICAgIEFTU0VSVCghKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRvKSAmIDMp
KTsKKyAgICAgICAgc2l6ZV90IG9wcyA9IGxpbmtEaXJlY3RKdW1wKGluc3RydWN0aW9uU3RhcnQs
IHRvKTsKKyAgICAgICAgY2FjaGVGbHVzaChpbnN0cnVjdGlvblN0YXJ0LCBvcHMpOwogICAgIH0K
IAogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoTG9hZCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0
KQpAQCAtMTAyMyw2ICsxMDk2LDggQEAgcHJpdmF0ZToKIAogICAgIEFzc2VtYmxlckJ1ZmZlciBt
X2J1ZmZlcjsKICAgICBKdW1wcyBtX2p1bXBzOworICAgIGludCBtX2luZGV4T2ZMYXN0V2F0Y2hw
b2ludDsKKyAgICBpbnQgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQ7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXIuaAppbmRleCAzZDU3MzQwLi4yZjI2ZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC0yMDAsNiArMjAwLDEz
IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKICAgICAKKyNpZiBDUFUoTUlQUykKKyAgICB2b2lk
IHBva2UoRlBSZWdpc3RlcklEIHNyYywgaW50IGluZGV4ID0gMCkKKyAgICB7CisgICAgICAgIEFT
U0VSVCghKGluZGV4ICYgMSkpOworICAgICAgICBzdG9yZURvdWJsZShzcmMsIGFkZHJlc3NGb3JQ
b2tlKGluZGV4KSk7CisgICAgfQorI2VuZGlmCiAKICAgICAvLyBCYWNrd2FyZHMgYmFuY2hlcywg
dGhlc2UgYXJlIGN1cnJlbnRseSBhbGwgaW1wbGVtZW50ZWQgdXNpbmcgZXhpc3RpbmcgZm9yd2Fy
ZHMgYnJhbmNoIG1lY2hhbmlzbXMuCiAgICAgdm9pZCBicmFuY2hQdHIoUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwgVHJ1c3RlZEltbVB0ciBpbW0sIExhYmVsIHRhcmdl
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJNSVBTLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyTUlQUy5oCmluZGV4IDFiMWExMjcuLmI1OTM4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaApAQCAtMTE0LDYgKzEx
NCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoZGVzdCwgZGVzdCwgc3Jj
KTsKICAgICB9CiAKKyAgICB2b2lkIGFkZDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9w
MiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkdShkZXN0
LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBhZGQzMihpbW0sIGRlc3QsIGRlc3QpOwpA
QCAtMjY3LDYgKzI3MiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZEluc24o
ZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgb3Ax
LCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuYW5kSW5zbihkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCBhbmQzMihU
cnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoIWlt
bS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCkBAIC0yODMsOSArMjkzLDE2IEBAIHB1YmxpYzoK
ICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgbHNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnNs
bChkZXN0LCBkZXN0LCBpbW0ubV92YWx1ZSk7CisgICAgICAgIGlmICghaW1tLm1fdmFsdWUgJiYg
IW1fZml4ZWRXaWR0aCkKKyAgICAgICAgICAgIG1vdmUoTUlQU1JlZ2lzdGVyczo6emVybywgZGVz
dCk7CisgICAgICAgIGVsc2UgaWYgKGltbS5tX3ZhbHVlID4gMCAmJiBpbW0ubV92YWx1ZSA8IDY1
NTM1ICYmICFtX2ZpeGVkV2lkdGgpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hbmRpKGRlc3Qs
IHNyYywgaW1tLm1fdmFsdWUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1vdmUoaW1t
LCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYW5kSW5zbihkZXN0
LCBzcmMsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIGxz
aGlmdDMyKFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTI5Mywx
MSArMzEwLDMzIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc2xsdihkZXN0LCBkZXN0
LCBzaGlmdEFtb3VudCk7CiAgICAgfQogCisgICAgdm9pZCBsc2hpZnQzMihSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuc2xsdihkZXN0LCBzcmMsIHNoaWZ0QW1vdW50KTsKKyAgICB9CisKKyAg
ICB2b2lkIGxzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxl
ci5zbGx2KGRlc3QsIGRlc3QsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgfQorCisgICAgdm9pZCBs
c2hpZnQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1f
YXNzZW1ibGVyLnNsbHYoZGVzdCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgIH0KKwogICAg
IHZvaWQgbXVsMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLm11bChkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQg
bXVsMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tdWwoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwog
ICAgIHZvaWQgbXVsMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmICghaW1tLm1fdmFsdWUgJiYgIW1fZml4ZWRXaWR0
aCkKQEAgLTM0OCw2ICszODcsMjQgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5vcklu
c24oZGVzdCwgZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCisgICAgdm9pZCBvcjMy
KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID4gMCAmJiBpbW0ubV92YWx1ZSA8
IDY1NTM1ICYmICFtX2ZpeGVkV2lkdGgpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm9yaShk
ZXN0LCBzcmMsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
CisgICAgICAgIC8qCisgICAgICAgICAgICBsaSAgICAgIGRhdGFUZW1wLCBpbW0KKyAgICAgICAg
ICAgIG9yICAgICAgZGVzdCwgc3JjLCBkYXRhVGVtcAorICAgICAgICAqLworICAgICAgICBtb3Zl
KGltbSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ySW5zbihkZXN0
LCBzcmMsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgIH0KKwogICAgIHZvaWQgb3IzMihSZWdpc3Rl
cklEIHNyYywgQWJzb2x1dGVBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAgICBsb2FkMzIoZGVz
dC5tX3B0ciwgZGF0YVRlbXBSZWdpc3Rlcik7CkBAIC0zNjAsNiArNDE3LDExIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9hc3NlbWJsZXIuc3JhdihkZXN0LCBkZXN0LCBzaGlmdEFtb3VudCk7CiAgICAg
fQogCisgICAgdm9pZCByc2hpZnQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFt
b3VudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3Jhdihk
ZXN0LCBzcmMsIHNoaWZ0QW1vdW50KTsKKyAgICB9CisKICAgICB2b2lkIHJzaGlmdDMyKFRydXN0
ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVy
LnNyYShkZXN0LCBkZXN0LCBpbW0ubV92YWx1ZSk7CkBAIC0zNzUsMTYgKzQzNywzMSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnNybHYoZGVzdCwgZGVzdCwgc2hpZnRBbW91bnQpOwog
ICAgIH0KIAorICAgIHZvaWQgdXJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIHNo
aWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5z
cmx2KGRlc3QsIHNyYywgc2hpZnRBbW91bnQpOworICAgIH0KKwogICAgIHZvaWQgdXJzaGlmdDMy
KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLnNybChkZXN0LCBkZXN0LCBpbW0ubV92YWx1ZSk7CiAgICAgfQogCisgICAgdm9pZCB1
cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnNybChkZXN0LCBzcmMsIGltbS5tX3ZhbHVl
KTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJ1KGRlc3QsIGRlc3QsIHNyYyk7CiAg
ICAgfQogCisgICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YnUoZGVzdCwgb3Ax
LCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID49IC0zMjc2NyAmJiBp
bW0ubV92YWx1ZSA8PSAzMjc2OApAQCAtNDk1LDYgKzU3MiwxMSBAQCBwdWJsaWM6CiAgICAgICAg
IG1fYXNzZW1ibGVyLnhvckluc24oZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lk
IHhvcjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihkZXN0LCBvcDEsIG9wMik7CisgICAg
fQorCiAgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpIHsKQEAgLTUxMCw2ICs1OTIsMjEg
QEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIGRlc3QsIGltbVRl
bXBSZWdpc3Rlcik7CiAgICAgfQogCisgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKGltbS5t
X3ZhbHVlID09IC0xKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3IoZGVzdCwgc3JjLCBN
SVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIC8qCisgICAgICAgICAgICBsaSAgaW1tVGVtcCwgaW1tCisgICAgICAgICAgICB4b3Ig
ZGVzdCwgZGVzdCwgaW1tVGVtcAorICAgICAgICAqLworICAgICAgICBtb3ZlKGltbSwgaW1tVGVt
cFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihkZXN0LCBzcmMsIGltbVRl
bXBSZWdpc3Rlcik7CisgICAgfQorCiAgICAgdm9pZCBzcXJ0RG91YmxlKEZQUmVnaXN0ZXJJRCBz
cmMsIEZQUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zcXJ0ZChk
c3QsIHNyYyk7CkBAIC05ODksNiArMTA4Niw0NCBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9
CiAKKyAgICB2b2lkIHN0b3JlMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3Mp
CisgICAgeworICAgICAgICBpZiAoYWRkcmVzcy5vZmZzZXQgPj0gLTMyNzY4ICYmIGFkZHJlc3Mu
b2Zmc2V0IDw9IDMyNzY3ICYmICFtX2ZpeGVkV2lkdGgpIHsKKyAgICAgICAgICAgIC8qCisgICAg
ICAgICAgICAgICAgc2xsICAgICBhZGRyVGVtcCwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2Fs
ZQorICAgICAgICAgICAgICAgIGFkZHUgICAgYWRkclRlbXAsIGFkZHJUZW1wLCBhZGRyZXNzLmJh
c2UKKyAgICAgICAgICAgICAgICBzdyAgICAgIHNyYywgYWRkcmVzcy5vZmZzZXQoYWRkclRlbXAp
CisgICAgICAgICAgICAqLworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2xsKGFkZHJUZW1wUmVn
aXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuYWRkdShhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmJh
c2UpOworICAgICAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSkKKyAgICAgICAgICAgICAgICBtX2Fz
c2VtYmxlci5zdyhNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNz
Lm9mZnNldCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBtb3ZlKGltbSwg
aW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdyhpbW1UZW1w
UmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgc2xs
ICAgICBhZGRyVGVtcCwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZQorICAgICAgICAgICAg
ICAgIGFkZHUgICAgYWRkclRlbXAsIGFkZHJUZW1wLCBhZGRyZXNzLmJhc2UKKyAgICAgICAgICAg
ICAgICBsdWkgICAgIGltbVRlbXAsIChhZGRyZXNzLm9mZnNldCArIDB4ODAwMCkgPj4gMTYKKyAg
ICAgICAgICAgICAgICBhZGR1ICAgIGFkZHJUZW1wLCBhZGRyVGVtcCwgaW1tVGVtcAorICAgICAg
ICAgICAgICAgIHN3ICAgICAgc3JjLCAoYWRkcmVzcy5vZmZzZXQgJiAweGZmZmYpKGF0KQorICAg
ICAgICAgICAgKi8KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsbChhZGRyVGVtcFJlZ2lzdGVy
LCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmFkZHUoYWRkclRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5iYXNlKTsK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmx1aShpbW1UZW1wUmVnaXN0ZXIsIChhZGRyZXNzLm9m
ZnNldCArIDB4ODAwMCkgPj4gMTYpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkdShhZGRy
VGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAg
ICAgICAgaWYgKCFpbW0ubV92YWx1ZSAmJiAhbV9maXhlZFdpZHRoKQorICAgICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnN3KE1JUFNSZWdpc3RlcnM6Onplcm8sIGFkZHJUZW1wUmVnaXN0ZXIsIGFk
ZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG1vdmUo
aW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN3KGlt
bVRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5vZmZzZXQpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorCisKICAgICB2b2lkIHN0b3JlMzIoUmVnaXN0ZXJJ
RCBzcmMsIGNvbnN0IHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICAvKgpAQCAtMTMzNiw2
ICsxNDcxLDE1IEBAIHB1YmxpYzoKICAgICAgICAgbV9maXhlZFdpZHRoID0gZmFsc2U7CiAgICAg
fQogCisgICAgdm9pZCBqdW1wKEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAg
ICAgbV9maXhlZFdpZHRoID0gdHJ1ZTsKKyAgICAgICAgbG9hZDMyKGFkZHJlc3MubV9wdHIsIE1J
UFNSZWdpc3RlcnM6OnQ5KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuanIoTUlQU1JlZ2lzdGVyczo6
dDkpOworICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgbV9maXhlZFdpZHRoID0g
ZmFsc2U7CisgICAgfQorCiAgICAgdm9pZCBtb3ZlRG91YmxlVG9JbnRzKEZQUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCiAgICAgewogICAgICAgICBt
X2Fzc2VtYmxlci52bW92KGRlc3QxLCBkZXN0Miwgc3JjKTsKQEAgLTE0MDQsNiArMTU0OCw1MyBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKCk7CiAgICAgfQogCisgICAgSnVtcCBicmFu
Y2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQg
b3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3Zl
cmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0g
Tm9uWmVybykpOworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgeworICAgICAgICAgICAg
LyoKKyAgICAgICAgICAgICAgICBtb3ZlICAgIGRhdGFUZW1wLCBvcDEKKyAgICAgICAgICAgICAg
ICB4b3IgICAgIGNtcFRlbXAsIGRhdGFUZW1wLCBvcDIKKyAgICAgICAgICAgICAgICBibHR6ICAg
IGNtcFRlbXAsIE5vX292ZXJmbG93ICAgICMgZGlmZiBzaWduIGJpdCAtPiBubyBvdmVyZmxvdwor
ICAgICAgICAgICAgICAgIGFkZHUgICAgZGVzdCwgZGF0YVRlbXAsIG9wMgorICAgICAgICAgICAg
ICAgIHhvciAgICAgY21wVGVtcCwgZGVzdCwgZGF0YVRlbXAKKyAgICAgICAgICAgICAgICBiZ2V6
ICAgIGNtcFRlbXAsIE5vX292ZXJmbG93ICAgICMgc2FtZSBzaWduIGJpZyAtPiBubyBvdmVyZmxv
dworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIGIgICAgICAgT3ZlcmZsb3cK
KyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAg
ICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAg
ICAgIE5vX292ZXJmbG93OgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1vdmUob3AxLCBk
YXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oY21wVGVt
cFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBvcDIpOworICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuYmx0eihjbXBUZW1wUmVnaXN0ZXIsIDEwKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFk
ZHUoZGVzdCwgZGF0YVRlbXBSZWdpc3Rlciwgb3AyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
Lnhvckluc24oY21wVGVtcFJlZ2lzdGVyLCBkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCA3KTsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGp1bXAoKTsKKyAgICAgICAg
fQorICAgICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKKyAgICAgICAgICAgIGFkZDMyKG9wMSwg
b3AyLCBkZXN0KTsKKyAgICAgICAgICAgIC8vIENoZWNrIGlmIGRlc3QgaXMgbmVnYXRpdmUuCisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHQoY21wVGVtcFJlZ2lzdGVyLCBkZXN0LCBNSVBTUmVn
aXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChjbXBUZW1w
UmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIGlmIChj
b25kID09IFplcm8pIHsKKyAgICAgICAgICAgIGFkZDMyKG9wMSwgb3AyLCBkZXN0KTsKKyAgICAg
ICAgICAgIHJldHVybiBicmFuY2hFcXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBOb25aZXJvKSB7CisgICAgICAgICAgICBhZGQz
MihvcDEsIG9wMiwgZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwoZGVz
dCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKDApOwor
ICAgICAgICByZXR1cm4gSnVtcCgpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVz
dWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOwpAQCAtMTQxNyw2ICsxNjA4
LDExMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hBZGQzMihjb25kLCBpbW1UZW1w
UmVnaXN0ZXIsIGRlc3QpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29u
ZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQorICAg
IHsKKyAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQp
IHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKKyAgICAgICAgaWYgKGNv
bmQgPT0gT3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgbW92ZSAg
ICBkYXRhVGVtcCwgZGVzdAorICAgICAgICAgICAgICAgIHhvcmkgICAgY21wVGVtcCwgZGF0YVRl
bXAsIGltbQorICAgICAgICAgICAgICAgIGJsdHogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAg
IyBkaWZmIHNpZ24gYml0IC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgYWRkaXUgICBk
YXRhVGVtcCwgZGF0YVRlbXAsIGltbQorICAgICAgICAgICAgICAgIG1vdmUgICAgZGVzdCwgZGF0
YVRlbXAKKyAgICAgICAgICAgICAgICB4b3JpICAgIGNtcFRlbXAsIGRhdGFUZW1wLCBpbW0KKyAg
ICAgICAgICAgICAgICBiZ2V6ICAgIGNtcFRlbXAsIE5vX292ZXJmbG93ICAgICMgc2FtZSBzaWdu
IGJpZyAtPiBubyBvdmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAg
IGIgICAgICAgT3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBu
b3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAg
ICAgICBub3AKKyAgICAgICAgICAgIE5vX292ZXJmbG93OgorICAgICAgICAgICAgKi8KKyAgICAg
ICAgICAgIGlmIChpbW0ubV92YWx1ZSA+PSAtMzI3NjggJiYgaW1tLm1fdmFsdWUgIDw9IDMyNzY3
ICYmICFtX2ZpeGVkV2lkdGgpIHsKKyAgICAgICAgICAgICAgICBsb2FkMzIoZGVzdC5tX3B0ciwg
ZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yaShjbXBU
ZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRlbXBSZWdpc3RlciwgMTApOworICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmFkZGl1KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIs
IGltbS5tX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIs
IGRlc3QubV9wdHIpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmkoY21wVGVtcFJl
Z2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW0ubV92YWx1ZSk7CisgICAgICAgICAgICAgICAg
bV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDcpOworICAgICAgICAgICAgICAgIG1f
YXNzZW1ibGVyLm5vcCgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBs
b2FkMzIoZGVzdC5tX3B0ciwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbW92
ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9y
SW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7
CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmx0eihjbXBUZW1wUmVnaXN0ZXIsIDEwKTsK
KyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRpdShkYXRhVGVtcFJlZ2lzdGVyLCBkYXRh
VGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIHN0b3JlMzIo
ZGF0YVRlbXBSZWdpc3RlciwgZGVzdC5tX3B0cik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJs
ZXIueG9yaShjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rl
cik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDcp
OworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgcmV0dXJuIGp1bXAoKTsKKyAgICAgICAgfQorICAgICAgICBtb3ZlKGltbSwgaW1t
VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbG9hZDMyKGRlc3QubV9wdHIsIGRhdGFUZW1wUmVnaXN0
ZXIpOworICAgICAgICBhZGQzMihpbW1UZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIpOwor
ICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QubV9wdHIpOworICAgICAgICBp
ZiAoY29uZCA9PSBTaWduZWQpIHsKKyAgICAgICAgICAgIC8vIENoZWNrIGlmIGRlc3QgaXMgbmVn
YXRpdmUuCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHQoY21wVGVtcFJlZ2lzdGVyLCBkYXRh
VGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIHJldHVybiBi
cmFuY2hOb3RFcXVhbChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAg
ICAgICB9CisgICAgICAgIGlmIChjb25kID09IFplcm8pCisgICAgICAgICAgICByZXR1cm4gYnJh
bmNoRXF1YWwoZGF0YVRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAg
IGlmIChjb25kID09IE5vblplcm8pCisgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwo
ZGF0YVRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIEFTU0VSVCgw
KTsKKyAgICAgICAgcmV0dXJuIEp1bXAoKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaE11bDMy
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93
KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblpl
cm8pKTsKKyAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIC8qCisg
ICAgICAgICAgICAgICAgbXVsdCAgICBzcmMsIGRlc3QKKyAgICAgICAgICAgICAgICBtZmhpICAg
IGRhdGFUZW1wCisgICAgICAgICAgICAgICAgbWZsbyAgICBkZXN0CisgICAgICAgICAgICAgICAg
c3JhICAgICBhZGRyVGVtcCwgZGVzdCwgMzEKKyAgICAgICAgICAgICAgICBiZXEgICAgIGRhdGFU
ZW1wLCBhZGRyVGVtcCwgTm9fb3ZlcmZsb3cgIyBhbGwgc2lnbiBiaXRzIChiaXQgNjMgdG8gYml0
IDMxKSBhcmUgdGhlIHNhbWUgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBub3AKKyAg
ICAgICAgICAgICAgICBiICAgICAgIE92ZXJmbG93CisgICAgICAgICAgICAgICAgbm9wCisgICAg
ICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9w
CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICBOb19vdmVyZmxvdzoKKyAgICAgICAg
ICAgICovCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tdWx0KHNyYzEsIHNyYzIpOworICAgICAg
ICAgICAgbV9hc3NlbWJsZXIubWZoaShkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLm1mbG8oZGVzdCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zcmEoYWRkclRl
bXBSZWdpc3RlciwgZGVzdCwgMzEpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmVxKGRhdGFU
ZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIDcpOworICAgICAgICAgICAgbV9hc3NlbWJs
ZXIubm9wKCk7CisgICAgICAgICAgICByZXR1cm4ganVtcCgpOworICAgICAgICB9CisgICAgICAg
IGlmIChjb25kID09IFNpZ25lZCkgeworICAgICAgICAgICAgbXVsMzIoc3JjMSwgc3JjMiwgZGVz
dCk7CisgICAgICAgICAgICAvLyBDaGVjayBpZiBkZXN0IGlzIG5lZ2F0aXZlLgorICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuc2x0KGNtcFRlbXBSZWdpc3RlciwgZGVzdCwgTUlQU1JlZ2lzdGVyczo6
emVybyk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwoY21wVGVtcFJlZ2lzdGVy
LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBa
ZXJvKSB7CisgICAgICAgICAgICBtdWwzMihzcmMxLCBzcmMyLCBkZXN0KTsKKyAgICAgICAgICAg
IHJldHVybiBicmFuY2hFcXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAg
fQorICAgICAgICBpZiAoY29uZCA9PSBOb25aZXJvKSB7CisgICAgICAgICAgICBtdWwzMihzcmMx
LCBzcmMyLCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChkZXN0LCBN
SVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoMCk7CisgICAg
ICAgIHJldHVybiBKdW1wKCk7CisgICAgfQorCiAgICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRD
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAo
Y29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CkBAIC0xNDY1LDggKzE3NjEsNyBA
QCBwdWJsaWM6CiAgICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1
c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICBtb3ZlKHNyYywgZGVz
dCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hNdWwzMihjb25kLCBpbW1UZW1wUmVnaXN0ZXIsIGRl
c3QpOworICAgICAgICByZXR1cm4gYnJhbmNoTXVsMzIoY29uZCwgaW1tVGVtcFJlZ2lzdGVyLCBz
cmMsIGRlc3QpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCkBAIC0xNTI1LDggKzE4MjAs
NjAgQEAgcHVibGljOgogICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewogICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbW92ZShzcmMs
IGRlc3QpOwotICAgICAgICByZXR1cm4gYnJhbmNoU3ViMzIoY29uZCwgaW1tVGVtcFJlZ2lzdGVy
LCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjMyKGNvbmQsIHNyYywgaW1tVGVtcFJl
Z2lzdGVyLCBkZXN0KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFN1YjMyKFJlc3VsdENvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0g
U2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CisgICAgICAg
IGlmIChjb25kID09IE92ZXJmbG93KSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAg
IG1vdmUgICAgZGF0YVRlbXAsIG9wMQorICAgICAgICAgICAgICAgIHhvciAgICAgY21wVGVtcCwg
ZGF0YVRlbXAsIG9wMgorICAgICAgICAgICAgICAgIGJnZXogICAgY21wVGVtcCwgTm9fb3ZlcmZs
b3cgICAgIyBzYW1lIHNpZ24gYml0IC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgc3Vi
dSAgICBkZXN0LCBkYXRhVGVtcCwgb3AyCisgICAgICAgICAgICAgICAgeG9yICAgICBjbXBUZW1w
LCBkZXN0LCBkYXRhVGVtcAorICAgICAgICAgICAgICAgIGJnZXogICAgY21wVGVtcCwgTm9fb3Zl
cmZsb3cgICAgIyBzYW1lIHNpZ24gYml0IC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAg
bm9wCisgICAgICAgICAgICAgICAgYiAgICAgICBPdmVyZmxvdworICAgICAgICAgICAgICAgIG5v
cAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAg
ICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgTm9fb3ZlcmZsb3c6Cisg
ICAgICAgICAgICAqLworICAgICAgICAgICAgbW92ZShvcDEsIGRhdGFUZW1wUmVnaXN0ZXIpOwor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1w
UmVnaXN0ZXIsIG9wMik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdp
c3RlciwgMTApOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3VidShkZXN0LCBkYXRhVGVtcFJl
Z2lzdGVyLCBvcDIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVn
aXN0ZXIsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
YmdleihjbXBUZW1wUmVnaXN0ZXIsIDcpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7
CisgICAgICAgICAgICByZXR1cm4ganVtcCgpOworICAgICAgICB9CisgICAgICAgIGlmIChjb25k
ID09IFNpZ25lZCkgeworICAgICAgICAgICAgc3ViMzIob3AxLCBvcDIsIGRlc3QpOworICAgICAg
ICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdhdGl2ZS4KKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAg
ICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lz
dGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gWmVybykgeworICAg
ICAgICAgICAgc3ViMzIob3AxLCBvcDIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5j
aEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIGlm
IChjb25kID09IE5vblplcm8pIHsKKyAgICAgICAgICAgIHN1YjMyKG9wMSwgb3AyLCBkZXN0KTsK
KyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6
ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoMCk7CisgICAgICAgIHJldHVybiBKdW1w
KCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hOZWczMihSZXN1bHRDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBzcmNEZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGkoZGF0YVRl
bXBSZWdpc3RlciwgLTEpOworICAgICAgICByZXR1cm4gYnJhbmNoTXVsMzIoY29uZCwgZGF0YVRl
bXBSZWdpc3Rlciwgc3JjRGVzdCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hPcjMyKFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMTU3
OCw3ICsxOTI1LDggQEAgcHVibGljOgogCiAgICAgQ2FsbCBjYWxsKFJlZ2lzdGVySUQgdGFyZ2V0
KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuamFscih0YXJnZXQpOworICAgICAgICBtb3Zl
KHRhcmdldCwgTUlQU1JlZ2lzdGVyczo6dDkpOworICAgICAgICBtX2Fzc2VtYmxlci5qYWxyKE1J
UFNSZWdpc3RlcnM6OnQ5KTsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgICAgIHJl
dHVybiBDYWxsKG1fYXNzZW1ibGVyLmxhYmVsKCksIENhbGw6Ok5vbmUpOwogICAgIH0KQEAgLTE4
MjIsNyArMjE3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBsdWkgICAgIGltbVRlbXAs
IChhZGRyZXNzLm9mZnNldCArIDB4ODAwMCkgPj4gMTYKICAgICAgICAgICAgICAgICBhZGR1ICAg
IGFkZHJUZW1wLCBhZGRyVGVtcCwgaW1tVGVtcAogICAgICAgICAgICAgICAgIGx3YzEgICAgZGVz
dCwgKGFkZHJlc3Mub2Zmc2V0ICYgMHhmZmZmKShhdCkKLSAgICAgICAgICAgICAgICBsd2MxICAg
IGRlc3QrNCwgKGFkZHJlc3Mub2Zmc2V0ICYgMHhmZmZmICsgNCkoYXQpCisgICAgICAgICAgICAg
ICAgbHdjMSAgICBkZXN0KzEsIChhZGRyZXNzLm9mZnNldCAmIDB4ZmZmZiArIDQpKGF0KQogICAg
ICAgICAgICAgKi8KICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsbChhZGRyVGVtcFJlZ2lzdGVy
LCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmFkZHUoYWRkclRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5iYXNlKTsK
QEAgLTIwMDksNiArMjM1NywxOSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKKyAgICB2b2lk
IG1vdmVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBpZiAoc3JjICE9IGRlc3QgfHwgbV9maXhlZFdpZHRoKQorICAgICAgICAgICAgbV9h
c3NlbWJsZXIubW92ZChkZXN0LCBzcmMpOworICAgIH0KKworICAgIHZvaWQgc3dhcERvdWJsZShG
UFJlZ2lzdGVySUQgZnIxLCBGUFJlZ2lzdGVySUQgZnIyKQorICAgIHsKKyAgICAgICAgbW92ZURv
dWJsZShmcjEsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbW92ZURvdWJsZShmcjIsIGZyMSk7
CisgICAgICAgIG1vdmVEb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGZyMik7CisgICAgfQorCiAgICAg
dm9pZCBhZGREb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewogICAgICAgICBtX2Fzc2VtYmxlci5hZGRkKGRlc3QsIGRlc3QsIHNyYyk7CkBAIC0yMDM2LDYg
KzIzOTcsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zdWJkKGRlc3QsIGRlc3Qs
IHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBzdWJEb3VibGUoRlBSZWdpc3RlcklEIG9wMSwgRlBS
ZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5zdWJkKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIHN1YkRvdWJsZShB
ZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBsb2FkRG91Ymxl
KHNyYywgZnBUZW1wUmVnaXN0ZXIpOwpAQCAtMjA1MywxMSArMjQxOSwzMiBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLm11bGQoZGVzdCwgZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOwogICAg
IH0KIAorICAgIHZvaWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBv
cDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubXVsZChk
ZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCBkaXZEb3VibGUoRlBSZWdpc3RlcklE
IHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5kaXZk
KGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBkaXZEb3VibGUoRlBSZWdpc3Rl
cklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5kaXZkKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKKyAgICB2b2lk
IGRpdkRvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBsb2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5k
aXZkKGRlc3QsIGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ2F0
ZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLm5lZ2QoZGVzdCwgc3JjKTsKKyAgICB9CisKICAgICB2b2lkIGNvbnZl
cnRJbnQzMlRvRG91YmxlKFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
CiAgICAgICAgIG1fYXNzZW1ibGVyLm10YzEoc3JjLCBmcFRlbXBSZWdpc3Rlcik7CkBAIC0yMTE3
LDYgKzI1MDQsOCBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaEVxdWFsKFJlZ2lzdGVySUQg
cnMsIFJlZ2lzdGVySUQgcnQpCiAgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFwcGVuZEp1bXAo
KTsKICAgICAgICAgbV9hc3NlbWJsZXIuYmVxKHJzLCBydCwgMCk7CiAgICAgICAgIG1fYXNzZW1i
bGVyLm5vcCgpOwpAQCAtMjEyNiw2ICsyNTE1LDggQEAgcHVibGljOgogCiAgICAgSnVtcCBicmFu
Y2hOb3RFcXVhbChSZWdpc3RlcklEIHJzLCBSZWdpc3RlcklEIHJ0KQogICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwogICAgICAgICBt
X2Fzc2VtYmxlci5hcHBlbmRKdW1wKCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmJuZShycywgcnQs
IDApOwogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKQEAgLTIxOTIsMTEgKzI1ODMsMzMgQEAg
cHVibGljOgogICAgIC8vIElmIHRoZSByZXN1bHQgaXMgbm90IHJlcHJlc2VudGFibGUgYXMgYSAz
MiBiaXQgdmFsdWUsIGJyYW5jaC4KICAgICAvLyBNYXkgYWxzbyBicmFuY2ggZm9yIHNvbWUgdmFs
dWVzIHRoYXQgYXJlIHJlcHJlc2VudGFibGUgaW4gMzIgYml0cwogICAgIC8vIChzcGVjaWZpY2Fs
bHksIGluIHRoaXMgY2FzZSwgSU5UX01BWCAweDdmZmZmZmZmKS4KLSAgICBKdW1wIGJyYW5jaFRy
dW5jYXRlRG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgZW51bSBCcmFuY2hUcnVuY2F0ZVR5cGUgeyBCcmFuY2hJZlRydW5jYXRlRmFpbGVkLCBCcmFu
Y2hJZlRydW5jYXRlU3VjY2Vzc2Z1bCB9OworICAgIEp1bXAgYnJhbmNoVHJ1bmNhdGVEb3VibGVU
b0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgQnJhbmNoVHJ1bmNhdGVU
eXBlIGJyYW5jaFR5cGUgPSBCcmFuY2hJZlRydW5jYXRlRmFpbGVkKQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIudHJ1bmN3ZChmcFRlbXBSZWdpc3Rlciwgc3JjKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubWZjMShkZXN0LCBmcFRlbXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2gz
MihicmFuY2hUeXBlID09IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQgPyBFcXVhbCA6IE5vdEVxdWFs
LCBkZXN0LCBUcnVzdGVkSW1tMzIoMHg3ZmZmZmZmZikpOworICAgIH0KKworICAgIEp1bXAgYnJh
bmNoVHJ1bmNhdGVEb3VibGVUb1VpbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRl
c3QsIEJyYW5jaFRydW5jYXRlVHlwZSBicmFuY2hUeXBlID0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxl
ZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnRydW5jd2QoZnBUZW1wUmVnaXN0ZXIsIHNy
Yyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1mYzEoZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOworICAg
ICAgICByZXR1cm4gYnJhbmNoMzIoYnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRydW5jYXRlRmFpbGVk
ID8gRXF1YWwgOiBOb3RFcXVhbCwgZGVzdCwgVHJ1c3RlZEltbTMyKDApKTsKKyAgICB9CisKKyAg
ICAvLyBSZXN1bHQgaXMgdW5kZWZpbmVkIGlmIHRoZSB2YWx1ZSBpcyBvdXRzaWRlIG9mIHRoZSBp
bnRlZ2VyIHJhbmdlLgorICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJ
RCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnRydW5j
d2QoZnBUZW1wUmVnaXN0ZXIsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1mYzEoZGVzdCwg
ZnBUZW1wUmVnaXN0ZXIpOworICAgIH0KKworICAgIC8vIFJlc3VsdCBpcyB1bmRlZmluZWQgaWYg
c3JjID4gMl4zMQorICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb1VpbnQzMihGUFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci50cnVuY3dk
KGZwVGVtcFJlZ2lzdGVyLCBzcmMpOwogICAgICAgICBtX2Fzc2VtYmxlci5tZmMxKGRlc3QsIGZw
VGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKEVxdWFsLCBkZXN0LCBUcnVz
dGVkSW1tMzIoMHg3ZmZmZmZmZikpOwogICAgIH0KIAogICAgIC8vIENvbnZlcnQgJ3NyYycgdG8g
YW4gaW50ZWdlciwgYW5kIHBsYWNlcyB0aGUgcmVzdWx0aW5nICdkZXN0Jy4KQEAgLTIyMTgsMjgg
KzI2MzEsNDMgQEAgcHVibGljOgogCiAgICAgSnVtcCBicmFuY2hEb3VibGVOb25aZXJvKEZQUmVn
aXN0ZXJJRCByZWcsIEZQUmVnaXN0ZXJJRCBzY3JhdGNoKQogICAgIHsKLSNpZiBXVEZfTUlQU19J
U0FfUkVWKDIpICYmIFdURl9NSVBTX0ZQNjQKLSAgICAgICAgbV9hc3NlbWJsZXIubXRjMShNSVBT
UmVnaXN0ZXJzOjp6ZXJvLCBzY3JhdGNoKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubXRoYzEoTUlQ
U1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7Ci0jZWxzZQotICAgICAgICBtX2Fzc2VtYmxlci5t
dGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0Y2gpOwotICAgICAgICBtX2Fzc2VtYmxlci5t
dGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIEZQUmVnaXN0ZXJJRChzY3JhdGNoICsgMSkpOwotI2Vu
ZGlmCisgICAgICAgIG1fYXNzZW1ibGVyLnZtb3Yoc2NyYXRjaCwgTUlQU1JlZ2lzdGVyczo6emVy
bywgTUlQU1JlZ2lzdGVyczo6emVybyk7CiAgICAgICAgIHJldHVybiBicmFuY2hEb3VibGUoRG91
YmxlTm90RXF1YWwsIHJlZywgc2NyYXRjaCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hEb3Vi
bGVaZXJvT3JOYU4oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpCiAgICAg
ewotI2lmIFdURl9NSVBTX0lTQV9SRVYoMikgJiYgV1RGX01JUFNfRlA2NAotICAgICAgICBtX2Fz
c2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0Y2gpOwotICAgICAgICBtX2Fz
c2VtYmxlci5tdGhjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzY3JhdGNoKTsKLSNlbHNlCi0gICAg
ICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQU1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQU1JlZ2lzdGVyczo6emVybywgRlBSZWdpc3RlcklEKHNj
cmF0Y2ggKyAxKSk7Ci0jZW5kaWYKKyAgICAgICAgbV9hc3NlbWJsZXIudm1vdihzY3JhdGNoLCBN
SVBTUmVnaXN0ZXJzOjp6ZXJvLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKICAgICAgICAgcmV0dXJu
IGJyYW5jaERvdWJsZShEb3VibGVFcXVhbE9yVW5vcmRlcmVkLCByZWcsIHNjcmF0Y2gpOwogICAg
IH0KIAorICAgIC8vIEludmVydCBhIHJlbGF0aW9uYWwgY29uZGl0aW9uLCBlLmcuID09IGJlY29t
ZXMgIT0sIDwgYmVjb21lcyA+PSwgZXRjLgorICAgIHN0YXRpYyBSZWxhdGlvbmFsQ29uZGl0aW9u
IGludmVydChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCisgICAgeworICAgICAgICBSZWxhdGlv
bmFsQ29uZGl0aW9uIHI7CisgICAgICAgIGlmIChjb25kID09IEVxdWFsKQorICAgICAgICAgICAg
ciA9IE5vdEVxdWFsOworICAgICAgICBlbHNlIGlmIChjb25kID09IE5vdEVxdWFsKQorICAgICAg
ICAgICAgciA9IEVxdWFsOworICAgICAgICBlbHNlIGlmIChjb25kID09IEFib3ZlKQorICAgICAg
ICAgICAgciA9IEJlbG93T3JFcXVhbDsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBBYm92ZU9y
RXF1YWwpCisgICAgICAgICAgICByID0gQmVsb3c7CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0g
QmVsb3cpCisgICAgICAgICAgICByID0gQWJvdmVPckVxdWFsOworICAgICAgICBlbHNlIGlmIChj
b25kID09IEJlbG93T3JFcXVhbCkKKyAgICAgICAgICAgIHIgPSBBYm92ZTsKKyAgICAgICAgZWxz
ZSBpZiAoY29uZCA9PSBHcmVhdGVyVGhhbikKKyAgICAgICAgICAgIHIgPSBMZXNzVGhhbk9yRXF1
YWw7CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gR3JlYXRlclRoYW5PckVxdWFsKQorICAgICAg
ICAgICAgciA9IExlc3NUaGFuOworICAgICAgICBlbHNlIGlmIChjb25kID09IExlc3NUaGFuKQor
ICAgICAgICAgICAgciA9IEdyZWF0ZXJUaGFuT3JFcXVhbDsKKyAgICAgICAgZWxzZSBpZiAoY29u
ZCA9PSBMZXNzVGhhbk9yRXF1YWwpCisgICAgICAgICAgICByID0gR3JlYXRlclRoYW47CisgICAg
ICAgIHJldHVybiByOworICAgIH0KKwogICAgIHZvaWQgbm9wKCkKICAgICB7CiAgICAgICAgIG1f
YXNzZW1ibGVyLm5vcCgpOwpAQCAtMjI1MiwxMiArMjY4MCwxMiBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25T
dGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCiAgICAgewotICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgTUlQU0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1w
KGluc3RydWN0aW9uU3RhcnQuZGF0YUxvY2F0aW9uKCksIGRlc3RpbmF0aW9uLmRhdGFMb2NhdGlv
bigpKTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1l
bnRTaXplKCkKICAgICB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBN
SVBTQXNzZW1ibGVyOjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKCk7CiAgICAgICAgIHJldHVybiAw
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3Nl
bWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxw
ZXJzLmgKaW5kZXggMTRlYWE0NS4uZDM5YzJmZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oCkBAIC05Myw2ICs5MywyMyBAQCBwdWJsaWM6CiAg
ICAgfQogI2VuZGlmCiAKKyNpZiBDUFUoTUlQUykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcHJl
c2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAg
ICAgbW92ZShyZXR1cm5BZGRyZXNzUmVnaXN0ZXIsIHJlZyk7CisgICAgfQorCisgICAgQUxXQVlT
X0lOTElORSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKFJlZ2lzdGVySUQg
cmVnKQorICAgIHsKKyAgICAgICAgbW92ZShyZWcsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7Cisg
ICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3Jl
UmV0dXJuKEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIGxvYWRQdHIoYWRkcmVzcywg
cmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKKyAgICB9CisjZW5kaWYKKwogICAgIHZvaWQgZW1pdEdl
dEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50
cnksIEdQUlJlZyB0bykKICAgICB7CiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhHUFJJbmZvOjpj
YWxsRnJhbWVSZWdpc3RlciwgZW50cnkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgdG8pOwpAQCAtMTkz
LDcgKzIxMCw3IEBAIHB1YmxpYzoKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHNjcmF0Y2hC
dWZmZXItPmFjdGl2ZUxlbmd0aFB0cigpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICBzdG9y
ZVB0cihUcnVzdGVkSW1tUHRyKHNjcmF0Y2hTaXplKSwgR1BSSW5mbzo6cmVnVDApOwogCi0jaWYg
Q1BVKFg4Nl82NCkgfHwgQ1BVKEFSTSkKKyNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNKSB8fCBD
UFUoTUlQUykKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFyZ3VtZW50KSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIxKTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlciwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAgICAgICAgR1BSUmVnIHNjcmF0Y2ggPSBzZWxlY3RT
Y3JhdGNoR1BSKEdQUkluZm86OmFyZ3VtZW50R1BSMCwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCmluZGV4IDhhZGRl
MDUuLjA3MGVhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0Nh
bGxIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBl
cnMuaApAQCAtNTc2LDYgKzU3NiwzOSBAQCBwdWJsaWM6CiAgICAgICAgIHBva2UoR1BSSW5mbzo6
bm9uQXJnR1BSMCk7CiAgICAgfQogI2VuZGlmIC8vIENQVShBUk1fSEFSREZQKQorI2VsaWYgQ1BV
KE1JUFMpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcx
KQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjAp
OworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcg
YXJnMSwgRlBSUmVnIGFyZzIpCisgICAgeworICAgICAgICBpZiAoYXJnMiAhPSBGUFJJbmZvOjph
cmd1bWVudEZQUjApIHsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJn
dW1lbnRGUFIwKTsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMiwgRlBSSW5mbzo6YXJndW1l
bnRGUFIxKTsKKyAgICAgICAgfSBlbHNlIGlmIChhcmcxICE9IEZQUkluZm86OmFyZ3VtZW50RlBS
MSkgeworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1bWVudEZQUjEp
OworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOwor
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gU3dhcCBhcmcxLCBhcmcyLgorICAgICAg
ICAgICAgc3dhcERvdWJsZShGUFJJbmZvOjphcmd1bWVudEZQUjAsIEZQUkluZm86OmFyZ3VtZW50
RlBSMSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEZQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKKyAgICB7Cisg
ICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBHUFJJbmZvOjph
cmd1bWVudEdQUjMsIGFyZzEpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBwb2tlKGFyZzIsIDQpOworICAg
IH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBGUFJSZWcgYXJnMykKKyAgICB7CisgICAgICAgIHNl
dHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcG9rZShhcmcz
LCA0KTsKKyAgICB9CiAjZWxzZQogI2Vycm9yICJERkcgSklUIG5vdCBzdXBwb3J0ZWQgb24gdGhp
cyBwbGF0Zm9ybS4iCiAjZW5kaWYKQEAgLTgwMywxMTkgKzgzNiwxMzAgQEAgcHVibGljOgogICAg
IC8vIFRoZXNlIG1ldGhvZHMgYXJlIHN1aXRhYmxlIGZvciBhbnkgY2FsbGluZyBjb252ZW50aW9u
IHRoYXQgcHJvdmlkZXMgZm9yCiAgICAgLy8gZXhhY3RseSA0IGFyZ3VtZW50IHJlZ2lzdGVycywg
ZS5nLiBBUk12Ny4KICNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID09IDQKKworICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEFyZ3VtZW50PgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwb2tl
QXJndW1lbnQoQXJndW1lbnQgYXJnLCBpbnQgaW5kZXggPSAwKQorICAgIHsKKyNpZiBDUFUoTUlQ
UykKKyAgICAgICAgcG9rZShhcmcsIGluZGV4ICsgNCk7CisjZWxzZQorICAgICAgICBwb2tlKGFy
ZywgaW5kZXgpOworI2VuZGlmCisgICAgfQorCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBh
cmczLCBHUFJSZWcgYXJnNCkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBv
a2VBcmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJn
MywgVHJ1c3RlZEltbTMyIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFyZzQpOworICAgICAg
ICBwb2tlQXJndW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVkSW1tUHRyIGFyZzIs
IFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCkKICAgICB7Ci0gICAgICAgIHBva2UoYXJn
NCk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJ
bW1QdHIgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkK
ICAgICB7Ci0gICAgICAgIHBva2UoYXJnNSwgMSk7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAg
ICAgIHBva2VBcmd1bWVudChhcmc1LCAxKTsKKyAgICAgICAgcG9rZUFyZ3VtZW50KGFyZzQpOwog
ICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAg
ICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1t
MzIgYXJnNCkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2VBcmd1bWVu
dChhcmc0KTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIs
IGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBHUFJSZWcg
YXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBw
b2tlQXJndW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFy
ZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAg
ICAgIHBva2VBcmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJS
ZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQogICAgIHsKLSAgICAgICAgcG9rZShh
cmc1LCAxKTsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgcG9rZUFyZ3VtZW50KGFyZzUs
IDEpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBH
UFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKLSAgICAgICAgcG9r
ZShhcmc0KTsKKyAgICAgICAgcG9rZUFyZ3VtZW50KGFyZzQpOwogICAgICAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJn
MSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tUHRyIGFyZzQpCiAgICAgewot
ICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNCk7CiAgICAgICAg
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAK
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0
ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIFRydXN0ZWRJbW1Q
dHIgYXJnNCkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2VBcmd1bWVu
dChhcmc0KTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIs
IGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIg
YXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBw
b2tlQXJndW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZElt
bTMyIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKICAgICB7Ci0gICAgICAgIHBva2Uo
YXJnNSwgMSk7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc1
LCAxKTsKKyAgICAgICAgcG9rZUFyZ3VtZW50KGFyZzQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgVHJ1c3RlZEltbTMyIGFyZzUp
CiAgICAgewotICAgICAgICBwb2tlKGFyZzUsIDEpOwotICAgICAgICBwb2tlKGFyZzQpOworICAg
ICAgICBwb2tlQXJndW1lbnQoYXJnNSwgMSk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc0KTsK
ICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwog
ICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFy
ZzQsIFRydXN0ZWRJbW1QdHIgYXJnNSkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNSwgMSk7Ci0g
ICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc1LCAxKTsKKyAgICAg
ICAgcG9rZUFyZ3VtZW50KGFyZzQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIs
IEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCwgVHJ1c3RlZEltbTMyIGFyZzUpCiAgICAg
ewotICAgICAgICBwb2tlKGFyZzUsIDEpOwotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBw
b2tlQXJndW1lbnQoYXJnNSwgMSk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc0KTsKICAgICAg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0K
IAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1
c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BS
UmVnIGFyZzQsIEdQUlJlZyBhcmc1KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCAxKTsKLSAg
ICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgcG9rZUFyZ3VtZW50KGFyZzUsIDEpOworICAgICAg
ICBwb2tlQXJndW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwg
R1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKICAgICB7Ci0gICAgICAgIHBv
a2UoYXJnNSwgMSk7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2VBcmd1bWVudChh
cmc1LCAxKTsKKyAgICAgICAgcG9rZUFyZ3VtZW50KGFyZzQpOwogICAgICAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRlBSSW5mby5oCmluZGV4IGQ2YTAzOGEuLjZmOTY4ZTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oCkBAIC0xNjQsNiArMTY0LDc0IEBAIHB1Ymxp
YzoKIAogI2VuZGlmCiAKKyNpZiBDUFUoTUlQUykKKworY2xhc3MgRlBSSW5mbyB7CitwdWJsaWM6
CisgICAgdHlwZWRlZiBGUFJSZWcgUmVnaXN0ZXJUeXBlOworICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDY7CisKKyAgICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJz
LgorICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMCA9IE1JUFNSZWdpc3RlcnM6OmYwOwor
ICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMSA9IE1JUFNSZWdpc3RlcnM6OmY0OworICAg
IHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMiA9IE1JUFNSZWdpc3RlcnM6OmY2OworICAgIHN0
YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMyA9IE1JUFNSZWdpc3RlcnM6OmY4OworICAgIHN0YXRp
YyBjb25zdCBGUFJSZWcgZnBSZWdUNCA9IE1JUFNSZWdpc3RlcnM6OmYxMDsKKyAgICBzdGF0aWMg
Y29uc3QgRlBSUmVnIGZwUmVnVDUgPSBNSVBTUmVnaXN0ZXJzOjpmMTg7CisKKyAgICBzdGF0aWMg
Y29uc3QgRlBSUmVnIHJldHVyblZhbHVlRlBSID0gTUlQU1JlZ2lzdGVyczo6ZjA7CisKKyAgICBz
dGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMCA9IE1JUFNSZWdpc3RlcnM6OmYxMjsKKyAg
ICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMSA9IE1JUFNSZWdpc3RlcnM6OmYxNDsK
KworICAgIHN0YXRpYyBGUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKKyAgICB7Cisg
ICAgICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lz
dGVyc10gPSB7CisgICAgICAgICAgICBmcFJlZ1QwLCBmcFJlZ1QxLCBmcFJlZ1QyLCBmcFJlZ1Qz
LCBmcFJlZ1Q0LCBmcFJlZ1Q1IH07CisKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZS
ZWdpc3RlcnMpOworICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07CisgICAg
fQorCisgICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgoRlBSUmVnIHJlZykKKyAgICB7CisgICAg
ICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7CisgICAgICAgIEFTU0VSVChyZWcgPCAy
MCk7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmRleEZvclJlZ2lzdGVyWzIwXSA9
IHsKKyAgICAgICAgICAgIDAsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5k
ZXgsCisgICAgICAgICAgICAxLCBJbnZhbGlkSW5kZXgsIDIsIEludmFsaWRJbmRleCwKKyAgICAg
ICAgICAgIDMsIEludmFsaWRJbmRleCwgNCwgSW52YWxpZEluZGV4LAorICAgICAgICAgICAgSW52
YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LAorICAg
ICAgICAgICAgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIDUsIEludmFsaWRJbmRleCwKKyAg
ICAgICAgfTsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gaW5kZXhGb3JSZWdpc3RlcltyZWdd
OworICAgICAgICBBU1NFUlQocmVzdWx0ICE9IEludmFsaWRJbmRleCk7CisgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShGUFJS
ZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkRlBSUmVnKTsKKyAg
ICAgICAgQVNTRVJUKHJlZyA8IDMyKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWVG
b3JSZWdpc3RlclszMl0gPSB7CisgICAgICAgICAgICAiZjAiLCAiZjEiLCAiZjIiLCAiZjMiLAor
ICAgICAgICAgICAgImY0IiwgImY1IiwgImY2IiwgImY3IiwKKyAgICAgICAgICAgICJmOCIsICJm
OSIsICJmMTAiLCAiZjExIiwKKyAgICAgICAgICAgICJmMTIiLCAiZjEzIiwgImYxNCIsICJmMTUi
CisgICAgICAgICAgICAiZjE2IiwgImYxNyIsICJmMTgiLCAiZjE5IgorICAgICAgICAgICAgImYy
MCIsICJmMjEiLCAiZjIyIiwgImYyMyIKKyAgICAgICAgICAgICJmMjQiLCAiZjI1IiwgImYyNiIs
ICJmMjciCisgICAgICAgICAgICAiZjI4IiwgImYyOSIsICJmMzAiLCAiZjMxIgorICAgICAgICB9
OworICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107CisgICAgfQorcHJpdmF0ZToK
KworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOwor
fTsKKworI2VuZGlmCisKIHR5cGVkZWYgUmVnaXN0ZXJCYW5rPEZQUkluZm8+OjppdGVyYXRvciBm
cHJfaXRlcmF0b3I7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHUFJJbmZvLmgKaW5kZXggM2QwNzU1Ni4uYWE2MzRjZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgKQEAgLTQ2MSw2ICs0NjEsNzMgQEAgcHJpdmF0ZToK
IAogI2VuZGlmCiAKKyNpZiBDUFUoTUlQUykKKyNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JF
R0lTVEVSUyA0CisKK2NsYXNzIEdQUkluZm8geworcHVibGljOgorICAgIHR5cGVkZWYgR1BSUmVn
IFJlZ2lzdGVyVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3Rl
cnMgPSA2OworCisgICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KKyAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIHJlZ1QwID0gTUlQU1JlZ2lzdGVyczo6djA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyByZWdUMSA9IE1JUFNSZWdpc3RlcnM6OnYxOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVn
VDIgPSBNSVBTUmVnaXN0ZXJzOjp0NDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QzID0g
TUlQU1JlZ2lzdGVyczo6dDU7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNCA9IE1JUFNS
ZWdpc3RlcnM6OnQ2OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDUgPSBNSVBTUmVnaXN0
ZXJzOjp0NzsKKyAgICAvLyBUaGVzZSByZWdpc3RlcnMgbWF0Y2ggdGhlIGJhc2VsaW5lIEpJVC4K
KyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gcmVnVDA7Cisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlcjIgPSByZWdUMTsKKyAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6
czA7CisgICAgLy8gVGhlc2UgY29uc3RhbnRzIHByb3ZpZGUgdGhlIG5hbWVzIGZvciB0aGUgZ2Vu
ZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYgcmV0dXJuIHZhbHVlIHJlZ2lzdGVycy4KKyAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMCA9IE1JUFNSZWdpc3RlcnM6OmEwOworICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIxID0gTUlQU1JlZ2lzdGVyczo6YTE7CisgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjIgPSBNSVBTUmVnaXN0ZXJzOjphMjsKKyAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMyA9IE1JUFNSZWdpc3RlcnM6OmEzOwor
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IHJlZ1QyOworICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IHJlZ1QzOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
bm9uQXJnR1BSMiA9IHJlZ1Q0OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVH
UFIgPSByZWdUMDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IHJl
Z1QxOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0g
cmVnVDU7CisKKyAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCisg
ICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlJlZ2lzdGVycyk7CisgICAgICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lzdGVyc10g
PSB7IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdUNCwgcmVnVDUgfTsKKyAgICAgICAg
cmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOworICAgIH0KKworICAgIHN0YXRpYyB1bnNp
Z25lZCB0b0luZGV4KEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IElu
dmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwgMTYpOworICAgICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3RlclsxNl0gPSB7IEludmFsaWRJbmRleCwgSW52
YWxpZEluZGV4LCAwLCAxLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4
LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgs
IEludmFsaWRJbmRleCwgMiwgMywgNCwgNSB9OworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBp
bmRleEZvclJlZ2lzdGVyW3JlZ107CisgICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxpZElu
ZGV4KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3Qg
Y2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9
IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwgMTYpOworICAgICAgICBzdGF0
aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzE2XSA9IHsKKyAgICAgICAgICAgICJ6ZXJv
IiwgImF0IiwgInYwIiwgInYxIiwKKyAgICAgICAgICAgICJhMCIsICJhMSIsICJhMiIsICJhMyIs
CisgICAgICAgICAgICAidDAiLCAidDEiLCAidDIiLCAidDMiLAorICAgICAgICAgICAgInQ0Iiwg
InQ1IiwgInQ2IiwgInQ3IgorICAgICAgICB9OworICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lz
dGVyW3JlZ107CisgICAgfQorcHJpdmF0ZToKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJ
bnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOworfTsKKworI2VuZGlmCisKIHR5cGVkZWYgUmVnaXN0
ZXJCYW5rPEdQUkluZm8+OjppdGVyYXRvciBncHJfaXRlcmF0b3I7CiAKIH0gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAppbmRleCA1ZWExMDc2Li5mYTFjODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xNTM5LDcgKzE1MzksNyBAQCBwdWJsaWM6CiAK
IC8vIEVuY29kZWRKU1ZhbHVlIGluIEpTVkFMVUUzMl82NCBpcyBhIDY0LWJpdCBpbnRlZ2VyLiBX
aGVuIGJlaW5nIGNvbXBpbGVkIGluIEFSTSBFQUJJLCBpdCBtdXN0IGJlIGFsaWduZWQgZXZlbi1u
dW1iZXJlZCByZWdpc3RlciAocjAsIHIyIG9yIFtzcF0pLgogLy8gVG8gYXZvaWQgYXNzZW1ibGll
cyBmcm9tIHVzaW5nIHdyb25nIHJlZ2lzdGVycywgbGV0J3Mgb2NjdXB5IHIxIG9yIHIzIHdpdGgg
YSBkdW1teSBhcmd1bWVudCB3aGVuIG5lY2Vzc2FyeS4KLSNpZiBDT01QSUxFUl9TVVBQT1JUUyhF
QUJJKSAmJiBDUFUoQVJNKQorI2lmIChDT01QSUxFUl9TVVBQT1JUUyhFQUJJKSAmJiBDUFUoQVJN
KSkgfHwgQ1BVKE1JUFMpCiAjZGVmaW5lIEVBQklfMzJCSVRfRFVNTVlfQVJHICAgICAgVHJ1c3Rl
ZEltbTMyKDApLAogI2Vsc2UKICNkZWZpbmUgRUFCSV8zMkJJVF9EVU1NWV9BUkcKQEAgLTE5ODQs
NyArMTk4NCw3IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKICAgICAKLSNpZiAhZGVmaW5lZChO
REVCVUcpICYmICFDUFUoQVJNKQorI2lmICFkZWZpbmVkKE5ERUJVRykgJiYgIUNQVShBUk0pICYm
ICFDUFUoTUlQUykKICAgICB2b2lkIHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKQogICAgIHsKICAg
ICAgICAgLy8gV2UncmUgYWJvdXQgdG8gY2FsbCBvdXQgdG8gYSAibmF0aXZlIiBoZWxwZXIgZnVu
Y3Rpb24uIFRoZSBoZWxwZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SlNJbnRlcmZhY2VKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VK
SVQuaAppbmRleCAyZjRiNGUzLi5hMjhmMzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KU0ludGVyZmFjZUpJVC5oCkBAIC0xMjUsNiArMTI1LDEwIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IE1J
UFNSZWdpc3RlcnM6OnYwOwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmaXJzdEFy
Z3VtZW50UmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjphMDsKICAgICAgICAgCisjaWYgRU5BQkxF
KFZBTFVFX1BST0ZJTEVSKQorICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBidWNrZXRD
b3VudGVyUmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjpzMzsKKyNlbmRpZgorCiAgICAgICAgIC8v
IHJlZ1QwIG11c3QgYmUgdjAgZm9yIHJldHVybmluZyBhIDMyLWJpdCB2YWx1ZS4KICAgICAgICAg
c3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDAgPSBNSVBTUmVnaXN0ZXJzOjp2MDsKICAgICAg
ICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCmluZGV4
IDI2MTU1N2EuLjBmZjRkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsRGF0YS5oCkBAIC0xMzEsMTQgKzEzMSwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgc2l6ZV90
IGFsbG9jYXRpb25TaXplKHNpemVfdCBidWZmZXJTaXplKSB7IHJldHVybiBzaXplb2Yoc2l6ZV90
KSArIGJ1ZmZlclNpemU7IH0KKyAgICAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShz
aXplX3QgYnVmZmVyU2l6ZSkgeyByZXR1cm4gc2l6ZW9mKFNjcmF0Y2hCdWZmZXIpICsgYnVmZmVy
U2l6ZTsgfQogICAgICAgICB2b2lkIHNldEFjdGl2ZUxlbmd0aChzaXplX3QgYWN0aXZlTGVuZ3Ro
KSB7IG1fYWN0aXZlTGVuZ3RoID0gYWN0aXZlTGVuZ3RoOyB9CiAgICAgICAgIHNpemVfdCBhY3Rp
dmVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZUxlbmd0aDsgfTsKICAgICAgICAgc2l6
ZV90KiBhY3RpdmVMZW5ndGhQdHIoKSB7IHJldHVybiAmbV9hY3RpdmVMZW5ndGg7IH07CiAgICAg
ICAgIHZvaWQqIGRhdGFCdWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQogCiAgICAgICAgIHNp
emVfdCBtX2FjdGl2ZUxlbmd0aDsKKyNpZiBDUFUoTUlQUykgJiYgKGRlZmluZWQgV1RGX01JUFNf
QVJDSF9SRVYgJiYgV1RGX01JUFNfQVJDSF9SRVYgPT0gMikKKyAgICAgICAgdm9pZCogbV9idWZm
ZXJbMF0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpOworI2Vsc2UKICAgICAgICAgdm9pZCog
bV9idWZmZXJbMF07CisjZW5kaWYKICAgICB9OwogI2lmIENPTVBJTEVSKE1TVkMpCiAjcHJhZ21h
IHdhcm5pbmcocG9wKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZwppbmRleCBlMWY1Nzg4Li45ZjA1ODUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDEzLTAxLTA4ICBCYWxhenMgS2lsdmFkeSAgPGtpbHZhZHliQGhvbWVqaW5uaS5jb20+CisK
KyAgICAgICAgTUlQUyBERkcgaW1wbGVtZW50YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDEzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBG
aWxpcCBQaXpsby4KKworICAgICAgICBERkcgaW1wbGVtZW50YXRpb24gZm9yIE1JUFMuCisKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMy0wMS0wNyAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJhdGlvbmFsaXplIGNsb3N1cmUgY2FsbCBoZXVyaXN0
aWNzIGFuZCBwcm9maWxpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGUzMWU1ZjYuLmI4ZTQ4ZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxh
dGZvcm0uaApAQCAtOTQ0LDYgKzk0NCwxMCBAQAogI2lmIENQVShBUk1fVFJBRElUSU9OQUwpCiAj
ZGVmaW5lIEVOQUJMRV9ERkdfSklUIDEKICNlbmRpZgorLyogRW5hYmxlIHRoZSBERkcgSklUIG9u
IE1JUFMuICovCisjaWYgQ1BVKE1JUFMpCisjZGVmaW5lIEVOQUJMRV9ERkdfSklUIDEKKyNlbmRp
ZgogI2VuZGlmCiAKIC8qIElmIHRoZSBqaXQgaXMgbm90IGF2YWlsYWJsZSwgZW5hYmxlIHRoZSBM
TEludCBDIExvb3A6ICovCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181698</attachid>
            <date>2013-01-08 08:19:17 -0800</date>
            <delta_ts>2013-01-18 02:56:12 -0800</delta_ts>
            <desc>DFG for MIPS #2.</desc>
            <filename>mips-dfg-m.diff</filename>
            <type>text/plain</type>
            <size>52672</size>
            <attacher name="Balazs Kilvady">kilvadyb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDZhMTM1ZmYuLmRlNmUwYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDEzLTAxLTA4ICBCYWxhenMgS2lsdmFk
eSAgPGtpbHZhZHliQGhvbWVqaW5uaS5jb20+CisKKyAgICAgICAgTUlQUyBERkcgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4KKworICAgICAgICBERkcg
aW1wbGVtZW50YXRpb24gZm9yIE1JUFMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTUlQU0Fzc2Vt
Ymxlci5oOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpNSVBTQXNzZW1ibGVyKToKKyAg
ICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6c2xsdik6CisgICAgICAgIChKU0M6Ok1JUFNBc3Nl
bWJsZXI6Om1vdmQpOgorICAgICAgICAoTUlQU0Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6Ok1J
UFNBc3NlbWJsZXI6Om5lZ2QpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJlbEZv
cldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJlbCk6CisgICAg
ICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6OnZtb3YpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1i
bGVyOjpsaW5rRGlyZWN0SnVtcCk6CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6Om1heEp1
bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpyZXZlcnRK
dW1wVG9Nb3ZlKToKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1w
KToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKE1hY3Jv
QXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBva2UpOgorICAgICAg
ICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFjcm9B
c3NlbWJsZXJNSVBTOjphZGQzMik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlck1JUFMpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmFuZDMyKToKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJNSVBTOjpsc2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVy
TUlQUzo6bXVsMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om9yMzIpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJzaGlmdDMyKToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjp1cnNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlck1JUFM6OnN1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjp4
b3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6c3RvcmUzMik6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6anVtcCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyTUlQUzo6YnJhbmNoQWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ck1JUFM6OmJyYW5jaE11bDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpi
cmFuY2hTdWIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoTmVn
MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmNhbGwpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmxvYWREb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6Om1vdmVEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ck1JUFM6OnN3YXBEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnN1
YkRvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6bXVsRG91YmxlKToK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpkaXZEb3VibGUpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om5lZ2F0ZURvdWJsZSk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRXF1YWwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OmJyYW5jaE5vdEVxdWFsKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJN
SVBTOjpicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlck1JUFM6OmJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlck1JUFM6OnRydW5jYXRlRG91YmxlVG9JbnQzMik6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6dHJ1bmNhdGVEb3VibGVUb1VpbnQzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlTm9uWmVybyk6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlWmVyb09yTmFOKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjppbnZlcnQpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNz
ZW1ibGVyTUlQUzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogZGZnL0RGR0Fz
c2VtYmx5SGVscGVycy5oOgorICAgICAgICAoQXNzZW1ibHlIZWxwZXJzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCk6
CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlUmV0dXJuQWRkcmVz
c0JlZm9yZVJldHVybik6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpkZWJ1
Z0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKENDYWxs
SGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50
cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUpOgorICAgICAgICAqIGRmZy9ERkdGUFJJbmZvLmg6CisgICAgICAgIChERkcpOgor
ICAgICAgICAoRlBSSW5mbyk6CisgICAgICAgIChKU0M6OkRGRzo6RlBSSW5mbzo6dG9SZWdpc3Rl
cik6CisgICAgICAgIChKU0M6OkRGRzo6RlBSSW5mbzo6dG9JbmRleCk6CisgICAgICAgIChKU0M6
OkRGRzo6RlBSSW5mbzo6ZGVidWdOYW1lKToKKyAgICAgICAgKiBkZmcvREZHR1BSSW5mby5oOgor
ICAgICAgICAoREZHKToKKyAgICAgICAgKEdQUkluZm8pOgorICAgICAgICAoSlNDOjpERkc6OkdQ
UkluZm86OnRvUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkdQUkluZm86OnRvSW5kZXgp
OgorICAgICAgICAoSlNDOjpERkc6OkdQUkluZm86OmRlYnVnTmFtZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6CisgICAgICAg
ICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAgIChKU0ludGVyZmFjZUpJVCk6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpTQzo6U2NyYXRjaEJ1ZmZl
cjo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoU2NyYXRjaEJ1ZmZlcik6CisKIDIwMTMtMDEt
MDcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBSYXRpb25hbGl6
ZSBjbG9zdXJlIGNhbGwgaGV1cmlzdGljcyBhbmQgcHJvZmlsaW5nCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCmluZGV4IDAyNmY4N2UuLjdmNTUz
YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2Vt
Ymxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxl
ci5oCkBAIC0xNTIsNiArMTUyLDggQEAgcHVibGljOgogICAgIHR5cGVkZWYgU2VnbWVudGVkVmVj
dG9yPEFzc2VtYmxlckxhYmVsLCA2ND4gSnVtcHM7CiAKICAgICBNSVBTQXNzZW1ibGVyKCkKKyAg
ICAgICAgOiBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludChJTlRfTUlOKQorICAgICAgICAsIG1faW5k
ZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCiAgICAgewogICAgIH0KIApAQCAtMzI1
LDcgKzMyNyw3IEBAIHB1YmxpYzoKICAgICAgICAgZW1pdEluc3QoMHgwMDAwMDAwMCB8IChyZCA8
PCBPUF9TSF9SRCkgfCAocnQgPDwgT1BfU0hfUlQpIHwgKChzaGFtdCAmIDB4MWYpIDw8IE9QX1NI
X1NIQU1UKSk7CiAgICAgfQogCi0gICAgdm9pZCBzbGx2KFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVy
SUQgcnQsIGludCBycykKKyAgICB2b2lkIHNsbHYoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBy
dCwgUmVnaXN0ZXJJRCBycykKICAgICB7CiAgICAgICAgIGVtaXRJbnN0KDB4MDAwMDAwMDQgfCAo
cmQgPDwgT1BfU0hfUkQpIHwgKHJ0IDw8IE9QX1NIX1JUKSB8IChycyA8PCBPUF9TSF9SUykpOwog
ICAgIH0KQEAgLTUyNyw2ICs1MjksMTYgQEAgcHVibGljOgogICAgICAgICBlbWl0SW5zdCgweDQ2
MjAwMDA0IHwgKGZkIDw8IE9QX1NIX0ZEKSB8IChmcyA8PCBPUF9TSF9GUykpOwogICAgIH0KIAor
ICAgIHZvaWQgbW92ZChGUFJlZ2lzdGVySUQgZmQsIEZQUmVnaXN0ZXJJRCBmcykKKyAgICB7Cisg
ICAgICAgIGVtaXRJbnN0KDB4NDYyMDAwMDYgfCAoZmQgPDwgT1BfU0hfRkQpIHwgKGZzIDw8IE9Q
X1NIX0ZTKSk7CisgICAgfQorCisgICAgdm9pZCBuZWdkKEZQUmVnaXN0ZXJJRCBmZCwgRlBSZWdp
c3RlcklEIGZzKQorICAgIHsKKyAgICAgICAgZW1pdEluc3QoMHg0NjIwMDAwNyB8IChmZCA8PCBP
UF9TSF9GRCkgfCAoZnMgPDwgT1BfU0hfRlMpKTsKKyAgICB9CisKICAgICB2b2lkIHRydW5jd2Qo
RlBSZWdpc3RlcklEIGZkLCBGUFJlZ2lzdGVySUQgZnMpCiAgICAgewogICAgICAgICBlbWl0SW5z
dCgweDQ2MjAwMDBkIHwgKGZkIDw8IE9QX1NIX0ZEKSB8IChmcyA8PCBPUF9TSF9GUykpOwpAQCAt
NjE5LDkgKzYzMSwyNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2J1ZmZlci5sYWJlbCgp
OwogICAgIH0KIAorICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsRm9yV2F0Y2hwb2ludCgpCisgICAg
eworICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2J1ZmZlci5sYWJlbCgpOworICAg
ICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpICE9IG1faW5kZXhPZkxh
c3RXYXRjaHBvaW50KQorICAgICAgICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKKyAgICAgICAgbV9p
bmRleE9mTGFzdFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQ7CisgICAgICAgIG1faW5kZXhP
ZlRhaWxPZkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVtcFJlcGxhY2Vt
ZW50U2l6ZSgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIEFzc2VtYmxl
ckxhYmVsIGxhYmVsKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2J1ZmZlci5sYWJlbCgpOwor
ICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2J1ZmZlci5sYWJlbCgpOworICAgICAg
ICB3aGlsZSAoVU5MSUtFTFkoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpIDwgbV9p
bmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQpKSB7CisgICAgICAgICAgICBub3AoKTsKKyAgICAg
ICAgICAgIHJlc3VsdCA9IG1fYnVmZmVyLmxhYmVsKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBBc3NlbWJsZXJMYWJlbCBhbGlnbihpbnQgYWxpZ25t
ZW50KQpAQCAtNjY0LDE0ICs2OTEsMjQgQEAgcHVibGljOgogICAgIC8vIEFzc2VtYmx5IGhlbHBl
cnMgZm9yIG1vdmluZyBkYXRhIGJldHdlZW4gZnAgYW5kIHJlZ2lzdGVycy4KICAgICB2b2lkIHZt
b3YoUmVnaXN0ZXJJRCByZDEsIFJlZ2lzdGVySUQgcmQyLCBGUFJlZ2lzdGVySUQgcm4pCiAgICAg
eworI2lmIFdURl9NSVBTX0lTQV9SRVYoMikgJiYgV1RGX01JUFNfRlA2NAorICAgICAgICBtZmMx
KHJkMSwgcm4pOworICAgICAgICBtZmhjMShyZDIsIHJuKTsKKyNlbHNlCiAgICAgICAgIG1mYzEo
cmQxLCBybik7CiAgICAgICAgIG1mYzEocmQyLCBGUFJlZ2lzdGVySUQocm4gKyAxKSk7CisjZW5k
aWYKICAgICB9CiAKICAgICB2b2lkIHZtb3YoRlBSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJu
MSwgUmVnaXN0ZXJJRCBybjIpCiAgICAgeworI2lmIFdURl9NSVBTX0lTQV9SRVYoMikgJiYgV1RG
X01JUFNfRlA2NAorICAgICAgICBtdGMxKHJuMSwgcmQpOworICAgICAgICBtdGhjMShybjIsIHJk
KTsKKyNlbHNlCiAgICAgICAgIG10YzEocm4xLCByZCk7CiAgICAgICAgIG10YzEocm4yLCBGUFJl
Z2lzdGVySUQocmQgKyAxKSk7CisjZW5kaWYKICAgICB9CiAKICAgICBzdGF0aWMgdW5zaWduZWQg
Z2V0Q2FsbFJldHVybk9mZnNldChBc3NlbWJsZXJMYWJlbCBjYWxsKQpAQCAtNjg4LDYgKzcyNSwz
NSBAQCBwdWJsaWM6CiAgICAgLy8gd3JpdGFibGUgcmVnaW9uIG9mIG1lbW9yeTsgdG8gbW9kaWZ5
IHRoZSBjb2RlIGluIGFuIGV4ZWN1dGUtb25seSBleGVjdWFibGUKICAgICAvLyBwb29sIHRoZSAn
cmVwYXRjaCcgYW5kICdyZWxpbmsnIG1ldGhvZHMgc2hvdWxkIGJlIHVzZWQuCiAKKyAgICBzdGF0
aWMgc2l6ZV90IGxpbmtEaXJlY3RKdW1wKHZvaWQqIGNvZGUsIHZvaWQqIHRvKQorICAgIHsKKyAg
ICAgICAgTUlQU1dvcmQqIGluc24gPSByZWludGVycHJldF9jYXN0PE1JUFNXb3JkKj4ocmVpbnRl
cnByZXRfY2FzdDxpbnRwdHJfdD4oY29kZSkpOworICAgICAgICBzaXplX3Qgb3BzID0gMDsKKyAg
ICAgICAgaW50MzJfdCBzbG90QWRkciA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50PihpbnNuKSArIDQ7
CisgICAgICAgIGludDMyX3QgdG9BZGRyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ+KHRvKTsKKwor
ICAgICAgICBpZiAoKHNsb3RBZGRyICYgMHhmMDAwMDAwMCkgIT0gKHRvQWRkciAmIDB4ZjAwMDAw
MDApKSB7CisgICAgICAgICAgICAvLyBsdWkKKyAgICAgICAgICAgICppbnNuID0gMHgzYzAwMDAw
MCB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SVCkgfCAoKHRvQWRkciA+PiAxNikgJiAw
eGZmZmYpOworICAgICAgICAgICAgKytpbnNuOworICAgICAgICAgICAgLy8gb3JpCisgICAgICAg
ICAgICAqaW5zbiA9IDB4MzQwMDAwMDAgfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlQp
IHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JTKSB8ICh0b0FkZHIgJiAweGZmZmYpOwor
ICAgICAgICAgICAgKytpbnNuOworICAgICAgICAgICAgLy8ganIKKyAgICAgICAgICAgICppbnNu
ID0gMHgwMDAwMDAwOCB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SUyk7CisgICAgICAg
ICAgICArK2luc247CisgICAgICAgICAgICBvcHMgPSA0ICogc2l6ZW9mKE1JUFNXb3JkKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIGoKKyAgICAgICAgICAgICppbnNuID0gMHgw
ODAwMDAwMCB8ICgodG9BZGRyICYgMHgwZmZmZmZmZikgPj4gMik7CisgICAgICAgICAgICArK2lu
c247CisgICAgICAgICAgICBvcHMgPSAyICogc2l6ZW9mKE1JUFNXb3JkKTsKKyAgICAgICAgfQor
ICAgICAgICAvLyBub3AKKyAgICAgICAgKmluc24gPSAweDAwMDAwMDAwOworICAgICAgICByZXR1
cm4gb3BzOworICAgIH0KKwogICAgIHZvaWQgbGlua0p1bXAoQXNzZW1ibGVyTGFiZWwgZnJvbSwg
QXNzZW1ibGVyTGFiZWwgdG8pCiAgICAgewogICAgICAgICBBU1NFUlQodG8uaXNTZXQoKSk7CkBA
IC04MjUsMjkgKzg5MSwzNiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAgICBzdGF0aWMg
dm9pZCByZXZlcnRKdW1wVG9Nb3ZlKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQg
cnQsIGludCBpbW0pCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXpl
KCkKICAgICB7Ci0gICAgICAgIE1JUFNXb3JkKiBpbnNuID0gc3RhdGljX2Nhc3Q8TUlQU1dvcmQq
PihpbnN0cnVjdGlvblN0YXJ0KSArIDE7Ci0gICAgICAgIEFTU0VSVCgoKmluc24gJiAweGZjMDAw
MDAwKSA9PSAweDM0MDAwMDAwKTsKLSAgICAgICAgKmluc24gPSAoKmluc24gJiAweGZjMWYwMDAw
KSB8IChpbW0gJiAweGZmZmYpOwotICAgICAgICBjYWNoZUZsdXNoKGluc24sIHNpemVvZihNSVBT
V29yZCkpOworICAgICAgICByZXR1cm4gc2l6ZW9mKE1JUFNXb3JkKSAqIDQ7CiAgICAgfQogCi0g
ICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIHZv
aWQqIHRvKQorICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBUb01vdmUodm9pZCogaW5zdHJ1Y3Rp
b25TdGFydCwgUmVnaXN0ZXJJRCBydCwgaW50IGltbSkKICAgICB7Ci0gICAgICAgIE1JUFNXb3Jk
KiBpbnN0cnVjdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8TUlQU1dvcmQqPihpbnN0cnVjdGlvblN0
YXJ0KTsKLSAgICAgICAgaW50cHRyX3QganVtcFRvID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJf
dD4odG8pOworICAgICAgICBNSVBTV29yZCogaW5zbiA9IHN0YXRpY19jYXN0PE1JUFNXb3JkKj4o
aW5zdHJ1Y3Rpb25TdGFydCk7CisgICAgICAgIHNpemVfdCBjb2RlU2l6ZSA9IDIgKiBzaXplb2Yo
TUlQU1dvcmQpOwogCiAgICAgICAgIC8vIGx1aQotICAgICAgICBpbnN0cnVjdGlvblswXSA9IDB4
M2MwMDAwMDAgfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlQpIHwgKChqdW1wVG8gPj4g
MTYpICYgMHhmZmZmKTsKKyAgICAgICAgKmluc24gPSAweDNjMDAwMDAwIHwgKHJ0IDw8IE9QX1NI
X1JUKSB8ICgoaW1tID4+IDE2KSAmIDB4ZmZmZik7CisgICAgICAgICsraW5zbjsKICAgICAgICAg
Ly8gb3JpCi0gICAgICAgIGluc3RydWN0aW9uWzFdID0gMHgzNDAwMDAwMCB8IChNSVBTUmVnaXN0
ZXJzOjp0OSA8PCBPUF9TSF9SVCkgfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlMpIHwg
KGp1bXBUbyAmIDB4ZmZmZik7Ci0gICAgICAgIC8vIGpyCi0gICAgICAgIGluc3RydWN0aW9uWzJd
ID0gMHgwMDAwMDAwOCB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SUyk7Ci0gICAgICAg
IC8vIG5vcAotICAgICAgICBpbnN0cnVjdGlvblszXSA9IDB4MDsKKyAgICAgICAgKmluc24gPSAw
eDM0MDAwMDAwIHwgKHJ0IDw8IE9QX1NIX1JTKSB8IChydCA8PCBPUF9TSF9SVCkgfCAoaW1tICYg
MHhmZmZmKTsKKyAgICAgICAgKytpbnNuOworICAgICAgICAvLyBpZiBqciAkdDkKKyAgICAgICAg
aWYgKCppbnNuID09IDB4MDMyMDAwMDgpIHsKKyAgICAgICAgICAgICppbnNuID0gMHgwMDAwMDAw
MDsKKyAgICAgICAgICAgIGNvZGVTaXplICs9IHNpemVvZihNSVBTV29yZCk7CisgICAgICAgIH0K
KyAgICAgICAgY2FjaGVGbHVzaChpbnNuLCBjb2RlU2l6ZSk7CisgICAgfQogCi0gICAgICAgIGNh
Y2hlRmx1c2goaW5zdHJ1Y3Rpb24sIHNpemVvZihNSVBTV29yZCkgKiA0KTsKKyAgICBzdGF0aWMg
dm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCisg
ICAgeworICAgICAgICBBU1NFUlQoIShiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlv
blN0YXJ0KSAmIDMpKTsKKyAgICAgICAgQVNTRVJUKCEoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4o
dG8pICYgMykpOworICAgICAgICBzaXplX3Qgb3BzID0gbGlua0RpcmVjdEp1bXAoaW5zdHJ1Y3Rp
b25TdGFydCwgdG8pOworICAgICAgICBjYWNoZUZsdXNoKGluc3RydWN0aW9uU3RhcnQsIG9wcyk7
CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhMb2FkKHZvaWQqIGluc3RydWN0
aW9uU3RhcnQpCkBAIC0xMDIzLDYgKzEwOTYsOCBAQCBwcml2YXRlOgogCiAgICAgQXNzZW1ibGVy
QnVmZmVyIG1fYnVmZmVyOwogICAgIEp1bXBzIG1fanVtcHM7CisgICAgaW50IG1faW5kZXhPZkxh
c3RXYXRjaHBvaW50OworICAgIGludCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludDsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IDNkNTczNDAuLjJmMjZmZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTIwMCw2
ICsyMDAsMTMgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogICAgIAorI2lmIENQVShNSVBTKQor
ICAgIHZvaWQgcG9rZShGUFJlZ2lzdGVySUQgc3JjLCBpbnQgaW5kZXggPSAwKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKCEoaW5kZXggJiAxKSk7CisgICAgICAgIHN0b3JlRG91YmxlKHNyYywgYWRk
cmVzc0ZvclBva2UoaW5kZXgpKTsKKyAgICB9CisjZW5kaWYKIAogICAgIC8vIEJhY2t3YXJkcyBi
YW5jaGVzLCB0aGVzZSBhcmUgY3VycmVudGx5IGFsbCBpbXBsZW1lbnRlZCB1c2luZyBleGlzdGlu
ZyBmb3J3YXJkcyBicmFuY2ggbWVjaGFuaXNtcy4KICAgICB2b2lkIGJyYW5jaFB0cihSZWxhdGlv
bmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBUcnVzdGVkSW1tUHRyIGltbSwgTGFi
ZWwgdGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlck1JUFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJNSVBTLmgKaW5kZXggMWIxYTEyNy4uYjU5MzgxMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCkBAIC0x
MTQsNiArMTE0LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkdShkZXN0LCBk
ZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgYWRkMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lz
dGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5h
ZGR1KGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0z
MiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGFkZDMyKGltbSwgZGVzdCwg
ZGVzdCk7CkBAIC0yNjcsNiArMjcyLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIu
YW5kSW5zbihkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgYW5kMzIoUmVnaXN0
ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci5hbmRJbnNuKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lk
IGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IGlmICghaW1tLm1fdmFsdWUgJiYgIW1fZml4ZWRXaWR0aCkKQEAgLTI4Myw5ICsyOTMsMTYgQEAg
cHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgdm9pZCBsc2hpZnQzMihUcnVzdGVkSW1t
MzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgdm9pZCBhbmQzMihUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3Nl
bWJsZXIuc2xsKGRlc3QsIGRlc3QsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKCFpbW0ubV92
YWx1ZSAmJiAhbV9maXhlZFdpZHRoKQorICAgICAgICAgICAgbW92ZShNSVBTUmVnaXN0ZXJzOjp6
ZXJvLCBkZXN0KTsKKyAgICAgICAgZWxzZSBpZiAoaW1tLm1fdmFsdWUgPiAwICYmIGltbS5tX3Zh
bHVlIDwgNjU1MzUgJiYgIW1fZml4ZWRXaWR0aCkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFu
ZGkoZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
bW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hbmRJ
bnNuKGRlc3QsIHNyYywgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgfQogICAgIH0KIAogICAg
IHZvaWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQpA
QCAtMjkzLDExICszMTAsMzMgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zbGx2KGRl
c3QsIGRlc3QsIHNoaWZ0QW1vdW50KTsKICAgICB9CiAKKyAgICB2b2lkIGxzaGlmdDMyKFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5zbGx2KGRlc3QsIHNyYywgc2hpZnRBbW91bnQpOworICAg
IH0KKworICAgIHZvaWQgbHNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1f
YXNzZW1ibGVyLnNsbHYoZGVzdCwgZGVzdCwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKKyAg
ICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuc2xsdihkZXN0LCBzcmMsIGltbVRlbXBSZWdpc3Rlcik7CisgICAg
fQorCiAgICAgdm9pZCBtdWwzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgbV9hc3NlbWJsZXIubXVsKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisg
ICAgdm9pZCBtdWwzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm11bChkZXN0LCBvcDEsIG9wMik7Cisg
ICAgfQorCiAgICAgdm9pZCBtdWwzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSAmJiAhbV9m
aXhlZFdpZHRoKQpAQCAtMzQ4LDYgKzM4NywyNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1i
bGVyLm9ySW5zbihkZXN0LCBkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKKyAgICB2
b2lkIG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIGlmICghaW1tLm1fdmFsdWUgJiYgIW1fZml4ZWRXaWR0aCkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPiAwICYmIGltbS5t
X3ZhbHVlIDwgNjU1MzUgJiYgIW1fZml4ZWRXaWR0aCkgeworICAgICAgICAgICAgbV9hc3NlbWJs
ZXIub3JpKGRlc3QsIHNyYywgaW1tLm1fdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICAgIGxpICAgICAgZGF0YVRlbXAsIGltbQor
ICAgICAgICAgICAgb3IgICAgICBkZXN0LCBzcmMsIGRhdGFUZW1wCisgICAgICAgICovCisgICAg
ICAgIG1vdmUoaW1tLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JJ
bnNuKGRlc3QsIHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgfQorCiAgICAgdm9pZCBvcjMy
KFJlZ2lzdGVySUQgc3JjLCBBYnNvbHV0ZUFkZHJlc3MgZGVzdCkKICAgICB7CiAgICAgICAgIGxv
YWQzMihkZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKQEAgLTM2MCw2ICs0MTcsMTEgQEAg
cHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zcmF2KGRlc3QsIGRlc3QsIHNoaWZ0QW1vdW50
KTsKICAgICB9CiAKKyAgICB2b2lkIHJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5zcmF2KGRlc3QsIHNyYywgc2hpZnRBbW91bnQpOworICAgIH0KKwogICAgIHZvaWQgcnNoaWZ0
MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9h
c3NlbWJsZXIuc3JhKGRlc3QsIGRlc3QsIGltbS5tX3ZhbHVlKTsKQEAgLTM3NSwxNiArNDM3LDMx
IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3JsdihkZXN0LCBkZXN0LCBzaGlmdEFt
b3VudCk7CiAgICAgfQogCisgICAgdm9pZCB1cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLnNybHYoZGVzdCwgc3JjLCBzaGlmdEFtb3VudCk7CisgICAgfQorCiAgICAgdm9pZCB1
cnNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAg
ICAgbV9hc3NlbWJsZXIuc3JsKGRlc3QsIGRlc3QsIGltbS5tX3ZhbHVlKTsKICAgICB9CiAKKyAg
ICB2b2lkIHVyc2hpZnQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3JsKGRlc3QsIHNyYywgaW1t
Lm1fdmFsdWUpOworICAgIH0KKwogICAgIHZvaWQgc3ViMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnUoZGVzdCwgZGVzdCwg
c3JjKTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklE
IG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VidShk
ZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPj0gLTMy
NzY3ICYmIGltbS5tX3ZhbHVlIDw9IDMyNzY4CkBAIC00OTUsNiArNTcyLDExIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAor
ICAgIHZvaWQgeG9yMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIG9wMSwgb3Ay
KTsKKyAgICB9CisKICAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkgewpAQCAtNTEwLDYg
KzU5MiwyMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oZGVzdCwgZGVz
dCwgaW1tVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKKyAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0z
MiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBp
ZiAoaW1tLm1fdmFsdWUgPT0gLTEpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcihkZXN0
LCBzcmMsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICAgIGxpICBpbW1UZW1wLCBpbW0KKyAgICAgICAg
ICAgIHhvciBkZXN0LCBkZXN0LCBpbW1UZW1wCisgICAgICAgICovCisgICAgICAgIG1vdmUoaW1t
LCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIHNy
YywgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKICAgICB2b2lkIHNxcnREb3VibGUoRlBSZWdp
c3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVy
LnNxcnRkKGRzdCwgc3JjKTsKQEAgLTk4OSw2ICsxMDg2LDQ0IEBAIHB1YmxpYzoKICAgICAgICAg
fQogICAgIH0KIAorICAgIHZvaWQgc3RvcmUzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXgg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIGlmIChhZGRyZXNzLm9mZnNldCA+PSAtMzI3NjggJiYg
YWRkcmVzcy5vZmZzZXQgPD0gMzI3NjcgJiYgIW1fZml4ZWRXaWR0aCkgeworICAgICAgICAgICAg
LyoKKyAgICAgICAgICAgICAgICBzbGwgICAgIGFkZHJUZW1wLCBhZGRyZXNzLmluZGV4LCBhZGRy
ZXNzLnNjYWxlCisgICAgICAgICAgICAgICAgYWRkdSAgICBhZGRyVGVtcCwgYWRkclRlbXAsIGFk
ZHJlc3MuYmFzZQorICAgICAgICAgICAgICAgIHN3ICAgICAgc3JjLCBhZGRyZXNzLm9mZnNldChh
ZGRyVGVtcCkKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbGwoYWRk
clRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5hZGR1KGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFk
ZHJlc3MuYmFzZSk7CisgICAgICAgICAgICBpZiAoIWltbS5tX3ZhbHVlKQorICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnN3KE1JUFNSZWdpc3RlcnM6Onplcm8sIGFkZHJUZW1wUmVnaXN0ZXIs
IGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG1v
dmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN3
KGltbVRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5vZmZzZXQpOworICAg
ICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAg
ICAgICBzbGwgICAgIGFkZHJUZW1wLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlCisgICAg
ICAgICAgICAgICAgYWRkdSAgICBhZGRyVGVtcCwgYWRkclRlbXAsIGFkZHJlc3MuYmFzZQorICAg
ICAgICAgICAgICAgIGx1aSAgICAgaW1tVGVtcCwgKGFkZHJlc3Mub2Zmc2V0ICsgMHg4MDAwKSA+
PiAxNgorICAgICAgICAgICAgICAgIGFkZHUgICAgYWRkclRlbXAsIGFkZHJUZW1wLCBpbW1UZW1w
CisgICAgICAgICAgICAgICAgc3cgICAgICBzcmMsIChhZGRyZXNzLm9mZnNldCAmIDB4ZmZmZiko
YXQpCisgICAgICAgICAgICAqLworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2xsKGFkZHJUZW1w
UmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgbV9h
c3NlbWJsZXIuYWRkdShhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNz
LmJhc2UpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubHVpKGltbVRlbXBSZWdpc3RlciwgKGFk
ZHJlc3Mub2Zmc2V0ICsgMHg4MDAwKSA+PiAxNik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5h
ZGR1KGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7
CisgICAgICAgICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCisgICAgICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuc3coTUlQU1JlZ2lzdGVyczo6emVybywgYWRkclRlbXBSZWdp
c3RlciwgYWRkcmVzcy5vZmZzZXQpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAg
ICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuc3coaW1tVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm9mZnNldCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKwogICAgIHZvaWQgc3RvcmUzMihS
ZWdpc3RlcklEIHNyYywgY29uc3Qgdm9pZCogYWRkcmVzcykKICAgICB7CiAgICAgICAgIC8qCkBA
IC0xMzM2LDYgKzE0NzEsMTUgQEAgcHVibGljOgogICAgICAgICBtX2ZpeGVkV2lkdGggPSBmYWxz
ZTsKICAgICB9CiAKKyAgICB2b2lkIGp1bXAoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBtX2ZpeGVkV2lkdGggPSB0cnVlOworICAgICAgICBsb2FkMzIoYWRkcmVzcy5t
X3B0ciwgTUlQU1JlZ2lzdGVyczo6dDkpOworICAgICAgICBtX2Fzc2VtYmxlci5qcihNSVBTUmVn
aXN0ZXJzOjp0OSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICBtX2ZpeGVk
V2lkdGggPSBmYWxzZTsKKyAgICB9CisKICAgICB2b2lkIG1vdmVEb3VibGVUb0ludHMoRlBSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKICAgICB7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLnZtb3YoZGVzdDEsIGRlc3QyLCBzcmMpOwpAQCAtMTQwNCw2ICsx
NTQ4LDUzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEp1bXAoKTsKICAgICB9CiAKKyAgICBK
dW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwgUmVn
aXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgoY29u
ZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAo
Y29uZCA9PSBOb25aZXJvKSk7CisgICAgICAgIGlmIChjb25kID09IE92ZXJmbG93KSB7CisgICAg
ICAgICAgICAvKgorICAgICAgICAgICAgICAgIG1vdmUgICAgZGF0YVRlbXAsIG9wMQorICAgICAg
ICAgICAgICAgIHhvciAgICAgY21wVGVtcCwgZGF0YVRlbXAsIG9wMgorICAgICAgICAgICAgICAg
IGJsdHogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBkaWZmIHNpZ24gYml0IC0+IG5vIG92
ZXJmbG93CisgICAgICAgICAgICAgICAgYWRkdSAgICBkZXN0LCBkYXRhVGVtcCwgb3AyCisgICAg
ICAgICAgICAgICAgeG9yICAgICBjbXBUZW1wLCBkZXN0LCBkYXRhVGVtcAorICAgICAgICAgICAg
ICAgIGJnZXogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24gYmlnIC0+IG5v
IG92ZXJmbG93CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgYiAgICAgICBP
dmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAg
ICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAor
ICAgICAgICAgICAgTm9fb3ZlcmZsb3c6CisgICAgICAgICAgICAqLworICAgICAgICAgICAgbW92
ZShvcDEsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5z
bihjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7CisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5ibHR6KGNtcFRlbXBSZWdpc3RlciwgMTApOworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuYWRkdShkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyLCBvcDIpOworICAgICAgICAgICAgbV9h
c3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIp
OworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDcpOworICAg
ICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICByZXR1cm4ganVtcCgpOwor
ICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IFNpZ25lZCkgeworICAgICAgICAgICAgYWRk
MzIob3AxLCBvcDIsIGRlc3QpOworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdh
dGl2ZS4KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIsIGRlc3Qs
IE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFs
KGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKGNvbmQgPT0gWmVybykgeworICAgICAgICAgICAgYWRkMzIob3AxLCBvcDIsIGRlc3Qp
OworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onpl
cm8pOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IE5vblplcm8pIHsKKyAgICAgICAg
ICAgIGFkZDMyKG9wMSwgb3AyLCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RF
cXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBBU1NF
UlQoMCk7CisgICAgICAgIHJldHVybiBKdW1wKCk7CisgICAgfQorCiAgICAgSnVtcCBicmFuY2hB
ZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CkBAIC0xNDE3
LDYgKzE2MDgsMTExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaEFkZDMyKGNvbmQs
IGltbVRlbXBSZWdpc3RlciwgZGVzdCk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2hBZGQzMihS
ZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGRl
c3QpCisgICAgeworICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09
IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOworICAgICAg
ICBpZiAoY29uZCA9PSBPdmVyZmxvdykgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAg
ICBtb3ZlICAgIGRhdGFUZW1wLCBkZXN0CisgICAgICAgICAgICAgICAgeG9yaSAgICBjbXBUZW1w
LCBkYXRhVGVtcCwgaW1tCisgICAgICAgICAgICAgICAgYmx0eiAgICBjbXBUZW1wLCBOb19vdmVy
ZmxvdyAgICAjIGRpZmYgc2lnbiBiaXQgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBh
ZGRpdSAgIGRhdGFUZW1wLCBkYXRhVGVtcCwgaW1tCisgICAgICAgICAgICAgICAgbW92ZSAgICBk
ZXN0LCBkYXRhVGVtcAorICAgICAgICAgICAgICAgIHhvcmkgICAgY21wVGVtcCwgZGF0YVRlbXAs
IGltbQorICAgICAgICAgICAgICAgIGJnZXogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBz
YW1lIHNpZ24gYmlnIC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAg
ICAgICAgICAgYiAgICAgICBPdmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAg
ICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAg
ICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgTm9fb3ZlcmZsb3c6CisgICAgICAgICAgICAq
LworICAgICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID49IC0zMjc2OCAmJiBpbW0ubV92YWx1ZSAg
PD0gMzI3NjcgJiYgIW1fZml4ZWRXaWR0aCkgeworICAgICAgICAgICAgICAgIGxvYWQzMihkZXN0
Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54
b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1fdmFsdWUpOworICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxMCk7CisgICAg
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkaXUoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBS
ZWdpc3RlciwgaW1tLm1fdmFsdWUpOworICAgICAgICAgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBS
ZWdpc3RlciwgZGVzdC5tX3B0cik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yaShj
bXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7CisgICAgICAgICAg
ICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGxvYWQzMihkZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAg
ICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJl
Z2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRlbXBSZWdpc3Rl
ciwgMTApOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGl1KGRhdGFUZW1wUmVnaXN0
ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAg
c3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0Lm1fcHRyKTsKKyAgICAgICAgICAgICAgICBt
X2Fzc2VtYmxlci54b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVt
cFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdp
c3RlciwgNyk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICByZXR1cm4ganVtcCgpOworICAgICAgICB9CisgICAgICAgIG1vdmUo
aW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICBsb2FkMzIoZGVzdC5tX3B0ciwgZGF0YVRl
bXBSZWdpc3Rlcik7CisgICAgICAgIGFkZDMyKGltbVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdp
c3Rlcik7CisgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdC5tX3B0cik7Cisg
ICAgICAgIGlmIChjb25kID09IFNpZ25lZCkgeworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVz
dCBpcyBuZWdhdGl2ZS4KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0
ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVy
byk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gWmVybykKKyAgICAgICAgICAgIHJl
dHVybiBicmFuY2hFcXVhbChkYXRhVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsK
KyAgICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hO
b3RFcXVhbChkYXRhVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAg
QVNTRVJUKDApOworICAgICAgICByZXR1cm4gSnVtcCgpOworICAgIH0KKworICAgIEp1bXAgYnJh
bmNoTXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJ
RCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoKGNvbmQgPT0g
T3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQg
PT0gTm9uWmVybykpOworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgeworICAgICAgICAg
ICAgLyoKKyAgICAgICAgICAgICAgICBtdWx0ICAgIHNyYywgZGVzdAorICAgICAgICAgICAgICAg
IG1maGkgICAgZGF0YVRlbXAKKyAgICAgICAgICAgICAgICBtZmxvICAgIGRlc3QKKyAgICAgICAg
ICAgICAgICBzcmEgICAgIGFkZHJUZW1wLCBkZXN0LCAzMQorICAgICAgICAgICAgICAgIGJlcSAg
ICAgZGF0YVRlbXAsIGFkZHJUZW1wLCBOb19vdmVyZmxvdyAjIGFsbCBzaWduIGJpdHMgKGJpdCA2
MyB0byBiaXQgMzEpIGFyZSB0aGUgc2FtZSAtPiBubyBvdmVyZmxvdworICAgICAgICAgICAgICAg
IG5vcAorICAgICAgICAgICAgICAgIGIgICAgICAgT3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBu
b3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAg
ICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgIE5vX292ZXJmbG93Ogor
ICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm11bHQoc3JjMSwgc3JjMik7
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tZmhpKGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAg
ICAgICAgbV9hc3NlbWJsZXIubWZsbyhkZXN0KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNy
YShhZGRyVGVtcFJlZ2lzdGVyLCBkZXN0LCAzMSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5i
ZXEoZGF0YVRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgNyk7CisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAgIHJldHVybiBqdW1wKCk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7CisgICAgICAgICAgICBtdWwzMihzcmMxLCBz
cmMyLCBkZXN0KTsKKyAgICAgICAgICAgIC8vIENoZWNrIGlmIGRlc3QgaXMgbmVnYXRpdmUuCisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHQoY21wVGVtcFJlZ2lzdGVyLCBkZXN0LCBNSVBTUmVn
aXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChjbXBUZW1w
UmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIGlmIChj
b25kID09IFplcm8pIHsKKyAgICAgICAgICAgIG11bDMyKHNyYzEsIHNyYzIsIGRlc3QpOworICAg
ICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOwor
ICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IE5vblplcm8pIHsKKyAgICAgICAgICAgIG11
bDMyKHNyYzEsIHNyYzIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFs
KGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIEFTU0VSVCgw
KTsKKyAgICAgICAgcmV0dXJuIEp1bXAoKTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaE11bDMy
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWdu
ZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKQEAgLTE0NjUsOCAr
MTc2MSw3IEBAIHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENvbmRpdGlvbiBj
b25kLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1vdmUo
c3JjLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMyKGNvbmQsIGltbVRlbXBSZWdp
c3RlciwgZGVzdCk7CisgICAgICAgIHJldHVybiBicmFuY2hNdWwzMihjb25kLCBpbW1UZW1wUmVn
aXN0ZXIsIHNyYywgZGVzdCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRD
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTE1MjUs
OCArMTgyMCw2MCBAQCBwdWJsaWM6CiAgICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICBt
b3ZlKHNyYywgZGVzdCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hTdWIzMihjb25kLCBpbW1UZW1w
UmVnaXN0ZXIsIGRlc3QpOworICAgICAgICByZXR1cm4gYnJhbmNoU3ViMzIoY29uZCwgc3JjLCBp
bW1UZW1wUmVnaXN0ZXIsIGRlc3QpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVz
dWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAo
Y29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsK
KyAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAg
ICAgICAgICAgbW92ZSAgICBkYXRhVGVtcCwgb3AxCisgICAgICAgICAgICAgICAgeG9yICAgICBj
bXBUZW1wLCBkYXRhVGVtcCwgb3AyCisgICAgICAgICAgICAgICAgYmdleiAgICBjbXBUZW1wLCBO
b19vdmVyZmxvdyAgICAjIHNhbWUgc2lnbiBiaXQgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAg
ICAgICBzdWJ1ICAgIGRlc3QsIGRhdGFUZW1wLCBvcDIKKyAgICAgICAgICAgICAgICB4b3IgICAg
IGNtcFRlbXAsIGRlc3QsIGRhdGFUZW1wCisgICAgICAgICAgICAgICAgYmdleiAgICBjbXBUZW1w
LCBOb19vdmVyZmxvdyAgICAjIHNhbWUgc2lnbiBiaXQgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAg
ICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBiICAgICAgIE92ZXJmbG93CisgICAgICAgICAg
ICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAg
ICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICBOb19vdmVy
ZmxvdzoKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBtb3ZlKG9wMSwgZGF0YVRlbXBSZWdp
c3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3Rlciwg
ZGF0YVRlbXBSZWdpc3Rlciwgb3AyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21w
VGVtcFJlZ2lzdGVyLCAxMCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJ1KGRlc3QsIGRh
dGFUZW1wUmVnaXN0ZXIsIG9wMik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNt
cFRlbXBSZWdpc3RlciwgZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fz
c2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7CisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5ub3AoKTsKKyAgICAgICAgICAgIHJldHVybiBqdW1wKCk7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGNvbmQgPT0gU2lnbmVkKSB7CisgICAgICAgICAgICBzdWIzMihvcDEsIG9wMiwgZGVzdCk7
CisgICAgICAgICAgICAvLyBDaGVjayBpZiBkZXN0IGlzIG5lZ2F0aXZlLgorICAgICAgICAgICAg
bV9hc3NlbWJsZXIuc2x0KGNtcFRlbXBSZWdpc3RlciwgZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVy
byk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwoY21wVGVtcFJlZ2lzdGVyLCBN
SVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBaZXJv
KSB7CisgICAgICAgICAgICBzdWIzMihvcDEsIG9wMiwgZGVzdCk7CisgICAgICAgICAgICByZXR1
cm4gYnJhbmNoRXF1YWwoZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykgeworICAgICAgICAgICAgc3ViMzIob3AxLCBvcDIs
IGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGRlc3QsIE1JUFNSZWdp
c3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIEFTU0VSVCgwKTsKKyAgICAgICAgcmV0
dXJuIEp1bXAoKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaE5lZzMyKFJlc3VsdENvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIHNyY0Rlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5s
aShkYXRhVGVtcFJlZ2lzdGVyLCAtMSk7CisgICAgICAgIHJldHVybiBicmFuY2hNdWwzMihjb25k
LCBkYXRhVGVtcFJlZ2lzdGVyLCBzcmNEZXN0KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaE9y
MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CkBAIC0xNTc4LDcgKzE5MjUsOCBAQCBwdWJsaWM6CiAKICAgICBDYWxsIGNhbGwoUmVnaXN0ZXJJ
RCB0YXJnZXQpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5qYWxyKHRhcmdldCk7CisgICAg
ICAgIG1vdmUodGFyZ2V0LCBNSVBTUmVnaXN0ZXJzOjp0OSk7CisgICAgICAgIG1fYXNzZW1ibGVy
LmphbHIoTUlQU1JlZ2lzdGVyczo6dDkpOwogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAg
ICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIubGFiZWwoKSwgQ2FsbDo6Tm9uZSk7CiAgICAg
fQpAQCAtMTgyMiw3ICsyMTcwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGx1aSAgICAg
aW1tVGVtcCwgKGFkZHJlc3Mub2Zmc2V0ICsgMHg4MDAwKSA+PiAxNgogICAgICAgICAgICAgICAg
IGFkZHUgICAgYWRkclRlbXAsIGFkZHJUZW1wLCBpbW1UZW1wCiAgICAgICAgICAgICAgICAgbHdj
MSAgICBkZXN0LCAoYWRkcmVzcy5vZmZzZXQgJiAweGZmZmYpKGF0KQotICAgICAgICAgICAgICAg
IGx3YzEgICAgZGVzdCs0LCAoYWRkcmVzcy5vZmZzZXQgJiAweGZmZmYgKyA0KShhdCkKKyAgICAg
ICAgICAgICAgICBsd2MxICAgIGRlc3QrMSwgKGFkZHJlc3Mub2Zmc2V0ICYgMHhmZmZmICsgNCko
YXQpCiAgICAgICAgICAgICAqLwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2xsKGFkZHJUZW1w
UmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICAgICAgbV9h
c3NlbWJsZXIuYWRkdShhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNz
LmJhc2UpOwpAQCAtMjAwOSw2ICsyMzU3LDE5IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAor
ICAgIHZvaWQgbW92ZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIGlmIChzcmMgIT0gZGVzdCB8fCBtX2ZpeGVkV2lkdGgpCisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5tb3ZkKGRlc3QsIHNyYyk7CisgICAgfQorCisgICAgdm9pZCBzd2Fw
RG91YmxlKEZQUmVnaXN0ZXJJRCBmcjEsIEZQUmVnaXN0ZXJJRCBmcjIpCisgICAgeworICAgICAg
ICBtb3ZlRG91YmxlKGZyMSwgZnBUZW1wUmVnaXN0ZXIpOworICAgICAgICBtb3ZlRG91YmxlKGZy
MiwgZnIxKTsKKyAgICAgICAgbW92ZURvdWJsZShmcFRlbXBSZWdpc3RlciwgZnIyKTsKKyAgICB9
CisKICAgICB2b2lkIGFkZERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGQoZGVzdCwgZGVzdCwgc3JjKTsKQEAg
LTIwMzYsNiArMjM5NywxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YmQoZGVz
dCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIHN1YkRvdWJsZShGUFJlZ2lzdGVySUQg
b3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLnN1YmQoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgc3Vi
RG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGxv
YWREb3VibGUoc3JjLCBmcFRlbXBSZWdpc3Rlcik7CkBAIC0yMDUzLDExICsyNDE5LDMyIEBAIHB1
YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubXVsZChkZXN0LCBkZXN0LCBmcFRlbXBSZWdpc3Rl
cik7CiAgICAgfQogCisgICAgdm9pZCBtdWxEb3VibGUoRlBSZWdpc3RlcklEIG9wMSwgRlBSZWdp
c3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5tdWxkKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIGRpdkRvdWJsZShGUFJl
Z2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1i
bGVyLmRpdmQoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIGRpdkRvdWJsZShG
UFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmRpdmQoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwor
ICAgIHZvaWQgZGl2RG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIGxvYWREb3VibGUoc3JjLCBmcFRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmRpdmQoZGVzdCwgZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOworICAgIH0KKworICAgIHZv
aWQgbmVnYXRlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVnZChkZXN0LCBzcmMpOworICAgIH0KKwogICAgIHZv
aWQgY29udmVydEludDMyVG9Eb3VibGUoUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubXRjMShzcmMsIGZwVGVtcFJlZ2lzdGVyKTsK
QEAgLTIxMTcsNiArMjUwNCw4IEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoRXF1YWwoUmVn
aXN0ZXJJRCBycywgUmVnaXN0ZXJJRCBydCkKICAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5v
cCgpOworICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICAgICAgbV9hc3NlbWJsZXIuYXBw
ZW5kSnVtcCgpOwogICAgICAgICBtX2Fzc2VtYmxlci5iZXEocnMsIHJ0LCAwKTsKICAgICAgICAg
bV9hc3NlbWJsZXIubm9wKCk7CkBAIC0yMTI2LDYgKzI1MTUsOCBAQCBwdWJsaWM6CiAKICAgICBK
dW1wIGJyYW5jaE5vdEVxdWFsKFJlZ2lzdGVySUQgcnMsIFJlZ2lzdGVySUQgcnQpCiAgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLmFwcGVuZEp1bXAoKTsKICAgICAgICAgbV9hc3NlbWJsZXIuYm5l
KHJzLCBydCwgMCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwpAQCAtMjE5MiwxMSArMjU4
MywzMyBAQCBwdWJsaWM6CiAgICAgLy8gSWYgdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50YWJs
ZSBhcyBhIDMyIGJpdCB2YWx1ZSwgYnJhbmNoLgogICAgIC8vIE1heSBhbHNvIGJyYW5jaCBmb3Ig
c29tZSB2YWx1ZXMgdGhhdCBhcmUgcmVwcmVzZW50YWJsZSBpbiAzMiBiaXRzCiAgICAgLy8gKHNw
ZWNpZmljYWxseSwgaW4gdGhpcyBjYXNlLCBJTlRfTUFYIDB4N2ZmZmZmZmYpLgotICAgIEp1bXAg
YnJhbmNoVHJ1bmNhdGVEb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICBlbnVtIEJyYW5jaFRydW5jYXRlVHlwZSB7IEJyYW5jaElmVHJ1bmNhdGVGYWls
ZWQsIEJyYW5jaElmVHJ1bmNhdGVTdWNjZXNzZnVsIH07CisgICAgSnVtcCBicmFuY2hUcnVuY2F0
ZURvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBCcmFuY2hU
cnVuY2F0ZVR5cGUgYnJhbmNoVHlwZSA9IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci50cnVuY3dkKGZwVGVtcFJlZ2lzdGVyLCBzcmMpOworICAgICAg
ICBtX2Fzc2VtYmxlci5tZmMxKGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaDMyKGJyYW5jaFR5cGUgPT0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCA/IEVxdWFsIDog
Tm90RXF1YWwsIGRlc3QsIFRydXN0ZWRJbW0zMigweDdmZmZmZmZmKSk7CisgICAgfQorCisgICAg
SnVtcCBicmFuY2hUcnVuY2F0ZURvdWJsZVRvVWludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCwgQnJhbmNoVHJ1bmNhdGVUeXBlIGJyYW5jaFR5cGUgPSBCcmFuY2hJZlRydW5j
YXRlRmFpbGVkKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudHJ1bmN3ZChmcFRlbXBSZWdp
c3Rlciwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubWZjMShkZXN0LCBmcFRlbXBSZWdpc3Rl
cik7CisgICAgICAgIHJldHVybiBicmFuY2gzMihicmFuY2hUeXBlID09IEJyYW5jaElmVHJ1bmNh
dGVGYWlsZWQgPyBFcXVhbCA6IE5vdEVxdWFsLCBkZXN0LCBUcnVzdGVkSW1tMzIoMCkpOworICAg
IH0KKworICAgIC8vIFJlc3VsdCBpcyB1bmRlZmluZWQgaWYgdGhlIHZhbHVlIGlzIG91dHNpZGUg
b2YgdGhlIGludGVnZXIgcmFuZ2UuCisgICAgdm9pZCB0cnVuY2F0ZURvdWJsZVRvSW50MzIoRlBS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIudHJ1bmN3ZChmcFRlbXBSZWdpc3Rlciwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubWZj
MShkZXN0LCBmcFRlbXBSZWdpc3Rlcik7CisgICAgfQorCisgICAgLy8gUmVzdWx0IGlzIHVuZGVm
aW5lZCBpZiBzcmMgPiAyXjMxCisgICAgdm9pZCB0cnVuY2F0ZURvdWJsZVRvVWludDMyKEZQUmVn
aXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVy
LnRydW5jd2QoZnBUZW1wUmVnaXN0ZXIsIHNyYyk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1mYzEo
ZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoRXF1YWwsIGRl
c3QsIFRydXN0ZWRJbW0zMigweDdmZmZmZmZmKSk7CiAgICAgfQogCiAgICAgLy8gQ29udmVydCAn
c3JjJyB0byBhbiBpbnRlZ2VyLCBhbmQgcGxhY2VzIHRoZSByZXN1bHRpbmcgJ2Rlc3QnLgpAQCAt
MjIxOCwyOCArMjYzMSw0MyBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaERvdWJsZU5vblpl
cm8oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpCiAgICAgewotI2lmIFdU
Rl9NSVBTX0lTQV9SRVYoMikgJiYgV1RGX01JUFNfRlA2NAotICAgICAgICBtX2Fzc2VtYmxlci5t
dGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0Y2gpOwotICAgICAgICBtX2Fzc2VtYmxlci5t
dGhjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzY3JhdGNoKTsKLSNlbHNlCi0gICAgICAgIG1fYXNz
ZW1ibGVyLm10YzEoTUlQU1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7Ci0gICAgICAgIG1fYXNz
ZW1ibGVyLm10YzEoTUlQU1JlZ2lzdGVyczo6emVybywgRlBSZWdpc3RlcklEKHNjcmF0Y2ggKyAx
KSk7Ci0jZW5kaWYKKyAgICAgICAgbV9hc3NlbWJsZXIudm1vdihzY3JhdGNoLCBNSVBTUmVnaXN0
ZXJzOjp6ZXJvLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaERv
dWJsZShEb3VibGVOb3RFcXVhbCwgcmVnLCBzY3JhdGNoKTsKICAgICB9CiAKICAgICBKdW1wIGJy
YW5jaERvdWJsZVplcm9Pck5hTihGUFJlZ2lzdGVySUQgcmVnLCBGUFJlZ2lzdGVySUQgc2NyYXRj
aCkKICAgICB7Ci0jaWYgV1RGX01JUFNfSVNBX1JFVigyKSAmJiBXVEZfTUlQU19GUDY0Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQU1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLm10aGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0Y2gpOwotI2Vs
c2UKLSAgICAgICAgbV9hc3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzY3JhdGNo
KTsKLSAgICAgICAgbV9hc3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBGUFJlZ2lz
dGVySUQoc2NyYXRjaCArIDEpKTsKLSNlbmRpZgorICAgICAgICBtX2Fzc2VtYmxlci52bW92KHNj
cmF0Y2gsIE1JUFNSZWdpc3RlcnM6Onplcm8sIE1JUFNSZWdpc3RlcnM6Onplcm8pOwogICAgICAg
ICByZXR1cm4gYnJhbmNoRG91YmxlKERvdWJsZUVxdWFsT3JVbm9yZGVyZWQsIHJlZywgc2NyYXRj
aCk7CiAgICAgfQogCisgICAgLy8gSW52ZXJ0IGEgcmVsYXRpb25hbCBjb25kaXRpb24sIGUuZy4g
PT0gYmVjb21lcyAhPSwgPCBiZWNvbWVzID49LCBldGMuCisgICAgc3RhdGljIFJlbGF0aW9uYWxD
b25kaXRpb24gaW52ZXJ0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKKyAgICB7CisgICAgICAg
IFJlbGF0aW9uYWxDb25kaXRpb24gcjsKKyAgICAgICAgaWYgKGNvbmQgPT0gRXF1YWwpCisgICAg
ICAgICAgICByID0gTm90RXF1YWw7CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gTm90RXF1YWwp
CisgICAgICAgICAgICByID0gRXF1YWw7CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gQWJvdmUp
CisgICAgICAgICAgICByID0gQmVsb3dPckVxdWFsOworICAgICAgICBlbHNlIGlmIChjb25kID09
IEFib3ZlT3JFcXVhbCkKKyAgICAgICAgICAgIHIgPSBCZWxvdzsKKyAgICAgICAgZWxzZSBpZiAo
Y29uZCA9PSBCZWxvdykKKyAgICAgICAgICAgIHIgPSBBYm92ZU9yRXF1YWw7CisgICAgICAgIGVs
c2UgaWYgKGNvbmQgPT0gQmVsb3dPckVxdWFsKQorICAgICAgICAgICAgciA9IEFib3ZlOworICAg
ICAgICBlbHNlIGlmIChjb25kID09IEdyZWF0ZXJUaGFuKQorICAgICAgICAgICAgciA9IExlc3NU
aGFuT3JFcXVhbDsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBHcmVhdGVyVGhhbk9yRXF1YWwp
CisgICAgICAgICAgICByID0gTGVzc1RoYW47CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gTGVz
c1RoYW4pCisgICAgICAgICAgICByID0gR3JlYXRlclRoYW5PckVxdWFsOworICAgICAgICBlbHNl
IGlmIChjb25kID09IExlc3NUaGFuT3JFcXVhbCkKKyAgICAgICAgICAgIHIgPSBHcmVhdGVyVGhh
bjsKKyAgICAgICAgcmV0dXJuIHI7CisgICAgfQorCiAgICAgdm9pZCBub3AoKQogICAgIHsKICAg
ICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CkBAIC0yMjUyLDEyICsyNjgwLDEyIEBAIHB1YmxpYzoK
IAogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0
cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKICAgICB7Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBNSVBTQXNzZW1ibGVyOjpyZXBsYWNl
V2l0aEp1bXAoaW5zdHJ1Y3Rpb25TdGFydC5kYXRhTG9jYXRpb24oKSwgZGVzdGluYXRpb24uZGF0
YUxvY2F0aW9uKCkpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBS
ZXBsYWNlbWVudFNpemUoKQogICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIE1JUFNBc3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVudFNpemUoKTsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fzc2VtYmx5SGVscGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3Nl
bWJseUhlbHBlcnMuaAppbmRleCAxNGVhYTQ1Li5kMzljMmZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTkzLDYgKzkzLDIzIEBAIHB1
YmxpYzoKICAgICB9CiAjZW5kaWYKIAorI2lmIENQVShNSVBTKQorICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoUmVnaXN0ZXJJRCByZWcpCisgICAg
eworICAgICAgICBtb3ZlKHJldHVybkFkZHJlc3NSZWdpc3RlciwgcmVnKTsKKyAgICB9CisKKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oUmVn
aXN0ZXJJRCByZWcpCisgICAgeworICAgICAgICBtb3ZlKHJlZywgcmV0dXJuQWRkcmVzc1JlZ2lz
dGVyKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9yZVJldHVybkFkZHJl
c3NCZWZvcmVSZXR1cm4oQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbG9hZFB0cihh
ZGRyZXNzLCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOworICAgIH0KKyNlbmRpZgorCiAgICAgdm9p
ZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJF
bnRyeSBlbnRyeSwgR1BSUmVnIHRvKQogICAgIHsKICAgICAgICAgbG9hZFB0cihBZGRyZXNzKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBlbnRyeSAqIHNpemVvZihSZWdpc3RlcikpLCB0byk7
CkBAIC0xOTMsNyArMjEwLDcgQEAgcHVibGljOgogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIo
c2NyYXRjaEJ1ZmZlci0+YWN0aXZlTGVuZ3RoUHRyKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAg
ICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIoc2NyYXRjaFNpemUpLCBHUFJJbmZvOjpyZWdUMCk7
CiAKLSNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNKQorI2lmIENQVShYODZfNjQpIHx8IENQVShB
Uk0pIHx8IENQVShNSVBTKQogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYXJndW1lbnQpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOwogICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwogICAgICAgICBHUFJSZWcgc2NyYXRjaCA9
IHNlbGVjdFNjcmF0Y2hHUFIoR1BSSW5mbzo6YXJndW1lbnRHUFIwLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhl
bHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgKaW5k
ZXggOGFkZGUwNS4uM2Q5OWY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDQ2FsbEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ND
YWxsSGVscGVycy5oCkBAIC01NzYsNiArNTc2LDM5IEBAIHB1YmxpYzoKICAgICAgICAgcG9rZShH
UFJJbmZvOjpub25BcmdHUFIwKTsKICAgICB9CiAjZW5kaWYgLy8gQ1BVKEFSTV9IQVJERlApCisj
ZWxpZiBDUFUoTUlQUykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBS
UmVnIGFyZzEpCisgICAgeworICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3Vt
ZW50RlBSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
KEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIGlmIChhcmcyICE9IEZQ
UkluZm86OmFyZ3VtZW50RlBSMCkgeworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJ
bmZvOjphcmd1bWVudEZQUjApOworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZv
Ojphcmd1bWVudEZQUjEpOworICAgICAgICB9IGVsc2UgaWYgKGFyZzEgIT0gRlBSSW5mbzo6YXJn
dW1lbnRGUFIxKSB7CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzIsIEZQUkluZm86OmFyZ3Vt
ZW50RlBSMSk7CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50
RlBSMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBTd2FwIGFyZzEsIGFyZzIu
CisgICAgICAgICAgICBzd2FwRG91YmxlKEZQUkluZm86OmFyZ3VtZW50RlBSMCwgRlBSSW5mbzo6
YXJndW1lbnRGUFIxKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQor
ICAgIHsKKyAgICAgICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQ
UkluZm86OmFyZ3VtZW50R1BSMywgYXJnMSk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZy
YW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHBva2UoYXJnMiwg
NCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEZQUlJlZyBhcmczKQorICAgIHsKKyAg
ICAgICAgc2V0dXBTdHViQXJndW1lbnRzKGFyZzEsIGFyZzIpOworICAgICAgICBtb3ZlKEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBw
b2tlKGFyZzMsIDQpOworICAgIH0KICNlbHNlCiAjZXJyb3IgIkRGRyBKSVQgbm90IHN1cHBvcnRl
ZCBvbiB0aGlzIHBsYXRmb3JtLiIKICNlbmRpZgpAQCAtODAzLDExOSArODM2LDEyNiBAQCBwdWJs
aWM6CiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgc3VpdGFibGUgZm9yIGFueSBjYWxsaW5nIGNv
bnZlbnRpb24gdGhhdCBwcm92aWRlcyBmb3IKICAgICAvLyBleGFjdGx5IDQgYXJndW1lbnQgcmVn
aXN0ZXJzLCBlLmcuIEFSTXY3LgogI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0g
NAorCisjaWYgQ1BVKE1JUFMpCisjZGVmaW5lIFBPS0VfQVJHVU1FTlRfT0ZGU0VUIDQKKyNlbHNl
CisjZGVmaW5lIFBPS0VfQVJHVU1FTlRfT0ZGU0VUIDAKKyNlbmRpZgorCiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKICAgICB7Ci0gICAgICAgIHBva2UoYXJn
NCk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwogICAgICAgICBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcg
YXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCkKICAgICB7
Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9P
RkZTRVQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwg
YXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcyLCBUcnVzdGVkSW1tMzIg
YXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBw
b2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJ
bW1QdHIgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkK
ICAgICB7Ci0gICAgICAgIHBva2UoYXJnNSwgMSk7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAg
ICAgIHBva2UoYXJnNSwgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAxKTsKKyAgICAgICAgcG9rZShh
cmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwg
VHJ1c3RlZEltbTMyIGFyZzMsIFRydXN0ZWRJbW0zMiBhcmc0KQogICAgIHsKLSAgICAgICAgcG9r
ZShhcmc0KTsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CiAgICAg
ICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9
CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBh
cmc0KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tF
X0FSR1VNRU5UX09GRlNFVCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFy
ZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAg
ICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwogICAgICAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BS
UmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCiAgICAgewot
ICAgICAgICBwb2tlKGFyZzUsIDEpOwotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tl
KGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7CisgICAgICAgIHBva2UoYXJnNCwgUE9L
RV9BUkdVTUVOVF9PRkZTRVQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQ
UlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAg
ICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwogICAgICAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJn
MSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tUHRyIGFyZzQpCiAgICAgewot
ICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZG
U0VUKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFy
ZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJn
MywgVHJ1c3RlZEltbVB0ciBhcmc0KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAg
ICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CiAgICAgICAgIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcx
LCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKLSAg
ICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNF
VCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmcz
KTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJl
ZyBhcmc0LCBHUFJSZWcgYXJnNSkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNSwgMSk7Ci0gICAg
ICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2UoYXJnNSwgUE9LRV9BUkdVTUVOVF9PRkZTRVQg
KyAxKTsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CiAgICAgICAg
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAK
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0LCBUcnVz
dGVkSW1tMzIgYXJnNSkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNSwgMSk7Ci0gICAgICAgIHBv
a2UoYXJnNCk7CisgICAgICAgIHBva2UoYXJnNSwgUE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAxKTsK
KyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CiAgICAgICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0z
MiBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBUcnVzdGVkSW1t
UHRyIGFyZzUpCiAgICAgewotICAgICAgICBwb2tlKGFyZzUsIDEpOwotICAgICAgICBwb2tlKGFy
ZzQpOworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7CisgICAg
ICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwogICAgICAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJn
MSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCwgVHJ1c3RlZElt
bTMyIGFyZzUpCiAgICAgewotICAgICAgICBwb2tlKGFyZzUsIDEpOwotICAgICAgICBwb2tlKGFy
ZzQpOworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7CisgICAg
ICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwogICAgICAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJn
MSwgVHJ1c3RlZEltbTMyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgR1BS
UmVnIGFyZzUpCiAgICAgewotICAgICAgICBwb2tlKGFyZzUsIDEpOwotICAgICAgICBwb2tlKGFy
ZzQpOworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7CisgICAg
ICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwogICAgICAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJn
MSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCiAg
ICAgewotICAgICAgICBwb2tlKGFyZzUsIDEpOwotICAgICAgICBwb2tlKGFyZzQpOworICAgICAg
ICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7CisgICAgICAgIHBva2UoYXJn
NCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRlBSSW5mby5oCmluZGV4IGQ2YTAzOGEuLjZmOTY4ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHRlBSSW5mby5oCkBAIC0xNjQsNiArMTY0LDc0IEBAIHB1YmxpYzoKIAogI2VuZGlm
CiAKKyNpZiBDUFUoTUlQUykKKworY2xhc3MgRlBSSW5mbyB7CitwdWJsaWM6CisgICAgdHlwZWRl
ZiBGUFJSZWcgUmVnaXN0ZXJUeXBlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJP
ZlJlZ2lzdGVycyA9IDY7CisKKyAgICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgorICAgIHN0YXRp
YyBjb25zdCBGUFJSZWcgZnBSZWdUMCA9IE1JUFNSZWdpc3RlcnM6OmYwOworICAgIHN0YXRpYyBj
b25zdCBGUFJSZWcgZnBSZWdUMSA9IE1JUFNSZWdpc3RlcnM6OmY0OworICAgIHN0YXRpYyBjb25z
dCBGUFJSZWcgZnBSZWdUMiA9IE1JUFNSZWdpc3RlcnM6OmY2OworICAgIHN0YXRpYyBjb25zdCBG
UFJSZWcgZnBSZWdUMyA9IE1JUFNSZWdpc3RlcnM6OmY4OworICAgIHN0YXRpYyBjb25zdCBGUFJS
ZWcgZnBSZWdUNCA9IE1JUFNSZWdpc3RlcnM6OmYxMDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVn
IGZwUmVnVDUgPSBNSVBTUmVnaXN0ZXJzOjpmMTg7CisKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVn
IHJldHVyblZhbHVlRlBSID0gTUlQU1JlZ2lzdGVyczo6ZjA7CisKKyAgICBzdGF0aWMgY29uc3Qg
RlBSUmVnIGFyZ3VtZW50RlBSMCA9IE1JUFNSZWdpc3RlcnM6OmYxMjsKKyAgICBzdGF0aWMgY29u
c3QgRlBSUmVnIGFyZ3VtZW50RlBSMSA9IE1JUFNSZWdpc3RlcnM6OmYxNDsKKworICAgIHN0YXRp
YyBGUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIHN0YXRp
YyBjb25zdCBGUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7Cisg
ICAgICAgICAgICBmcFJlZ1QwLCBmcFJlZ1QxLCBmcFJlZ1QyLCBmcFJlZ1QzLCBmcFJlZ1Q0LCBm
cFJlZ1Q1IH07CisKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOwor
ICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07CisgICAgfQorCisgICAgc3Rh
dGljIHVuc2lnbmVkIHRvSW5kZXgoRlBSUmVnIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChy
ZWcgIT0gSW52YWxpZEZQUlJlZyk7CisgICAgICAgIEFTU0VSVChyZWcgPCAyMCk7CisgICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmRleEZvclJlZ2lzdGVyWzIwXSA9IHsKKyAgICAgICAg
ICAgIDAsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsCisgICAgICAg
ICAgICAxLCBJbnZhbGlkSW5kZXgsIDIsIEludmFsaWRJbmRleCwKKyAgICAgICAgICAgIDMsIElu
dmFsaWRJbmRleCwgNCwgSW52YWxpZEluZGV4LAorICAgICAgICAgICAgSW52YWxpZEluZGV4LCBJ
bnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LAorICAgICAgICAgICAgSW52
YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIDUsIEludmFsaWRJbmRleCwKKyAgICAgICAgfTsKKyAg
ICAgICAgdW5zaWduZWQgcmVzdWx0ID0gaW5kZXhGb3JSZWdpc3RlcltyZWddOworICAgICAgICBB
U1NFUlQocmVzdWx0ICE9IEludmFsaWRJbmRleCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShGUFJSZWcgcmVnKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkRlBSUmVnKTsKKyAgICAgICAgQVNTRVJU
KHJlZyA8IDMyKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3Rlclsz
Ml0gPSB7CisgICAgICAgICAgICAiZjAiLCAiZjEiLCAiZjIiLCAiZjMiLAorICAgICAgICAgICAg
ImY0IiwgImY1IiwgImY2IiwgImY3IiwKKyAgICAgICAgICAgICJmOCIsICJmOSIsICJmMTAiLCAi
ZjExIiwKKyAgICAgICAgICAgICJmMTIiLCAiZjEzIiwgImYxNCIsICJmMTUiCisgICAgICAgICAg
ICAiZjE2IiwgImYxNyIsICJmMTgiLCAiZjE5IgorICAgICAgICAgICAgImYyMCIsICJmMjEiLCAi
ZjIyIiwgImYyMyIKKyAgICAgICAgICAgICJmMjQiLCAiZjI1IiwgImYyNiIsICJmMjciCisgICAg
ICAgICAgICAiZjI4IiwgImYyOSIsICJmMzAiLCAiZjMxIgorICAgICAgICB9OworICAgICAgICBy
ZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107CisgICAgfQorcHJpdmF0ZToKKworICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOworfTsKKworI2VuZGlm
CisKIHR5cGVkZWYgUmVnaXN0ZXJCYW5rPEZQUkluZm8+OjppdGVyYXRvciBmcHJfaXRlcmF0b3I7
CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR1BSSW5mby5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
UFJJbmZvLmgKaW5kZXggM2QwNzU1Ni4uYWE2MzRjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdHUFJJbmZvLmgKQEAgLTQ2MSw2ICs0NjEsNzMgQEAgcHJpdmF0ZToKIAogI2VuZGlmCiAK
KyNpZiBDUFUoTUlQUykKKyNkZWZpbmUgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA0CisK
K2NsYXNzIEdQUkluZm8geworcHVibGljOgorICAgIHR5cGVkZWYgR1BSUmVnIFJlZ2lzdGVyVHlw
ZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA2OworCisg
ICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Qw
ID0gTUlQU1JlZ2lzdGVyczo6djA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMSA9IE1J
UFNSZWdpc3RlcnM6OnYxOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDIgPSBNSVBTUmVn
aXN0ZXJzOjp0NDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QzID0gTUlQU1JlZ2lzdGVy
czo6dDU7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNCA9IE1JUFNSZWdpc3RlcnM6OnQ2
OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDUgPSBNSVBTUmVnaXN0ZXJzOjp0NzsKKyAg
ICAvLyBUaGVzZSByZWdpc3RlcnMgbWF0Y2ggdGhlIGJhc2VsaW5lIEpJVC4KKyAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gcmVnVDA7CisgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlcjIgPSByZWdUMTsKKyAgICBzdGF0aWMgY29u
c3QgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6czA7CisgICAgLy8g
VGhlc2UgY29uc3RhbnRzIHByb3ZpZGUgdGhlIG5hbWVzIGZvciB0aGUgZ2VuZXJhbCBwdXJwb3Nl
IGFyZ3VtZW50ICYgcmV0dXJuIHZhbHVlIHJlZ2lzdGVycy4KKyAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIGFyZ3VtZW50R1BSMCA9IE1JUFNSZWdpc3RlcnM6OmEwOworICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgYXJndW1lbnRHUFIxID0gTUlQU1JlZ2lzdGVyczo6YTE7CisgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyBhcmd1bWVudEdQUjIgPSBNSVBTUmVnaXN0ZXJzOjphMjsKKyAgICBzdGF0aWMgY29u
c3QgR1BSUmVnIGFyZ3VtZW50R1BSMyA9IE1JUFNSZWdpc3RlcnM6OmEzOworICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IHJlZ1QyOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcg
bm9uQXJnR1BSMSA9IHJlZ1QzOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMiA9
IHJlZ1Q0OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSByZWdUMDsK
KyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSMiA9IHJlZ1QxOworICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0dXJuR1BSID0gcmVnVDU7CisKKyAg
ICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAg
ICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlJlZ2lzdGVycyk7CisgICAgICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7IHJlZ1QwLCBy
ZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdUNCwgcmVnVDUgfTsKKyAgICAgICAgcmV0dXJuIHJlZ2lz
dGVyRm9ySW5kZXhbaW5kZXhdOworICAgIH0KKworICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4
KEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcp
OworICAgICAgICBBU1NFUlQocmVnIDwgMTYpOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgaW5kZXhGb3JSZWdpc3RlclsxNl0gPSB7IEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCAw
LCAxLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5k
ZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRl
eCwgMiwgMywgNCwgNSB9OworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBpbmRleEZvclJlZ2lz
dGVyW3JlZ107CisgICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxpZEluZGV4KTsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdO
YW1lKEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJS
ZWcpOworICAgICAgICBBU1NFUlQocmVnIDwgMTYpOworICAgICAgICBzdGF0aWMgY29uc3QgY2hh
ciogbmFtZUZvclJlZ2lzdGVyWzE2XSA9IHsKKyAgICAgICAgICAgICJ6ZXJvIiwgImF0IiwgInYw
IiwgInYxIiwKKyAgICAgICAgICAgICJhMCIsICJhMSIsICJhMiIsICJhMyIsCisgICAgICAgICAg
ICAidDAiLCAidDEiLCAidDIiLCAidDMiLAorICAgICAgICAgICAgInQ0IiwgInQ1IiwgInQ2Iiwg
InQ3IgorICAgICAgICB9OworICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107Cisg
ICAgfQorcHJpdmF0ZToKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZhbGlkSW5kZXgg
PSAweGZmZmZmZmZmOworfTsKKworI2VuZGlmCisKIHR5cGVkZWYgUmVnaXN0ZXJCYW5rPEdQUklu
Zm8+OjppdGVyYXRvciBncHJfaXRlcmF0b3I7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA1
ZWExMDc2Li5mYTFjODM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCkBAIC0xNTM5LDcgKzE1MzksNyBAQCBwdWJsaWM6CiAKIC8vIEVuY29kZWRK
U1ZhbHVlIGluIEpTVkFMVUUzMl82NCBpcyBhIDY0LWJpdCBpbnRlZ2VyLiBXaGVuIGJlaW5nIGNv
bXBpbGVkIGluIEFSTSBFQUJJLCBpdCBtdXN0IGJlIGFsaWduZWQgZXZlbi1udW1iZXJlZCByZWdp
c3RlciAocjAsIHIyIG9yIFtzcF0pLgogLy8gVG8gYXZvaWQgYXNzZW1ibGllcyBmcm9tIHVzaW5n
IHdyb25nIHJlZ2lzdGVycywgbGV0J3Mgb2NjdXB5IHIxIG9yIHIzIHdpdGggYSBkdW1teSBhcmd1
bWVudCB3aGVuIG5lY2Vzc2FyeS4KLSNpZiBDT01QSUxFUl9TVVBQT1JUUyhFQUJJKSAmJiBDUFUo
QVJNKQorI2lmIChDT01QSUxFUl9TVVBQT1JUUyhFQUJJKSAmJiBDUFUoQVJNKSkgfHwgQ1BVKE1J
UFMpCiAjZGVmaW5lIEVBQklfMzJCSVRfRFVNTVlfQVJHICAgICAgVHJ1c3RlZEltbTMyKDApLAog
I2Vsc2UKICNkZWZpbmUgRUFCSV8zMkJJVF9EVU1NWV9BUkcKQEAgLTE5ODQsNyArMTk4NCw3IEBA
IHB1YmxpYzoKICAgICB9CiAjZW5kaWYKICAgICAKLSNpZiAhZGVmaW5lZChOREVCVUcpICYmICFD
UFUoQVJNKQorI2lmICFkZWZpbmVkKE5ERUJVRykgJiYgIUNQVShBUk0pICYmICFDUFUoTUlQUykK
ICAgICB2b2lkIHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKQogICAgIHsKICAgICAgICAgLy8gV2Un
cmUgYWJvdXQgdG8gY2FsbCBvdXQgdG8gYSAibmF0aXZlIiBoZWxwZXIgZnVuY3Rpb24uIFRoZSBo
ZWxwZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VK
SVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAppbmRleCAy
ZjRiNGUzLi5hMjhmMzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pT
SW50ZXJmYWNlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFj
ZUpJVC5oCkBAIC0xMjUsNiArMTI1LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0
aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6
OnYwOwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBmaXJzdEFyZ3VtZW50UmVnaXN0
ZXIgPSBNSVBTUmVnaXN0ZXJzOjphMDsKICAgICAgICAgCisjaWYgRU5BQkxFKFZBTFVFX1BST0ZJ
TEVSKQorICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBidWNrZXRDb3VudGVyUmVnaXN0
ZXIgPSBNSVBTUmVnaXN0ZXJzOjpzMzsKKyNlbmRpZgorCiAgICAgICAgIC8vIHJlZ1QwIG11c3Qg
YmUgdjAgZm9yIHJldHVybmluZyBhIDMyLWJpdCB2YWx1ZS4KICAgICAgICAgc3RhdGljIGNvbnN0
IFJlZ2lzdGVySUQgcmVnVDAgPSBNSVBTUmVnaXN0ZXJzOjp2MDsKICAgICAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCmluZGV4IDI2MTU1N2EuLjBm
ZjRkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
RGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5o
CkBAIC0xMzEsMTQgKzEzMSwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25T
aXplKHNpemVfdCBidWZmZXJTaXplKSB7IHJldHVybiBzaXplb2Yoc2l6ZV90KSArIGJ1ZmZlclNp
emU7IH0KKyAgICAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgYnVmZmVy
U2l6ZSkgeyByZXR1cm4gc2l6ZW9mKFNjcmF0Y2hCdWZmZXIpICsgYnVmZmVyU2l6ZTsgfQogICAg
ICAgICB2b2lkIHNldEFjdGl2ZUxlbmd0aChzaXplX3QgYWN0aXZlTGVuZ3RoKSB7IG1fYWN0aXZl
TGVuZ3RoID0gYWN0aXZlTGVuZ3RoOyB9CiAgICAgICAgIHNpemVfdCBhY3RpdmVMZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX2FjdGl2ZUxlbmd0aDsgfTsKICAgICAgICAgc2l6ZV90KiBhY3RpdmVM
ZW5ndGhQdHIoKSB7IHJldHVybiAmbV9hY3RpdmVMZW5ndGg7IH07CiAgICAgICAgIHZvaWQqIGRh
dGFCdWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQogCiAgICAgICAgIHNpemVfdCBtX2FjdGl2
ZUxlbmd0aDsKKyNpZiBDUFUoTUlQUykgJiYgKGRlZmluZWQgV1RGX01JUFNfQVJDSF9SRVYgJiYg
V1RGX01JUFNfQVJDSF9SRVYgPT0gMikKKyAgICAgICAgdm9pZCogbV9idWZmZXJbMF0gX19hdHRy
aWJ1dGVfXygoYWxpZ25lZCg4KSkpOworI2Vsc2UKICAgICAgICAgdm9pZCogbV9idWZmZXJbMF07
CisjZW5kaWYKICAgICB9OwogI2lmIENPTVBJTEVSKE1TVkMpCiAjcHJhZ21hIHdhcm5pbmcocG9w
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZwppbmRleCBlMWY1Nzg4Li45ZjA1ODUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEzLTAxLTA4
ICBCYWxhenMgS2lsdmFkeSAgPGtpbHZhZHliQGhvbWVqaW5uaS5jb20+CisKKyAgICAgICAgTUlQ
UyBERkcgaW1wbGVtZW50YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDEzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBGaWxpcCBQaXpsby4K
KworICAgICAgICBERkcgaW1wbGVtZW50YXRpb24gZm9yIE1JUFMuCisKKyAgICAgICAgKiB3dGYv
UGxhdGZvcm0uaDoKKwogMjAxMy0wMS0wNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29t
PgogCiAgICAgICAgIFJhdGlvbmFsaXplIGNsb3N1cmUgY2FsbCBoZXVyaXN0aWNzIGFuZCBwcm9m
aWxpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGUzMWU1ZjYuLmI4ZTQ4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAt
OTQ0LDYgKzk0NCwxMCBAQAogI2lmIENQVShBUk1fVFJBRElUSU9OQUwpCiAjZGVmaW5lIEVOQUJM
RV9ERkdfSklUIDEKICNlbmRpZgorLyogRW5hYmxlIHRoZSBERkcgSklUIG9uIE1JUFMuICovCisj
aWYgQ1BVKE1JUFMpCisjZGVmaW5lIEVOQUJMRV9ERkdfSklUIDEKKyNlbmRpZgogI2VuZGlmCiAK
IC8qIElmIHRoZSBqaXQgaXMgbm90IGF2YWlsYWJsZSwgZW5hYmxlIHRoZSBMTEludCBDIExvb3A6
ICovCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183415</attachid>
            <date>2013-01-18 02:46:40 -0800</date>
            <delta_ts>2013-01-21 03:36:21 -0800</delta_ts>
            <desc>DFG for MIPS - arg. offset with macro</desc>
            <filename>dfg-m.diff</filename>
            <type>text/plain</type>
            <size>52698</size>
            <attacher name="Balazs Kilvady">kilvadyb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDcwMTMzNmMuLmM2YjlkZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDEzLTAxLTE4ICBCYWxhenMgS2lsdmFk
eSAgPGtpbHZhZHliQGhvbWVqaW5uaS5jb20+CisKKyAgICAgICAgTUlQUyBERkcgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
RkcgaW1wbGVtZW50YXRpb24gZm9yIE1JUFMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTUlQU0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpNSVBTQXNzZW1ibGVyKToK
KyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6c2xsdik6CisgICAgICAgIChKU0M6Ok1JUFNB
c3NlbWJsZXI6Om1vdmQpOgorICAgICAgICAoTUlQU0Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6
Ok1JUFNBc3NlbWJsZXI6Om5lZ2QpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJl
bEZvcldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJlbCk6Cisg
ICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6OnZtb3YpOgorICAgICAgICAoSlNDOjpNSVBTQXNz
ZW1ibGVyOjpsaW5rRGlyZWN0SnVtcCk6CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6Om1h
eEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpyZXZl
cnRKdW1wVG9Nb3ZlKToKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhK
dW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKE1h
Y3JvQXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBva2UpOgorICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJNSVBTOjphZGQzMik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlck1JUFMpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmFuZDMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJNSVBTOjpsc2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyTUlQUzo6bXVsMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om9yMzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJzaGlmdDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjp1cnNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OnN1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
Ojp4b3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6c3RvcmUzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6anVtcCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoQWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OmJyYW5jaE11bDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
OjpicmFuY2hTdWIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNo
TmVnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmNhbGwpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmxvYWREb3VibGUpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6Om1vdmVEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OnN3YXBEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6
OnN1YkRvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6bXVsRG91Ymxl
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpkaXZEb3VibGUpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om5lZ2F0ZURvdWJsZSk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRXF1YWwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlck1JUFM6OmJyYW5jaE5vdEVxdWFsKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJNSVBTOjpicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OmJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnRydW5jYXRlRG91YmxlVG9JbnQzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6dHJ1bmNhdGVEb3VibGVUb1VpbnQzMik6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlTm9uWmVybyk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlWmVyb09yTmFOKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjppbnZlcnQpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyTUlQUzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogZGZnL0RG
R0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoQXNzZW1ibHlIZWxwZXJzKToKKyAgICAgICAg
KEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybik6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpk
ZWJ1Z0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEND
YWxsSGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3Vt
ZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUpOgorICAgICAgICAqIGRmZy9ERkdGUFJJbmZvLmg6CisgICAgICAgIChERkcp
OgorICAgICAgICAoRlBSSW5mbyk6CisgICAgICAgIChKU0M6OkRGRzo6RlBSSW5mbzo6dG9SZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6RlBSSW5mbzo6dG9JbmRleCk6CisgICAgICAgIChK
U0M6OkRGRzo6RlBSSW5mbzo6ZGVidWdOYW1lKToKKyAgICAgICAgKiBkZmcvREZHR1BSSW5mby5o
OgorICAgICAgICAoREZHKToKKyAgICAgICAgKEdQUkluZm8pOgorICAgICAgICAoSlNDOjpERkc6
OkdQUkluZm86OnRvUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkdQUkluZm86OnRvSW5k
ZXgpOgorICAgICAgICAoSlNDOjpERkc6OkdQUkluZm86OmRlYnVnTmFtZSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6CisgICAg
ICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAgIChKU0ludGVyZmFjZUpJVCk6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpTQzo6U2NyYXRjaEJ1
ZmZlcjo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoU2NyYXRjaEJ1ZmZlcik6CisKIDIwMTMt
MDEtMTcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
ZWQgc3ZuOmlnbm9yZT0qLnB5Yywgc28gdGhhdCB1ZF9vcGNvZGUucHljIGFuZCB1ZF9vcHRhYmxl
LnB5YyBkb24ndCBzaG93IHVwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01JUFNBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TUlQU0Fzc2VtYmxlci5oCmluZGV4IDAyNmY4N2UuLjdmNTUzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCkBAIC0xNTIsNiArMTUyLDgg
QEAgcHVibGljOgogICAgIHR5cGVkZWYgU2VnbWVudGVkVmVjdG9yPEFzc2VtYmxlckxhYmVsLCA2
ND4gSnVtcHM7CiAKICAgICBNSVBTQXNzZW1ibGVyKCkKKyAgICAgICAgOiBtX2luZGV4T2ZMYXN0
V2F0Y2hwb2ludChJTlRfTUlOKQorICAgICAgICAsIG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBv
aW50KElOVF9NSU4pCiAgICAgewogICAgIH0KIApAQCAtMzI1LDcgKzMyNyw3IEBAIHB1YmxpYzoK
ICAgICAgICAgZW1pdEluc3QoMHgwMDAwMDAwMCB8IChyZCA8PCBPUF9TSF9SRCkgfCAocnQgPDwg
T1BfU0hfUlQpIHwgKChzaGFtdCAmIDB4MWYpIDw8IE9QX1NIX1NIQU1UKSk7CiAgICAgfQogCi0g
ICAgdm9pZCBzbGx2KFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcnQsIGludCBycykKKyAgICB2
b2lkIHNsbHYoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBycykKICAg
ICB7CiAgICAgICAgIGVtaXRJbnN0KDB4MDAwMDAwMDQgfCAocmQgPDwgT1BfU0hfUkQpIHwgKHJ0
IDw8IE9QX1NIX1JUKSB8IChycyA8PCBPUF9TSF9SUykpOwogICAgIH0KQEAgLTUyNyw2ICs1Mjks
MTYgQEAgcHVibGljOgogICAgICAgICBlbWl0SW5zdCgweDQ2MjAwMDA0IHwgKGZkIDw8IE9QX1NI
X0ZEKSB8IChmcyA8PCBPUF9TSF9GUykpOwogICAgIH0KIAorICAgIHZvaWQgbW92ZChGUFJlZ2lz
dGVySUQgZmQsIEZQUmVnaXN0ZXJJRCBmcykKKyAgICB7CisgICAgICAgIGVtaXRJbnN0KDB4NDYy
MDAwMDYgfCAoZmQgPDwgT1BfU0hfRkQpIHwgKGZzIDw8IE9QX1NIX0ZTKSk7CisgICAgfQorCisg
ICAgdm9pZCBuZWdkKEZQUmVnaXN0ZXJJRCBmZCwgRlBSZWdpc3RlcklEIGZzKQorICAgIHsKKyAg
ICAgICAgZW1pdEluc3QoMHg0NjIwMDAwNyB8IChmZCA8PCBPUF9TSF9GRCkgfCAoZnMgPDwgT1Bf
U0hfRlMpKTsKKyAgICB9CisKICAgICB2b2lkIHRydW5jd2QoRlBSZWdpc3RlcklEIGZkLCBGUFJl
Z2lzdGVySUQgZnMpCiAgICAgewogICAgICAgICBlbWl0SW5zdCgweDQ2MjAwMDBkIHwgKGZkIDw8
IE9QX1NIX0ZEKSB8IChmcyA8PCBPUF9TSF9GUykpOwpAQCAtNjE5LDkgKzYzMSwyNCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBtX2J1ZmZlci5sYWJlbCgpOwogICAgIH0KIAorICAgIEFzc2Vt
YmxlckxhYmVsIGxhYmVsRm9yV2F0Y2hwb2ludCgpCisgICAgeworICAgICAgICBBc3NlbWJsZXJM
YWJlbCByZXN1bHQgPSBtX2J1ZmZlci5sYWJlbCgpOworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8
aW50PihyZXN1bHQubV9vZmZzZXQpICE9IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KQorICAgICAg
ICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKKyAgICAgICAgbV9pbmRleE9mTGFzdFdhdGNocG9pbnQg
PSByZXN1bHQubV9vZmZzZXQ7CisgICAgICAgIG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50
ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsKCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBtX2J1ZmZlci5sYWJlbCgpOworICAgICAgICBBc3NlbWJsZXJMYWJl
bCByZXN1bHQgPSBtX2J1ZmZlci5sYWJlbCgpOworICAgICAgICB3aGlsZSAoVU5MSUtFTFkoc3Rh
dGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpIDwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNo
cG9pbnQpKSB7CisgICAgICAgICAgICBub3AoKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1fYnVm
ZmVyLmxhYmVsKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAK
ICAgICBBc3NlbWJsZXJMYWJlbCBhbGlnbihpbnQgYWxpZ25tZW50KQpAQCAtNjY0LDE0ICs2OTEs
MjQgQEAgcHVibGljOgogICAgIC8vIEFzc2VtYmx5IGhlbHBlcnMgZm9yIG1vdmluZyBkYXRhIGJl
dHdlZW4gZnAgYW5kIHJlZ2lzdGVycy4KICAgICB2b2lkIHZtb3YoUmVnaXN0ZXJJRCByZDEsIFJl
Z2lzdGVySUQgcmQyLCBGUFJlZ2lzdGVySUQgcm4pCiAgICAgeworI2lmIFdURl9NSVBTX0lTQV9S
RVYoMikgJiYgV1RGX01JUFNfRlA2NAorICAgICAgICBtZmMxKHJkMSwgcm4pOworICAgICAgICBt
ZmhjMShyZDIsIHJuKTsKKyNlbHNlCiAgICAgICAgIG1mYzEocmQxLCBybik7CiAgICAgICAgIG1m
YzEocmQyLCBGUFJlZ2lzdGVySUQocm4gKyAxKSk7CisjZW5kaWYKICAgICB9CiAKICAgICB2b2lk
IHZtb3YoRlBSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuMSwgUmVnaXN0ZXJJRCBybjIpCiAg
ICAgeworI2lmIFdURl9NSVBTX0lTQV9SRVYoMikgJiYgV1RGX01JUFNfRlA2NAorICAgICAgICBt
dGMxKHJuMSwgcmQpOworICAgICAgICBtdGhjMShybjIsIHJkKTsKKyNlbHNlCiAgICAgICAgIG10
YzEocm4xLCByZCk7CiAgICAgICAgIG10YzEocm4yLCBGUFJlZ2lzdGVySUQocmQgKyAxKSk7Cisj
ZW5kaWYKICAgICB9CiAKICAgICBzdGF0aWMgdW5zaWduZWQgZ2V0Q2FsbFJldHVybk9mZnNldChB
c3NlbWJsZXJMYWJlbCBjYWxsKQpAQCAtNjg4LDYgKzcyNSwzNSBAQCBwdWJsaWM6CiAgICAgLy8g
d3JpdGFibGUgcmVnaW9uIG9mIG1lbW9yeTsgdG8gbW9kaWZ5IHRoZSBjb2RlIGluIGFuIGV4ZWN1
dGUtb25seSBleGVjdWFibGUKICAgICAvLyBwb29sIHRoZSAncmVwYXRjaCcgYW5kICdyZWxpbmsn
IG1ldGhvZHMgc2hvdWxkIGJlIHVzZWQuCiAKKyAgICBzdGF0aWMgc2l6ZV90IGxpbmtEaXJlY3RK
dW1wKHZvaWQqIGNvZGUsIHZvaWQqIHRvKQorICAgIHsKKyAgICAgICAgTUlQU1dvcmQqIGluc24g
PSByZWludGVycHJldF9jYXN0PE1JUFNXb3JkKj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4o
Y29kZSkpOworICAgICAgICBzaXplX3Qgb3BzID0gMDsKKyAgICAgICAgaW50MzJfdCBzbG90QWRk
ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50PihpbnNuKSArIDQ7CisgICAgICAgIGludDMyX3QgdG9B
ZGRyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ+KHRvKTsKKworICAgICAgICBpZiAoKHNsb3RBZGRy
ICYgMHhmMDAwMDAwMCkgIT0gKHRvQWRkciAmIDB4ZjAwMDAwMDApKSB7CisgICAgICAgICAgICAv
LyBsdWkKKyAgICAgICAgICAgICppbnNuID0gMHgzYzAwMDAwMCB8IChNSVBTUmVnaXN0ZXJzOjp0
OSA8PCBPUF9TSF9SVCkgfCAoKHRvQWRkciA+PiAxNikgJiAweGZmZmYpOworICAgICAgICAgICAg
KytpbnNuOworICAgICAgICAgICAgLy8gb3JpCisgICAgICAgICAgICAqaW5zbiA9IDB4MzQwMDAw
MDAgfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlQpIHwgKE1JUFNSZWdpc3RlcnM6OnQ5
IDw8IE9QX1NIX1JTKSB8ICh0b0FkZHIgJiAweGZmZmYpOworICAgICAgICAgICAgKytpbnNuOwor
ICAgICAgICAgICAgLy8ganIKKyAgICAgICAgICAgICppbnNuID0gMHgwMDAwMDAwOCB8IChNSVBT
UmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SUyk7CisgICAgICAgICAgICArK2luc247CisgICAgICAg
ICAgICBvcHMgPSA0ICogc2l6ZW9mKE1JUFNXb3JkKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgIC8vIGoKKyAgICAgICAgICAgICppbnNuID0gMHgwODAwMDAwMCB8ICgodG9BZGRyICYg
MHgwZmZmZmZmZikgPj4gMik7CisgICAgICAgICAgICArK2luc247CisgICAgICAgICAgICBvcHMg
PSAyICogc2l6ZW9mKE1JUFNXb3JkKTsKKyAgICAgICAgfQorICAgICAgICAvLyBub3AKKyAgICAg
ICAgKmluc24gPSAweDAwMDAwMDAwOworICAgICAgICByZXR1cm4gb3BzOworICAgIH0KKwogICAg
IHZvaWQgbGlua0p1bXAoQXNzZW1ibGVyTGFiZWwgZnJvbSwgQXNzZW1ibGVyTGFiZWwgdG8pCiAg
ICAgewogICAgICAgICBBU1NFUlQodG8uaXNTZXQoKSk7CkBAIC04MjUsMjkgKzg5MSwzNiBAQCBw
dWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wVG9Nb3Zl
KHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQgcnQsIGludCBpbW0pCisgICAgc3Rh
dGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKICAgICB7Ci0gICAgICAgIE1J
UFNXb3JkKiBpbnNuID0gc3RhdGljX2Nhc3Q8TUlQU1dvcmQqPihpbnN0cnVjdGlvblN0YXJ0KSAr
IDE7Ci0gICAgICAgIEFTU0VSVCgoKmluc24gJiAweGZjMDAwMDAwKSA9PSAweDM0MDAwMDAwKTsK
LSAgICAgICAgKmluc24gPSAoKmluc24gJiAweGZjMWYwMDAwKSB8IChpbW0gJiAweGZmZmYpOwot
ICAgICAgICBjYWNoZUZsdXNoKGluc24sIHNpemVvZihNSVBTV29yZCkpOworICAgICAgICByZXR1
cm4gc2l6ZW9mKE1JUFNXb3JkKSAqIDQ7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgcmVwbGFj
ZVdpdGhKdW1wKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIHZvaWQqIHRvKQorICAgIHN0YXRpYyB2
b2lkIHJldmVydEp1bXBUb01vdmUodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgUmVnaXN0ZXJJRCBy
dCwgaW50IGltbSkKICAgICB7Ci0gICAgICAgIE1JUFNXb3JkKiBpbnN0cnVjdGlvbiA9IHJlaW50
ZXJwcmV0X2Nhc3Q8TUlQU1dvcmQqPihpbnN0cnVjdGlvblN0YXJ0KTsKLSAgICAgICAgaW50cHRy
X3QganVtcFRvID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odG8pOworICAgICAgICBNSVBT
V29yZCogaW5zbiA9IHN0YXRpY19jYXN0PE1JUFNXb3JkKj4oaW5zdHJ1Y3Rpb25TdGFydCk7Cisg
ICAgICAgIHNpemVfdCBjb2RlU2l6ZSA9IDIgKiBzaXplb2YoTUlQU1dvcmQpOwogCiAgICAgICAg
IC8vIGx1aQotICAgICAgICBpbnN0cnVjdGlvblswXSA9IDB4M2MwMDAwMDAgfCAoTUlQU1JlZ2lz
dGVyczo6dDkgPDwgT1BfU0hfUlQpIHwgKChqdW1wVG8gPj4gMTYpICYgMHhmZmZmKTsKKyAgICAg
ICAgKmluc24gPSAweDNjMDAwMDAwIHwgKHJ0IDw8IE9QX1NIX1JUKSB8ICgoaW1tID4+IDE2KSAm
IDB4ZmZmZik7CisgICAgICAgICsraW5zbjsKICAgICAgICAgLy8gb3JpCi0gICAgICAgIGluc3Ry
dWN0aW9uWzFdID0gMHgzNDAwMDAwMCB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SVCkg
fCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlMpIHwgKGp1bXBUbyAmIDB4ZmZmZik7Ci0g
ICAgICAgIC8vIGpyCi0gICAgICAgIGluc3RydWN0aW9uWzJdID0gMHgwMDAwMDAwOCB8IChNSVBT
UmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SUyk7Ci0gICAgICAgIC8vIG5vcAotICAgICAgICBpbnN0
cnVjdGlvblszXSA9IDB4MDsKKyAgICAgICAgKmluc24gPSAweDM0MDAwMDAwIHwgKHJ0IDw8IE9Q
X1NIX1JTKSB8IChydCA8PCBPUF9TSF9SVCkgfCAoaW1tICYgMHhmZmZmKTsKKyAgICAgICAgKytp
bnNuOworICAgICAgICAvLyBpZiBqciAkdDkKKyAgICAgICAgaWYgKCppbnNuID09IDB4MDMyMDAw
MDgpIHsKKyAgICAgICAgICAgICppbnNuID0gMHgwMDAwMDAwMDsKKyAgICAgICAgICAgIGNvZGVT
aXplICs9IHNpemVvZihNSVBTV29yZCk7CisgICAgICAgIH0KKyAgICAgICAgY2FjaGVGbHVzaChp
bnNuLCBjb2RlU2l6ZSk7CisgICAgfQogCi0gICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1Y3Rpb24s
IHNpemVvZihNSVBTV29yZCkgKiA0KTsKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAo
dm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCisgICAgeworICAgICAgICBBU1NFUlQo
IShiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlvblN0YXJ0KSAmIDMpKTsKKyAgICAg
ICAgQVNTRVJUKCEoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odG8pICYgMykpOworICAgICAgICBz
aXplX3Qgb3BzID0gbGlua0RpcmVjdEp1bXAoaW5zdHJ1Y3Rpb25TdGFydCwgdG8pOworICAgICAg
ICBjYWNoZUZsdXNoKGluc3RydWN0aW9uU3RhcnQsIG9wcyk7CiAgICAgfQogCiAgICAgc3RhdGlj
IHZvaWQgcmVwbGFjZVdpdGhMb2FkKHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCkBAIC0xMDIzLDYg
KzEwOTYsOCBAQCBwcml2YXRlOgogCiAgICAgQXNzZW1ibGVyQnVmZmVyIG1fYnVmZmVyOwogICAg
IEp1bXBzIG1fanVtcHM7CisgICAgaW50IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50OworICAgIGlu
dCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5o
CmluZGV4IDNkNTczNDAuLjJmMjZmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTIwMCw2ICsyMDAsMTMgQEAgcHVibGljOgog
ICAgIH0KICNlbmRpZgogICAgIAorI2lmIENQVShNSVBTKQorICAgIHZvaWQgcG9rZShGUFJlZ2lz
dGVySUQgc3JjLCBpbnQgaW5kZXggPSAwKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEoaW5kZXgg
JiAxKSk7CisgICAgICAgIHN0b3JlRG91YmxlKHNyYywgYWRkcmVzc0ZvclBva2UoaW5kZXgpKTsK
KyAgICB9CisjZW5kaWYKIAogICAgIC8vIEJhY2t3YXJkcyBiYW5jaGVzLCB0aGVzZSBhcmUgY3Vy
cmVudGx5IGFsbCBpbXBsZW1lbnRlZCB1c2luZyBleGlzdGluZyBmb3J3YXJkcyBicmFuY2ggbWVj
aGFuaXNtcy4KICAgICB2b2lkIGJyYW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgb3AxLCBUcnVzdGVkSW1tUHRyIGltbSwgTGFiZWwgdGFyZ2V0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5k
ZXggMWIxYTEyNy4uYjU5MzgxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCkBAIC0xMTQsNiArMTE0LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkdShkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAor
ICAgIHZvaWQgYWRkMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGRlc3QsIG9wMSwgb3AyKTsK
KyAgICB9CisKICAgICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIGFkZDMyKGltbSwgZGVzdCwgZGVzdCk7CkBAIC0yNjcsNiArMjcy
LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kSW5zbihkZXN0LCBkZXN0LCBz
cmMpOwogICAgIH0KIAorICAgIHZvaWQgYW5kMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQg
b3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hbmRJbnNu
KGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBp
bW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmICghaW1tLm1fdmFsdWUgJiYg
IW1fZml4ZWRXaWR0aCkKQEAgLTI4Myw5ICsyOTMsMTYgQEAgcHVibGljOgogICAgICAgICB9CiAg
ICAgfQogCi0gICAgdm9pZCBsc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgdm9pZCBhbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuc2xsKGRlc3QsIGRlc3Qs
IGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSAmJiAhbV9maXhlZFdpZHRo
KQorICAgICAgICAgICAgbW92ZShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBkZXN0KTsKKyAgICAgICAg
ZWxzZSBpZiAoaW1tLm1fdmFsdWUgPiAwICYmIGltbS5tX3ZhbHVlIDwgNjU1MzUgJiYgIW1fZml4
ZWRXaWR0aCkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFuZGkoZGVzdCwgc3JjLCBpbW0ubV92
YWx1ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdp
c3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hbmRJbnNuKGRlc3QsIHNyYywgaW1tVGVt
cFJlZ2lzdGVyKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQgbHNoaWZ0MzIoUmVnaXN0
ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMjkzLDExICszMTAsMzMgQEAg
cHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zbGx2KGRlc3QsIGRlc3QsIHNoaWZ0QW1vdW50
KTsKICAgICB9CiAKKyAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5zbGx2KGRlc3QsIHNyYywgc2hpZnRBbW91bnQpOworICAgIH0KKworICAgIHZvaWQgbHNoaWZ0
MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92
ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLnNsbHYoZGVzdCwg
ZGVzdCwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGxzaGlmdDMyKFJlZ2lz
dGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc2xs
dihkZXN0LCBzcmMsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgfQorCiAgICAgdm9pZCBtdWwzMihS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJs
ZXIubXVsKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBtdWwzMihSZWdpc3Rl
cklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLm11bChkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCBtdWwz
MihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSAmJiAhbV9maXhlZFdpZHRoKQpAQCAtMzQ4LDYg
KzM4NywyNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ySW5zbihkZXN0LCBkZXN0
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKKyAgICB2b2lkIG9yMzIoVHJ1c3RlZEltbTMy
IGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlm
ICghaW1tLm1fdmFsdWUgJiYgIW1fZml4ZWRXaWR0aCkKKyAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPiAwICYmIGltbS5tX3ZhbHVlIDwgNjU1MzUgJiYgIW1f
Zml4ZWRXaWR0aCkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIub3JpKGRlc3QsIHNyYywgaW1t
Lm1fdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLyoK
KyAgICAgICAgICAgIGxpICAgICAgZGF0YVRlbXAsIGltbQorICAgICAgICAgICAgb3IgICAgICBk
ZXN0LCBzcmMsIGRhdGFUZW1wCisgICAgICAgICovCisgICAgICAgIG1vdmUoaW1tLCBkYXRhVGVt
cFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JJbnNuKGRlc3QsIHNyYywgZGF0YVRl
bXBSZWdpc3Rlcik7CisgICAgfQorCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgc3JjLCBBYnNv
bHV0ZUFkZHJlc3MgZGVzdCkKICAgICB7CiAgICAgICAgIGxvYWQzMihkZXN0Lm1fcHRyLCBkYXRh
VGVtcFJlZ2lzdGVyKTsKQEAgLTM2MCw2ICs0MTcsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fz
c2VtYmxlci5zcmF2KGRlc3QsIGRlc3QsIHNoaWZ0QW1vdW50KTsKICAgICB9CiAKKyAgICB2b2lk
IHJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zcmF2KGRlc3QsIHNyYywgc2hp
ZnRBbW91bnQpOworICAgIH0KKwogICAgIHZvaWQgcnNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3JhKGRlc3QsIGRl
c3QsIGltbS5tX3ZhbHVlKTsKQEAgLTM3NSwxNiArNDM3LDMxIEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIuc3JsdihkZXN0LCBkZXN0LCBzaGlmdEFtb3VudCk7CiAgICAgfQogCisgICAg
dm9pZCB1cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnNybHYoZGVzdCwgc3Jj
LCBzaGlmdEFtb3VudCk7CisgICAgfQorCiAgICAgdm9pZCB1cnNoaWZ0MzIoVHJ1c3RlZEltbTMy
IGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3JsKGRl
c3QsIGRlc3QsIGltbS5tX3ZhbHVlKTsKICAgICB9CiAKKyAgICB2b2lkIHVyc2hpZnQzMihSZWdp
c3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuc3JsKGRlc3QsIHNyYywgaW1tLm1fdmFsdWUpOworICAgIH0KKwog
ICAgIHZvaWQgc3ViMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLnN1YnUoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2
b2lkIHN1YjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VidShkZXN0LCBvcDEsIG9wMik7CisgICAg
fQorCiAgICAgdm9pZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPj0gLTMyNzY3ICYmIGltbS5tX3ZhbHVlIDw9
IDMyNzY4CkBAIC00OTUsNiArNTcyLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIu
eG9ySW5zbihkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgeG9yMzIoUmVnaXN0
ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAg
ICBtX2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lk
IHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IGlmIChpbW0ubV92YWx1ZSA9PSAtMSkgewpAQCAtNTEwLDYgKzU5MiwyMSBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oZGVzdCwgZGVzdCwgaW1tVGVtcFJlZ2lzdGVyKTsK
ICAgICB9CiAKKyAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEp
IHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcihkZXN0LCBzcmMsIE1JUFNSZWdpc3RlcnM6
Onplcm8pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAg
ICAgICAgICAgIGxpICBpbW1UZW1wLCBpbW0KKyAgICAgICAgICAgIHhvciBkZXN0LCBkZXN0LCBp
bW1UZW1wCisgICAgICAgICovCisgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOwor
ICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIHNyYywgaW1tVGVtcFJlZ2lzdGVyKTsK
KyAgICB9CisKICAgICB2b2lkIHNxcnREb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3Rl
cklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnNxcnRkKGRzdCwgc3JjKTsKQEAg
LTk4OSw2ICsxMDg2LDQ0IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQg
c3RvcmUzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIGlmIChhZGRyZXNzLm9mZnNldCA+PSAtMzI3NjggJiYgYWRkcmVzcy5vZmZzZXQgPD0gMzI3
NjcgJiYgIW1fZml4ZWRXaWR0aCkgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICBz
bGwgICAgIGFkZHJUZW1wLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlCisgICAgICAgICAg
ICAgICAgYWRkdSAgICBhZGRyVGVtcCwgYWRkclRlbXAsIGFkZHJlc3MuYmFzZQorICAgICAgICAg
ICAgICAgIHN3ICAgICAgc3JjLCBhZGRyZXNzLm9mZnNldChhZGRyVGVtcCkKKyAgICAgICAgICAg
ICovCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbGwoYWRkclRlbXBSZWdpc3RlciwgYWRkcmVz
cy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGFk
ZHJUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSk7CisgICAgICAg
ICAgICBpZiAoIWltbS5tX3ZhbHVlKQorICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN3KE1J
UFNSZWdpc3RlcnM6Onplcm8sIGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mub2Zmc2V0KTsKKyAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0
ZXIpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN3KGltbVRlbXBSZWdpc3RlciwgYWRk
clRlbXBSZWdpc3RlciwgYWRkcmVzcy5vZmZzZXQpOworICAgICAgICAgICAgfQorICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICBzbGwgICAgIGFkZHJUZW1w
LCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlCisgICAgICAgICAgICAgICAgYWRkdSAgICBh
ZGRyVGVtcCwgYWRkclRlbXAsIGFkZHJlc3MuYmFzZQorICAgICAgICAgICAgICAgIGx1aSAgICAg
aW1tVGVtcCwgKGFkZHJlc3Mub2Zmc2V0ICsgMHg4MDAwKSA+PiAxNgorICAgICAgICAgICAgICAg
IGFkZHUgICAgYWRkclRlbXAsIGFkZHJUZW1wLCBpbW1UZW1wCisgICAgICAgICAgICAgICAgc3cg
ICAgICBzcmMsIChhZGRyZXNzLm9mZnNldCAmIDB4ZmZmZikoYXQpCisgICAgICAgICAgICAqLwor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2xsKGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5k
ZXgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkdShhZGRyVGVt
cFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmJhc2UpOworICAgICAgICAgICAg
bV9hc3NlbWJsZXIubHVpKGltbVRlbXBSZWdpc3RlciwgKGFkZHJlc3Mub2Zmc2V0ICsgMHg4MDAw
KSA+PiAxNik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGFkZHJUZW1wUmVnaXN0ZXIs
IGFkZHJUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBpZiAoIWlt
bS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIu
c3coTUlQU1JlZ2lzdGVyczo6emVybywgYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5vZmZzZXQp
OworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBS
ZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3coaW1tVGVtcFJlZ2lzdGVy
LCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisKKwogICAgIHZvaWQgc3RvcmUzMihSZWdpc3RlcklEIHNyYywgY29uc3Qg
dm9pZCogYWRkcmVzcykKICAgICB7CiAgICAgICAgIC8qCkBAIC0xMzM2LDYgKzE0NzEsMTUgQEAg
cHVibGljOgogICAgICAgICBtX2ZpeGVkV2lkdGggPSBmYWxzZTsKICAgICB9CiAKKyAgICB2b2lk
IGp1bXAoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2ZpeGVkV2lk
dGggPSB0cnVlOworICAgICAgICBsb2FkMzIoYWRkcmVzcy5tX3B0ciwgTUlQU1JlZ2lzdGVyczo6
dDkpOworICAgICAgICBtX2Fzc2VtYmxlci5qcihNSVBTUmVnaXN0ZXJzOjp0OSk7CisgICAgICAg
IG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICBtX2ZpeGVkV2lkdGggPSBmYWxzZTsKKyAgICB9
CisKICAgICB2b2lkIG1vdmVEb3VibGVUb0ludHMoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnZt
b3YoZGVzdDEsIGRlc3QyLCBzcmMpOwpAQCAtMTQwNCw2ICsxNTQ4LDUzIEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIEp1bXAoKTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNv
bmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7Cisg
ICAgICAgIGlmIChjb25kID09IE92ZXJmbG93KSB7CisgICAgICAgICAgICAvKgorICAgICAgICAg
ICAgICAgIG1vdmUgICAgZGF0YVRlbXAsIG9wMQorICAgICAgICAgICAgICAgIHhvciAgICAgY21w
VGVtcCwgZGF0YVRlbXAsIG9wMgorICAgICAgICAgICAgICAgIGJsdHogICAgY21wVGVtcCwgTm9f
b3ZlcmZsb3cgICAgIyBkaWZmIHNpZ24gYml0IC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAg
ICAgYWRkdSAgICBkZXN0LCBkYXRhVGVtcCwgb3AyCisgICAgICAgICAgICAgICAgeG9yICAgICBj
bXBUZW1wLCBkZXN0LCBkYXRhVGVtcAorICAgICAgICAgICAgICAgIGJnZXogICAgY21wVGVtcCwg
Tm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24gYmlnIC0+IG5vIG92ZXJmbG93CisgICAgICAgICAg
ICAgICAgbm9wCisgICAgICAgICAgICAgICAgYiAgICAgICBPdmVyZmxvdworICAgICAgICAgICAg
ICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAg
ICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgTm9fb3ZlcmZs
b3c6CisgICAgICAgICAgICAqLworICAgICAgICAgICAgbW92ZShvcDEsIGRhdGFUZW1wUmVnaXN0
ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRh
dGFUZW1wUmVnaXN0ZXIsIG9wMik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRl
bXBSZWdpc3RlciwgMTApOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkdShkZXN0LCBkYXRh
VGVtcFJlZ2lzdGVyLCBvcDIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBU
ZW1wUmVnaXN0ZXIsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDcpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
bm9wKCk7CisgICAgICAgICAgICByZXR1cm4ganVtcCgpOworICAgICAgICB9CisgICAgICAgIGlm
IChjb25kID09IFNpZ25lZCkgeworICAgICAgICAgICAgYWRkMzIob3AxLCBvcDIsIGRlc3QpOwor
ICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdhdGl2ZS4KKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8p
OworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQ
U1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gWmVybykg
eworICAgICAgICAgICAgYWRkMzIob3AxLCBvcDIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJu
IGJyYW5jaEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAg
ICAgIGlmIChjb25kID09IE5vblplcm8pIHsKKyAgICAgICAgICAgIGFkZDMyKG9wMSwgb3AyLCBk
ZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChkZXN0LCBNSVBTUmVnaXN0
ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoMCk7CisgICAgICAgIHJldHVy
biBKdW1wKCk7CisgICAgfQorCiAgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24g
Y29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
bW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CkBAIC0xNDE3LDYgKzE2MDgsMTExIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGJyYW5jaEFkZDMyKGNvbmQsIGltbVRlbXBSZWdpc3RlciwgZGVz
dCk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwg
VHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBB
U1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0g
WmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxv
dykgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICBtb3ZlICAgIGRhdGFUZW1wLCBk
ZXN0CisgICAgICAgICAgICAgICAgeG9yaSAgICBjbXBUZW1wLCBkYXRhVGVtcCwgaW1tCisgICAg
ICAgICAgICAgICAgYmx0eiAgICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIGRpZmYgc2lnbiBi
aXQgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBhZGRpdSAgIGRhdGFUZW1wLCBkYXRh
VGVtcCwgaW1tCisgICAgICAgICAgICAgICAgbW92ZSAgICBkZXN0LCBkYXRhVGVtcAorICAgICAg
ICAgICAgICAgIHhvcmkgICAgY21wVGVtcCwgZGF0YVRlbXAsIGltbQorICAgICAgICAgICAgICAg
IGJnZXogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24gYmlnIC0+IG5vIG92
ZXJmbG93CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgYiAgICAgICBPdmVy
ZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAg
ICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAg
ICAgICAgICAgTm9fb3ZlcmZsb3c6CisgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKGlt
bS5tX3ZhbHVlID49IC0zMjc2OCAmJiBpbW0ubV92YWx1ZSAgPD0gMzI3NjcgJiYgIW1fZml4ZWRX
aWR0aCkgeworICAgICAgICAgICAgICAgIGxvYWQzMihkZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lz
dGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JpKGNtcFRlbXBSZWdpc3Rlciwg
ZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1fdmFsdWUpOworICAgICAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxMCk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuYWRkaXUoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1fdmFsdWUp
OworICAgICAgICAgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdC5tX3B0cik7
CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yaShjbXBUZW1wUmVnaXN0ZXIsIGRhdGFU
ZW1wUmVnaXN0ZXIsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5i
Z2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9w
KCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxvYWQzMihkZXN0Lm1f
cHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtb3ZlKGltbSwgaW1tVGVt
cFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBS
ZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRlbXBSZWdpc3RlciwgMTApOworICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmFkZGl1KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIs
IGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lz
dGVyLCBkZXN0Lm1fcHRyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JpKGNtcFRl
bXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7CisgICAgICAgICAg
ICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1
cm4ganVtcCgpOworICAgICAgICB9CisgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIp
OworICAgICAgICBsb2FkMzIoZGVzdC5tX3B0ciwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAg
IGFkZDMyKGltbVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHN0b3Jl
MzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdC5tX3B0cik7CisgICAgICAgIGlmIChjb25kID09IFNp
Z25lZCkgeworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdhdGl2ZS4KKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIs
IE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFs
KGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKGNvbmQgPT0gWmVybykKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hFcXVhbChkYXRh
VGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgaWYgKGNvbmQgPT0g
Tm9uWmVybykKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChkYXRhVGVtcFJlZ2lz
dGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgQVNTRVJUKDApOworICAgICAgICBy
ZXR1cm4gSnVtcCgpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoTXVsMzIoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09
IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOworICAgICAg
ICBpZiAoY29uZCA9PSBPdmVyZmxvdykgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAg
ICBtdWx0ICAgIHNyYywgZGVzdAorICAgICAgICAgICAgICAgIG1maGkgICAgZGF0YVRlbXAKKyAg
ICAgICAgICAgICAgICBtZmxvICAgIGRlc3QKKyAgICAgICAgICAgICAgICBzcmEgICAgIGFkZHJU
ZW1wLCBkZXN0LCAzMQorICAgICAgICAgICAgICAgIGJlcSAgICAgZGF0YVRlbXAsIGFkZHJUZW1w
LCBOb19vdmVyZmxvdyAjIGFsbCBzaWduIGJpdHMgKGJpdCA2MyB0byBiaXQgMzEpIGFyZSB0aGUg
c2FtZSAtPiBubyBvdmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAg
IGIgICAgICAgT3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBu
b3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAg
ICAgICBub3AKKyAgICAgICAgICAgIE5vX292ZXJmbG93OgorICAgICAgICAgICAgKi8KKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLm11bHQoc3JjMSwgc3JjMik7CisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5tZmhpKGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubWZs
byhkZXN0KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNyYShhZGRyVGVtcFJlZ2lzdGVyLCBk
ZXN0LCAzMSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZXEoZGF0YVRlbXBSZWdpc3Rlciwg
YWRkclRlbXBSZWdpc3RlciwgNyk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAg
ICAgICAgICAgIHJldHVybiBqdW1wKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0g
U2lnbmVkKSB7CisgICAgICAgICAgICBtdWwzMihzcmMxLCBzcmMyLCBkZXN0KTsKKyAgICAgICAg
ICAgIC8vIENoZWNrIGlmIGRlc3QgaXMgbmVnYXRpdmUuCisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5zbHQoY21wVGVtcFJlZ2lzdGVyLCBkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAg
ICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3Rl
cnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IFplcm8pIHsKKyAgICAg
ICAgICAgIG11bDMyKHNyYzEsIHNyYzIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5j
aEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIGlm
IChjb25kID09IE5vblplcm8pIHsKKyAgICAgICAgICAgIG11bDMyKHNyYzEsIHNyYzIsIGRlc3Qp
OworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6
Onplcm8pOworICAgICAgICB9CisgICAgICAgIEFTU0VSVCgwKTsKKyAgICAgICAgcmV0dXJuIEp1
bXAoKTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVNTRVJU
KChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8p
IHx8IChjb25kID09IE5vblplcm8pKTsKQEAgLTE0NjUsOCArMTc2MSw3IEBAIHB1YmxpYzoKICAg
ICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbW92ZShp
bW0sIGltbVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKLSAgICAgICAg
cmV0dXJuIGJyYW5jaE11bDMyKGNvbmQsIGltbVRlbXBSZWdpc3RlciwgZGVzdCk7CisgICAgICAg
IHJldHVybiBicmFuY2hNdWwzMihjb25kLCBpbW1UZW1wUmVnaXN0ZXIsIHNyYywgZGVzdCk7CiAg
ICAgfQogCiAgICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTE1MjUsOCArMTgyMCw2MCBAQCBwdWJsaWM6
CiAgICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBz
cmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1v
dmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICBtb3ZlKHNyYywgZGVzdCk7Ci0gICAg
ICAgIHJldHVybiBicmFuY2hTdWIzMihjb25kLCBpbW1UZW1wUmVnaXN0ZXIsIGRlc3QpOworICAg
ICAgICByZXR1cm4gYnJhbmNoU3ViMzIoY29uZCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIsIGRlc3Qp
OworICAgIH0KKworICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChj
b25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKKyAgICAgICAgaWYgKGNvbmQgPT0g
T3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgbW92ZSAgICBkYXRh
VGVtcCwgb3AxCisgICAgICAgICAgICAgICAgeG9yICAgICBjbXBUZW1wLCBkYXRhVGVtcCwgb3Ay
CisgICAgICAgICAgICAgICAgYmdleiAgICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIHNhbWUg
c2lnbiBiaXQgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBzdWJ1ICAgIGRlc3QsIGRh
dGFUZW1wLCBvcDIKKyAgICAgICAgICAgICAgICB4b3IgICAgIGNtcFRlbXAsIGRlc3QsIGRhdGFU
ZW1wCisgICAgICAgICAgICAgICAgYmdleiAgICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIHNh
bWUgc2lnbiBiaXQgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAg
ICAgICAgICBiICAgICAgIE92ZXJmbG93CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAg
ICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAg
ICAgICAgICAgICAgbm9wCisgICAgICAgICAgICBOb19vdmVyZmxvdzoKKyAgICAgICAgICAgICov
CisgICAgICAgICAgICBtb3ZlKG9wMSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBt
X2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwgb3Ay
KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCAxMCk7Cisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJ1KGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGVzdCwg
ZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBS
ZWdpc3RlciwgNyk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAg
IHJldHVybiBqdW1wKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7
CisgICAgICAgICAgICBzdWIzMihvcDEsIG9wMiwgZGVzdCk7CisgICAgICAgICAgICAvLyBDaGVj
ayBpZiBkZXN0IGlzIG5lZ2F0aXZlLgorICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0KGNtcFRl
bXBSZWdpc3RlciwgZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICByZXR1
cm4gYnJhbmNoTm90RXF1YWwoY21wVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBaZXJvKSB7CisgICAgICAgICAgICBzdWIz
MihvcDEsIG9wMiwgZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoRXF1YWwoZGVzdCwg
TUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gTm9u
WmVybykgeworICAgICAgICAgICAgc3ViMzIob3AxLCBvcDIsIGRlc3QpOworICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaE5vdEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAg
ICB9CisgICAgICAgIEFTU0VSVCgwKTsKKyAgICAgICAgcmV0dXJuIEp1bXAoKTsKKyAgICB9CisK
KyAgICBKdW1wIGJyYW5jaE5lZzMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNy
Y0Rlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5saShkYXRhVGVtcFJlZ2lzdGVyLCAt
MSk7CisgICAgICAgIHJldHVybiBicmFuY2hNdWwzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBz
cmNEZXN0KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaE9yMzIoUmVzdWx0Q29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCkBAIC0xNTc4LDcgKzE5MjUsOCBA
QCBwdWJsaWM6CiAKICAgICBDYWxsIGNhbGwoUmVnaXN0ZXJJRCB0YXJnZXQpCiAgICAgewotICAg
ICAgICBtX2Fzc2VtYmxlci5qYWxyKHRhcmdldCk7CisgICAgICAgIG1vdmUodGFyZ2V0LCBNSVBT
UmVnaXN0ZXJzOjp0OSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmphbHIoTUlQU1JlZ2lzdGVyczo6
dDkpOwogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICAgICAgcmV0dXJuIENhbGwobV9h
c3NlbWJsZXIubGFiZWwoKSwgQ2FsbDo6Tm9uZSk7CiAgICAgfQpAQCAtMTgyMiw3ICsyMTcwLDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgIGx1aSAgICAgaW1tVGVtcCwgKGFkZHJlc3Mub2Zm
c2V0ICsgMHg4MDAwKSA+PiAxNgogICAgICAgICAgICAgICAgIGFkZHUgICAgYWRkclRlbXAsIGFk
ZHJUZW1wLCBpbW1UZW1wCiAgICAgICAgICAgICAgICAgbHdjMSAgICBkZXN0LCAoYWRkcmVzcy5v
ZmZzZXQgJiAweGZmZmYpKGF0KQotICAgICAgICAgICAgICAgIGx3YzEgICAgZGVzdCs0LCAoYWRk
cmVzcy5vZmZzZXQgJiAweGZmZmYgKyA0KShhdCkKKyAgICAgICAgICAgICAgICBsd2MxICAgIGRl
c3QrMSwgKGFkZHJlc3Mub2Zmc2V0ICYgMHhmZmZmICsgNCkoYXQpCiAgICAgICAgICAgICAqLwog
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2xsKGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5k
ZXgsIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkdShhZGRyVGVt
cFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmJhc2UpOwpAQCAtMjAwOSw2ICsy
MzU3LDE5IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAorICAgIHZvaWQgbW92ZURvdWJsZShG
UFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChz
cmMgIT0gZGVzdCB8fCBtX2ZpeGVkV2lkdGgpCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3Zk
KGRlc3QsIHNyYyk7CisgICAgfQorCisgICAgdm9pZCBzd2FwRG91YmxlKEZQUmVnaXN0ZXJJRCBm
cjEsIEZQUmVnaXN0ZXJJRCBmcjIpCisgICAgeworICAgICAgICBtb3ZlRG91YmxlKGZyMSwgZnBU
ZW1wUmVnaXN0ZXIpOworICAgICAgICBtb3ZlRG91YmxlKGZyMiwgZnIxKTsKKyAgICAgICAgbW92
ZURvdWJsZShmcFRlbXBSZWdpc3RlciwgZnIyKTsKKyAgICB9CisKICAgICB2b2lkIGFkZERvdWJs
ZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1f
YXNzZW1ibGVyLmFkZGQoZGVzdCwgZGVzdCwgc3JjKTsKQEAgLTIwMzYsNiArMjM5NywxMSBAQCBw
dWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YmQoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9
CiAKKyAgICB2b2lkIHN1YkRvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3Ay
LCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YmQoZGVz
dCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgc3ViRG91YmxlKEFkZHJlc3Mgc3JjLCBG
UFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGxvYWREb3VibGUoc3JjLCBmcFRlbXBS
ZWdpc3Rlcik7CkBAIC0yMDUzLDExICsyNDE5LDMyIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3Nl
bWJsZXIubXVsZChkZXN0LCBkZXN0LCBmcFRlbXBSZWdpc3Rlcik7CiAgICAgfQogCisgICAgdm9p
ZCBtdWxEb3VibGUoRlBSZWdpc3RlcklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tdWxkKGRlc3QsIG9wMSwgb3Ay
KTsKKyAgICB9CisKICAgICB2b2lkIGRpdkRvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmRpdmQoZGVzdCwgZGVzdCwg
c3JjKTsKICAgICB9CiAKKyAgICB2b2lkIGRpdkRvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJl
Z2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLmRpdmQoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKworICAgIHZvaWQgZGl2RG91YmxlKEFk
ZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWREb3VibGUo
c3JjLCBmcFRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmRpdmQoZGVzdCwgZGVz
dCwgZnBUZW1wUmVnaXN0ZXIpOworICAgIH0KKworICAgIHZvaWQgbmVnYXRlRG91YmxlKEZQUmVn
aXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubmVnZChkZXN0LCBzcmMpOworICAgIH0KKwogICAgIHZvaWQgY29udmVydEludDMyVG9Eb3Vi
bGUoUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9h
c3NlbWJsZXIubXRjMShzcmMsIGZwVGVtcFJlZ2lzdGVyKTsKQEAgLTIxMTcsNiArMjUwNCw4IEBA
IHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoRXF1YWwoUmVnaXN0ZXJJRCBycywgUmVnaXN0ZXJJ
RCBydCkKICAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5ub3AoKTsKICAgICAgICAgbV9hc3NlbWJsZXIuYXBwZW5kSnVtcCgpOwogICAgICAgICBt
X2Fzc2VtYmxlci5iZXEocnMsIHJ0LCAwKTsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CkBA
IC0yMTI2LDYgKzI1MTUsOCBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaE5vdEVxdWFsKFJl
Z2lzdGVySUQgcnMsIFJlZ2lzdGVySUQgcnQpCiAgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5u
b3AoKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFw
cGVuZEp1bXAoKTsKICAgICAgICAgbV9hc3NlbWJsZXIuYm5lKHJzLCBydCwgMCk7CiAgICAgICAg
IG1fYXNzZW1ibGVyLm5vcCgpOwpAQCAtMjE5MiwxMSArMjU4MywzMyBAQCBwdWJsaWM6CiAgICAg
Ly8gSWYgdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50YWJsZSBhcyBhIDMyIGJpdCB2YWx1ZSwg
YnJhbmNoLgogICAgIC8vIE1heSBhbHNvIGJyYW5jaCBmb3Igc29tZSB2YWx1ZXMgdGhhdCBhcmUg
cmVwcmVzZW50YWJsZSBpbiAzMiBiaXRzCiAgICAgLy8gKHNwZWNpZmljYWxseSwgaW4gdGhpcyBj
YXNlLCBJTlRfTUFYIDB4N2ZmZmZmZmYpLgotICAgIEp1bXAgYnJhbmNoVHJ1bmNhdGVEb3VibGVU
b0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICBlbnVtIEJyYW5j
aFRydW5jYXRlVHlwZSB7IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQsIEJyYW5jaElmVHJ1bmNhdGVT
dWNjZXNzZnVsIH07CisgICAgSnVtcCBicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoRlBSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBCcmFuY2hUcnVuY2F0ZVR5cGUgYnJhbmNoVHlw
ZSA9IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci50
cnVuY3dkKGZwVGVtcFJlZ2lzdGVyLCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci5tZmMxKGRl
c3QsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGJyYW5jaFR5cGUg
PT0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCA/IEVxdWFsIDogTm90RXF1YWwsIGRlc3QsIFRydXN0
ZWRJbW0zMigweDdmZmZmZmZmKSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hUcnVuY2F0ZURv
dWJsZVRvVWludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgQnJhbmNoVHJ1
bmNhdGVUeXBlIGJyYW5jaFR5cGUgPSBCcmFuY2hJZlRydW5jYXRlRmFpbGVkKQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIudHJ1bmN3ZChmcFRlbXBSZWdpc3Rlciwgc3JjKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIubWZjMShkZXN0LCBmcFRlbXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBi
cmFuY2gzMihicmFuY2hUeXBlID09IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQgPyBFcXVhbCA6IE5v
dEVxdWFsLCBkZXN0LCBUcnVzdGVkSW1tMzIoMCkpOworICAgIH0KKworICAgIC8vIFJlc3VsdCBp
cyB1bmRlZmluZWQgaWYgdGhlIHZhbHVlIGlzIG91dHNpZGUgb2YgdGhlIGludGVnZXIgcmFuZ2Uu
CisgICAgdm9pZCB0cnVuY2F0ZURvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudHJ1bmN3ZChmcFRlbXBSZWdp
c3Rlciwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubWZjMShkZXN0LCBmcFRlbXBSZWdpc3Rl
cik7CisgICAgfQorCisgICAgLy8gUmVzdWx0IGlzIHVuZGVmaW5lZCBpZiBzcmMgPiAyXjMxCisg
ICAgdm9pZCB0cnVuY2F0ZURvdWJsZVRvVWludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnRydW5jd2QoZnBUZW1wUmVnaXN0
ZXIsIHNyYyk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1mYzEoZGVzdCwgZnBUZW1wUmVnaXN0ZXIp
OwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoRXF1YWwsIGRlc3QsIFRydXN0ZWRJbW0zMigweDdm
ZmZmZmZmKSk7CiAgICAgfQogCiAgICAgLy8gQ29udmVydCAnc3JjJyB0byBhbiBpbnRlZ2VyLCBh
bmQgcGxhY2VzIHRoZSByZXN1bHRpbmcgJ2Rlc3QnLgpAQCAtMjIxOCwyOCArMjYzMSw0MyBAQCBw
dWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaERvdWJsZU5vblplcm8oRlBSZWdpc3RlcklEIHJlZywg
RlBSZWdpc3RlcklEIHNjcmF0Y2gpCiAgICAgewotI2lmIFdURl9NSVBTX0lTQV9SRVYoMikgJiYg
V1RGX01JUFNfRlA2NAotICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6Onpl
cm8sIHNjcmF0Y2gpOwotICAgICAgICBtX2Fzc2VtYmxlci5tdGhjMShNSVBTUmVnaXN0ZXJzOjp6
ZXJvLCBzY3JhdGNoKTsKLSNlbHNlCi0gICAgICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQU1JlZ2lz
dGVyczo6emVybywgc2NyYXRjaCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQU1JlZ2lz
dGVyczo6emVybywgRlBSZWdpc3RlcklEKHNjcmF0Y2ggKyAxKSk7Ci0jZW5kaWYKKyAgICAgICAg
bV9hc3NlbWJsZXIudm1vdihzY3JhdGNoLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBNSVBTUmVnaXN0
ZXJzOjp6ZXJvKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaERvdWJsZShEb3VibGVOb3RFcXVhbCwg
cmVnLCBzY3JhdGNoKTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaERvdWJsZVplcm9Pck5hTihG
UFJlZ2lzdGVySUQgcmVnLCBGUFJlZ2lzdGVySUQgc2NyYXRjaCkKICAgICB7Ci0jaWYgV1RGX01J
UFNfSVNBX1JFVigyKSAmJiBXVEZfTUlQU19GUDY0Ci0gICAgICAgIG1fYXNzZW1ibGVyLm10YzEo
TUlQU1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm10aGMx
KE1JUFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0Y2gpOwotI2Vsc2UKLSAgICAgICAgbV9hc3NlbWJs
ZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzY3JhdGNoKTsKLSAgICAgICAgbV9hc3NlbWJs
ZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBGUFJlZ2lzdGVySUQoc2NyYXRjaCArIDEpKTsK
LSNlbmRpZgorICAgICAgICBtX2Fzc2VtYmxlci52bW92KHNjcmF0Y2gsIE1JUFNSZWdpc3RlcnM6
Onplcm8sIE1JUFNSZWdpc3RlcnM6Onplcm8pOwogICAgICAgICByZXR1cm4gYnJhbmNoRG91Ymxl
KERvdWJsZUVxdWFsT3JVbm9yZGVyZWQsIHJlZywgc2NyYXRjaCk7CiAgICAgfQogCisgICAgLy8g
SW52ZXJ0IGEgcmVsYXRpb25hbCBjb25kaXRpb24sIGUuZy4gPT0gYmVjb21lcyAhPSwgPCBiZWNv
bWVzID49LCBldGMuCisgICAgc3RhdGljIFJlbGF0aW9uYWxDb25kaXRpb24gaW52ZXJ0KFJlbGF0
aW9uYWxDb25kaXRpb24gY29uZCkKKyAgICB7CisgICAgICAgIFJlbGF0aW9uYWxDb25kaXRpb24g
cjsKKyAgICAgICAgaWYgKGNvbmQgPT0gRXF1YWwpCisgICAgICAgICAgICByID0gTm90RXF1YWw7
CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gTm90RXF1YWwpCisgICAgICAgICAgICByID0gRXF1
YWw7CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gQWJvdmUpCisgICAgICAgICAgICByID0gQmVs
b3dPckVxdWFsOworICAgICAgICBlbHNlIGlmIChjb25kID09IEFib3ZlT3JFcXVhbCkKKyAgICAg
ICAgICAgIHIgPSBCZWxvdzsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBCZWxvdykKKyAgICAg
ICAgICAgIHIgPSBBYm92ZU9yRXF1YWw7CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gQmVsb3dP
ckVxdWFsKQorICAgICAgICAgICAgciA9IEFib3ZlOworICAgICAgICBlbHNlIGlmIChjb25kID09
IEdyZWF0ZXJUaGFuKQorICAgICAgICAgICAgciA9IExlc3NUaGFuT3JFcXVhbDsKKyAgICAgICAg
ZWxzZSBpZiAoY29uZCA9PSBHcmVhdGVyVGhhbk9yRXF1YWwpCisgICAgICAgICAgICByID0gTGVz
c1RoYW47CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gTGVzc1RoYW4pCisgICAgICAgICAgICBy
ID0gR3JlYXRlclRoYW5PckVxdWFsOworICAgICAgICBlbHNlIGlmIChjb25kID09IExlc3NUaGFu
T3JFcXVhbCkKKyAgICAgICAgICAgIHIgPSBHcmVhdGVyVGhhbjsKKyAgICAgICAgcmV0dXJuIHI7
CisgICAgfQorCiAgICAgdm9pZCBub3AoKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubm9w
KCk7CkBAIC0yMjUyLDEyICsyNjgwLDEyIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHJl
cGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9j
YXRpb25MYWJlbCBkZXN0aW5hdGlvbikKICAgICB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICBNSVBTQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoaW5zdHJ1Y3Rpb25T
dGFydC5kYXRhTG9jYXRpb24oKSwgZGVzdGluYXRpb24uZGF0YUxvY2F0aW9uKCkpOwogICAgIH0K
ICAgICAKICAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQogICAg
IHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIE1JUFNBc3NlbWJsZXI6
Om1heEp1bXBSZXBsYWNlbWVudFNpemUoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaAppbmRleCBm
YTBmNWUwLi41NzNkOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNz
ZW1ibHlIZWxwZXJzLmgKQEAgLTkzLDYgKzkzLDIzIEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYK
IAorI2lmIENQVShNSVBTKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwcmVzZXJ2ZVJldHVybkFk
ZHJlc3NBZnRlckNhbGwoUmVnaXN0ZXJJRCByZWcpCisgICAgeworICAgICAgICBtb3ZlKHJldHVy
bkFkZHJlc3NSZWdpc3RlciwgcmVnKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
cmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oUmVnaXN0ZXJJRCByZWcpCisgICAgewor
ICAgICAgICBtb3ZlKHJlZywgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKKyAgICB9CisKKyAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oQWRkcmVz
cyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbG9hZFB0cihhZGRyZXNzLCByZXR1cm5BZGRyZXNz
UmVnaXN0ZXIpOworICAgIH0KKyNlbmRpZgorCiAgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFt
ZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSwgR1BSUmVnIHRv
KQogICAgIHsKICAgICAgICAgbG9hZFB0cihBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBlbnRyeSAqIHNpemVvZihSZWdpc3RlcikpLCB0byk7CkBAIC0xOTMsNyArMjEwLDcgQEAg
cHVibGljOgogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWN0aXZl
TGVuZ3RoUHRyKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJ
bW1QdHIoc2NyYXRjaFNpemUpLCBHUFJJbmZvOjpyZWdUMCk7CiAKLSNpZiBDUFUoWDg2XzY0KSB8
fCBDUFUoQVJNKQorI2lmIENQVShYODZfNjQpIHx8IENQVShBUk0pIHx8IENQVShNSVBTKQogICAg
ICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYnVmZmVyKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsK
ICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFyZ3VtZW50KSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIxKTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVy
cy5oCmluZGV4IDhhZGRlMDUuLjNkOTlmNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDQ2FsbEhlbHBlcnMuaApAQCAtNTc2LDYgKzU3NiwzOSBAQCBwdWJsaWM6CiAgICAgICAg
IHBva2UoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgfQogI2VuZGlmIC8vIENQVShBUk1fSEFS
REZQKQorI2VsaWYgQ1BVKE1JUFMpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1l
bnRzKEZQUlJlZyBhcmcxKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZv
Ojphcmd1bWVudEZQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50cyhGUFJSZWcgYXJnMSwgRlBSUmVnIGFyZzIpCisgICAgeworICAgICAgICBpZiAoYXJn
MiAhPSBGUFJJbmZvOjphcmd1bWVudEZQUjApIHsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoYXJn
MSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMiwg
RlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKKyAgICAgICAgfSBlbHNlIGlmIChhcmcxICE9IEZQUklu
Zm86OmFyZ3VtZW50RlBSMSkgeworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZv
Ojphcmd1bWVudEZQUjEpOworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjph
cmd1bWVudEZQUjApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gU3dhcCBhcmcx
LCBhcmcyLgorICAgICAgICAgICAgc3dhcERvdWJsZShGUFJJbmZvOjphcmd1bWVudEZQUjAsIEZQ
UkluZm86OmFyZ3VtZW50RlBSMSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEZQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMikKKyAgICB7CisgICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJndW1lbnRH
UFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjMsIGFyZzEpOworICAgICAgICBtb3ZlKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBwb2tl
KGFyZzIsIDQpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBGUFJSZWcgYXJnMykKKyAg
ICB7CisgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKKyAgICAgICAgbW92
ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAg
ICAgICAgcG9rZShhcmczLCA0KTsKKyAgICB9CiAjZWxzZQogI2Vycm9yICJERkcgSklUIG5vdCBz
dXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4iCiAjZW5kaWYKQEAgLTgwMywxMTkgKzgzNiwxMjYg
QEAgcHVibGljOgogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHN1aXRhYmxlIGZvciBhbnkgY2Fs
bGluZyBjb252ZW50aW9uIHRoYXQgcHJvdmlkZXMgZm9yCiAgICAgLy8gZXhhY3RseSA0IGFyZ3Vt
ZW50IHJlZ2lzdGVycywgZS5nLiBBUk12Ny4KICNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNU
RVJTID09IDQKKworI2lmIENQVShNSVBTKQorI2RlZmluZSBQT0tFX0FSR1VNRU5UX09GRlNFVCA0
CisjZWxzZQorI2RlZmluZSBQT0tFX0FSR1VNRU5UX09GRlNFVCAwCisjZW5kaWYKKwogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewotICAgICAgICBw
b2tlKGFyZzQpOworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAg
ICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAg
IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
R1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQp
CiAgICAgewotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJH
VU1FTlRfT0ZGU0VUKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3Rl
ZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAg
ICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CiAgICAgICAgIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBU
cnVzdGVkSW1tUHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVn
IGFyZzUpCiAgICAgewotICAgICAgICBwb2tlKGFyZzUsIDEpOwotICAgICAgICBwb2tlKGFyZzQp
OworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7CisgICAgICAg
IHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVn
IGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCkKICAgICB7Ci0gICAg
ICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQp
OwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7
CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBhcmczLCBH
UFJSZWcgYXJnNCkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2UoYXJn
NCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQ
UlJlZyBhcmczLCBUcnVzdGVkSW1tUHRyIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFyZzQp
OworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQog
ICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCAxKTsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAg
ICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOworICAgICAgICBwb2tlKGFy
ZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBh
cmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFyZzQp
OworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbVB0ciBhcmc0KQog
ICAgIHsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VN
RU5UX09GRlNFVCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZElt
bTMyIGFyZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNCk7
CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwogICAgICAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
MzIgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCkKICAg
ICB7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVO
VF9PRkZTRVQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
MiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmcz
LCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCiAgICAgewotICAgICAgICBwb2tlKGFyZzUsIDEp
OwotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRf
T0ZGU0VUICsgMSk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwog
ICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAg
ICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJn
NCwgVHJ1c3RlZEltbTMyIGFyZzUpCiAgICAgewotICAgICAgICBwb2tlKGFyZzUsIDEpOwotICAg
ICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VU
ICsgMSk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwogICAgICAg
ICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQog
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVz
dGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgVHJ1
c3RlZEltbVB0ciBhcmc1KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCAxKTsKLSAgICAgICAg
cG9rZShhcmc0KTsKKyAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEp
OworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQsIFRy
dXN0ZWRJbW0zMiBhcmc1KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCAxKTsKLSAgICAgICAg
cG9rZShhcmc0KTsKKyAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEp
OworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFy
ZzQsIEdQUlJlZyBhcmc1KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCAxKTsKLSAgICAgICAg
cG9rZShhcmc0KTsKKyAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEp
OworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBh
cmc1KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCAxKTsKLSAgICAgICAgcG9rZShhcmc0KTsK
KyAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOworICAgICAgICBw
b2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZQUkluZm8uaAppbmRleCBkNmEwMzhhLi42Zjk2OGUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaApAQCAtMTY0LDYgKzE2NCw3NCBAQCBwdWJsaWM6CiAK
ICNlbmRpZgogCisjaWYgQ1BVKE1JUFMpCisKK2NsYXNzIEZQUkluZm8geworcHVibGljOgorICAg
IHR5cGVkZWYgRlBSUmVnIFJlZ2lzdGVyVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
bnVtYmVyT2ZSZWdpc3RlcnMgPSA2OworCisgICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KKyAg
ICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDAgPSBNSVBTUmVnaXN0ZXJzOjpmMDsKKyAgICBz
dGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDEgPSBNSVBTUmVnaXN0ZXJzOjpmNDsKKyAgICBzdGF0
aWMgY29uc3QgRlBSUmVnIGZwUmVnVDIgPSBNSVBTUmVnaXN0ZXJzOjpmNjsKKyAgICBzdGF0aWMg
Y29uc3QgRlBSUmVnIGZwUmVnVDMgPSBNSVBTUmVnaXN0ZXJzOjpmODsKKyAgICBzdGF0aWMgY29u
c3QgRlBSUmVnIGZwUmVnVDQgPSBNSVBTUmVnaXN0ZXJzOjpmMTA7CisgICAgc3RhdGljIGNvbnN0
IEZQUlJlZyBmcFJlZ1Q1ID0gTUlQU1JlZ2lzdGVyczo6ZjE4OworCisgICAgc3RhdGljIGNvbnN0
IEZQUlJlZyByZXR1cm5WYWx1ZUZQUiA9IE1JUFNSZWdpc3RlcnM6OmYwOworCisgICAgc3RhdGlj
IGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjAgPSBNSVBTUmVnaXN0ZXJzOjpmMTI7CisgICAgc3Rh
dGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjEgPSBNSVBTUmVnaXN0ZXJzOjpmMTQ7CisKKyAg
ICBzdGF0aWMgRlBSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAg
ICBzdGF0aWMgY29uc3QgRlBSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNd
ID0geworICAgICAgICAgICAgZnBSZWdUMCwgZnBSZWdUMSwgZnBSZWdUMiwgZnBSZWdUMywgZnBS
ZWdUNCwgZnBSZWdUNSB9OworCisgICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mUmVnaXN0
ZXJzKTsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOworICAgIH0KKwor
ICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEZQUlJlZyByZWcpCisgICAgeworICAgICAgICBB
U1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwgMjApOwor
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3RlclsyMF0gPSB7Cisg
ICAgICAgICAgICAwLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LAor
ICAgICAgICAgICAgMSwgSW52YWxpZEluZGV4LCAyLCBJbnZhbGlkSW5kZXgsCisgICAgICAgICAg
ICAzLCBJbnZhbGlkSW5kZXgsIDQsIEludmFsaWRJbmRleCwKKyAgICAgICAgICAgIEludmFsaWRJ
bmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwKKyAgICAgICAg
ICAgIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCA1LCBJbnZhbGlkSW5kZXgsCisgICAgICAg
IH07CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGluZGV4Rm9yUmVnaXN0ZXJbcmVnXTsKKyAg
ICAgICAgQVNTRVJUKHJlc3VsdCAhPSBJbnZhbGlkSW5kZXgpOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoRlBSUmVnIHJl
ZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7CisgICAgICAg
IEFTU0VSVChyZWcgPCAzMik7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lRm9yUmVn
aXN0ZXJbMzJdID0geworICAgICAgICAgICAgImYwIiwgImYxIiwgImYyIiwgImYzIiwKKyAgICAg
ICAgICAgICJmNCIsICJmNSIsICJmNiIsICJmNyIsCisgICAgICAgICAgICAiZjgiLCAiZjkiLCAi
ZjEwIiwgImYxMSIsCisgICAgICAgICAgICAiZjEyIiwgImYxMyIsICJmMTQiLCAiZjE1IgorICAg
ICAgICAgICAgImYxNiIsICJmMTciLCAiZjE4IiwgImYxOSIKKyAgICAgICAgICAgICJmMjAiLCAi
ZjIxIiwgImYyMiIsICJmMjMiCisgICAgICAgICAgICAiZjI0IiwgImYyNSIsICJmMjYiLCAiZjI3
IgorICAgICAgICAgICAgImYyOCIsICJmMjkiLCAiZjMwIiwgImYzMSIKKyAgICAgICAgfTsKKyAg
ICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOworICAgIH0KK3ByaXZhdGU6CisKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW52YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsKK307CisK
KyNlbmRpZgorCiB0eXBlZGVmIFJlZ2lzdGVyQmFuazxGUFJJbmZvPjo6aXRlcmF0b3IgZnByX2l0
ZXJhdG9yOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR1BSSW5mby5oCmluZGV4IDNkMDc1NTYuLmFhNjM0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR1BSSW5mby5oCkBAIC00NjEsNiArNDYxLDczIEBAIHByaXZhdGU6CiAKICNl
bmRpZgogCisjaWYgQ1BVKE1JUFMpCisjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RF
UlMgNAorCitjbGFzcyBHUFJJbmZvIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEdQUlJlZyBSZWdp
c3RlclR5cGU7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0g
NjsKKworICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0IEdQUlJl
ZyByZWdUMCA9IE1JUFNSZWdpc3RlcnM6OnYwOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVn
VDEgPSBNSVBTUmVnaXN0ZXJzOjp2MTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QyID0g
TUlQU1JlZ2lzdGVyczo6dDQ7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMyA9IE1JUFNS
ZWdpc3RlcnM6OnQ1OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDQgPSBNSVBTUmVnaXN0
ZXJzOjp0NjsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q1ID0gTUlQU1JlZ2lzdGVyczo6
dDc7CisgICAgLy8gVGhlc2UgcmVnaXN0ZXJzIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQuCisgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IHJlZ1QwOworICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIyID0gcmVnVDE7CisgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OnMwOwor
ICAgIC8vIFRoZXNlIGNvbnN0YW50cyBwcm92aWRlIHRoZSBuYW1lcyBmb3IgdGhlIGdlbmVyYWwg
cHVycG9zZSBhcmd1bWVudCAmIHJldHVybiB2YWx1ZSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyBhcmd1bWVudEdQUjAgPSBNSVBTUmVnaXN0ZXJzOjphMDsKKyAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMSA9IE1JUFNSZWdpc3RlcnM6OmExOworICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIyID0gTUlQU1JlZ2lzdGVyczo6YTI7CisgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBNSVBTUmVnaXN0ZXJzOjphMzsKKyAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjAgPSByZWdUMjsKKyAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIG5vbkFyZ0dQUjEgPSByZWdUMzsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFy
Z0dQUjIgPSByZWdUNDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0g
cmVnVDA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSByZWdUMTsK
KyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IHJlZ1Q1
OworCisgICAgc3RhdGljIEdQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQorICAgIHsK
KyAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0geyBy
ZWdUMCwgcmVnVDEsIHJlZ1QyLCByZWdUMywgcmVnVDQsIHJlZ1Q1IH07CisgICAgICAgIHJldHVy
biByZWdpc3RlckZvckluZGV4W2luZGV4XTsKKyAgICB9CisKKyAgICBzdGF0aWMgdW5zaWduZWQg
dG9JbmRleChHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlk
R1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDE2KTsKKyAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIGluZGV4Rm9yUmVnaXN0ZXJbMTZdID0geyBJbnZhbGlkSW5kZXgsIEludmFsaWRJ
bmRleCwgMCwgMSwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52
YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZh
bGlkSW5kZXgsIDIsIDMsIDQsIDUgfTsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gaW5kZXhG
b3JSZWdpc3RlcltyZWddOworICAgICAgICBBU1NFUlQocmVzdWx0ICE9IEludmFsaWRJbmRleCk7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGNoYXIq
IGRlYnVnTmFtZShHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZh
bGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDE2KTsKKyAgICAgICAgc3RhdGljIGNv
bnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclsxNl0gPSB7CisgICAgICAgICAgICAiemVybyIsICJh
dCIsICJ2MCIsICJ2MSIsCisgICAgICAgICAgICAiYTAiLCAiYTEiLCAiYTIiLCAiYTMiLAorICAg
ICAgICAgICAgInQwIiwgInQxIiwgInQyIiwgInQzIiwKKyAgICAgICAgICAgICJ0NCIsICJ0NSIs
ICJ0NiIsICJ0NyIKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3Rlclty
ZWddOworICAgIH0KK3ByaXZhdGU6CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW52YWxp
ZEluZGV4ID0gMHhmZmZmZmZmZjsKK307CisKKyNlbmRpZgorCiB0eXBlZGVmIFJlZ2lzdGVyQmFu
azxHUFJJbmZvPjo6aXRlcmF0b3IgZ3ByX2l0ZXJhdG9yOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
aW5kZXggNjNlMzUyMC4uYjJlY2JhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTI3NCw3ICsxMjc0LDcgQEAgcHVibGljOgogCiAvLyBF
bmNvZGVkSlNWYWx1ZSBpbiBKU1ZBTFVFMzJfNjQgaXMgYSA2NC1iaXQgaW50ZWdlci4gV2hlbiBi
ZWluZyBjb21waWxlZCBpbiBBUk0gRUFCSSwgaXQgbXVzdCBiZSBhbGlnbmVkIGV2ZW4tbnVtYmVy
ZWQgcmVnaXN0ZXIgKHIwLCByMiBvciBbc3BdKS4KIC8vIFRvIGF2b2lkIGFzc2VtYmxpZXMgZnJv
bSB1c2luZyB3cm9uZyByZWdpc3RlcnMsIGxldCdzIG9jY3VweSByMSBvciByMyB3aXRoIGEgZHVt
bXkgYXJndW1lbnQgd2hlbiBuZWNlc3NhcnkuCi0jaWYgQ09NUElMRVJfU1VQUE9SVFMoRUFCSSkg
JiYgQ1BVKEFSTSkKKyNpZiAoQ09NUElMRVJfU1VQUE9SVFMoRUFCSSkgJiYgQ1BVKEFSTSkpIHx8
IENQVShNSVBTKQogI2RlZmluZSBFQUJJXzMyQklUX0RVTU1ZX0FSRyAgICAgIFRydXN0ZWRJbW0z
MigwKSwKICNlbHNlCiAjZGVmaW5lIEVBQklfMzJCSVRfRFVNTVlfQVJHCkBAIC0xNzE5LDcgKzE3
MTksNyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAgICAgCi0jaWYgIWRlZmluZWQoTkRFQlVH
KSAmJiAhQ1BVKEFSTSkKKyNpZiAhZGVmaW5lZChOREVCVUcpICYmICFDUFUoQVJNKSAmJiAhQ1BV
KE1JUFMpCiAgICAgdm9pZCBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCkKICAgICB7CiAgICAgICAg
IC8vIFdlJ3JlIGFib3V0IHRvIGNhbGwgb3V0IHRvIGEgIm5hdGl2ZSIgaGVscGVyIGZ1bmN0aW9u
LiBUaGUgaGVscGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50
ZXJmYWNlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgK
aW5kZXggMmY0YjRlMy4uYTI4ZjM1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KU0ludGVyZmFjZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJ
bnRlcmZhY2VKSVQuaApAQCAtMTI1LDYgKzEyNSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSBNSVBTUmVn
aXN0ZXJzOjp2MDsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgZmlyc3RBcmd1bWVu
dFJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6YTA7CiAgICAgICAgIAorI2lmIEVOQUJMRShWQUxV
RV9QUk9GSUxFUikKKyAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgYnVja2V0Q291bnRl
clJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6czM7CisjZW5kaWYKKwogICAgICAgICAvLyByZWdU
MCBtdXN0IGJlIHYwIGZvciByZXR1cm5pbmcgYSAzMi1iaXQgdmFsdWUuCiAgICAgICAgIHN0YXRp
YyBjb25zdCBSZWdpc3RlcklEIHJlZ1QwID0gTUlQU1JlZ2lzdGVyczo6djA7CiAgICAgICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAppbmRleCA5ZTUw
N2Y3Li42YTU5MGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuaApAQCAtMTMzLDE0ICsxMzMsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHNpemVfdCBhbGxv
Y2F0aW9uU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkgeyByZXR1cm4gc2l6ZW9mKHNpemVfdCkgKyBi
dWZmZXJTaXplOyB9CisgICAgICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90
IGJ1ZmZlclNpemUpIHsgcmV0dXJuIHNpemVvZihTY3JhdGNoQnVmZmVyKSArIGJ1ZmZlclNpemU7
IH0KICAgICAgICAgdm9pZCBzZXRBY3RpdmVMZW5ndGgoc2l6ZV90IGFjdGl2ZUxlbmd0aCkgeyBt
X2FjdGl2ZUxlbmd0aCA9IGFjdGl2ZUxlbmd0aDsgfQogICAgICAgICBzaXplX3QgYWN0aXZlTGVu
Z3RoKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVMZW5ndGg7IH07CiAgICAgICAgIHNpemVfdCog
YWN0aXZlTGVuZ3RoUHRyKCkgeyByZXR1cm4gJm1fYWN0aXZlTGVuZ3RoOyB9OwogICAgICAgICB2
b2lkKiBkYXRhQnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogICAgICAgICBzaXplX3Qg
bV9hY3RpdmVMZW5ndGg7CisjaWYgQ1BVKE1JUFMpICYmIChkZWZpbmVkIFdURl9NSVBTX0FSQ0hf
UkVWICYmIFdURl9NSVBTX0FSQ0hfUkVWID09IDIpCisgICAgICAgIHZvaWQqIG1fYnVmZmVyWzBd
IF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKTsKKyNlbHNlCiAgICAgICAgIHZvaWQqIG1fYnVm
ZmVyWzBdOworI2VuZGlmCiAgICAgfTsKICNpZiBDT01QSUxFUihNU1ZDKQogI3ByYWdtYSB3YXJu
aW5nKHBvcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9D
aGFuZ2VMb2cKaW5kZXggYzY1Y2Q3ZC4uMDVjYjA0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAx
My0wMS0xOCAgQmFsYXpzIEtpbHZhZHkgIDxraWx2YWR5YkBob21lamlubmkuY29tPgorCisgICAg
ICAgIE1JUFMgREZHIGltcGxlbWVudGF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgREZHIGltcGxlbWVudGF0aW9uIGZvciBNSVBTLgorCisgICAg
ICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTMtMDEtMTcgIERhdmlkIEtpbHplciAgPGRka2ls
emVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdnByaW50Zl9zdGRlcnJfY29tbW9uKCkgdG8g
Y29tcGlsZSB3aXRoIC1Xc2hvcnRlbi02NC10by0zMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggZTMxZTVmNi4u
YjhlNDhkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC05NDQsNiArOTQ0LDEwIEBACiAjaWYgQ1BVKEFSTV9U
UkFESVRJT05BTCkKICNkZWZpbmUgRU5BQkxFX0RGR19KSVQgMQogI2VuZGlmCisvKiBFbmFibGUg
dGhlIERGRyBKSVQgb24gTUlQUy4gKi8KKyNpZiBDUFUoTUlQUykKKyNkZWZpbmUgRU5BQkxFX0RG
R19KSVQgMQorI2VuZGlmCiAjZW5kaWYKIAogLyogSWYgdGhlIGppdCBpcyBub3QgYXZhaWxhYmxl
LCBlbmFibGUgdGhlIExMSW50IEMgTG9vcDogKi8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183416</attachid>
            <date>2013-01-18 02:55:35 -0800</date>
            <delta_ts>2013-01-21 03:24:00 -0800</delta_ts>
            <desc>DFG for MIPS - arg. offset with inline</desc>
            <filename>dfg-i.diff</filename>
            <type>text/plain</type>
            <size>52482</size>
            <attacher name="Balazs Kilvady">kilvadyb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDcwMTMzNmMuLjliYjgzNDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDEzLTAxLTE4ICBCYWxhenMgS2lsdmFk
eSAgPGtpbHZhZHliQGhvbWVqaW5uaS5jb20+CisKKyAgICAgICAgTUlQUyBERkcgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
RkcgaW1wbGVtZW50YXRpb24gZm9yIE1JUFMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTUlQU0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpNSVBTQXNzZW1ibGVyKToK
KyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6c2xsdik6CisgICAgICAgIChKU0M6Ok1JUFNB
c3NlbWJsZXI6Om1vdmQpOgorICAgICAgICAoTUlQU0Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6
Ok1JUFNBc3NlbWJsZXI6Om5lZ2QpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJl
bEZvcldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJlbCk6Cisg
ICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6OnZtb3YpOgorICAgICAgICAoSlNDOjpNSVBTQXNz
ZW1ibGVyOjpsaW5rRGlyZWN0SnVtcCk6CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6Om1h
eEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpyZXZl
cnRKdW1wVG9Nb3ZlKToKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhK
dW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKE1h
Y3JvQXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBva2UpOgorICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJNSVBTOjphZGQzMik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlck1JUFMpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmFuZDMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJNSVBTOjpsc2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyTUlQUzo6bXVsMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om9yMzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJzaGlmdDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjp1cnNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OnN1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
Ojp4b3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6c3RvcmUzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6anVtcCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoQWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OmJyYW5jaE11bDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
OjpicmFuY2hTdWIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNo
TmVnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmNhbGwpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmxvYWREb3VibGUpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6Om1vdmVEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OnN3YXBEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6
OnN1YkRvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6bXVsRG91Ymxl
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpkaXZEb3VibGUpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om5lZ2F0ZURvdWJsZSk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRXF1YWwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlck1JUFM6OmJyYW5jaE5vdEVxdWFsKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJNSVBTOjpicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OmJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnRydW5jYXRlRG91YmxlVG9JbnQzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6dHJ1bmNhdGVEb3VibGVUb1VpbnQzMik6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlTm9uWmVybyk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlWmVyb09yTmFOKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjppbnZlcnQpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyTUlQUzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogZGZnL0RG
R0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoQXNzZW1ibHlIZWxwZXJzKToKKyAgICAgICAg
KEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybik6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpk
ZWJ1Z0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEND
YWxsSGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3Vt
ZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUpOgorICAgICAgICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6cG9rZUFyZ3Vt
ZW50KToKKyAgICAgICAgKiBkZmcvREZHRlBSSW5mby5oOgorICAgICAgICAoREZHKToKKyAgICAg
ICAgKEZQUkluZm8pOgorICAgICAgICAoSlNDOjpERkc6OkZQUkluZm86OnRvUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpERkc6OkZQUkluZm86OnRvSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6
OkZQUkluZm86OmRlYnVnTmFtZSk6CisgICAgICAgICogZGZnL0RGR0dQUkluZm8uaDoKKyAgICAg
ICAgKERGRyk6CisgICAgICAgIChHUFJJbmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpHUFJJbmZv
Ojp0b1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpHUFJJbmZvOjp0b0luZGV4KToKKyAg
ICAgICAgKEpTQzo6REZHOjpHUFJJbmZvOjpkZWJ1Z05hbWUpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoU3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAqIGpp
dC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAoSlNJbnRlcmZhY2VKSVQpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0M6OlNjcmF0Y2hCdWZmZXI6OmFs
bG9jYXRpb25TaXplKToKKyAgICAgICAgKFNjcmF0Y2hCdWZmZXIpOgorCiAyMDEzLTAxLTE3ICBB
bGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZGVkIHN2bjpp
Z25vcmU9Ki5weWMsIHNvIHRoYXQgdWRfb3Bjb2RlLnB5YyBhbmQgdWRfb3B0YWJsZS5weWMgZG9u
J3Qgc2hvdyB1cApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
SVBTQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3Nl
bWJsZXIuaAppbmRleCAwMjZmODdlLi43ZjU1M2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaApAQCAtMTUyLDYgKzE1Miw4IEBAIHB1Ymxp
YzoKICAgICB0eXBlZGVmIFNlZ21lbnRlZFZlY3RvcjxBc3NlbWJsZXJMYWJlbCwgNjQ+IEp1bXBz
OwogCiAgICAgTUlQU0Fzc2VtYmxlcigpCisgICAgICAgIDogbV9pbmRleE9mTGFzdFdhdGNocG9p
bnQoSU5UX01JTikKKyAgICAgICAgLCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludChJTlRf
TUlOKQogICAgIHsKICAgICB9CiAKQEAgLTMyNSw3ICszMjcsNyBAQCBwdWJsaWM6CiAgICAgICAg
IGVtaXRJbnN0KDB4MDAwMDAwMDAgfCAocmQgPDwgT1BfU0hfUkQpIHwgKHJ0IDw8IE9QX1NIX1JU
KSB8ICgoc2hhbXQgJiAweDFmKSA8PCBPUF9TSF9TSEFNVCkpOwogICAgIH0KIAotICAgIHZvaWQg
c2xsdihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJ0LCBpbnQgcnMpCisgICAgdm9pZCBzbGx2
KFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQgcnMpCiAgICAgewogICAg
ICAgICBlbWl0SW5zdCgweDAwMDAwMDA0IHwgKHJkIDw8IE9QX1NIX1JEKSB8IChydCA8PCBPUF9T
SF9SVCkgfCAocnMgPDwgT1BfU0hfUlMpKTsKICAgICB9CkBAIC01MjcsNiArNTI5LDE2IEBAIHB1
YmxpYzoKICAgICAgICAgZW1pdEluc3QoMHg0NjIwMDAwNCB8IChmZCA8PCBPUF9TSF9GRCkgfCAo
ZnMgPDwgT1BfU0hfRlMpKTsKICAgICB9CiAKKyAgICB2b2lkIG1vdmQoRlBSZWdpc3RlcklEIGZk
LCBGUFJlZ2lzdGVySUQgZnMpCisgICAgeworICAgICAgICBlbWl0SW5zdCgweDQ2MjAwMDA2IHwg
KGZkIDw8IE9QX1NIX0ZEKSB8IChmcyA8PCBPUF9TSF9GUykpOworICAgIH0KKworICAgIHZvaWQg
bmVnZChGUFJlZ2lzdGVySUQgZmQsIEZQUmVnaXN0ZXJJRCBmcykKKyAgICB7CisgICAgICAgIGVt
aXRJbnN0KDB4NDYyMDAwMDcgfCAoZmQgPDwgT1BfU0hfRkQpIHwgKGZzIDw8IE9QX1NIX0ZTKSk7
CisgICAgfQorCiAgICAgdm9pZCB0cnVuY3dkKEZQUmVnaXN0ZXJJRCBmZCwgRlBSZWdpc3RlcklE
IGZzKQogICAgIHsKICAgICAgICAgZW1pdEluc3QoMHg0NjIwMDAwZCB8IChmZCA8PCBPUF9TSF9G
RCkgfCAoZnMgPDwgT1BfU0hfRlMpKTsKQEAgLTYxOSw5ICs2MzEsMjQgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gbV9idWZmZXIubGFiZWwoKTsKICAgICB9CiAKKyAgICBBc3NlbWJsZXJMYWJl
bCBsYWJlbEZvcldhdGNocG9pbnQoKQorICAgIHsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgcmVz
dWx0ID0gbV9idWZmZXIubGFiZWwoKTsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4ocmVz
dWx0Lm1fb2Zmc2V0KSAhPSBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludCkKKyAgICAgICAgICAgIHJl
c3VsdCA9IGxhYmVsKCk7CisgICAgICAgIG1faW5kZXhPZkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0
Lm1fb2Zmc2V0OworICAgICAgICBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCA9IHJlc3Vs
dC5tX29mZnNldCArIG1heEp1bXBSZXBsYWNlbWVudFNpemUoKTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKICAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbCgpCiAgICAgewotICAgICAg
ICByZXR1cm4gbV9idWZmZXIubGFiZWwoKTsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgcmVzdWx0
ID0gbV9idWZmZXIubGFiZWwoKTsKKyAgICAgICAgd2hpbGUgKFVOTElLRUxZKHN0YXRpY19jYXN0
PGludD4ocmVzdWx0Lm1fb2Zmc2V0KSA8IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50KSkg
eworICAgICAgICAgICAgbm9wKCk7CisgICAgICAgICAgICByZXN1bHQgPSBtX2J1ZmZlci5sYWJl
bCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAgQXNz
ZW1ibGVyTGFiZWwgYWxpZ24oaW50IGFsaWdubWVudCkKQEAgLTY2NCwxNCArNjkxLDI0IEBAIHB1
YmxpYzoKICAgICAvLyBBc3NlbWJseSBoZWxwZXJzIGZvciBtb3ZpbmcgZGF0YSBiZXR3ZWVuIGZw
IGFuZCByZWdpc3RlcnMuCiAgICAgdm9pZCB2bW92KFJlZ2lzdGVySUQgcmQxLCBSZWdpc3RlcklE
IHJkMiwgRlBSZWdpc3RlcklEIHJuKQogICAgIHsKKyNpZiBXVEZfTUlQU19JU0FfUkVWKDIpICYm
IFdURl9NSVBTX0ZQNjQKKyAgICAgICAgbWZjMShyZDEsIHJuKTsKKyAgICAgICAgbWZoYzEocmQy
LCBybik7CisjZWxzZQogICAgICAgICBtZmMxKHJkMSwgcm4pOwogICAgICAgICBtZmMxKHJkMiwg
RlBSZWdpc3RlcklEKHJuICsgMSkpOworI2VuZGlmCiAgICAgfQogCiAgICAgdm9pZCB2bW92KEZQ
UmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybjEsIFJlZ2lzdGVySUQgcm4yKQogICAgIHsKKyNp
ZiBXVEZfTUlQU19JU0FfUkVWKDIpICYmIFdURl9NSVBTX0ZQNjQKKyAgICAgICAgbXRjMShybjEs
IHJkKTsKKyAgICAgICAgbXRoYzEocm4yLCByZCk7CisjZWxzZQogICAgICAgICBtdGMxKHJuMSwg
cmQpOwogICAgICAgICBtdGMxKHJuMiwgRlBSZWdpc3RlcklEKHJkICsgMSkpOworI2VuZGlmCiAg
ICAgfQogCiAgICAgc3RhdGljIHVuc2lnbmVkIGdldENhbGxSZXR1cm5PZmZzZXQoQXNzZW1ibGVy
TGFiZWwgY2FsbCkKQEAgLTY4OCw2ICs3MjUsMzUgQEAgcHVibGljOgogICAgIC8vIHdyaXRhYmxl
IHJlZ2lvbiBvZiBtZW1vcnk7IHRvIG1vZGlmeSB0aGUgY29kZSBpbiBhbiBleGVjdXRlLW9ubHkg
ZXhlY3VhYmxlCiAgICAgLy8gcG9vbCB0aGUgJ3JlcGF0Y2gnIGFuZCAncmVsaW5rJyBtZXRob2Rz
IHNob3VsZCBiZSB1c2VkLgogCisgICAgc3RhdGljIHNpemVfdCBsaW5rRGlyZWN0SnVtcCh2b2lk
KiBjb2RlLCB2b2lkKiB0bykKKyAgICB7CisgICAgICAgIE1JUFNXb3JkKiBpbnNuID0gcmVpbnRl
cnByZXRfY2FzdDxNSVBTV29yZCo+KHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGNvZGUpKTsK
KyAgICAgICAgc2l6ZV90IG9wcyA9IDA7CisgICAgICAgIGludDMyX3Qgc2xvdEFkZHIgPSByZWlu
dGVycHJldF9jYXN0PGludD4oaW5zbikgKyA0OworICAgICAgICBpbnQzMl90IHRvQWRkciA9IHJl
aW50ZXJwcmV0X2Nhc3Q8aW50Pih0byk7CisKKyAgICAgICAgaWYgKChzbG90QWRkciAmIDB4ZjAw
MDAwMDApICE9ICh0b0FkZHIgJiAweGYwMDAwMDAwKSkgeworICAgICAgICAgICAgLy8gbHVpCisg
ICAgICAgICAgICAqaW5zbiA9IDB4M2MwMDAwMDAgfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1Bf
U0hfUlQpIHwgKCh0b0FkZHIgPj4gMTYpICYgMHhmZmZmKTsKKyAgICAgICAgICAgICsraW5zbjsK
KyAgICAgICAgICAgIC8vIG9yaQorICAgICAgICAgICAgKmluc24gPSAweDM0MDAwMDAwIHwgKE1J
UFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JUKSB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9T
SF9SUykgfCAodG9BZGRyICYgMHhmZmZmKTsKKyAgICAgICAgICAgICsraW5zbjsKKyAgICAgICAg
ICAgIC8vIGpyCisgICAgICAgICAgICAqaW5zbiA9IDB4MDAwMDAwMDggfCAoTUlQU1JlZ2lzdGVy
czo6dDkgPDwgT1BfU0hfUlMpOworICAgICAgICAgICAgKytpbnNuOworICAgICAgICAgICAgb3Bz
ID0gNCAqIHNpemVvZihNSVBTV29yZCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAv
LyBqCisgICAgICAgICAgICAqaW5zbiA9IDB4MDgwMDAwMDAgfCAoKHRvQWRkciAmIDB4MGZmZmZm
ZmYpID4+IDIpOworICAgICAgICAgICAgKytpbnNuOworICAgICAgICAgICAgb3BzID0gMiAqIHNp
emVvZihNSVBTV29yZCk7CisgICAgICAgIH0KKyAgICAgICAgLy8gbm9wCisgICAgICAgICppbnNu
ID0gMHgwMDAwMDAwMDsKKyAgICAgICAgcmV0dXJuIG9wczsKKyAgICB9CisKICAgICB2b2lkIGxp
bmtKdW1wKEFzc2VtYmxlckxhYmVsIGZyb20sIEFzc2VtYmxlckxhYmVsIHRvKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKHRvLmlzU2V0KCkpOwpAQCAtODI1LDI5ICs4OTEsMzYgQEAgcHVibGljOgog
I2VuZGlmCiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFRvTW92ZSh2b2lkKiBp
bnN0cnVjdGlvblN0YXJ0LCBSZWdpc3RlcklEIHJ0LCBpbnQgaW1tKQorICAgIHN0YXRpYyBwdHJk
aWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCiAgICAgewotICAgICAgICBNSVBTV29yZCog
aW5zbiA9IHN0YXRpY19jYXN0PE1JUFNXb3JkKj4oaW5zdHJ1Y3Rpb25TdGFydCkgKyAxOwotICAg
ICAgICBBU1NFUlQoKCppbnNuICYgMHhmYzAwMDAwMCkgPT0gMHgzNDAwMDAwMCk7Ci0gICAgICAg
ICppbnNuID0gKCppbnNuICYgMHhmYzFmMDAwMCkgfCAoaW1tICYgMHhmZmZmKTsKLSAgICAgICAg
Y2FjaGVGbHVzaChpbnNuLCBzaXplb2YoTUlQU1dvcmQpKTsKKyAgICAgICAgcmV0dXJuIHNpemVv
ZihNSVBTV29yZCkgKiA0OwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVt
cCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCB2b2lkKiB0bykKKyAgICBzdGF0aWMgdm9pZCByZXZl
cnRKdW1wVG9Nb3ZlKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQgcnQsIGludCBp
bW0pCiAgICAgewotICAgICAgICBNSVBTV29yZCogaW5zdHJ1Y3Rpb24gPSByZWludGVycHJldF9j
YXN0PE1JUFNXb3JkKj4oaW5zdHJ1Y3Rpb25TdGFydCk7Ci0gICAgICAgIGludHB0cl90IGp1bXBU
byA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KHRvKTsKKyAgICAgICAgTUlQU1dvcmQqIGlu
c24gPSBzdGF0aWNfY2FzdDxNSVBTV29yZCo+KGluc3RydWN0aW9uU3RhcnQpOworICAgICAgICBz
aXplX3QgY29kZVNpemUgPSAyICogc2l6ZW9mKE1JUFNXb3JkKTsKIAogICAgICAgICAvLyBsdWkK
LSAgICAgICAgaW5zdHJ1Y3Rpb25bMF0gPSAweDNjMDAwMDAwIHwgKE1JUFNSZWdpc3RlcnM6OnQ5
IDw8IE9QX1NIX1JUKSB8ICgoanVtcFRvID4+IDE2KSAmIDB4ZmZmZik7CisgICAgICAgICppbnNu
ID0gMHgzYzAwMDAwMCB8IChydCA8PCBPUF9TSF9SVCkgfCAoKGltbSA+PiAxNikgJiAweGZmZmYp
OworICAgICAgICArK2luc247CiAgICAgICAgIC8vIG9yaQotICAgICAgICBpbnN0cnVjdGlvblsx
XSA9IDB4MzQwMDAwMDAgfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlQpIHwgKE1JUFNS
ZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JTKSB8IChqdW1wVG8gJiAweGZmZmYpOwotICAgICAgICAv
LyBqcgotICAgICAgICBpbnN0cnVjdGlvblsyXSA9IDB4MDAwMDAwMDggfCAoTUlQU1JlZ2lzdGVy
czo6dDkgPDwgT1BfU0hfUlMpOwotICAgICAgICAvLyBub3AKLSAgICAgICAgaW5zdHJ1Y3Rpb25b
M10gPSAweDA7CisgICAgICAgICppbnNuID0gMHgzNDAwMDAwMCB8IChydCA8PCBPUF9TSF9SUykg
fCAocnQgPDwgT1BfU0hfUlQpIHwgKGltbSAmIDB4ZmZmZik7CisgICAgICAgICsraW5zbjsKKyAg
ICAgICAgLy8gaWYganIgJHQ5CisgICAgICAgIGlmICgqaW5zbiA9PSAweDAzMjAwMDA4KSB7Cisg
ICAgICAgICAgICAqaW5zbiA9IDB4MDAwMDAwMDA7CisgICAgICAgICAgICBjb2RlU2l6ZSArPSBz
aXplb2YoTUlQU1dvcmQpOworICAgICAgICB9CisgICAgICAgIGNhY2hlRmx1c2goaW5zbiwgY29k
ZVNpemUpOworICAgIH0KIAotICAgICAgICBjYWNoZUZsdXNoKGluc3RydWN0aW9uLCBzaXplb2Yo
TUlQU1dvcmQpICogNCk7CisgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKHZvaWQqIGlu
c3RydWN0aW9uU3RhcnQsIHZvaWQqIHRvKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEoYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1Y3Rpb25TdGFydCkgJiAzKSk7CisgICAgICAgIEFTU0VS
VCghKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KHRvKSAmIDMpKTsKKyAgICAgICAgc2l6ZV90IG9w
cyA9IGxpbmtEaXJlY3RKdW1wKGluc3RydWN0aW9uU3RhcnQsIHRvKTsKKyAgICAgICAgY2FjaGVG
bHVzaChpbnN0cnVjdGlvblN0YXJ0LCBvcHMpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHJl
cGxhY2VXaXRoTG9hZCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0KQpAQCAtMTAyMyw2ICsxMDk2LDgg
QEAgcHJpdmF0ZToKIAogICAgIEFzc2VtYmxlckJ1ZmZlciBtX2J1ZmZlcjsKICAgICBKdW1wcyBt
X2p1bXBzOworICAgIGludCBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludDsKKyAgICBpbnQgbV9pbmRl
eE9mVGFpbE9mTGFzdFdhdGNocG9pbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAppbmRleCAz
ZDU3MzQwLi4yZjI2ZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlci5oCkBAIC0yMDAsNiArMjAwLDEzIEBAIHB1YmxpYzoKICAgICB9CiAj
ZW5kaWYKICAgICAKKyNpZiBDUFUoTUlQUykKKyAgICB2b2lkIHBva2UoRlBSZWdpc3RlcklEIHNy
YywgaW50IGluZGV4ID0gMCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghKGluZGV4ICYgMSkpOwor
ICAgICAgICBzdG9yZURvdWJsZShzcmMsIGFkZHJlc3NGb3JQb2tlKGluZGV4KSk7CisgICAgfQor
I2VuZGlmCiAKICAgICAvLyBCYWNrd2FyZHMgYmFuY2hlcywgdGhlc2UgYXJlIGN1cnJlbnRseSBh
bGwgaW1wbGVtZW50ZWQgdXNpbmcgZXhpc3RpbmcgZm9yd2FyZHMgYnJhbmNoIG1lY2hhbmlzbXMu
CiAgICAgdm9pZCBicmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IG9wMSwgVHJ1c3RlZEltbVB0ciBpbW0sIExhYmVsIHRhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCmluZGV4IDFiMWEx
MjcuLmI1OTM4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJNSVBTLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlck1JUFMuaApAQCAtMTE0LDYgKzExNCwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIG1fYXNzZW1ibGVyLmFkZHUoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lk
IGFkZDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYWRkdShkZXN0LCBvcDEsIG9wMik7CisgICAgfQor
CiAgICAgdm9pZCBhZGQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewogICAgICAgICBhZGQzMihpbW0sIGRlc3QsIGRlc3QpOwpAQCAtMjY3LDYgKzI3MiwxMSBAQCBw
dWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFuZEluc24oZGVzdCwgZGVzdCwgc3JjKTsKICAg
ICB9CiAKKyAgICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuYW5kSW5zbihkZXN0LCBv
cDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCBhbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVk
V2lkdGgpCkBAIC0yODMsOSArMjkzLDE2IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAot
ICAgIHZvaWQgbHNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnNsbChkZXN0LCBkZXN0LCBpbW0ubV92
YWx1ZSk7CisgICAgICAgIGlmICghaW1tLm1fdmFsdWUgJiYgIW1fZml4ZWRXaWR0aCkKKyAgICAg
ICAgICAgIG1vdmUoTUlQU1JlZ2lzdGVyczo6emVybywgZGVzdCk7CisgICAgICAgIGVsc2UgaWYg
KGltbS5tX3ZhbHVlID4gMCAmJiBpbW0ubV92YWx1ZSA8IDY1NTM1ICYmICFtX2ZpeGVkV2lkdGgp
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hbmRpKGRlc3QsIHNyYywgaW1tLm1fdmFsdWUpOwor
ICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOwor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuYW5kSW5zbihkZXN0LCBzcmMsIGltbVRlbXBSZWdpc3Rl
cik7CisgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc2hp
ZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTI5MywxMSArMzEwLDMzIEBAIHB1YmxpYzoK
ICAgICAgICAgbV9hc3NlbWJsZXIuc2xsdihkZXN0LCBkZXN0LCBzaGlmdEFtb3VudCk7CiAgICAg
fQogCisgICAgdm9pZCBsc2hpZnQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFt
b3VudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc2xsdihk
ZXN0LCBzcmMsIHNoaWZ0QW1vdW50KTsKKyAgICB9CisKKyAgICB2b2lkIGxzaGlmdDMyKFRydXN0
ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoaW1tLCBp
bW1UZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5zbGx2KGRlc3QsIGRlc3QsIGlt
bVRlbXBSZWdpc3Rlcik7CisgICAgfQorCisgICAgdm9pZCBsc2hpZnQzMihSZWdpc3RlcklEIHNy
YywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92
ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLnNsbHYoZGVzdCwg
c3JjLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgIH0KKwogICAgIHZvaWQgbXVsMzIoUmVnaXN0ZXJJ
RCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm11bChk
ZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgbXVsMzIoUmVnaXN0ZXJJRCBvcDEs
IFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5tdWwoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgbXVsMzIoVHJ1c3Rl
ZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIGlmICghaW1tLm1fdmFsdWUgJiYgIW1fZml4ZWRXaWR0aCkKQEAgLTM0OCw2ICszODcsMjQg
QEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5vckluc24oZGVzdCwgZGVzdCwgZGF0YVRl
bXBSZWdpc3Rlcik7CiAgICAgfQogCisgICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAoIWltbS5t
X3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
aWYgKGltbS5tX3ZhbHVlID4gMCAmJiBpbW0ubV92YWx1ZSA8IDY1NTM1ICYmICFtX2ZpeGVkV2lk
dGgpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm9yaShkZXN0LCBzcmMsIGltbS5tX3ZhbHVl
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAg
ICAgICBsaSAgICAgIGRhdGFUZW1wLCBpbW0KKyAgICAgICAgICAgIG9yICAgICAgZGVzdCwgc3Jj
LCBkYXRhVGVtcAorICAgICAgICAqLworICAgICAgICBtb3ZlKGltbSwgZGF0YVRlbXBSZWdpc3Rl
cik7CisgICAgICAgIG1fYXNzZW1ibGVyLm9ySW5zbihkZXN0LCBzcmMsIGRhdGFUZW1wUmVnaXN0
ZXIpOworICAgIH0KKwogICAgIHZvaWQgb3IzMihSZWdpc3RlcklEIHNyYywgQWJzb2x1dGVBZGRy
ZXNzIGRlc3QpCiAgICAgewogICAgICAgICBsb2FkMzIoZGVzdC5tX3B0ciwgZGF0YVRlbXBSZWdp
c3Rlcik7CkBAIC0zNjAsNiArNDE3LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIu
c3JhdihkZXN0LCBkZXN0LCBzaGlmdEFtb3VudCk7CiAgICAgfQogCisgICAgdm9pZCByc2hpZnQz
MihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3JhdihkZXN0LCBzcmMsIHNoaWZ0QW1vdW50
KTsKKyAgICB9CisKICAgICB2b2lkIHJzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnNyYShkZXN0LCBkZXN0LCBpbW0u
bV92YWx1ZSk7CkBAIC0zNzUsMTYgKzQzNywzMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1i
bGVyLnNybHYoZGVzdCwgZGVzdCwgc2hpZnRBbW91bnQpOwogICAgIH0KIAorICAgIHZvaWQgdXJz
aGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zcmx2KGRlc3QsIHNyYywgc2hpZnRB
bW91bnQpOworICAgIH0KKwogICAgIHZvaWQgdXJzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnNybChkZXN0LCBkZXN0
LCBpbW0ubV92YWx1ZSk7CiAgICAgfQogCisgICAgdm9pZCB1cnNoaWZ0MzIoUmVnaXN0ZXJJRCBz
cmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLnNybChkZXN0LCBzcmMsIGltbS5tX3ZhbHVlKTsKKyAgICB9CisKICAgICB2b2lk
IHN1YjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBt
X2Fzc2VtYmxlci5zdWJ1KGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBzdWIz
MihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YnUoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAg
IHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgaWYgKGltbS5tX3ZhbHVlID49IC0zMjc2NyAmJiBpbW0ubV92YWx1ZSA8PSAzMjc2OApA
QCAtNDk1LDYgKzU3MiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24o
ZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgb3Ax
LCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIueG9ySW5zbihkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCB4b3IzMihU
cnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoaW1t
Lm1fdmFsdWUgPT0gLTEpIHsKQEAgLTUxMCw2ICs1OTIsMjEgQEAgcHVibGljOgogICAgICAgICBt
X2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIGRlc3QsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAgfQog
CisgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKSB7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5ub3IoZGVzdCwgc3JjLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAg
ICBsaSAgaW1tVGVtcCwgaW1tCisgICAgICAgICAgICB4b3IgZGVzdCwgZGVzdCwgaW1tVGVtcAor
ICAgICAgICAqLworICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAg
bV9hc3NlbWJsZXIueG9ySW5zbihkZXN0LCBzcmMsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgfQor
CiAgICAgdm9pZCBzcXJ0RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3Qp
CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zcXJ0ZChkc3QsIHNyYyk7CkBAIC05ODksNiAr
MTA4Niw0NCBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIHN0b3JlMzIo
VHJ1c3RlZEltbTMyIGltbSwgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBpZiAo
YWRkcmVzcy5vZmZzZXQgPj0gLTMyNzY4ICYmIGFkZHJlc3Mub2Zmc2V0IDw9IDMyNzY3ICYmICFt
X2ZpeGVkV2lkdGgpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgc2xsICAgICBh
ZGRyVGVtcCwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZQorICAgICAgICAgICAgICAgIGFk
ZHUgICAgYWRkclRlbXAsIGFkZHJUZW1wLCBhZGRyZXNzLmJhc2UKKyAgICAgICAgICAgICAgICBz
dyAgICAgIHNyYywgYWRkcmVzcy5vZmZzZXQoYWRkclRlbXApCisgICAgICAgICAgICAqLworICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuc2xsKGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkdShhZGRyVGVtcFJl
Z2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmJhc2UpOworICAgICAgICAgICAgaWYg
KCFpbW0ubV92YWx1ZSkKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdyhNSVBTUmVnaXN0
ZXJzOjp6ZXJvLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdyhpbW1UZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVn
aXN0ZXIsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgc2xsICAgICBhZGRyVGVtcCwgYWRkcmVz
cy5pbmRleCwgYWRkcmVzcy5zY2FsZQorICAgICAgICAgICAgICAgIGFkZHUgICAgYWRkclRlbXAs
IGFkZHJUZW1wLCBhZGRyZXNzLmJhc2UKKyAgICAgICAgICAgICAgICBsdWkgICAgIGltbVRlbXAs
IChhZGRyZXNzLm9mZnNldCArIDB4ODAwMCkgPj4gMTYKKyAgICAgICAgICAgICAgICBhZGR1ICAg
IGFkZHJUZW1wLCBhZGRyVGVtcCwgaW1tVGVtcAorICAgICAgICAgICAgICAgIHN3ICAgICAgc3Jj
LCAoYWRkcmVzcy5vZmZzZXQgJiAweGZmZmYpKGF0KQorICAgICAgICAgICAgKi8KKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnNsbChhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBhZGRy
ZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoYWRkclRlbXBSZWdpc3Rl
ciwgYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5iYXNlKTsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmx1aShpbW1UZW1wUmVnaXN0ZXIsIChhZGRyZXNzLm9mZnNldCArIDB4ODAwMCkgPj4gMTYp
OworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkdShhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyVGVt
cFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgaWYgKCFpbW0ubV92YWx1
ZSAmJiAhbV9maXhlZFdpZHRoKQorICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN3KE1JUFNS
ZWdpc3RlcnM6Onplcm8sIGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIp
OworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN3KGltbVRlbXBSZWdpc3RlciwgYWRkclRl
bXBSZWdpc3RlciwgYWRkcmVzcy5vZmZzZXQpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgfQorCisKICAgICB2b2lkIHN0b3JlMzIoUmVnaXN0ZXJJRCBzcmMsIGNvbnN0IHZvaWQqIGFk
ZHJlc3MpCiAgICAgewogICAgICAgICAvKgpAQCAtMTMzNiw2ICsxNDcxLDE1IEBAIHB1YmxpYzoK
ICAgICAgICAgbV9maXhlZFdpZHRoID0gZmFsc2U7CiAgICAgfQogCisgICAgdm9pZCBqdW1wKEFi
c29sdXRlQWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbV9maXhlZFdpZHRoID0gdHJ1
ZTsKKyAgICAgICAgbG9hZDMyKGFkZHJlc3MubV9wdHIsIE1JUFNSZWdpc3RlcnM6OnQ5KTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuanIoTUlQU1JlZ2lzdGVyczo6dDkpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5ub3AoKTsKKyAgICAgICAgbV9maXhlZFdpZHRoID0gZmFsc2U7CisgICAgfQorCiAgICAg
dm9pZCBtb3ZlRG91YmxlVG9JbnRzKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdDEs
IFJlZ2lzdGVySUQgZGVzdDIpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci52bW92KGRlc3Qx
LCBkZXN0Miwgc3JjKTsKQEAgLTE0MDQsNiArMTU0OCw1MyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBKdW1wKCk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNp
Z25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOworICAgICAgICBp
ZiAoY29uZCA9PSBPdmVyZmxvdykgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICBt
b3ZlICAgIGRhdGFUZW1wLCBvcDEKKyAgICAgICAgICAgICAgICB4b3IgICAgIGNtcFRlbXAsIGRh
dGFUZW1wLCBvcDIKKyAgICAgICAgICAgICAgICBibHR6ICAgIGNtcFRlbXAsIE5vX292ZXJmbG93
ICAgICMgZGlmZiBzaWduIGJpdCAtPiBubyBvdmVyZmxvdworICAgICAgICAgICAgICAgIGFkZHUg
ICAgZGVzdCwgZGF0YVRlbXAsIG9wMgorICAgICAgICAgICAgICAgIHhvciAgICAgY21wVGVtcCwg
ZGVzdCwgZGF0YVRlbXAKKyAgICAgICAgICAgICAgICBiZ2V6ICAgIGNtcFRlbXAsIE5vX292ZXJm
bG93ICAgICMgc2FtZSBzaWduIGJpZyAtPiBubyBvdmVyZmxvdworICAgICAgICAgICAgICAgIG5v
cAorICAgICAgICAgICAgICAgIGIgICAgICAgT3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBub3AK
KyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAg
ICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgIE5vX292ZXJmbG93OgorICAg
ICAgICAgICAgKi8KKyAgICAgICAgICAgIG1vdmUob3AxLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJl
Z2lzdGVyLCBvcDIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmx0eihjbXBUZW1wUmVnaXN0
ZXIsIDEwKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoZGVzdCwgZGF0YVRlbXBSZWdp
c3Rlciwgb3AyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oY21wVGVtcFJlZ2lz
dGVyLCBkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJn
ZXooY21wVGVtcFJlZ2lzdGVyLCA3KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwor
ICAgICAgICAgICAgcmV0dXJuIGp1bXAoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9
PSBTaWduZWQpIHsKKyAgICAgICAgICAgIGFkZDMyKG9wMSwgb3AyLCBkZXN0KTsKKyAgICAgICAg
ICAgIC8vIENoZWNrIGlmIGRlc3QgaXMgbmVnYXRpdmUuCisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5zbHQoY21wVGVtcFJlZ2lzdGVyLCBkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAg
ICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3Rl
cnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IFplcm8pIHsKKyAgICAg
ICAgICAgIGFkZDMyKG9wMSwgb3AyLCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hF
cXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
Y29uZCA9PSBOb25aZXJvKSB7CisgICAgICAgICAgICBhZGQzMihvcDEsIG9wMiwgZGVzdCk7Cisg
ICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwoZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVy
byk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKDApOworICAgICAgICByZXR1cm4gSnVtcCgp
OworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRy
dXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1vdmUoaW1t
LCBpbW1UZW1wUmVnaXN0ZXIpOwpAQCAtMTQxNyw2ICsxNjA4LDExMSBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBicmFuY2hBZGQzMihjb25kLCBpbW1UZW1wUmVnaXN0ZXIsIGRlc3QpOwogICAg
IH0KIAorICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJ
bW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKChj
b25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8
IChjb25kID09IE5vblplcm8pKTsKKyAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKKyAg
ICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgbW92ZSAgICBkYXRhVGVtcCwgZGVzdAorICAg
ICAgICAgICAgICAgIHhvcmkgICAgY21wVGVtcCwgZGF0YVRlbXAsIGltbQorICAgICAgICAgICAg
ICAgIGJsdHogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBkaWZmIHNpZ24gYml0IC0+IG5v
IG92ZXJmbG93CisgICAgICAgICAgICAgICAgYWRkaXUgICBkYXRhVGVtcCwgZGF0YVRlbXAsIGlt
bQorICAgICAgICAgICAgICAgIG1vdmUgICAgZGVzdCwgZGF0YVRlbXAKKyAgICAgICAgICAgICAg
ICB4b3JpICAgIGNtcFRlbXAsIGRhdGFUZW1wLCBpbW0KKyAgICAgICAgICAgICAgICBiZ2V6ICAg
IGNtcFRlbXAsIE5vX292ZXJmbG93ICAgICMgc2FtZSBzaWduIGJpZyAtPiBubyBvdmVyZmxvdwor
ICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIGIgICAgICAgT3ZlcmZsb3cKKyAg
ICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBu
b3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAg
IE5vX292ZXJmbG93OgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmIChpbW0ubV92YWx1
ZSA+PSAtMzI3NjggJiYgaW1tLm1fdmFsdWUgIDw9IDMyNzY3ICYmICFtX2ZpeGVkV2lkdGgpIHsK
KyAgICAgICAgICAgICAgICBsb2FkMzIoZGVzdC5tX3B0ciwgZGF0YVRlbXBSZWdpc3Rlcik7Cisg
ICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yaShjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1w
UmVnaXN0ZXIsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6
KGNtcFRlbXBSZWdpc3RlciwgMTApOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGl1
KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbS5tX3ZhbHVlKTsKKyAgICAg
ICAgICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QubV9wdHIpOworICAgICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmkoY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lz
dGVyLCBpbW0ubV92YWx1ZSk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBU
ZW1wUmVnaXN0ZXIsIDcpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsb2FkMzIoZGVzdC5tX3B0ciwgZGF0
YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rl
cik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIs
IGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbV9h
c3NlbWJsZXIuYmx0eihjbXBUZW1wUmVnaXN0ZXIsIDEwKTsKKyAgICAgICAgICAgICAgICBtX2Fz
c2VtYmxlci5hZGRpdShkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1w
UmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVz
dC5tX3B0cik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yaShjbXBUZW1wUmVnaXN0
ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAg
bV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDcpOworICAgICAgICAgICAgICAgIG1f
YXNzZW1ibGVyLm5vcCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGp1bXAo
KTsKKyAgICAgICAgfQorICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAg
ICAgbG9hZDMyKGRlc3QubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBhZGQzMihp
bW1UZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBzdG9yZTMyKGRhdGFU
ZW1wUmVnaXN0ZXIsIGRlc3QubV9wdHIpOworICAgICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsK
KyAgICAgICAgICAgIC8vIENoZWNrIGlmIGRlc3QgaXMgbmVnYXRpdmUuCisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5zbHQoY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBNSVBTUmVn
aXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChjbXBUZW1w
UmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIGlmIChj
b25kID09IFplcm8pCisgICAgICAgICAgICByZXR1cm4gYnJhbmNoRXF1YWwoZGF0YVRlbXBSZWdp
c3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIGlmIChjb25kID09IE5vblplcm8p
CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwoZGF0YVRlbXBSZWdpc3RlciwgTUlQ
U1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIEFTU0VSVCgwKTsKKyAgICAgICAgcmV0dXJuIEp1
bXAoKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIHNyYzEsIFJlZ2lzdGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQp
IHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKKyAgICAgICAgaWYgKGNv
bmQgPT0gT3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgbXVsdCAg
ICBzcmMsIGRlc3QKKyAgICAgICAgICAgICAgICBtZmhpICAgIGRhdGFUZW1wCisgICAgICAgICAg
ICAgICAgbWZsbyAgICBkZXN0CisgICAgICAgICAgICAgICAgc3JhICAgICBhZGRyVGVtcCwgZGVz
dCwgMzEKKyAgICAgICAgICAgICAgICBiZXEgICAgIGRhdGFUZW1wLCBhZGRyVGVtcCwgTm9fb3Zl
cmZsb3cgIyBhbGwgc2lnbiBiaXRzIChiaXQgNjMgdG8gYml0IDMxKSBhcmUgdGhlIHNhbWUgLT4g
bm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBiICAgICAg
IE92ZXJmbG93CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAg
ICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9w
CisgICAgICAgICAgICBOb19vdmVyZmxvdzoKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5tdWx0KHNyYzEsIHNyYzIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubWZo
aShkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1mbG8oZGVzdCk7
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zcmEoYWRkclRlbXBSZWdpc3RlciwgZGVzdCwgMzEp
OworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmVxKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJUZW1w
UmVnaXN0ZXIsIDcpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAg
ICByZXR1cm4ganVtcCgpOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IFNpZ25lZCkg
eworICAgICAgICAgICAgbXVsMzIoc3JjMSwgc3JjMiwgZGVzdCk7CisgICAgICAgICAgICAvLyBD
aGVjayBpZiBkZXN0IGlzIG5lZ2F0aXZlLgorICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0KGNt
cFRlbXBSZWdpc3RlciwgZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICBy
ZXR1cm4gYnJhbmNoTm90RXF1YWwoY21wVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJv
KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBaZXJvKSB7CisgICAgICAgICAgICBt
dWwzMihzcmMxLCBzcmMyLCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hFcXVhbChk
ZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9
PSBOb25aZXJvKSB7CisgICAgICAgICAgICBtdWwzMihzcmMxLCBzcmMyLCBkZXN0KTsKKyAgICAg
ICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsK
KyAgICAgICAgfQorICAgICAgICBBU1NFUlQoMCk7CisgICAgICAgIHJldHVybiBKdW1wKCk7Cisg
ICAgfQorCiAgICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoY29uZCA9
PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29u
ZCA9PSBOb25aZXJvKSk7CkBAIC0xNDY1LDggKzE3NjEsNyBAQCBwdWJsaWM6CiAgICAgSnVtcCBi
cmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1vdmUoaW1tLCBpbW1U
ZW1wUmVnaXN0ZXIpOwotICAgICAgICBtb3ZlKHNyYywgZGVzdCk7Ci0gICAgICAgIHJldHVybiBi
cmFuY2hNdWwzMihjb25kLCBpbW1UZW1wUmVnaXN0ZXIsIGRlc3QpOworICAgICAgICByZXR1cm4g
YnJhbmNoTXVsMzIoY29uZCwgaW1tVGVtcFJlZ2lzdGVyLCBzcmMsIGRlc3QpOwogICAgIH0KIAog
ICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCkBAIC0xNTI1LDggKzE4MjAsNjAgQEAgcHVibGljOgogICAgIEp1
bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBUcnVz
dGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtb3ZlKGltbSwg
aW1tVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbW92ZShzcmMsIGRlc3QpOwotICAgICAgICByZXR1
cm4gYnJhbmNoU3ViMzIoY29uZCwgaW1tVGVtcFJlZ2lzdGVyLCBkZXN0KTsKKyAgICAgICAgcmV0
dXJuIGJyYW5jaFN1YjMyKGNvbmQsIHNyYywgaW1tVGVtcFJlZ2lzdGVyLCBkZXN0KTsKKyAgICB9
CisKKyAgICBKdW1wIGJyYW5jaFN1YjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFT
U0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBa
ZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CisgICAgICAgIGlmIChjb25kID09IE92ZXJmbG93
KSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgIG1vdmUgICAgZGF0YVRlbXAsIG9w
MQorICAgICAgICAgICAgICAgIHhvciAgICAgY21wVGVtcCwgZGF0YVRlbXAsIG9wMgorICAgICAg
ICAgICAgICAgIGJnZXogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24gYml0
IC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgc3VidSAgICBkZXN0LCBkYXRhVGVtcCwg
b3AyCisgICAgICAgICAgICAgICAgeG9yICAgICBjbXBUZW1wLCBkZXN0LCBkYXRhVGVtcAorICAg
ICAgICAgICAgICAgIGJnZXogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24g
Yml0IC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAg
YiAgICAgICBPdmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5v
cAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAg
ICAgIG5vcAorICAgICAgICAgICAgTm9fb3ZlcmZsb3c6CisgICAgICAgICAgICAqLworICAgICAg
ICAgICAgbW92ZShvcDEsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJs
ZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgMTApOworICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuc3VidShkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyLCBvcDIpOworICAgICAg
ICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIGRhdGFUZW1w
UmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIs
IDcpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICByZXR1cm4g
anVtcCgpOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IFNpZ25lZCkgeworICAgICAg
ICAgICAgc3ViMzIob3AxLCBvcDIsIGRlc3QpOworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVz
dCBpcyBuZWdhdGl2ZS4KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0
ZXIsIGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgcmV0dXJuIGJyYW5j
aE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKGNvbmQgPT0gWmVybykgeworICAgICAgICAgICAgc3ViMzIob3AxLCBv
cDIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKGRlc3QsIE1JUFNSZWdp
c3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IE5vblplcm8pIHsK
KyAgICAgICAgICAgIHN1YjMyKG9wMSwgb3AyLCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBi
cmFuY2hOb3RFcXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAg
ICAgICBBU1NFUlQoMCk7CisgICAgICAgIHJldHVybiBKdW1wKCk7CisgICAgfQorCisgICAgSnVt
cCBicmFuY2hOZWczMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmNEZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubGkoZGF0YVRlbXBSZWdpc3RlciwgLTEpOworICAg
ICAgICByZXR1cm4gYnJhbmNoTXVsMzIoY29uZCwgZGF0YVRlbXBSZWdpc3Rlciwgc3JjRGVzdCk7
CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hPcjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMTU3OCw3ICsxOTI1LDggQEAgcHVibGlj
OgogCiAgICAgQ2FsbCBjYWxsKFJlZ2lzdGVySUQgdGFyZ2V0KQogICAgIHsKLSAgICAgICAgbV9h
c3NlbWJsZXIuamFscih0YXJnZXQpOworICAgICAgICBtb3ZlKHRhcmdldCwgTUlQU1JlZ2lzdGVy
czo6dDkpOworICAgICAgICBtX2Fzc2VtYmxlci5qYWxyKE1JUFNSZWdpc3RlcnM6OnQ5KTsKICAg
ICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVy
LmxhYmVsKCksIENhbGw6Ok5vbmUpOwogICAgIH0KQEAgLTE4MjIsNyArMjE3MCw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICBsdWkgICAgIGltbVRlbXAsIChhZGRyZXNzLm9mZnNldCArIDB4
ODAwMCkgPj4gMTYKICAgICAgICAgICAgICAgICBhZGR1ICAgIGFkZHJUZW1wLCBhZGRyVGVtcCwg
aW1tVGVtcAogICAgICAgICAgICAgICAgIGx3YzEgICAgZGVzdCwgKGFkZHJlc3Mub2Zmc2V0ICYg
MHhmZmZmKShhdCkKLSAgICAgICAgICAgICAgICBsd2MxICAgIGRlc3QrNCwgKGFkZHJlc3Mub2Zm
c2V0ICYgMHhmZmZmICsgNCkoYXQpCisgICAgICAgICAgICAgICAgbHdjMSAgICBkZXN0KzEsIChh
ZGRyZXNzLm9mZnNldCAmIDB4ZmZmZiArIDQpKGF0KQogICAgICAgICAgICAgKi8KICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnNsbChhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBhZGRy
ZXNzLnNjYWxlKTsKICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoYWRkclRlbXBSZWdpc3Rl
ciwgYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5iYXNlKTsKQEAgLTIwMDksNiArMjM1NywxOSBA
QCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKKyAgICB2b2lkIG1vdmVEb3VibGUoRlBSZWdpc3Rl
cklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAoc3JjICE9IGRl
c3QgfHwgbV9maXhlZFdpZHRoKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIubW92ZChkZXN0LCBz
cmMpOworICAgIH0KKworICAgIHZvaWQgc3dhcERvdWJsZShGUFJlZ2lzdGVySUQgZnIxLCBGUFJl
Z2lzdGVySUQgZnIyKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShmcjEsIGZwVGVtcFJlZ2lz
dGVyKTsKKyAgICAgICAgbW92ZURvdWJsZShmcjIsIGZyMSk7CisgICAgICAgIG1vdmVEb3VibGUo
ZnBUZW1wUmVnaXN0ZXIsIGZyMik7CisgICAgfQorCiAgICAgdm9pZCBhZGREb3VibGUoRlBSZWdp
c3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxl
ci5hZGRkKGRlc3QsIGRlc3QsIHNyYyk7CkBAIC0yMDM2LDYgKzIzOTcsMTEgQEAgcHVibGljOgog
ICAgICAgICBtX2Fzc2VtYmxlci5zdWJkKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAg
dm9pZCBzdWJEb3VibGUoRlBSZWdpc3RlcklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdp
c3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJkKGRlc3QsIG9wMSwg
b3AyKTsKKyAgICB9CisKICAgICB2b2lkIHN1YkRvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBsb2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIp
OwpAQCAtMjA1MywxMSArMjQxOSwzMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm11
bGQoZGVzdCwgZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOwogICAgIH0KIAorICAgIHZvaWQgbXVsRG91
YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubXVsZChkZXN0LCBvcDEsIG9wMik7CisgICAg
fQorCiAgICAgdm9pZCBkaXZEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5kaXZkKGRlc3QsIGRlc3QsIHNyYyk7CiAg
ICAgfQogCisgICAgdm9pZCBkaXZEb3VibGUoRlBSZWdpc3RlcklEIG9wMSwgRlBSZWdpc3RlcklE
IG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5kaXZk
KGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKKyAgICB2b2lkIGRpdkRvdWJsZShBZGRyZXNzIHNy
YywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBsb2FkRG91YmxlKHNyYywgZnBU
ZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5kaXZkKGRlc3QsIGRlc3QsIGZwVGVt
cFJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ2F0ZURvdWJsZShGUFJlZ2lzdGVySUQg
c3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ2Qo
ZGVzdCwgc3JjKTsKKyAgICB9CisKICAgICB2b2lkIGNvbnZlcnRJbnQzMlRvRG91YmxlKFJlZ2lz
dGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVy
Lm10YzEoc3JjLCBmcFRlbXBSZWdpc3Rlcik7CkBAIC0yMTE3LDYgKzI1MDQsOCBAQCBwdWJsaWM6
CiAKICAgICBKdW1wIGJyYW5jaEVxdWFsKFJlZ2lzdGVySUQgcnMsIFJlZ2lzdGVySUQgcnQpCiAg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9w
KCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFwcGVuZEp1bXAoKTsKICAgICAgICAgbV9hc3NlbWJs
ZXIuYmVxKHJzLCBydCwgMCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwpAQCAtMjEyNiw2
ICsyNTE1LDggQEAgcHVibGljOgogCiAgICAgSnVtcCBicmFuY2hOb3RFcXVhbChSZWdpc3RlcklE
IHJzLCBSZWdpc3RlcklEIHJ0KQogICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwogICAgICAgICBtX2Fzc2VtYmxlci5hcHBlbmRKdW1w
KCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmJuZShycywgcnQsIDApOwogICAgICAgICBtX2Fzc2Vt
Ymxlci5ub3AoKTsKQEAgLTIxOTIsMTEgKzI1ODMsMzMgQEAgcHVibGljOgogICAgIC8vIElmIHRo
ZSByZXN1bHQgaXMgbm90IHJlcHJlc2VudGFibGUgYXMgYSAzMiBiaXQgdmFsdWUsIGJyYW5jaC4K
ICAgICAvLyBNYXkgYWxzbyBicmFuY2ggZm9yIHNvbWUgdmFsdWVzIHRoYXQgYXJlIHJlcHJlc2Vu
dGFibGUgaW4gMzIgYml0cwogICAgIC8vIChzcGVjaWZpY2FsbHksIGluIHRoaXMgY2FzZSwgSU5U
X01BWCAweDdmZmZmZmZmKS4KLSAgICBKdW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihG
UFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgZW51bSBCcmFuY2hUcnVuY2F0
ZVR5cGUgeyBCcmFuY2hJZlRydW5jYXRlRmFpbGVkLCBCcmFuY2hJZlRydW5jYXRlU3VjY2Vzc2Z1
bCB9OworICAgIEp1bXAgYnJhbmNoVHJ1bmNhdGVEb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCwgQnJhbmNoVHJ1bmNhdGVUeXBlIGJyYW5jaFR5cGUgPSBCcmFu
Y2hJZlRydW5jYXRlRmFpbGVkKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudHJ1bmN3ZChm
cFRlbXBSZWdpc3Rlciwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubWZjMShkZXN0LCBmcFRl
bXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2gzMihicmFuY2hUeXBlID09IEJyYW5j
aElmVHJ1bmNhdGVGYWlsZWQgPyBFcXVhbCA6IE5vdEVxdWFsLCBkZXN0LCBUcnVzdGVkSW1tMzIo
MHg3ZmZmZmZmZikpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoVHJ1bmNhdGVEb3VibGVUb1Vp
bnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEJyYW5jaFRydW5jYXRlVHlw
ZSBicmFuY2hUeXBlID0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLnRydW5jd2QoZnBUZW1wUmVnaXN0ZXIsIHNyYyk7CisgICAgICAgIG1fYXNzZW1i
bGVyLm1mYzEoZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIo
YnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRydW5jYXRlRmFpbGVkID8gRXF1YWwgOiBOb3RFcXVhbCwg
ZGVzdCwgVHJ1c3RlZEltbTMyKDApKTsKKyAgICB9CisKKyAgICAvLyBSZXN1bHQgaXMgdW5kZWZp
bmVkIGlmIHRoZSB2YWx1ZSBpcyBvdXRzaWRlIG9mIHRoZSBpbnRlZ2VyIHJhbmdlLgorICAgIHZv
aWQgdHJ1bmNhdGVEb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnRydW5jd2QoZnBUZW1wUmVnaXN0ZXIsIHNy
Yyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1mYzEoZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOworICAg
IH0KKworICAgIC8vIFJlc3VsdCBpcyB1bmRlZmluZWQgaWYgc3JjID4gMl4zMQorICAgIHZvaWQg
dHJ1bmNhdGVEb3VibGVUb1VpbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci50cnVuY3dkKGZwVGVtcFJlZ2lzdGVyLCBzcmMp
OwogICAgICAgICBtX2Fzc2VtYmxlci5tZmMxKGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKLSAgICAg
ICAgcmV0dXJuIGJyYW5jaDMyKEVxdWFsLCBkZXN0LCBUcnVzdGVkSW1tMzIoMHg3ZmZmZmZmZikp
OwogICAgIH0KIAogICAgIC8vIENvbnZlcnQgJ3NyYycgdG8gYW4gaW50ZWdlciwgYW5kIHBsYWNl
cyB0aGUgcmVzdWx0aW5nICdkZXN0Jy4KQEAgLTIyMTgsMjggKzI2MzEsNDMgQEAgcHVibGljOgog
CiAgICAgSnVtcCBicmFuY2hEb3VibGVOb25aZXJvKEZQUmVnaXN0ZXJJRCByZWcsIEZQUmVnaXN0
ZXJJRCBzY3JhdGNoKQogICAgIHsKLSNpZiBXVEZfTUlQU19JU0FfUkVWKDIpICYmIFdURl9NSVBT
X0ZQNjQKLSAgICAgICAgbV9hc3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzY3Jh
dGNoKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubXRoYzEoTUlQU1JlZ2lzdGVyczo6emVybywgc2Ny
YXRjaCk7Ci0jZWxzZQotICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6Onpl
cm8sIHNjcmF0Y2gpOwotICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6Onpl
cm8sIEZQUmVnaXN0ZXJJRChzY3JhdGNoICsgMSkpOwotI2VuZGlmCisgICAgICAgIG1fYXNzZW1i
bGVyLnZtb3Yoc2NyYXRjaCwgTUlQU1JlZ2lzdGVyczo6emVybywgTUlQU1JlZ2lzdGVyczo6emVy
byk7CiAgICAgICAgIHJldHVybiBicmFuY2hEb3VibGUoRG91YmxlTm90RXF1YWwsIHJlZywgc2Ny
YXRjaCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hEb3VibGVaZXJvT3JOYU4oRlBSZWdpc3Rl
cklEIHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpCiAgICAgewotI2lmIFdURl9NSVBTX0lTQV9S
RVYoMikgJiYgV1RGX01JUFNfRlA2NAotICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdp
c3RlcnM6Onplcm8sIHNjcmF0Y2gpOwotICAgICAgICBtX2Fzc2VtYmxlci5tdGhjMShNSVBTUmVn
aXN0ZXJzOjp6ZXJvLCBzY3JhdGNoKTsKLSNlbHNlCi0gICAgICAgIG1fYXNzZW1ibGVyLm10YzEo
TUlQU1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm10YzEo
TUlQU1JlZ2lzdGVyczo6emVybywgRlBSZWdpc3RlcklEKHNjcmF0Y2ggKyAxKSk7Ci0jZW5kaWYK
KyAgICAgICAgbV9hc3NlbWJsZXIudm1vdihzY3JhdGNoLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBN
SVBTUmVnaXN0ZXJzOjp6ZXJvKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaERvdWJsZShEb3VibGVF
cXVhbE9yVW5vcmRlcmVkLCByZWcsIHNjcmF0Y2gpOwogICAgIH0KIAorICAgIC8vIEludmVydCBh
IHJlbGF0aW9uYWwgY29uZGl0aW9uLCBlLmcuID09IGJlY29tZXMgIT0sIDwgYmVjb21lcyA+PSwg
ZXRjLgorICAgIHN0YXRpYyBSZWxhdGlvbmFsQ29uZGl0aW9uIGludmVydChSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQpCisgICAgeworICAgICAgICBSZWxhdGlvbmFsQ29uZGl0aW9uIHI7CisgICAg
ICAgIGlmIChjb25kID09IEVxdWFsKQorICAgICAgICAgICAgciA9IE5vdEVxdWFsOworICAgICAg
ICBlbHNlIGlmIChjb25kID09IE5vdEVxdWFsKQorICAgICAgICAgICAgciA9IEVxdWFsOworICAg
ICAgICBlbHNlIGlmIChjb25kID09IEFib3ZlKQorICAgICAgICAgICAgciA9IEJlbG93T3JFcXVh
bDsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBBYm92ZU9yRXF1YWwpCisgICAgICAgICAgICBy
ID0gQmVsb3c7CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gQmVsb3cpCisgICAgICAgICAgICBy
ID0gQWJvdmVPckVxdWFsOworICAgICAgICBlbHNlIGlmIChjb25kID09IEJlbG93T3JFcXVhbCkK
KyAgICAgICAgICAgIHIgPSBBYm92ZTsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBHcmVhdGVy
VGhhbikKKyAgICAgICAgICAgIHIgPSBMZXNzVGhhbk9yRXF1YWw7CisgICAgICAgIGVsc2UgaWYg
KGNvbmQgPT0gR3JlYXRlclRoYW5PckVxdWFsKQorICAgICAgICAgICAgciA9IExlc3NUaGFuOwor
ICAgICAgICBlbHNlIGlmIChjb25kID09IExlc3NUaGFuKQorICAgICAgICAgICAgciA9IEdyZWF0
ZXJUaGFuT3JFcXVhbDsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBMZXNzVGhhbk9yRXF1YWwp
CisgICAgICAgICAgICByID0gR3JlYXRlclRoYW47CisgICAgICAgIHJldHVybiByOworICAgIH0K
KwogICAgIHZvaWQgbm9wKCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwpAQCAt
MjI1MiwxMiArMjY4MCwxMiBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0
aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwgaW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFi
ZWwgZGVzdGluYXRpb24pCiAgICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgTUlQU0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZGF0
YUxvY2F0aW9uKCksIGRlc3RpbmF0aW9uLmRhdGFMb2NhdGlvbigpKTsKICAgICB9CiAgICAgCiAg
ICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKICAgICB7Ci0gICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBNSVBTQXNzZW1ibGVyOjptYXhKdW1w
UmVwbGFjZW1lbnRTaXplKCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggZmEwZjVlMC4u
NTczZDhkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJs
eUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVs
cGVycy5oCkBAIC05Myw2ICs5MywyMyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKKyNpZiBD
UFUoTUlQUykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0
ZXJDYWxsKFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAgICAgbW92ZShyZXR1cm5BZGRyZXNz
UmVnaXN0ZXIsIHJlZyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHJlc3RvcmVS
ZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAgICAg
bW92ZShyZWcsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7CisgICAgfQorCisgICAgQUxXQVlTX0lO
TElORSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEFkZHJlc3MgYWRkcmVz
cykKKyAgICB7CisgICAgICAgIGxvYWRQdHIoYWRkcmVzcywgcmV0dXJuQWRkcmVzc1JlZ2lzdGVy
KTsKKyAgICB9CisjZW5kaWYKKwogICAgIHZvaWQgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQ
dHIoSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnksIEdQUlJlZyB0bykKICAgICB7
CiAgICAgICAgIGxvYWRQdHIoQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZW50
cnkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgdG8pOwpAQCAtMTkzLDcgKzIxMCw3IEBAIHB1YmxpYzoK
ICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFjdGl2ZUxlbmd0aFB0
cigpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKHNj
cmF0Y2hTaXplKSwgR1BSSW5mbzo6cmVnVDApOwogCi0jaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFS
TSkKKyNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNKSB8fCBDUFUoTUlQUykKICAgICAgICAgbW92
ZShUcnVzdGVkSW1tUHRyKGJ1ZmZlciksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CiAgICAgICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihhcmd1bWVudCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAg
ICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50
R1BSMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVs
cGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAppbmRl
eCA4YWRkZTA1Li4wNzBlYTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0Nh
bGxIZWxwZXJzLmgKQEAgLTU3Niw2ICs1NzYsMzkgQEAgcHVibGljOgogICAgICAgICBwb2tlKEdQ
UkluZm86Om5vbkFyZ0dQUjApOwogICAgIH0KICNlbmRpZiAvLyBDUFUoQVJNX0hBUkRGUCkKKyNl
bGlmIENQVShNSVBTKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJS
ZWcgYXJnMSkKKyAgICB7CisgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJndW1l
bnRGUFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMo
RlBSUmVnIGFyZzEsIEZQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgaWYgKGFyZzIgIT0gRlBS
SW5mbzo6YXJndW1lbnRGUFIwKSB7CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUklu
Zm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzIsIEZQUkluZm86
OmFyZ3VtZW50RlBSMSk7CisgICAgICAgIH0gZWxzZSBpZiAoYXJnMSAhPSBGUFJJbmZvOjphcmd1
bWVudEZQUjEpIHsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMiwgRlBSSW5mbzo6YXJndW1l
bnRGUFIxKTsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJndW1lbnRG
UFIwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFN3YXAgYXJnMSwgYXJnMi4K
KyAgICAgICAgICAgIHN3YXBEb3VibGUoRlBSSW5mbzo6YXJndW1lbnRGUFIwLCBGUFJJbmZvOjph
cmd1bWVudEZQUjEpOworICAgICAgICB9CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShGUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisg
ICAgeworICAgICAgICBhc3NlbWJsZXIoKS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BS
SW5mbzo6YXJndW1lbnRHUFIzLCBhcmcxKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJh
bWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcG9rZShhcmcyLCA0
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgRlBSUmVnIGFyZzMpCisgICAgeworICAg
ICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7CisgICAgICAgIG1vdmUoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHBv
a2UoYXJnMywgNCk7CisgICAgfQogI2Vsc2UKICNlcnJvciAiREZHIEpJVCBub3Qgc3VwcG9ydGVk
IG9uIHRoaXMgcGxhdGZvcm0uIgogI2VuZGlmCkBAIC04MDMsMTE5ICs4MzYsMTMwIEBAIHB1Ymxp
YzoKICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzdWl0YWJsZSBmb3IgYW55IGNhbGxpbmcgY29u
dmVudGlvbiB0aGF0IHByb3ZpZGVzIGZvcgogICAgIC8vIGV4YWN0bHkgNCBhcmd1bWVudCByZWdp
c3RlcnMsIGUuZy4gQVJNdjcuCiAjaWYgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA9PSA0
CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBcmd1bWVudD4KKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgcG9rZUFyZ3VtZW50KEFyZ3VtZW50IGFyZywgaW50IGluZGV4ID0gMCkKKyAgICB7CisjaWYg
Q1BVKE1JUFMpCisgICAgICAgIHBva2UoYXJnLCBpbmRleCArIDQpOworI2Vsc2UKKyAgICAgICAg
cG9rZShhcmcsIGluZGV4KTsKKyNlbmRpZgorICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBH
UFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFyZzQpOworICAg
ICAgICBwb2tlQXJndW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BS
UmVnIGFyZzMsIFRydXN0ZWRJbW0zMiBhcmc0KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc0KTsK
KyAgICAgICAgcG9rZUFyZ3VtZW50KGFyZzQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0
ciBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewotICAgICAgICBw
b2tlKGFyZzQpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBU
cnVzdGVkSW1tUHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVn
IGFyZzUpCiAgICAgewotICAgICAgICBwb2tlKGFyZzUsIDEpOwotICAgICAgICBwb2tlKGFyZzQp
OworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNSwgMSk7CisgICAgICAgIHBva2VBcmd1bWVudChh
cmc0KTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFy
ZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgVHJ1
c3RlZEltbTMyIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tl
QXJndW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwg
R1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAg
ICAgICAgcG9rZUFyZ3VtZW50KGFyZzQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQ
UlJlZyBhcmczLCBUcnVzdGVkSW1tUHRyIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFyZzQp
OworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKICAgICB7Ci0gICAgICAg
IHBva2UoYXJnNSwgMSk7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2VBcmd1bWVu
dChhcmc1LCAxKTsKKyAgICAgICAgcG9rZUFyZ3VtZW50KGFyZzQpOwogICAgICAgICBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIg
YXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKICAgICB7Ci0gICAg
ICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZElt
bTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbVB0ciBhcmc0KQog
ICAgIHsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgcG9rZUFyZ3VtZW50KGFyZzQpOwog
ICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAg
ICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVz
dGVkSW1tUHRyIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tl
QXJndW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3Rl
ZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAg
ICAgICAgcG9rZUFyZ3VtZW50KGFyZzQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRy
dXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCiAgICAgewotICAgICAg
ICBwb2tlKGFyZzUsIDEpOwotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlQXJndW1l
bnQoYXJnNSwgMSk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQsIFRydXN0ZWRJbW0z
MiBhcmc1KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCAxKTsKLSAgICAgICAgcG9rZShhcmc0
KTsKKyAgICAgICAgcG9rZUFyZ3VtZW50KGFyZzUsIDEpOworICAgICAgICBwb2tlQXJndW1lbnQo
YXJnNCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBh
cmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQ
UlJlZyBhcmc0LCBUcnVzdGVkSW1tUHRyIGFyZzUpCiAgICAgewotICAgICAgICBwb2tlKGFyZzUs
IDEpOwotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNSwgMSk7
CisgICAgICAgIHBva2VBcmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJl
ZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQsIFRydXN0ZWRJbW0zMiBhcmc1
KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCAxKTsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAg
ICAgICAgcG9rZUFyZ3VtZW50KGFyZzUsIDEpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNCk7
CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsK
ICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgVHJ1c3RlZEltbTMyIGFy
ZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNSwg
MSk7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc1LCAxKTsK
KyAgICAgICAgcG9rZUFyZ3VtZW50KGFyZzQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVn
IGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCiAgICAgewotICAg
ICAgICBwb2tlKGFyZzUsIDEpOwotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlQXJn
dW1lbnQoYXJnNSwgMSk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaAppbmRleCBkNmEwMzhhLi42Zjk2OGUyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaApAQCAtMTY0LDYgKzE2NCw3NCBA
QCBwdWJsaWM6CiAKICNlbmRpZgogCisjaWYgQ1BVKE1JUFMpCisKK2NsYXNzIEZQUkluZm8gewor
cHVibGljOgorICAgIHR5cGVkZWYgRlBSUmVnIFJlZ2lzdGVyVHlwZTsKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA2OworCisgICAgLy8gVGVtcG9yYXJ5IHJl
Z2lzdGVycy4KKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDAgPSBNSVBTUmVnaXN0ZXJz
OjpmMDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDEgPSBNSVBTUmVnaXN0ZXJzOjpm
NDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDIgPSBNSVBTUmVnaXN0ZXJzOjpmNjsK
KyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDMgPSBNSVBTUmVnaXN0ZXJzOjpmODsKKyAg
ICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDQgPSBNSVBTUmVnaXN0ZXJzOjpmMTA7CisgICAg
c3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Q1ID0gTUlQU1JlZ2lzdGVyczo6ZjE4OworCisgICAg
c3RhdGljIGNvbnN0IEZQUlJlZyByZXR1cm5WYWx1ZUZQUiA9IE1JUFNSZWdpc3RlcnM6OmYwOwor
CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjAgPSBNSVBTUmVnaXN0ZXJzOjpm
MTI7CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjEgPSBNSVBTUmVnaXN0ZXJz
OjpmMTQ7CisKKyAgICBzdGF0aWMgRlBSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCisg
ICAgeworICAgICAgICBzdGF0aWMgY29uc3QgRlBSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVy
T2ZSZWdpc3RlcnNdID0geworICAgICAgICAgICAgZnBSZWdUMCwgZnBSZWdUMSwgZnBSZWdUMiwg
ZnBSZWdUMywgZnBSZWdUNCwgZnBSZWdUNSB9OworCisgICAgICAgIEFTU0VSVChpbmRleCA8IG51
bWJlck9mUmVnaXN0ZXJzKTsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhd
OworICAgIH0KKworICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEZQUlJlZyByZWcpCisgICAg
eworICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcpOworICAgICAgICBBU1NFUlQo
cmVnIDwgMjApOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3Rl
clsyMF0gPSB7CisgICAgICAgICAgICAwLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52
YWxpZEluZGV4LAorICAgICAgICAgICAgMSwgSW52YWxpZEluZGV4LCAyLCBJbnZhbGlkSW5kZXgs
CisgICAgICAgICAgICAzLCBJbnZhbGlkSW5kZXgsIDQsIEludmFsaWRJbmRleCwKKyAgICAgICAg
ICAgIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRl
eCwKKyAgICAgICAgICAgIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCA1LCBJbnZhbGlkSW5k
ZXgsCisgICAgICAgIH07CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGluZGV4Rm9yUmVnaXN0
ZXJbcmVnXTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdCAhPSBJbnZhbGlkSW5kZXgpOworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05h
bWUoRlBSUmVnIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJl
Zyk7CisgICAgICAgIEFTU0VSVChyZWcgPCAzMik7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBuYW1lRm9yUmVnaXN0ZXJbMzJdID0geworICAgICAgICAgICAgImYwIiwgImYxIiwgImYyIiwg
ImYzIiwKKyAgICAgICAgICAgICJmNCIsICJmNSIsICJmNiIsICJmNyIsCisgICAgICAgICAgICAi
ZjgiLCAiZjkiLCAiZjEwIiwgImYxMSIsCisgICAgICAgICAgICAiZjEyIiwgImYxMyIsICJmMTQi
LCAiZjE1IgorICAgICAgICAgICAgImYxNiIsICJmMTciLCAiZjE4IiwgImYxOSIKKyAgICAgICAg
ICAgICJmMjAiLCAiZjIxIiwgImYyMiIsICJmMjMiCisgICAgICAgICAgICAiZjI0IiwgImYyNSIs
ICJmMjYiLCAiZjI3IgorICAgICAgICAgICAgImYyOCIsICJmMjkiLCAiZjMwIiwgImYzMSIKKyAg
ICAgICAgfTsKKyAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOworICAgIH0KK3By
aXZhdGU6CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW52YWxpZEluZGV4ID0gMHhmZmZm
ZmZmZjsKK307CisKKyNlbmRpZgorCiB0eXBlZGVmIFJlZ2lzdGVyQmFuazxGUFJJbmZvPjo6aXRl
cmF0b3IgZnByX2l0ZXJhdG9yOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCmluZGV4IDNkMDc1NTYuLmFhNjM0Y2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCkBAIC00NjEsNiArNDYxLDczIEBAIHBy
aXZhdGU6CiAKICNlbmRpZgogCisjaWYgQ1BVKE1JUFMpCisjZGVmaW5lIE5VTUJFUl9PRl9BUkdV
TUVOVF9SRUdJU1RFUlMgNAorCitjbGFzcyBHUFJJbmZvIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVm
IEdQUlJlZyBSZWdpc3RlclR5cGU7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9m
UmVnaXN0ZXJzID0gNjsKKworICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCisgICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyByZWdUMCA9IE1JUFNSZWdpc3RlcnM6OnYwOworICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgcmVnVDEgPSBNSVBTUmVnaXN0ZXJzOjp2MTsKKyAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIHJlZ1QyID0gTUlQU1JlZ2lzdGVyczo6dDQ7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBy
ZWdUMyA9IE1JUFNSZWdpc3RlcnM6OnQ1OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDQg
PSBNSVBTUmVnaXN0ZXJzOjp0NjsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q1ID0gTUlQ
U1JlZ2lzdGVyczo6dDc7CisgICAgLy8gVGhlc2UgcmVnaXN0ZXJzIG1hdGNoIHRoZSBiYXNlbGlu
ZSBKSVQuCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IHJl
Z1QwOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIyID0gcmVn
VDE7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IE1JUFNSZWdp
c3RlcnM6OnMwOworICAgIC8vIFRoZXNlIGNvbnN0YW50cyBwcm92aWRlIHRoZSBuYW1lcyBmb3Ig
dGhlIGdlbmVyYWwgcHVycG9zZSBhcmd1bWVudCAmIHJldHVybiB2YWx1ZSByZWdpc3RlcnMuCisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjAgPSBNSVBTUmVnaXN0ZXJzOjphMDsK
KyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMSA9IE1JUFNSZWdpc3RlcnM6OmEx
OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIyID0gTUlQU1JlZ2lzdGVyczo6
YTI7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBNSVBTUmVnaXN0ZXJz
OjphMzsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjAgPSByZWdUMjsKKyAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjEgPSByZWdUMzsKKyAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIG5vbkFyZ0dQUjIgPSByZWdUNDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVy
blZhbHVlR1BSID0gcmVnVDA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQ
UjIgPSByZWdUMTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVy
bkdQUiA9IHJlZ1Q1OworCisgICAgc3RhdGljIEdQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGlu
ZGV4KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOwor
ICAgICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdp
c3RlcnNdID0geyByZWdUMCwgcmVnVDEsIHJlZ1QyLCByZWdUMywgcmVnVDQsIHJlZ1Q1IH07Cisg
ICAgICAgIHJldHVybiByZWdpc3RlckZvckluZGV4W2luZGV4XTsKKyAgICB9CisKKyAgICBzdGF0
aWMgdW5zaWduZWQgdG9JbmRleChHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJl
ZyAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDE2KTsKKyAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVnaXN0ZXJbMTZdID0geyBJbnZhbGlkSW5k
ZXgsIEludmFsaWRJbmRleCwgMCwgMSwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFs
aWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxp
ZEluZGV4LCBJbnZhbGlkSW5kZXgsIDIsIDMsIDQsIDUgfTsKKyAgICAgICAgdW5zaWduZWQgcmVz
dWx0ID0gaW5kZXhGb3JSZWdpc3RlcltyZWddOworICAgICAgICBBU1NFUlQocmVzdWx0ICE9IElu
dmFsaWRJbmRleCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIGRlYnVnTmFtZShHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJU
KHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDE2KTsKKyAgICAg
ICAgc3RhdGljIGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclsxNl0gPSB7CisgICAgICAgICAg
ICAiemVybyIsICJhdCIsICJ2MCIsICJ2MSIsCisgICAgICAgICAgICAiYTAiLCAiYTEiLCAiYTIi
LCAiYTMiLAorICAgICAgICAgICAgInQwIiwgInQxIiwgInQyIiwgInQzIiwKKyAgICAgICAgICAg
ICJ0NCIsICJ0NSIsICJ0NiIsICJ0NyIKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIG5hbWVG
b3JSZWdpc3RlcltyZWddOworICAgIH0KK3ByaXZhdGU6CisKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgSW52YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsKK307CisKKyNlbmRpZgorCiB0eXBlZGVm
IFJlZ2lzdGVyQmFuazxHUFJJbmZvPjo6aXRlcmF0b3IgZ3ByX2l0ZXJhdG9yOwogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKaW5kZXggNjNlMzUyMC4uYjJlY2JhZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTI3NCw3ICsxMjc0LDcgQEAgcHVi
bGljOgogCiAvLyBFbmNvZGVkSlNWYWx1ZSBpbiBKU1ZBTFVFMzJfNjQgaXMgYSA2NC1iaXQgaW50
ZWdlci4gV2hlbiBiZWluZyBjb21waWxlZCBpbiBBUk0gRUFCSSwgaXQgbXVzdCBiZSBhbGlnbmVk
IGV2ZW4tbnVtYmVyZWQgcmVnaXN0ZXIgKHIwLCByMiBvciBbc3BdKS4KIC8vIFRvIGF2b2lkIGFz
c2VtYmxpZXMgZnJvbSB1c2luZyB3cm9uZyByZWdpc3RlcnMsIGxldCdzIG9jY3VweSByMSBvciBy
MyB3aXRoIGEgZHVtbXkgYXJndW1lbnQgd2hlbiBuZWNlc3NhcnkuCi0jaWYgQ09NUElMRVJfU1VQ
UE9SVFMoRUFCSSkgJiYgQ1BVKEFSTSkKKyNpZiAoQ09NUElMRVJfU1VQUE9SVFMoRUFCSSkgJiYg
Q1BVKEFSTSkpIHx8IENQVShNSVBTKQogI2RlZmluZSBFQUJJXzMyQklUX0RVTU1ZX0FSRyAgICAg
IFRydXN0ZWRJbW0zMigwKSwKICNlbHNlCiAjZGVmaW5lIEVBQklfMzJCSVRfRFVNTVlfQVJHCkBA
IC0xNzE5LDcgKzE3MTksNyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAgICAgCi0jaWYgIWRl
ZmluZWQoTkRFQlVHKSAmJiAhQ1BVKEFSTSkKKyNpZiAhZGVmaW5lZChOREVCVUcpICYmICFDUFUo
QVJNKSAmJiAhQ1BVKE1JUFMpCiAgICAgdm9pZCBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCkKICAg
ICB7CiAgICAgICAgIC8vIFdlJ3JlIGFib3V0IHRvIGNhbGwgb3V0IHRvIGEgIm5hdGl2ZSIgaGVs
cGVyIGZ1bmN0aW9uLiBUaGUgaGVscGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pTSW50ZXJmYWNlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50
ZXJmYWNlSklULmgKaW5kZXggMmY0YjRlMy4uYTI4ZjM1MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaApAQCAtMTI1LDYgKzEyNSwxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FjaGVkUmVzdWx0UmVnaXN0
ZXIgPSBNSVBTUmVnaXN0ZXJzOjp2MDsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQg
Zmlyc3RBcmd1bWVudFJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6YTA7CiAgICAgICAgIAorI2lm
IEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQg
YnVja2V0Q291bnRlclJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6czM7CisjZW5kaWYKKwogICAg
ICAgICAvLyByZWdUMCBtdXN0IGJlIHYwIGZvciByZXR1cm5pbmcgYSAzMi1iaXQgdmFsdWUuCiAg
ICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QwID0gTUlQU1JlZ2lzdGVyczo6djA7
CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
aAppbmRleCA5ZTUwN2Y3Li42YTU5MGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuaApAQCAtMTMzLDE0ICsxMzMsMTggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGlj
IHNpemVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkgeyByZXR1cm4gc2l6ZW9m
KHNpemVfdCkgKyBidWZmZXJTaXplOyB9CisgICAgICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlv
blNpemUoc2l6ZV90IGJ1ZmZlclNpemUpIHsgcmV0dXJuIHNpemVvZihTY3JhdGNoQnVmZmVyKSAr
IGJ1ZmZlclNpemU7IH0KICAgICAgICAgdm9pZCBzZXRBY3RpdmVMZW5ndGgoc2l6ZV90IGFjdGl2
ZUxlbmd0aCkgeyBtX2FjdGl2ZUxlbmd0aCA9IGFjdGl2ZUxlbmd0aDsgfQogICAgICAgICBzaXpl
X3QgYWN0aXZlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVMZW5ndGg7IH07CiAgICAg
ICAgIHNpemVfdCogYWN0aXZlTGVuZ3RoUHRyKCkgeyByZXR1cm4gJm1fYWN0aXZlTGVuZ3RoOyB9
OwogICAgICAgICB2b2lkKiBkYXRhQnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogICAg
ICAgICBzaXplX3QgbV9hY3RpdmVMZW5ndGg7CisjaWYgQ1BVKE1JUFMpICYmIChkZWZpbmVkIFdU
Rl9NSVBTX0FSQ0hfUkVWICYmIFdURl9NSVBTX0FSQ0hfUkVWID09IDIpCisgICAgICAgIHZvaWQq
IG1fYnVmZmVyWzBdIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKTsKKyNlbHNlCiAgICAgICAg
IHZvaWQqIG1fYnVmZmVyWzBdOworI2VuZGlmCiAgICAgfTsKICNpZiBDT01QSUxFUihNU1ZDKQog
I3ByYWdtYSB3YXJuaW5nKHBvcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggYzY1Y2Q3ZC4uMDVjYjA0MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAxMy0wMS0xOCAgQmFsYXpzIEtpbHZhZHkgIDxraWx2YWR5YkBob21lamlubmku
Y29tPgorCisgICAgICAgIE1JUFMgREZHIGltcGxlbWVudGF0aW9uLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMzI4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgREZHIGltcGxlbWVudGF0aW9uIGZvciBN
SVBTLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTMtMDEtMTcgIERhdmlkIEtp
bHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggdnByaW50Zl9zdGRlcnJf
Y29tbW9uKCkgdG8gY29tcGlsZSB3aXRoIC1Xc2hvcnRlbi02NC10by0zMgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5k
ZXggZTMxZTVmNi4uYjhlNDhkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0u
aAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC05NDQsNiArOTQ0LDEwIEBACiAj
aWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKICNkZWZpbmUgRU5BQkxFX0RGR19KSVQgMQogI2VuZGlm
CisvKiBFbmFibGUgdGhlIERGRyBKSVQgb24gTUlQUy4gKi8KKyNpZiBDUFUoTUlQUykKKyNkZWZp
bmUgRU5BQkxFX0RGR19KSVQgMQorI2VuZGlmCiAjZW5kaWYKIAogLyogSWYgdGhlIGppdCBpcyBu
b3QgYXZhaWxhYmxlLCBlbmFibGUgdGhlIExMSW50IEMgTG9vcDogKi8K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183746</attachid>
            <date>2013-01-21 03:24:00 -0800</date>
            <delta_ts>2013-01-29 04:38:13 -0800</delta_ts>
            <desc>DFG for MIPS - arg. offset with inline</desc>
            <filename>dfg-i.diff</filename>
            <type>text/plain</type>
            <size>52415</size>
            <attacher name="Balazs Kilvady">kilvadyb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDNmMmIxMDguLmE4OWM1YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDEzLTAxLTIxICBCYWxhenMgS2lsdmFk
eSAgPGtpbHZhZHliQGhvbWVqaW5uaS5jb20+CisKKyAgICAgICAgTUlQUyBERkcgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
RkcgaW1wbGVtZW50YXRpb24gZm9yIE1JUFMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTUlQU0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpNSVBTQXNzZW1ibGVyKToK
KyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6c2xsdik6CisgICAgICAgIChKU0M6Ok1JUFNB
c3NlbWJsZXI6Om1vdmQpOgorICAgICAgICAoTUlQU0Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6
Ok1JUFNBc3NlbWJsZXI6Om5lZ2QpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJl
bEZvcldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJlbCk6Cisg
ICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6OnZtb3YpOgorICAgICAgICAoSlNDOjpNSVBTQXNz
ZW1ibGVyOjpsaW5rRGlyZWN0SnVtcCk6CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6Om1h
eEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpyZXZl
cnRKdW1wVG9Nb3ZlKToKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhK
dW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKE1h
Y3JvQXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBva2UpOgorICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJNSVBTOjphZGQzMik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlck1JUFMpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmFuZDMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJNSVBTOjpsc2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyTUlQUzo6bXVsMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om9yMzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJzaGlmdDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjp1cnNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OnN1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
Ojp4b3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6c3RvcmUzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6anVtcCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoQWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OmJyYW5jaE11bDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
OjpicmFuY2hTdWIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNo
TmVnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmNhbGwpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmxvYWREb3VibGUpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6Om1vdmVEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OnN3YXBEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6
OnN1YkRvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6bXVsRG91Ymxl
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpkaXZEb3VibGUpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om5lZ2F0ZURvdWJsZSk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRXF1YWwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlck1JUFM6OmJyYW5jaE5vdEVxdWFsKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJNSVBTOjpicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OmJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnRydW5jYXRlRG91YmxlVG9JbnQzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6dHJ1bmNhdGVEb3VibGVUb1VpbnQzMik6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlTm9uWmVybyk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlWmVyb09yTmFOKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjppbnZlcnQpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyTUlQUzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogZGZnL0RG
R0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoQXNzZW1ibHlIZWxwZXJzKToKKyAgICAgICAg
KEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybik6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpk
ZWJ1Z0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEND
YWxsSGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3Vt
ZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUpOgorICAgICAgICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6cG9rZUFyZ3Vt
ZW50KToKKyAgICAgICAgKiBkZmcvREZHRlBSSW5mby5oOgorICAgICAgICAoREZHKToKKyAgICAg
ICAgKEZQUkluZm8pOgorICAgICAgICAoSlNDOjpERkc6OkZQUkluZm86OnRvUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpERkc6OkZQUkluZm86OnRvSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6
OkZQUkluZm86OmRlYnVnTmFtZSk6CisgICAgICAgICogZGZnL0RGR0dQUkluZm8uaDoKKyAgICAg
ICAgKERGRyk6CisgICAgICAgIChHUFJJbmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpHUFJJbmZv
Ojp0b1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpHUFJJbmZvOjp0b0luZGV4KToKKyAg
ICAgICAgKEpTQzo6REZHOjpHUFJJbmZvOjpkZWJ1Z05hbWUpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoU3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAqIGpp
dC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAoSlNJbnRlcmZhY2VKSVQpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0M6OlNjcmF0Y2hCdWZmZXI6OmFs
bG9jYXRpb25TaXplKToKKyAgICAgICAgKFNjcmF0Y2hCdWZmZXIpOgorCiAyMDEzLTAxLTIwICBH
ZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2VhayBHQyBtYXBz
IHNob3VsZCBiZSBlYXNpZXIgdG8gdXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTUlQU0Fzc2VtYmxlci5oCmluZGV4IDAyNmY4N2UuLjdmNTUzYmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCkBAIC0xNTIsNiAr
MTUyLDggQEAgcHVibGljOgogICAgIHR5cGVkZWYgU2VnbWVudGVkVmVjdG9yPEFzc2VtYmxlckxh
YmVsLCA2ND4gSnVtcHM7CiAKICAgICBNSVBTQXNzZW1ibGVyKCkKKyAgICAgICAgOiBtX2luZGV4
T2ZMYXN0V2F0Y2hwb2ludChJTlRfTUlOKQorICAgICAgICAsIG1faW5kZXhPZlRhaWxPZkxhc3RX
YXRjaHBvaW50KElOVF9NSU4pCiAgICAgewogICAgIH0KIApAQCAtMzI1LDcgKzMyNyw3IEBAIHB1
YmxpYzoKICAgICAgICAgZW1pdEluc3QoMHgwMDAwMDAwMCB8IChyZCA8PCBPUF9TSF9SRCkgfCAo
cnQgPDwgT1BfU0hfUlQpIHwgKChzaGFtdCAmIDB4MWYpIDw8IE9QX1NIX1NIQU1UKSk7CiAgICAg
fQogCi0gICAgdm9pZCBzbGx2KFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcnQsIGludCBycykK
KyAgICB2b2lkIHNsbHYoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBy
cykKICAgICB7CiAgICAgICAgIGVtaXRJbnN0KDB4MDAwMDAwMDQgfCAocmQgPDwgT1BfU0hfUkQp
IHwgKHJ0IDw8IE9QX1NIX1JUKSB8IChycyA8PCBPUF9TSF9SUykpOwogICAgIH0KQEAgLTUyNyw2
ICs1MjksMTYgQEAgcHVibGljOgogICAgICAgICBlbWl0SW5zdCgweDQ2MjAwMDA0IHwgKGZkIDw8
IE9QX1NIX0ZEKSB8IChmcyA8PCBPUF9TSF9GUykpOwogICAgIH0KIAorICAgIHZvaWQgbW92ZChG
UFJlZ2lzdGVySUQgZmQsIEZQUmVnaXN0ZXJJRCBmcykKKyAgICB7CisgICAgICAgIGVtaXRJbnN0
KDB4NDYyMDAwMDYgfCAoZmQgPDwgT1BfU0hfRkQpIHwgKGZzIDw8IE9QX1NIX0ZTKSk7CisgICAg
fQorCisgICAgdm9pZCBuZWdkKEZQUmVnaXN0ZXJJRCBmZCwgRlBSZWdpc3RlcklEIGZzKQorICAg
IHsKKyAgICAgICAgZW1pdEluc3QoMHg0NjIwMDAwNyB8IChmZCA8PCBPUF9TSF9GRCkgfCAoZnMg
PDwgT1BfU0hfRlMpKTsKKyAgICB9CisKICAgICB2b2lkIHRydW5jd2QoRlBSZWdpc3RlcklEIGZk
LCBGUFJlZ2lzdGVySUQgZnMpCiAgICAgewogICAgICAgICBlbWl0SW5zdCgweDQ2MjAwMDBkIHwg
KGZkIDw8IE9QX1NIX0ZEKSB8IChmcyA8PCBPUF9TSF9GUykpOwpAQCAtNjE5LDkgKzYzMSwyNCBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2J1ZmZlci5sYWJlbCgpOwogICAgIH0KIAorICAg
IEFzc2VtYmxlckxhYmVsIGxhYmVsRm9yV2F0Y2hwb2ludCgpCisgICAgeworICAgICAgICBBc3Nl
bWJsZXJMYWJlbCByZXN1bHQgPSBtX2J1ZmZlci5sYWJlbCgpOworICAgICAgICBpZiAoc3RhdGlj
X2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpICE9IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KQor
ICAgICAgICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKKyAgICAgICAgbV9pbmRleE9mTGFzdFdhdGNo
cG9pbnQgPSByZXN1bHQubV9vZmZzZXQ7CisgICAgICAgIG1faW5kZXhPZlRhaWxPZkxhc3RXYXRj
aHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOworICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBtX2J1ZmZlci5sYWJlbCgpOworICAgICAgICBBc3NlbWJs
ZXJMYWJlbCByZXN1bHQgPSBtX2J1ZmZlci5sYWJlbCgpOworICAgICAgICB3aGlsZSAoVU5MSUtF
TFkoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpIDwgbV9pbmRleE9mVGFpbE9mTGFz
dFdhdGNocG9pbnQpKSB7CisgICAgICAgICAgICBub3AoKTsKKyAgICAgICAgICAgIHJlc3VsdCA9
IG1fYnVmZmVyLmxhYmVsKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKICAgICBBc3NlbWJsZXJMYWJlbCBhbGlnbihpbnQgYWxpZ25tZW50KQpAQCAtNjY0LDE0
ICs2OTEsMjQgQEAgcHVibGljOgogICAgIC8vIEFzc2VtYmx5IGhlbHBlcnMgZm9yIG1vdmluZyBk
YXRhIGJldHdlZW4gZnAgYW5kIHJlZ2lzdGVycy4KICAgICB2b2lkIHZtb3YoUmVnaXN0ZXJJRCBy
ZDEsIFJlZ2lzdGVySUQgcmQyLCBGUFJlZ2lzdGVySUQgcm4pCiAgICAgeworI2lmIFdURl9NSVBT
X0lTQV9SRVYoMikgJiYgV1RGX01JUFNfRlA2NAorICAgICAgICBtZmMxKHJkMSwgcm4pOworICAg
ICAgICBtZmhjMShyZDIsIHJuKTsKKyNlbHNlCiAgICAgICAgIG1mYzEocmQxLCBybik7CiAgICAg
ICAgIG1mYzEocmQyLCBGUFJlZ2lzdGVySUQocm4gKyAxKSk7CisjZW5kaWYKICAgICB9CiAKICAg
ICB2b2lkIHZtb3YoRlBSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuMSwgUmVnaXN0ZXJJRCBy
bjIpCiAgICAgeworI2lmIFdURl9NSVBTX0lTQV9SRVYoMikgJiYgV1RGX01JUFNfRlA2NAorICAg
ICAgICBtdGMxKHJuMSwgcmQpOworICAgICAgICBtdGhjMShybjIsIHJkKTsKKyNlbHNlCiAgICAg
ICAgIG10YzEocm4xLCByZCk7CiAgICAgICAgIG10YzEocm4yLCBGUFJlZ2lzdGVySUQocmQgKyAx
KSk7CisjZW5kaWYKICAgICB9CiAKICAgICBzdGF0aWMgdW5zaWduZWQgZ2V0Q2FsbFJldHVybk9m
ZnNldChBc3NlbWJsZXJMYWJlbCBjYWxsKQpAQCAtNjg4LDYgKzcyNSwzNSBAQCBwdWJsaWM6CiAg
ICAgLy8gd3JpdGFibGUgcmVnaW9uIG9mIG1lbW9yeTsgdG8gbW9kaWZ5IHRoZSBjb2RlIGluIGFu
IGV4ZWN1dGUtb25seSBleGVjdWFibGUKICAgICAvLyBwb29sIHRoZSAncmVwYXRjaCcgYW5kICdy
ZWxpbmsnIG1ldGhvZHMgc2hvdWxkIGJlIHVzZWQuCiAKKyAgICBzdGF0aWMgc2l6ZV90IGxpbmtE
aXJlY3RKdW1wKHZvaWQqIGNvZGUsIHZvaWQqIHRvKQorICAgIHsKKyAgICAgICAgTUlQU1dvcmQq
IGluc24gPSByZWludGVycHJldF9jYXN0PE1JUFNXb3JkKj4ocmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4oY29kZSkpOworICAgICAgICBzaXplX3Qgb3BzID0gMDsKKyAgICAgICAgaW50MzJfdCBz
bG90QWRkciA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50PihpbnNuKSArIDQ7CisgICAgICAgIGludDMy
X3QgdG9BZGRyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ+KHRvKTsKKworICAgICAgICBpZiAoKHNs
b3RBZGRyICYgMHhmMDAwMDAwMCkgIT0gKHRvQWRkciAmIDB4ZjAwMDAwMDApKSB7CisgICAgICAg
ICAgICAvLyBsdWkKKyAgICAgICAgICAgICppbnNuID0gMHgzYzAwMDAwMCB8IChNSVBTUmVnaXN0
ZXJzOjp0OSA8PCBPUF9TSF9SVCkgfCAoKHRvQWRkciA+PiAxNikgJiAweGZmZmYpOworICAgICAg
ICAgICAgKytpbnNuOworICAgICAgICAgICAgLy8gb3JpCisgICAgICAgICAgICAqaW5zbiA9IDB4
MzQwMDAwMDAgfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlQpIHwgKE1JUFNSZWdpc3Rl
cnM6OnQ5IDw8IE9QX1NIX1JTKSB8ICh0b0FkZHIgJiAweGZmZmYpOworICAgICAgICAgICAgKytp
bnNuOworICAgICAgICAgICAgLy8ganIKKyAgICAgICAgICAgICppbnNuID0gMHgwMDAwMDAwOCB8
IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SUyk7CisgICAgICAgICAgICArK2luc247Cisg
ICAgICAgICAgICBvcHMgPSA0ICogc2l6ZW9mKE1JUFNXb3JkKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIC8vIGoKKyAgICAgICAgICAgICppbnNuID0gMHgwODAwMDAwMCB8ICgodG9B
ZGRyICYgMHgwZmZmZmZmZikgPj4gMik7CisgICAgICAgICAgICArK2luc247CisgICAgICAgICAg
ICBvcHMgPSAyICogc2l6ZW9mKE1JUFNXb3JkKTsKKyAgICAgICAgfQorICAgICAgICAvLyBub3AK
KyAgICAgICAgKmluc24gPSAweDAwMDAwMDAwOworICAgICAgICByZXR1cm4gb3BzOworICAgIH0K
KwogICAgIHZvaWQgbGlua0p1bXAoQXNzZW1ibGVyTGFiZWwgZnJvbSwgQXNzZW1ibGVyTGFiZWwg
dG8pCiAgICAgewogICAgICAgICBBU1NFUlQodG8uaXNTZXQoKSk7CkBAIC04MjUsMjkgKzg5MSwz
NiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1w
VG9Nb3ZlKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQgcnQsIGludCBpbW0pCisg
ICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKICAgICB7Ci0gICAg
ICAgIE1JUFNXb3JkKiBpbnNuID0gc3RhdGljX2Nhc3Q8TUlQU1dvcmQqPihpbnN0cnVjdGlvblN0
YXJ0KSArIDE7Ci0gICAgICAgIEFTU0VSVCgoKmluc24gJiAweGZjMDAwMDAwKSA9PSAweDM0MDAw
MDAwKTsKLSAgICAgICAgKmluc24gPSAoKmluc24gJiAweGZjMWYwMDAwKSB8IChpbW0gJiAweGZm
ZmYpOwotICAgICAgICBjYWNoZUZsdXNoKGluc24sIHNpemVvZihNSVBTV29yZCkpOworICAgICAg
ICByZXR1cm4gc2l6ZW9mKE1JUFNXb3JkKSAqIDQ7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQg
cmVwbGFjZVdpdGhKdW1wKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIHZvaWQqIHRvKQorICAgIHN0
YXRpYyB2b2lkIHJldmVydEp1bXBUb01vdmUodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgUmVnaXN0
ZXJJRCBydCwgaW50IGltbSkKICAgICB7Ci0gICAgICAgIE1JUFNXb3JkKiBpbnN0cnVjdGlvbiA9
IHJlaW50ZXJwcmV0X2Nhc3Q8TUlQU1dvcmQqPihpbnN0cnVjdGlvblN0YXJ0KTsKLSAgICAgICAg
aW50cHRyX3QganVtcFRvID0gcmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4odG8pOworICAgICAg
ICBNSVBTV29yZCogaW5zbiA9IHN0YXRpY19jYXN0PE1JUFNXb3JkKj4oaW5zdHJ1Y3Rpb25TdGFy
dCk7CisgICAgICAgIHNpemVfdCBjb2RlU2l6ZSA9IDIgKiBzaXplb2YoTUlQU1dvcmQpOwogCiAg
ICAgICAgIC8vIGx1aQotICAgICAgICBpbnN0cnVjdGlvblswXSA9IDB4M2MwMDAwMDAgfCAoTUlQ
U1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlQpIHwgKChqdW1wVG8gPj4gMTYpICYgMHhmZmZmKTsK
KyAgICAgICAgKmluc24gPSAweDNjMDAwMDAwIHwgKHJ0IDw8IE9QX1NIX1JUKSB8ICgoaW1tID4+
IDE2KSAmIDB4ZmZmZik7CisgICAgICAgICsraW5zbjsKICAgICAgICAgLy8gb3JpCi0gICAgICAg
IGluc3RydWN0aW9uWzFdID0gMHgzNDAwMDAwMCB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9T
SF9SVCkgfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlMpIHwgKGp1bXBUbyAmIDB4ZmZm
Zik7Ci0gICAgICAgIC8vIGpyCi0gICAgICAgIGluc3RydWN0aW9uWzJdID0gMHgwMDAwMDAwOCB8
IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SUyk7Ci0gICAgICAgIC8vIG5vcAotICAgICAg
ICBpbnN0cnVjdGlvblszXSA9IDB4MDsKKyAgICAgICAgKmluc24gPSAweDM0MDAwMDAwIHwgKHJ0
IDw8IE9QX1NIX1JTKSB8IChydCA8PCBPUF9TSF9SVCkgfCAoaW1tICYgMHhmZmZmKTsKKyAgICAg
ICAgKytpbnNuOworICAgICAgICAvLyBpZiBqciAkdDkKKyAgICAgICAgaWYgKCppbnNuID09IDB4
MDMyMDAwMDgpIHsKKyAgICAgICAgICAgICppbnNuID0gMHgwMDAwMDAwMDsKKyAgICAgICAgICAg
IGNvZGVTaXplICs9IHNpemVvZihNSVBTV29yZCk7CisgICAgICAgIH0KKyAgICAgICAgY2FjaGVG
bHVzaChpbnNuLCBjb2RlU2l6ZSk7CisgICAgfQogCi0gICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1
Y3Rpb24sIHNpemVvZihNSVBTV29yZCkgKiA0KTsKKyAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0
aEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCisgICAgeworICAgICAgICBB
U1NFUlQoIShiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihpbnN0cnVjdGlvblN0YXJ0KSAmIDMpKTsK
KyAgICAgICAgQVNTRVJUKCEoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4odG8pICYgMykpOworICAg
ICAgICBzaXplX3Qgb3BzID0gbGlua0RpcmVjdEp1bXAoaW5zdHJ1Y3Rpb25TdGFydCwgdG8pOwor
ICAgICAgICBjYWNoZUZsdXNoKGluc3RydWN0aW9uU3RhcnQsIG9wcyk7CiAgICAgfQogCiAgICAg
c3RhdGljIHZvaWQgcmVwbGFjZVdpdGhMb2FkKHZvaWQqIGluc3RydWN0aW9uU3RhcnQpCkBAIC0x
MDIzLDYgKzEwOTYsOCBAQCBwcml2YXRlOgogCiAgICAgQXNzZW1ibGVyQnVmZmVyIG1fYnVmZmVy
OwogICAgIEp1bXBzIG1fanVtcHM7CisgICAgaW50IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50Owor
ICAgIGludCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5oCmluZGV4IDNkNTczNDAuLjJmMjZmZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAgLTIwMCw2ICsyMDAsMTMgQEAgcHVi
bGljOgogICAgIH0KICNlbmRpZgogICAgIAorI2lmIENQVShNSVBTKQorICAgIHZvaWQgcG9rZShG
UFJlZ2lzdGVySUQgc3JjLCBpbnQgaW5kZXggPSAwKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEo
aW5kZXggJiAxKSk7CisgICAgICAgIHN0b3JlRG91YmxlKHNyYywgYWRkcmVzc0ZvclBva2UoaW5k
ZXgpKTsKKyAgICB9CisjZW5kaWYKIAogICAgIC8vIEJhY2t3YXJkcyBiYW5jaGVzLCB0aGVzZSBh
cmUgY3VycmVudGx5IGFsbCBpbXBsZW1lbnRlZCB1c2luZyBleGlzdGluZyBmb3J3YXJkcyBicmFu
Y2ggbWVjaGFuaXNtcy4KICAgICB2b2lkIGJyYW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgb3AxLCBUcnVzdGVkSW1tUHRyIGltbSwgTGFiZWwgdGFyZ2V0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1J
UFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBT
LmgKaW5kZXggMWIxYTEyNy4uYjU5MzgxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCkBAIC0xMTQsNiArMTE0LDExIEBA
IHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkdShkZXN0LCBkZXN0LCBzcmMpOwogICAg
IH0KIAorICAgIHZvaWQgYWRkMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdp
c3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGRlc3QsIG9wMSwg
b3AyKTsKKyAgICB9CisKICAgICB2b2lkIGFkZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIGFkZDMyKGltbSwgZGVzdCwgZGVzdCk7CkBAIC0yNjcs
NiArMjcyLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuYW5kSW5zbihkZXN0LCBk
ZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgYW5kMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lz
dGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5h
bmRJbnNuKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIGFuZDMyKFRydXN0ZWRJ
bW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmICghaW1tLm1fdmFs
dWUgJiYgIW1fZml4ZWRXaWR0aCkKQEAgLTI4Myw5ICsyOTMsMTYgQEAgcHVibGljOgogICAgICAg
ICB9CiAgICAgfQogCi0gICAgdm9pZCBsc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgdm9pZCBhbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuc2xsKGRlc3Qs
IGRlc3QsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSAmJiAhbV9maXhl
ZFdpZHRoKQorICAgICAgICAgICAgbW92ZShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBkZXN0KTsKKyAg
ICAgICAgZWxzZSBpZiAoaW1tLm1fdmFsdWUgPiAwICYmIGltbS5tX3ZhbHVlIDwgNjU1MzUgJiYg
IW1fZml4ZWRXaWR0aCkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFuZGkoZGVzdCwgc3JjLCBp
bW0ubV92YWx1ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbW92ZShpbW0sIGltbVRl
bXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hbmRJbnNuKGRlc3QsIHNyYywg
aW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQgbHNoaWZ0MzIo
UmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMjkzLDExICszMTAs
MzMgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zbGx2KGRlc3QsIGRlc3QsIHNoaWZ0
QW1vdW50KTsKICAgICB9CiAKKyAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5zbGx2KGRlc3QsIHNyYywgc2hpZnRBbW91bnQpOworICAgIH0KKworICAgIHZvaWQg
bHNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLnNsbHYo
ZGVzdCwgZGVzdCwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGxzaGlmdDMy
KFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuc2xsdihkZXN0LCBzcmMsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgfQorCiAgICAgdm9pZCBt
dWwzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9h
c3NlbWJsZXIubXVsKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBtdWwzMihS
ZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLm11bChkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9p
ZCBtdWwzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSAmJiAhbV9maXhlZFdpZHRoKQpAQCAt
MzQ4LDYgKzM4NywyNCBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm9ySW5zbihkZXN0
LCBkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKKyAgICB2b2lkIG9yMzIoVHJ1c3Rl
ZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIGlmICghaW1tLm1fdmFsdWUgJiYgIW1fZml4ZWRXaWR0aCkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPiAwICYmIGltbS5tX3ZhbHVlIDwgNjU1MzUg
JiYgIW1fZml4ZWRXaWR0aCkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIub3JpKGRlc3QsIHNy
YywgaW1tLm1fdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgLyoKKyAgICAgICAgICAgIGxpICAgICAgZGF0YVRlbXAsIGltbQorICAgICAgICAgICAgb3Ig
ICAgICBkZXN0LCBzcmMsIGRhdGFUZW1wCisgICAgICAgICovCisgICAgICAgIG1vdmUoaW1tLCBk
YXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIub3JJbnNuKGRlc3QsIHNyYywg
ZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgfQorCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQgc3Jj
LCBBYnNvbHV0ZUFkZHJlc3MgZGVzdCkKICAgICB7CiAgICAgICAgIGxvYWQzMihkZXN0Lm1fcHRy
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKQEAgLTM2MCw2ICs0MTcsMTEgQEAgcHVibGljOgogICAgICAg
ICBtX2Fzc2VtYmxlci5zcmF2KGRlc3QsIGRlc3QsIHNoaWZ0QW1vdW50KTsKICAgICB9CiAKKyAg
ICB2b2lkIHJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zcmF2KGRlc3QsIHNy
Yywgc2hpZnRBbW91bnQpOworICAgIH0KKwogICAgIHZvaWQgcnNoaWZ0MzIoVHJ1c3RlZEltbTMy
IGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3JhKGRl
c3QsIGRlc3QsIGltbS5tX3ZhbHVlKTsKQEAgLTM3NSwxNiArNDM3LDMxIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9hc3NlbWJsZXIuc3JsdihkZXN0LCBkZXN0LCBzaGlmdEFtb3VudCk7CiAgICAgfQog
CisgICAgdm9pZCB1cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91
bnQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnNybHYoZGVz
dCwgc3JjLCBzaGlmdEFtb3VudCk7CisgICAgfQorCiAgICAgdm9pZCB1cnNoaWZ0MzIoVHJ1c3Rl
ZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
c3JsKGRlc3QsIGRlc3QsIGltbS5tX3ZhbHVlKTsKICAgICB9CiAKKyAgICB2b2lkIHVyc2hpZnQz
MihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3JsKGRlc3QsIHNyYywgaW1tLm1fdmFsdWUpOworICAg
IH0KKwogICAgIHZvaWQgc3ViMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnUoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAK
KyAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3VidShkZXN0LCBvcDEsIG9wMik7
CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPj0gLTMyNzY3ICYmIGltbS5tX3Zh
bHVlIDw9IDMyNzY4CkBAIC00OTUsNiArNTcyLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3Nl
bWJsZXIueG9ySW5zbihkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgeG9yMzIo
UmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAg
ICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkgewpAQCAtNTEwLDYgKzU5MiwyMSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oZGVzdCwgZGVzdCwgaW1tVGVtcFJlZ2lz
dGVyKTsKICAgICB9CiAKKyAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBpZiAoaW1tLm1fdmFsdWUg
PT0gLTEpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcihkZXN0LCBzcmMsIE1JUFNSZWdp
c3RlcnM6Onplcm8pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAg
LyoKKyAgICAgICAgICAgIGxpICBpbW1UZW1wLCBpbW0KKyAgICAgICAgICAgIHhvciBkZXN0LCBk
ZXN0LCBpbW1UZW1wCisgICAgICAgICovCisgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0
ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIHNyYywgaW1tVGVtcFJlZ2lz
dGVyKTsKKyAgICB9CisKICAgICB2b2lkIHNxcnREb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBS
ZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnNxcnRkKGRzdCwgc3Jj
KTsKQEAgLTk4OSw2ICsxMDg2LDQ0IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAg
IHZvaWQgc3RvcmUzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNlSW5kZXggYWRkcmVzcykKKyAgICB7
CisgICAgICAgIGlmIChhZGRyZXNzLm9mZnNldCA+PSAtMzI3NjggJiYgYWRkcmVzcy5vZmZzZXQg
PD0gMzI3NjcgJiYgIW1fZml4ZWRXaWR0aCkgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAg
ICAgICBzbGwgICAgIGFkZHJUZW1wLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlCisgICAg
ICAgICAgICAgICAgYWRkdSAgICBhZGRyVGVtcCwgYWRkclRlbXAsIGFkZHJlc3MuYmFzZQorICAg
ICAgICAgICAgICAgIHN3ICAgICAgc3JjLCBhZGRyZXNzLm9mZnNldChhZGRyVGVtcCkKKyAgICAg
ICAgICAgICovCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbGwoYWRkclRlbXBSZWdpc3Rlciwg
YWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5h
ZGR1KGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSk7Cisg
ICAgICAgICAgICBpZiAoIWltbS5tX3ZhbHVlKQorICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVy
LnN3KE1JUFNSZWdpc3RlcnM6Onplcm8sIGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mub2Zmc2V0
KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1w
UmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN3KGltbVRlbXBSZWdpc3Rl
ciwgYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5vZmZzZXQpOworICAgICAgICAgICAgfQorICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICBzbGwgICAgIGFk
ZHJUZW1wLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlCisgICAgICAgICAgICAgICAgYWRk
dSAgICBhZGRyVGVtcCwgYWRkclRlbXAsIGFkZHJlc3MuYmFzZQorICAgICAgICAgICAgICAgIGx1
aSAgICAgaW1tVGVtcCwgKGFkZHJlc3Mub2Zmc2V0ICsgMHg4MDAwKSA+PiAxNgorICAgICAgICAg
ICAgICAgIGFkZHUgICAgYWRkclRlbXAsIGFkZHJUZW1wLCBpbW1UZW1wCisgICAgICAgICAgICAg
ICAgc3cgICAgICBzcmMsIChhZGRyZXNzLm9mZnNldCAmIDB4ZmZmZikoYXQpCisgICAgICAgICAg
ICAqLworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2xsKGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJl
c3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkdShh
ZGRyVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmJhc2UpOworICAgICAg
ICAgICAgbV9hc3NlbWJsZXIubHVpKGltbVRlbXBSZWdpc3RlciwgKGFkZHJlc3Mub2Zmc2V0ICsg
MHg4MDAwKSA+PiAxNik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGFkZHJUZW1wUmVn
aXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBp
ZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCisgICAgICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuc3coTUlQU1JlZ2lzdGVyczo6emVybywgYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5v
ZmZzZXQpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbW92ZShpbW0sIGlt
bVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3coaW1tVGVtcFJl
Z2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisKKwogICAgIHZvaWQgc3RvcmUzMihSZWdpc3RlcklEIHNyYywg
Y29uc3Qgdm9pZCogYWRkcmVzcykKICAgICB7CiAgICAgICAgIC8qCkBAIC0xMzM2LDYgKzE0NzEs
MTUgQEAgcHVibGljOgogICAgICAgICBtX2ZpeGVkV2lkdGggPSBmYWxzZTsKICAgICB9CiAKKyAg
ICB2b2lkIGp1bXAoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBtX2Zp
eGVkV2lkdGggPSB0cnVlOworICAgICAgICBsb2FkMzIoYWRkcmVzcy5tX3B0ciwgTUlQU1JlZ2lz
dGVyczo6dDkpOworICAgICAgICBtX2Fzc2VtYmxlci5qcihNSVBTUmVnaXN0ZXJzOjp0OSk7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICBtX2ZpeGVkV2lkdGggPSBmYWxzZTsK
KyAgICB9CisKICAgICB2b2lkIG1vdmVEb3VibGVUb0ludHMoRlBSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKICAgICB7CiAgICAgICAgIG1fYXNzZW1i
bGVyLnZtb3YoZGVzdDEsIGRlc3QyLCBzcmMpOwpAQCAtMTQwNCw2ICsxNTQ4LDUzIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIEp1bXAoKTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaEFkZDMy
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykg
fHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJv
KSk7CisgICAgICAgIGlmIChjb25kID09IE92ZXJmbG93KSB7CisgICAgICAgICAgICAvKgorICAg
ICAgICAgICAgICAgIG1vdmUgICAgZGF0YVRlbXAsIG9wMQorICAgICAgICAgICAgICAgIHhvciAg
ICAgY21wVGVtcCwgZGF0YVRlbXAsIG9wMgorICAgICAgICAgICAgICAgIGJsdHogICAgY21wVGVt
cCwgTm9fb3ZlcmZsb3cgICAgIyBkaWZmIHNpZ24gYml0IC0+IG5vIG92ZXJmbG93CisgICAgICAg
ICAgICAgICAgYWRkdSAgICBkZXN0LCBkYXRhVGVtcCwgb3AyCisgICAgICAgICAgICAgICAgeG9y
ICAgICBjbXBUZW1wLCBkZXN0LCBkYXRhVGVtcAorICAgICAgICAgICAgICAgIGJnZXogICAgY21w
VGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24gYmlnIC0+IG5vIG92ZXJmbG93CisgICAg
ICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgYiAgICAgICBPdmVyZmxvdworICAgICAg
ICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAor
ICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgTm9f
b3ZlcmZsb3c6CisgICAgICAgICAgICAqLworICAgICAgICAgICAgbW92ZShvcDEsIGRhdGFUZW1w
UmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0
ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6
KGNtcFRlbXBSZWdpc3RlciwgMTApOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkdShkZXN0
LCBkYXRhVGVtcFJlZ2lzdGVyLCBvcDIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5z
bihjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAg
bV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDcpOworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubm9wKCk7CisgICAgICAgICAgICByZXR1cm4ganVtcCgpOworICAgICAgICB9CisgICAg
ICAgIGlmIChjb25kID09IFNpZ25lZCkgeworICAgICAgICAgICAgYWRkMzIob3AxLCBvcDIsIGRl
c3QpOworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdhdGl2ZS4KKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIE1JUFNSZWdpc3RlcnM6
Onplcm8pOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBSZWdpc3Rl
ciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0g
WmVybykgeworICAgICAgICAgICAgYWRkMzIob3AxLCBvcDIsIGRlc3QpOworICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9
CisgICAgICAgIGlmIChjb25kID09IE5vblplcm8pIHsKKyAgICAgICAgICAgIGFkZDMyKG9wMSwg
b3AyLCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChkZXN0LCBNSVBT
UmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoMCk7CisgICAgICAg
IHJldHVybiBKdW1wKCk7CisgICAgfQorCiAgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25k
aXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CkBAIC0xNDE3LDYgKzE2MDgsMTExIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaEFkZDMyKGNvbmQsIGltbVRlbXBSZWdpc3Rl
ciwgZGVzdCk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24g
Y29uZCwgVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNzIGRlc3QpCisgICAgeworICAg
ICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNv
bmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOworICAgICAgICBpZiAoY29uZCA9PSBP
dmVyZmxvdykgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICBtb3ZlICAgIGRhdGFU
ZW1wLCBkZXN0CisgICAgICAgICAgICAgICAgeG9yaSAgICBjbXBUZW1wLCBkYXRhVGVtcCwgaW1t
CisgICAgICAgICAgICAgICAgYmx0eiAgICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIGRpZmYg
c2lnbiBiaXQgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBhZGRpdSAgIGRhdGFUZW1w
LCBkYXRhVGVtcCwgaW1tCisgICAgICAgICAgICAgICAgbW92ZSAgICBkZXN0LCBkYXRhVGVtcAor
ICAgICAgICAgICAgICAgIHhvcmkgICAgY21wVGVtcCwgZGF0YVRlbXAsIGltbQorICAgICAgICAg
ICAgICAgIGJnZXogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24gYmlnIC0+
IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgYiAgICAg
ICBPdmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAg
ICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5v
cAorICAgICAgICAgICAgTm9fb3ZlcmZsb3c6CisgICAgICAgICAgICAqLworICAgICAgICAgICAg
aWYgKGltbS5tX3ZhbHVlID49IC0zMjc2OCAmJiBpbW0ubV92YWx1ZSAgPD0gMzI3NjcgJiYgIW1f
Zml4ZWRXaWR0aCkgeworICAgICAgICAgICAgICAgIGxvYWQzMihkZXN0Lm1fcHRyLCBkYXRhVGVt
cFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JpKGNtcFRlbXBSZWdp
c3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1fdmFsdWUpOworICAgICAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxMCk7CisgICAgICAgICAgICAgICAgbV9h
c3NlbWJsZXIuYWRkaXUoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1f
dmFsdWUpOworICAgICAgICAgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdC5t
X3B0cik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yaShjbXBUZW1wUmVnaXN0ZXIs
IGRhdGFUZW1wUmVnaXN0ZXIsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJs
ZXIubm9wKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxvYWQzMihk
ZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtb3ZlKGltbSwg
aW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNt
cFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRlbXBSZWdpc3RlciwgMTApOworICAgICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGl1KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVn
aXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgc3RvcmUzMihkYXRhVGVt
cFJlZ2lzdGVyLCBkZXN0Lm1fcHRyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3Jp
KGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7CisgICAg
ICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICByZXR1cm4ganVtcCgpOworICAgICAgICB9CisgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVn
aXN0ZXIpOworICAgICAgICBsb2FkMzIoZGVzdC5tX3B0ciwgZGF0YVRlbXBSZWdpc3Rlcik7Cisg
ICAgICAgIGFkZDMyKGltbVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAg
IHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdC5tX3B0cik7CisgICAgICAgIGlmIChjb25k
ID09IFNpZ25lZCkgeworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdhdGl2ZS4K
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVn
aXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5v
dEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGNvbmQgPT0gWmVybykKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hFcXVh
bChkYXRhVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgaWYgKGNv
bmQgPT0gTm9uWmVybykKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChkYXRhVGVt
cFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgQVNTRVJUKDApOworICAg
ICAgICByZXR1cm4gSnVtcCgpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoTXVsMzIoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChj
b25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwor
ICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgeworICAgICAgICAgICAgLyoKKyAgICAgICAg
ICAgICAgICBtdWx0ICAgIHNyYywgZGVzdAorICAgICAgICAgICAgICAgIG1maGkgICAgZGF0YVRl
bXAKKyAgICAgICAgICAgICAgICBtZmxvICAgIGRlc3QKKyAgICAgICAgICAgICAgICBzcmEgICAg
IGFkZHJUZW1wLCBkZXN0LCAzMQorICAgICAgICAgICAgICAgIGJlcSAgICAgZGF0YVRlbXAsIGFk
ZHJUZW1wLCBOb19vdmVyZmxvdyAjIGFsbCBzaWduIGJpdHMgKGJpdCA2MyB0byBiaXQgMzEpIGFy
ZSB0aGUgc2FtZSAtPiBubyBvdmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAg
ICAgICAgIGIgICAgICAgT3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAg
ICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAg
ICAgICAgICAgICBub3AKKyAgICAgICAgICAgIE5vX292ZXJmbG93OgorICAgICAgICAgICAgKi8K
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm11bHQoc3JjMSwgc3JjMik7CisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5tZmhpKGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJs
ZXIubWZsbyhkZXN0KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNyYShhZGRyVGVtcFJlZ2lz
dGVyLCBkZXN0LCAzMSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZXEoZGF0YVRlbXBSZWdp
c3RlciwgYWRkclRlbXBSZWdpc3RlciwgNyk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3Ao
KTsKKyAgICAgICAgICAgIHJldHVybiBqdW1wKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNv
bmQgPT0gU2lnbmVkKSB7CisgICAgICAgICAgICBtdWwzMihzcmMxLCBzcmMyLCBkZXN0KTsKKyAg
ICAgICAgICAgIC8vIENoZWNrIGlmIGRlc3QgaXMgbmVnYXRpdmUuCisgICAgICAgICAgICBtX2Fz
c2VtYmxlci5zbHQoY21wVGVtcFJlZ2lzdGVyLCBkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsK
KyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNS
ZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IFplcm8pIHsK
KyAgICAgICAgICAgIG11bDMyKHNyYzEsIHNyYzIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJu
IGJyYW5jaEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAg
ICAgIGlmIChjb25kID09IE5vblplcm8pIHsKKyAgICAgICAgICAgIG11bDMyKHNyYzEsIHNyYzIs
IGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGRlc3QsIE1JUFNSZWdp
c3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIEFTU0VSVCgwKTsKKyAgICAgICAgcmV0
dXJuIEp1bXAoKTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09
IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKQEAgLTE0NjUsOCArMTc2MSw3IEBAIHB1Ymxp
YzoKICAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1t
MzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
bW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKLSAg
ICAgICAgcmV0dXJuIGJyYW5jaE11bDMyKGNvbmQsIGltbVRlbXBSZWdpc3RlciwgZGVzdCk7Cisg
ICAgICAgIHJldHVybiBicmFuY2hNdWwzMihjb25kLCBpbW1UZW1wUmVnaXN0ZXIsIHNyYywgZGVz
dCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRpb24gY29uZCwg
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTE1MjUsOCArMTgyMCw2MCBAQCBw
dWJsaWM6CiAgICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0
ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICBtb3ZlKHNyYywgZGVzdCk7
Ci0gICAgICAgIHJldHVybiBicmFuY2hTdWIzMihjb25kLCBpbW1UZW1wUmVnaXN0ZXIsIGRlc3Qp
OworICAgICAgICByZXR1cm4gYnJhbmNoU3ViMzIoY29uZCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIs
IGRlc3QpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQp
IHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKKyAgICAgICAgaWYgKGNv
bmQgPT0gT3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgbW92ZSAg
ICBkYXRhVGVtcCwgb3AxCisgICAgICAgICAgICAgICAgeG9yICAgICBjbXBUZW1wLCBkYXRhVGVt
cCwgb3AyCisgICAgICAgICAgICAgICAgYmdleiAgICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAj
IHNhbWUgc2lnbiBiaXQgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBzdWJ1ICAgIGRl
c3QsIGRhdGFUZW1wLCBvcDIKKyAgICAgICAgICAgICAgICB4b3IgICAgIGNtcFRlbXAsIGRlc3Qs
IGRhdGFUZW1wCisgICAgICAgICAgICAgICAgYmdleiAgICBjbXBUZW1wLCBOb19vdmVyZmxvdyAg
ICAjIHNhbWUgc2lnbiBiaXQgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBub3AKKyAg
ICAgICAgICAgICAgICBiICAgICAgIE92ZXJmbG93CisgICAgICAgICAgICAgICAgbm9wCisgICAg
ICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9w
CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICBOb19vdmVyZmxvdzoKKyAgICAgICAg
ICAgICovCisgICAgICAgICAgICBtb3ZlKG9wMSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rl
ciwgb3AyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCAx
MCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJ1KGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIs
IG9wMik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3Rlciwg
ZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNt
cFRlbXBSZWdpc3RlciwgNyk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAg
ICAgICAgIHJldHVybiBqdW1wKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gU2ln
bmVkKSB7CisgICAgICAgICAgICBzdWIzMihvcDEsIG9wMiwgZGVzdCk7CisgICAgICAgICAgICAv
LyBDaGVjayBpZiBkZXN0IGlzIG5lZ2F0aXZlLgorICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0
KGNtcFRlbXBSZWdpc3RlciwgZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAg
ICByZXR1cm4gYnJhbmNoTm90RXF1YWwoY21wVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6
ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBaZXJvKSB7CisgICAgICAgICAg
ICBzdWIzMihvcDEsIG9wMiwgZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoRXF1YWwo
ZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQg
PT0gTm9uWmVybykgeworICAgICAgICAgICAgc3ViMzIob3AxLCBvcDIsIGRlc3QpOworICAgICAg
ICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOwor
ICAgICAgICB9CisgICAgICAgIEFTU0VSVCgwKTsKKyAgICAgICAgcmV0dXJuIEp1bXAoKTsKKyAg
ICB9CisKKyAgICBKdW1wIGJyYW5jaE5lZzMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIHNyY0Rlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5saShkYXRhVGVtcFJlZ2lz
dGVyLCAtMSk7CisgICAgICAgIHJldHVybiBicmFuY2hNdWwzMihjb25kLCBkYXRhVGVtcFJlZ2lz
dGVyLCBzcmNEZXN0KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaE9yMzIoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCkBAIC0xNTc4LDcgKzE5
MjUsOCBAQCBwdWJsaWM6CiAKICAgICBDYWxsIGNhbGwoUmVnaXN0ZXJJRCB0YXJnZXQpCiAgICAg
ewotICAgICAgICBtX2Fzc2VtYmxlci5qYWxyKHRhcmdldCk7CisgICAgICAgIG1vdmUodGFyZ2V0
LCBNSVBTUmVnaXN0ZXJzOjp0OSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmphbHIoTUlQU1JlZ2lz
dGVyczo6dDkpOwogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICAgICAgcmV0dXJuIENh
bGwobV9hc3NlbWJsZXIubGFiZWwoKSwgQ2FsbDo6Tm9uZSk7CiAgICAgfQpAQCAtMTgyMiw3ICsy
MTcwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGx1aSAgICAgaW1tVGVtcCwgKGFkZHJl
c3Mub2Zmc2V0ICsgMHg4MDAwKSA+PiAxNgogICAgICAgICAgICAgICAgIGFkZHUgICAgYWRkclRl
bXAsIGFkZHJUZW1wLCBpbW1UZW1wCiAgICAgICAgICAgICAgICAgbHdjMSAgICBkZXN0LCAoYWRk
cmVzcy5vZmZzZXQgJiAweGZmZmYpKGF0KQotICAgICAgICAgICAgICAgIGx3YzEgICAgZGVzdCs0
LCAoYWRkcmVzcy5vZmZzZXQgJiAweGZmZmYgKyA0KShhdCkKKyAgICAgICAgICAgICAgICBsd2Mx
ICAgIGRlc3QrMSwgKGFkZHJlc3Mub2Zmc2V0ICYgMHhmZmZmICsgNCkoYXQpCiAgICAgICAgICAg
ICAqLwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2xsKGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJl
c3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkdShh
ZGRyVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmJhc2UpOwpAQCAtMjAw
OSw2ICsyMzU3LDE5IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAorICAgIHZvaWQgbW92ZURv
dWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IGlmIChzcmMgIT0gZGVzdCB8fCBtX2ZpeGVkV2lkdGgpCisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5tb3ZkKGRlc3QsIHNyYyk7CisgICAgfQorCisgICAgdm9pZCBzd2FwRG91YmxlKEZQUmVnaXN0
ZXJJRCBmcjEsIEZQUmVnaXN0ZXJJRCBmcjIpCisgICAgeworICAgICAgICBtb3ZlRG91YmxlKGZy
MSwgZnBUZW1wUmVnaXN0ZXIpOworICAgICAgICBtb3ZlRG91YmxlKGZyMiwgZnIxKTsKKyAgICAg
ICAgbW92ZURvdWJsZShmcFRlbXBSZWdpc3RlciwgZnIyKTsKKyAgICB9CisKICAgICB2b2lkIGFk
ZERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLmFkZGQoZGVzdCwgZGVzdCwgc3JjKTsKQEAgLTIwMzYsNiArMjM5Nywx
MSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YmQoZGVzdCwgZGVzdCwgc3JjKTsK
ICAgICB9CiAKKyAgICB2b2lkIHN1YkRvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVy
SUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1
YmQoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgc3ViRG91YmxlKEFkZHJlc3Mg
c3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGxvYWREb3VibGUoc3JjLCBm
cFRlbXBSZWdpc3Rlcik7CkBAIC0yMDUzLDExICsyNDE5LDMyIEBAIHB1YmxpYzoKICAgICAgICAg
bV9hc3NlbWJsZXIubXVsZChkZXN0LCBkZXN0LCBmcFRlbXBSZWdpc3Rlcik7CiAgICAgfQogCisg
ICAgdm9pZCBtdWxEb3VibGUoRlBSZWdpc3RlcklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tdWxkKGRlc3QsIG9w
MSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIGRpdkRvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBG
UFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmRpdmQoZGVzdCwg
ZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIGRpdkRvdWJsZShGUFJlZ2lzdGVySUQgb3Ax
LCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1f
YXNzZW1ibGVyLmRpdmQoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKworICAgIHZvaWQgZGl2RG91
YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxvYWRE
b3VibGUoc3JjLCBmcFRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmRpdmQoZGVz
dCwgZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOworICAgIH0KKworICAgIHZvaWQgbmVnYXRlRG91Ymxl
KEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIubmVnZChkZXN0LCBzcmMpOworICAgIH0KKwogICAgIHZvaWQgY29udmVydEludDMy
VG9Eb3VibGUoUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAg
ICAgbV9hc3NlbWJsZXIubXRjMShzcmMsIGZwVGVtcFJlZ2lzdGVyKTsKQEAgLTIxMTcsNiArMjUw
NCw4IEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoRXF1YWwoUmVnaXN0ZXJJRCBycywgUmVn
aXN0ZXJJRCBydCkKICAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICBt
X2Fzc2VtYmxlci5ub3AoKTsKICAgICAgICAgbV9hc3NlbWJsZXIuYXBwZW5kSnVtcCgpOwogICAg
ICAgICBtX2Fzc2VtYmxlci5iZXEocnMsIHJ0LCAwKTsKICAgICAgICAgbV9hc3NlbWJsZXIubm9w
KCk7CkBAIC0yMTI2LDYgKzI1MTUsOCBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaE5vdEVx
dWFsKFJlZ2lzdGVySUQgcnMsIFJlZ2lzdGVySUQgcnQpCiAgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5ub3AoKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgICAgIG1fYXNzZW1i
bGVyLmFwcGVuZEp1bXAoKTsKICAgICAgICAgbV9hc3NlbWJsZXIuYm5lKHJzLCBydCwgMCk7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwpAQCAtMjE5MiwxMSArMjU4MywzMyBAQCBwdWJsaWM6
CiAgICAgLy8gSWYgdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50YWJsZSBhcyBhIDMyIGJpdCB2
YWx1ZSwgYnJhbmNoLgogICAgIC8vIE1heSBhbHNvIGJyYW5jaCBmb3Igc29tZSB2YWx1ZXMgdGhh
dCBhcmUgcmVwcmVzZW50YWJsZSBpbiAzMiBiaXRzCiAgICAgLy8gKHNwZWNpZmljYWxseSwgaW4g
dGhpcyBjYXNlLCBJTlRfTUFYIDB4N2ZmZmZmZmYpLgotICAgIEp1bXAgYnJhbmNoVHJ1bmNhdGVE
b3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICBlbnVt
IEJyYW5jaFRydW5jYXRlVHlwZSB7IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQsIEJyYW5jaElmVHJ1
bmNhdGVTdWNjZXNzZnVsIH07CisgICAgSnVtcCBicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIo
RlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBCcmFuY2hUcnVuY2F0ZVR5cGUgYnJh
bmNoVHlwZSA9IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci50cnVuY3dkKGZwVGVtcFJlZ2lzdGVyLCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci5t
ZmMxKGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGJyYW5j
aFR5cGUgPT0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCA/IEVxdWFsIDogTm90RXF1YWwsIGRlc3Qs
IFRydXN0ZWRJbW0zMigweDdmZmZmZmZmKSk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hUcnVu
Y2F0ZURvdWJsZVRvVWludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgQnJh
bmNoVHJ1bmNhdGVUeXBlIGJyYW5jaFR5cGUgPSBCcmFuY2hJZlRydW5jYXRlRmFpbGVkKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIudHJ1bmN3ZChmcFRlbXBSZWdpc3Rlciwgc3JjKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubWZjMShkZXN0LCBmcFRlbXBSZWdpc3Rlcik7CisgICAgICAgIHJl
dHVybiBicmFuY2gzMihicmFuY2hUeXBlID09IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQgPyBFcXVh
bCA6IE5vdEVxdWFsLCBkZXN0LCBUcnVzdGVkSW1tMzIoMCkpOworICAgIH0KKworICAgIC8vIFJl
c3VsdCBpcyB1bmRlZmluZWQgaWYgdGhlIHZhbHVlIGlzIG91dHNpZGUgb2YgdGhlIGludGVnZXIg
cmFuZ2UuCisgICAgdm9pZCB0cnVuY2F0ZURvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudHJ1bmN3ZChmcFRl
bXBSZWdpc3Rlciwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubWZjMShkZXN0LCBmcFRlbXBS
ZWdpc3Rlcik7CisgICAgfQorCisgICAgLy8gUmVzdWx0IGlzIHVuZGVmaW5lZCBpZiBzcmMgPiAy
XjMxCisgICAgdm9pZCB0cnVuY2F0ZURvdWJsZVRvVWludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnRydW5jd2QoZnBUZW1w
UmVnaXN0ZXIsIHNyYyk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1mYzEoZGVzdCwgZnBUZW1wUmVn
aXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoRXF1YWwsIGRlc3QsIFRydXN0ZWRJbW0z
MigweDdmZmZmZmZmKSk7CiAgICAgfQogCiAgICAgLy8gQ29udmVydCAnc3JjJyB0byBhbiBpbnRl
Z2VyLCBhbmQgcGxhY2VzIHRoZSByZXN1bHRpbmcgJ2Rlc3QnLgpAQCAtMjIxOCwyOCArMjYzMSw0
MyBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaERvdWJsZU5vblplcm8oRlBSZWdpc3RlcklE
IHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpCiAgICAgewotI2lmIFdURl9NSVBTX0lTQV9SRVYo
MikgJiYgV1RGX01JUFNfRlA2NAotICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdpc3Rl
cnM6Onplcm8sIHNjcmF0Y2gpOwotICAgICAgICBtX2Fzc2VtYmxlci5tdGhjMShNSVBTUmVnaXN0
ZXJzOjp6ZXJvLCBzY3JhdGNoKTsKLSNlbHNlCi0gICAgICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQ
U1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQ
U1JlZ2lzdGVyczo6emVybywgRlBSZWdpc3RlcklEKHNjcmF0Y2ggKyAxKSk7Ci0jZW5kaWYKKyAg
ICAgICAgbV9hc3NlbWJsZXIudm1vdihzY3JhdGNoLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBNSVBT
UmVnaXN0ZXJzOjp6ZXJvKTsKICAgICAgICAgcmV0dXJuIGJyYW5jaERvdWJsZShEb3VibGVOb3RF
cXVhbCwgcmVnLCBzY3JhdGNoKTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaERvdWJsZVplcm9P
ck5hTihGUFJlZ2lzdGVySUQgcmVnLCBGUFJlZ2lzdGVySUQgc2NyYXRjaCkKICAgICB7Ci0jaWYg
V1RGX01JUFNfSVNBX1JFVigyKSAmJiBXVEZfTUlQU19GUDY0Ci0gICAgICAgIG1fYXNzZW1ibGVy
Lm10YzEoTUlQU1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7Ci0gICAgICAgIG1fYXNzZW1ibGVy
Lm10aGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0Y2gpOwotI2Vsc2UKLSAgICAgICAgbV9h
c3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzY3JhdGNoKTsKLSAgICAgICAgbV9h
c3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBGUFJlZ2lzdGVySUQoc2NyYXRjaCAr
IDEpKTsKLSNlbmRpZgorICAgICAgICBtX2Fzc2VtYmxlci52bW92KHNjcmF0Y2gsIE1JUFNSZWdp
c3RlcnM6Onplcm8sIE1JUFNSZWdpc3RlcnM6Onplcm8pOwogICAgICAgICByZXR1cm4gYnJhbmNo
RG91YmxlKERvdWJsZUVxdWFsT3JVbm9yZGVyZWQsIHJlZywgc2NyYXRjaCk7CiAgICAgfQogCisg
ICAgLy8gSW52ZXJ0IGEgcmVsYXRpb25hbCBjb25kaXRpb24sIGUuZy4gPT0gYmVjb21lcyAhPSwg
PCBiZWNvbWVzID49LCBldGMuCisgICAgc3RhdGljIFJlbGF0aW9uYWxDb25kaXRpb24gaW52ZXJ0
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKKyAgICB7CisgICAgICAgIFJlbGF0aW9uYWxDb25k
aXRpb24gcjsKKyAgICAgICAgaWYgKGNvbmQgPT0gRXF1YWwpCisgICAgICAgICAgICByID0gTm90
RXF1YWw7CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gTm90RXF1YWwpCisgICAgICAgICAgICBy
ID0gRXF1YWw7CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gQWJvdmUpCisgICAgICAgICAgICBy
ID0gQmVsb3dPckVxdWFsOworICAgICAgICBlbHNlIGlmIChjb25kID09IEFib3ZlT3JFcXVhbCkK
KyAgICAgICAgICAgIHIgPSBCZWxvdzsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBCZWxvdykK
KyAgICAgICAgICAgIHIgPSBBYm92ZU9yRXF1YWw7CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0g
QmVsb3dPckVxdWFsKQorICAgICAgICAgICAgciA9IEFib3ZlOworICAgICAgICBlbHNlIGlmIChj
b25kID09IEdyZWF0ZXJUaGFuKQorICAgICAgICAgICAgciA9IExlc3NUaGFuT3JFcXVhbDsKKyAg
ICAgICAgZWxzZSBpZiAoY29uZCA9PSBHcmVhdGVyVGhhbk9yRXF1YWwpCisgICAgICAgICAgICBy
ID0gTGVzc1RoYW47CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gTGVzc1RoYW4pCisgICAgICAg
ICAgICByID0gR3JlYXRlclRoYW5PckVxdWFsOworICAgICAgICBlbHNlIGlmIChjb25kID09IExl
c3NUaGFuT3JFcXVhbCkKKyAgICAgICAgICAgIHIgPSBHcmVhdGVyVGhhbjsKKyAgICAgICAgcmV0
dXJuIHI7CisgICAgfQorCiAgICAgdm9pZCBub3AoKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJs
ZXIubm9wKCk7CkBAIC0yMjUyLDEyICsyNjgwLDEyIEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2
b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBD
b2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKICAgICB7Ci0gICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICBNSVBTQXNzZW1ibGVyOjpyZXBsYWNlV2l0aEp1bXAoaW5zdHJ1
Y3Rpb25TdGFydC5kYXRhTG9jYXRpb24oKSwgZGVzdGluYXRpb24uZGF0YUxvY2F0aW9uKCkpOwog
ICAgIH0KICAgICAKICAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUo
KQogICAgIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIE1JUFNBc3Nl
bWJsZXI6Om1heEp1bXBSZXBsYWNlbWVudFNpemUoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVs
cGVycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaApp
bmRleCBmYTBmNWUwLi41NzNkOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQXNzZW1ibHlIZWxwZXJzLmgKQEAgLTkzLDYgKzkzLDIzIEBAIHB1YmxpYzoKICAgICB9CiAj
ZW5kaWYKIAorI2lmIENQVShNSVBTKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwcmVzZXJ2ZVJl
dHVybkFkZHJlc3NBZnRlckNhbGwoUmVnaXN0ZXJJRCByZWcpCisgICAgeworICAgICAgICBtb3Zl
KHJldHVybkFkZHJlc3NSZWdpc3RlciwgcmVnKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oUmVnaXN0ZXJJRCByZWcpCisg
ICAgeworICAgICAgICBtb3ZlKHJlZywgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKKyAgICB9CisK
KyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4o
QWRkcmVzcyBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgbG9hZFB0cihhZGRyZXNzLCByZXR1cm5B
ZGRyZXNzUmVnaXN0ZXIpOworICAgIH0KKyNlbmRpZgorCiAgICAgdm9pZCBlbWl0R2V0RnJvbUNh
bGxGcmFtZUhlYWRlclB0cihKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSwgR1BS
UmVnIHRvKQogICAgIHsKICAgICAgICAgbG9hZFB0cihBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCBlbnRyeSAqIHNpemVvZihSZWdpc3RlcikpLCB0byk7CkBAIC0xOTMsNyArMjEw
LDcgQEAgcHVibGljOgogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+
YWN0aXZlTGVuZ3RoUHRyKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgIHN0b3JlUHRyKFRy
dXN0ZWRJbW1QdHIoc2NyYXRjaFNpemUpLCBHUFJJbmZvOjpyZWdUMCk7CiAKLSNpZiBDUFUoWDg2
XzY0KSB8fCBDUFUoQVJNKQorI2lmIENQVShYODZfNjQpIHx8IENQVShBUk0pIHx8IENQVShNSVBT
KQogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYnVmZmVyKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIyKTsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFyZ3VtZW50KSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIxKTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxs
SGVscGVycy5oCmluZGV4IDhhZGRlMDUuLjA3MGVhOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaApAQCAtNTc2LDYgKzU3NiwzOSBAQCBwdWJsaWM6CiAg
ICAgICAgIHBva2UoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgfQogI2VuZGlmIC8vIENQVShB
Uk1fSEFSREZQKQorI2VsaWYgQ1BVKE1JUFMpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzKEZQUlJlZyBhcmcxKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmcxLCBG
UFJJbmZvOjphcmd1bWVudEZQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJnMSwgRlBSUmVnIGFyZzIpCisgICAgeworICAgICAgICBp
ZiAoYXJnMiAhPSBGUFJJbmZvOjphcmd1bWVudEZQUjApIHsKKyAgICAgICAgICAgIG1vdmVEb3Vi
bGUoYXJnMSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICAgICAgICAgIG1vdmVEb3VibGUo
YXJnMiwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKKyAgICAgICAgfSBlbHNlIGlmIChhcmcxICE9
IEZQUkluZm86OmFyZ3VtZW50RlBSMSkgeworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBG
UFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJ
bmZvOjphcmd1bWVudEZQUjApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gU3dh
cCBhcmcxLCBhcmcyLgorICAgICAgICAgICAgc3dhcERvdWJsZShGUFJJbmZvOjphcmd1bWVudEZQ
UjAsIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEZQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJn
dW1lbnRHUFIyLCBHUFJJbmZvOjphcmd1bWVudEdQUjMsIGFyZzEpOworICAgICAgICBtb3ZlKEdQ
UkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAg
ICBwb2tlKGFyZzIsIDQpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBGUFJSZWcgYXJn
MykKKyAgICB7CisgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKKyAgICAg
ICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIw
KTsKKyAgICAgICAgcG9rZShhcmczLCA0KTsKKyAgICB9CiAjZWxzZQogI2Vycm9yICJERkcgSklU
IG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4iCiAjZW5kaWYKQEAgLTgwMywxMTkgKzgz
NiwxMzAgQEAgcHVibGljOgogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHN1aXRhYmxlIGZvciBh
bnkgY2FsbGluZyBjb252ZW50aW9uIHRoYXQgcHJvdmlkZXMgZm9yCiAgICAgLy8gZXhhY3RseSA0
IGFyZ3VtZW50IHJlZ2lzdGVycywgZS5nLiBBUk12Ny4KICNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRf
UkVHSVNURVJTID09IDQKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFyZ3VtZW50PgorICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBwb2tlQXJndW1lbnQoQXJndW1lbnQgYXJnLCBpbnQgaW5kZXggPSAw
KQorICAgIHsKKyNpZiBDUFUoTUlQUykKKyAgICAgICAgcG9rZShhcmcsIGluZGV4ICsgNCk7Cisj
ZWxzZQorICAgICAgICBwb2tlKGFyZywgaW5kZXgpOworI2VuZGlmCisgICAgfQorCiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwg
R1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKICAgICB7Ci0gICAgICAgIHBv
a2UoYXJnNCk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQpCiAgICAgewotICAgICAg
ICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcx
LCBUcnVzdGVkSW1tUHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCkKICAg
ICB7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc0KTsKICAg
ICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAg
IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
R1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJl
ZyBhcmc0LCBHUFJSZWcgYXJnNSkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNSwgMSk7Ci0gICAg
ICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc1LCAxKTsKKyAgICAgICAg
cG9rZUFyZ3VtZW50KGFyZzQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJ
bW0zMiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNCk7
CisgICAgICAgIHBva2VBcmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0
ZWRJbW0zMiBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewotICAgICAgICBw
b2tlKGFyZzQpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkKICAgICB7Ci0gICAg
ICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQog
ICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCAxKTsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAg
ICAgcG9rZUFyZ3VtZW50KGFyZzUsIDEpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNCk7CiAg
ICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAg
ICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0
KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgcG9rZUFyZ3VtZW50KGFyZzQp
OwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7
CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVk
SW1tUHRyIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlQXJn
dW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZElt
bTMyIGFyZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNCk7
CisgICAgICAgIHBva2VBcmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUg
dm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJl
ZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewotICAgICAgICBw
b2tlKGFyZzQpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkK
ICAgICB7Ci0gICAgICAgIHBva2UoYXJnNSwgMSk7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAg
ICAgIHBva2VBcmd1bWVudChhcmc1LCAxKTsKKyAgICAgICAgcG9rZUFyZ3VtZW50KGFyZzQpOwog
ICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAg
ICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJn
NCwgVHJ1c3RlZEltbTMyIGFyZzUpCiAgICAgewotICAgICAgICBwb2tlKGFyZzUsIDEpOwotICAg
ICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNSwgMSk7CisgICAgICAg
IHBva2VBcmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBH
UFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIFRydXN0ZWRJbW1QdHIgYXJnNSkKICAgICB7Ci0gICAg
ICAgIHBva2UoYXJnNSwgMSk7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2VBcmd1
bWVudChhcmc1LCAxKTsKKyAgICAgICAgcG9rZUFyZ3VtZW50KGFyZzQpOwogICAgICAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
MzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCwgVHJ1
c3RlZEltbTMyIGFyZzUpCiAgICAgewotICAgICAgICBwb2tlKGFyZzUsIDEpOwotICAgICAgICBw
b2tlKGFyZzQpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNSwgMSk7CisgICAgICAgIHBva2VB
cmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBU
cnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQogICAgIHsKLSAgICAg
ICAgcG9rZShhcmc1LCAxKTsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgcG9rZUFyZ3Vt
ZW50KGFyZzUsIDEpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0z
MiBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJn
NSkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNSwgMSk7Ci0gICAgICAgIHBva2UoYXJnNCk7Cisg
ICAgICAgIHBva2VBcmd1bWVudChhcmc1LCAxKTsKKyAgICAgICAgcG9rZUFyZ3VtZW50KGFyZzQp
OwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUklu
Zm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oCmluZGV4IGQ2YTAz
OGEuLjZmOTY4ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBS
SW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oCkBAIC0x
NjQsNiArMTY0LDc0IEBAIHB1YmxpYzoKIAogI2VuZGlmCiAKKyNpZiBDUFUoTUlQUykKKworY2xh
c3MgRlBSSW5mbyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBGUFJSZWcgUmVnaXN0ZXJUeXBlOwor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDY7CisKKyAgICAv
LyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgorICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMCA9
IE1JUFNSZWdpc3RlcnM6OmYwOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMSA9IE1J
UFNSZWdpc3RlcnM6OmY0OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMiA9IE1JUFNS
ZWdpc3RlcnM6OmY2OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMyA9IE1JUFNSZWdp
c3RlcnM6OmY4OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNCA9IE1JUFNSZWdpc3Rl
cnM6OmYxMDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDUgPSBNSVBTUmVnaXN0ZXJz
OjpmMTg7CisKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIHJldHVyblZhbHVlRlBSID0gTUlQU1Jl
Z2lzdGVyczo6ZjA7CisKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMCA9IE1J
UFNSZWdpc3RlcnM6OmYxMjsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMSA9
IE1JUFNSZWdpc3RlcnM6OmYxNDsKKworICAgIHN0YXRpYyBGUFJSZWcgdG9SZWdpc3Rlcih1bnNp
Z25lZCBpbmRleCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgcmVnaXN0ZXJG
b3JJbmRleFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7CisgICAgICAgICAgICBmcFJlZ1QwLCBmcFJl
Z1QxLCBmcFJlZ1QyLCBmcFJlZ1QzLCBmcFJlZ1Q0LCBmcFJlZ1Q1IH07CisKKyAgICAgICAgQVNT
RVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAgICByZXR1cm4gcmVnaXN0ZXJG
b3JJbmRleFtpbmRleF07CisgICAgfQorCisgICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgoRlBS
UmVnIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7Cisg
ICAgICAgIEFTU0VSVChyZWcgPCAyMCk7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBp
bmRleEZvclJlZ2lzdGVyWzIwXSA9IHsKKyAgICAgICAgICAgIDAsIEludmFsaWRJbmRleCwgSW52
YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsCisgICAgICAgICAgICAxLCBJbnZhbGlkSW5kZXgsIDIs
IEludmFsaWRJbmRleCwKKyAgICAgICAgICAgIDMsIEludmFsaWRJbmRleCwgNCwgSW52YWxpZElu
ZGV4LAorICAgICAgICAgICAgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRl
eCwgSW52YWxpZEluZGV4LAorICAgICAgICAgICAgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgs
IDUsIEludmFsaWRJbmRleCwKKyAgICAgICAgfTsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0g
aW5kZXhGb3JSZWdpc3RlcltyZWddOworICAgICAgICBBU1NFUlQocmVzdWx0ICE9IEludmFsaWRJ
bmRleCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0
IGNoYXIqIGRlYnVnTmFtZShGUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAh
PSBJbnZhbGlkRlBSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDMyKTsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclszMl0gPSB7CisgICAgICAgICAgICAiZjAi
LCAiZjEiLCAiZjIiLCAiZjMiLAorICAgICAgICAgICAgImY0IiwgImY1IiwgImY2IiwgImY3IiwK
KyAgICAgICAgICAgICJmOCIsICJmOSIsICJmMTAiLCAiZjExIiwKKyAgICAgICAgICAgICJmMTIi
LCAiZjEzIiwgImYxNCIsICJmMTUiCisgICAgICAgICAgICAiZjE2IiwgImYxNyIsICJmMTgiLCAi
ZjE5IgorICAgICAgICAgICAgImYyMCIsICJmMjEiLCAiZjIyIiwgImYyMyIKKyAgICAgICAgICAg
ICJmMjQiLCAiZjI1IiwgImYyNiIsICJmMjciCisgICAgICAgICAgICAiZjI4IiwgImYyOSIsICJm
MzAiLCAiZjMxIgorICAgICAgICB9OworICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3Jl
Z107CisgICAgfQorcHJpdmF0ZToKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZhbGlk
SW5kZXggPSAweGZmZmZmZmZmOworfTsKKworI2VuZGlmCisKIHR5cGVkZWYgUmVnaXN0ZXJCYW5r
PEZQUkluZm8+OjppdGVyYXRvciBmcHJfaXRlcmF0b3I7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpERkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgKaW5kZXggM2QwNzU1Ni4u
YWE2MzRjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZv
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgKQEAgLTQ2MSw2
ICs0NjEsNzMgQEAgcHJpdmF0ZToKIAogI2VuZGlmCiAKKyNpZiBDUFUoTUlQUykKKyNkZWZpbmUg
TlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA0CisKK2NsYXNzIEdQUkluZm8geworcHVibGlj
OgorICAgIHR5cGVkZWYgR1BSUmVnIFJlZ2lzdGVyVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA2OworCisgICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVy
cy4KKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QwID0gTUlQU1JlZ2lzdGVyczo6djA7Cisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMSA9IE1JUFNSZWdpc3RlcnM6OnYxOworICAgIHN0
YXRpYyBjb25zdCBHUFJSZWcgcmVnVDIgPSBNSVBTUmVnaXN0ZXJzOjp0NDsKKyAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIHJlZ1QzID0gTUlQU1JlZ2lzdGVyczo6dDU7CisgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyByZWdUNCA9IE1JUFNSZWdpc3RlcnM6OnQ2OworICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgcmVnVDUgPSBNSVBTUmVnaXN0ZXJzOjp0NzsKKyAgICAvLyBUaGVzZSByZWdpc3RlcnMgbWF0
Y2ggdGhlIGJhc2VsaW5lIEpJVC4KKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3Vs
dFJlZ2lzdGVyID0gcmVnVDA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRS
ZWdpc3RlcjIgPSByZWdUMTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhbGxGcmFtZVJlZ2lz
dGVyID0gTUlQU1JlZ2lzdGVyczo6czA7CisgICAgLy8gVGhlc2UgY29uc3RhbnRzIHByb3ZpZGUg
dGhlIG5hbWVzIGZvciB0aGUgZ2VuZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYgcmV0dXJuIHZhbHVl
IHJlZ2lzdGVycy4KKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMCA9IE1JUFNS
ZWdpc3RlcnM6OmEwOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIxID0gTUlQ
U1JlZ2lzdGVyczo6YTE7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjIgPSBN
SVBTUmVnaXN0ZXJzOjphMjsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMyA9
IE1JUFNSZWdpc3RlcnM6OmEzOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9
IHJlZ1QyOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IHJlZ1QzOworICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMiA9IHJlZ1Q0OworICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIgPSByZWdUMDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IHJldHVyblZhbHVlR1BSMiA9IHJlZ1QxOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJl
c2VydmVkTm9uUmV0dXJuR1BSID0gcmVnVDU7CisKKyAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0
ZXIodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJP
ZlJlZ2lzdGVycyk7CisgICAgICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRl
eFtudW1iZXJPZlJlZ2lzdGVyc10gPSB7IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdU
NCwgcmVnVDUgfTsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOworICAg
IH0KKworICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEdQUlJlZyByZWcpCisgICAgeworICAg
ICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwg
MTYpOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3RlclsxNl0g
PSB7IEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCAwLCAxLCBJbnZhbGlkSW5kZXgsIEludmFs
aWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxp
ZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgMiwgMywgNCwgNSB9OworICAgICAg
ICB1bnNpZ25lZCByZXN1bHQgPSBpbmRleEZvclJlZ2lzdGVyW3JlZ107CisgICAgICAgIEFTU0VS
VChyZXN1bHQgIT0gSW52YWxpZEluZGV4KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcpCisgICAgewor
ICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQocmVn
IDwgMTYpOworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzE2XSA9
IHsKKyAgICAgICAgICAgICJ6ZXJvIiwgImF0IiwgInYwIiwgInYxIiwKKyAgICAgICAgICAgICJh
MCIsICJhMSIsICJhMiIsICJhMyIsCisgICAgICAgICAgICAidDAiLCAidDEiLCAidDIiLCAidDMi
LAorICAgICAgICAgICAgInQ0IiwgInQ1IiwgInQ2IiwgInQ3IgorICAgICAgICB9OworICAgICAg
ICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107CisgICAgfQorcHJpdmF0ZToKKworICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOworfTsKKworI2Vu
ZGlmCisKIHR5cGVkZWYgUmVnaXN0ZXJCYW5rPEdQUkluZm8+OjppdGVyYXRvciBncHJfaXRlcmF0
b3I7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA2M2UzNTIwLi5iMmVjYmFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xMjc0LDcg
KzEyNzQsNyBAQCBwdWJsaWM6CiAKIC8vIEVuY29kZWRKU1ZhbHVlIGluIEpTVkFMVUUzMl82NCBp
cyBhIDY0LWJpdCBpbnRlZ2VyLiBXaGVuIGJlaW5nIGNvbXBpbGVkIGluIEFSTSBFQUJJLCBpdCBt
dXN0IGJlIGFsaWduZWQgZXZlbi1udW1iZXJlZCByZWdpc3RlciAocjAsIHIyIG9yIFtzcF0pLgog
Ly8gVG8gYXZvaWQgYXNzZW1ibGllcyBmcm9tIHVzaW5nIHdyb25nIHJlZ2lzdGVycywgbGV0J3Mg
b2NjdXB5IHIxIG9yIHIzIHdpdGggYSBkdW1teSBhcmd1bWVudCB3aGVuIG5lY2Vzc2FyeS4KLSNp
ZiBDT01QSUxFUl9TVVBQT1JUUyhFQUJJKSAmJiBDUFUoQVJNKQorI2lmIChDT01QSUxFUl9TVVBQ
T1JUUyhFQUJJKSAmJiBDUFUoQVJNKSkgfHwgQ1BVKE1JUFMpCiAjZGVmaW5lIEVBQklfMzJCSVRf
RFVNTVlfQVJHICAgICAgVHJ1c3RlZEltbTMyKDApLAogI2Vsc2UKICNkZWZpbmUgRUFCSV8zMkJJ
VF9EVU1NWV9BUkcKQEAgLTE3MTksNyArMTcxOSw3IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYK
ICAgICAKLSNpZiAhZGVmaW5lZChOREVCVUcpICYmICFDUFUoQVJNKQorI2lmICFkZWZpbmVkKE5E
RUJVRykgJiYgIUNQVShBUk0pICYmICFDUFUoTUlQUykKICAgICB2b2lkIHByZXBhcmVGb3JFeHRl
cm5hbENhbGwoKQogICAgIHsKICAgICAgICAgLy8gV2UncmUgYWJvdXQgdG8gY2FsbCBvdXQgdG8g
YSAibmF0aXZlIiBoZWxwZXIgZnVuY3Rpb24uIFRoZSBoZWxwZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAppbmRleCAyZjRiNGUzLi5hMjhmMzUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCkBAIC0xMjUsNiArMTI1LDEw
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWNo
ZWRSZXN1bHRSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OnYwOwogICAgICAgICBzdGF0aWMgY29u
c3QgUmVnaXN0ZXJJRCBmaXJzdEFyZ3VtZW50UmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjphMDsK
ICAgICAgICAgCisjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgICAgICBzdGF0aWMgY29u
c3QgUmVnaXN0ZXJJRCBidWNrZXRDb3VudGVyUmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjpzMzsK
KyNlbmRpZgorCiAgICAgICAgIC8vIHJlZ1QwIG11c3QgYmUgdjAgZm9yIHJldHVybmluZyBhIDMy
LWJpdCB2YWx1ZS4KICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDAgPSBNSVBT
UmVnaXN0ZXJzOjp2MDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsRGF0YS5oCmluZGV4IDNiMDJkYzkuLjdhNjgwODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCkBAIC0xMzQsMTQgKzEzNCwxOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAot
ICAgICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVfdCBidWZmZXJTaXplKSB7
IHJldHVybiBzaXplb2Yoc2l6ZV90KSArIGJ1ZmZlclNpemU7IH0KKyAgICAgICAgc3RhdGljIHNp
emVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkgeyByZXR1cm4gc2l6ZW9mKFNj
cmF0Y2hCdWZmZXIpICsgYnVmZmVyU2l6ZTsgfQogICAgICAgICB2b2lkIHNldEFjdGl2ZUxlbmd0
aChzaXplX3QgYWN0aXZlTGVuZ3RoKSB7IG1fYWN0aXZlTGVuZ3RoID0gYWN0aXZlTGVuZ3RoOyB9
CiAgICAgICAgIHNpemVfdCBhY3RpdmVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZUxl
bmd0aDsgfTsKICAgICAgICAgc2l6ZV90KiBhY3RpdmVMZW5ndGhQdHIoKSB7IHJldHVybiAmbV9h
Y3RpdmVMZW5ndGg7IH07CiAgICAgICAgIHZvaWQqIGRhdGFCdWZmZXIoKSB7IHJldHVybiBtX2J1
ZmZlcjsgfQogCiAgICAgICAgIHNpemVfdCBtX2FjdGl2ZUxlbmd0aDsKKyNpZiBDUFUoTUlQUykg
JiYgKGRlZmluZWQgV1RGX01JUFNfQVJDSF9SRVYgJiYgV1RGX01JUFNfQVJDSF9SRVYgPT0gMikK
KyAgICAgICAgdm9pZCogbV9idWZmZXJbMF0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpOwor
I2Vsc2UKICAgICAgICAgdm9pZCogbV9idWZmZXJbMF07CisjZW5kaWYKICAgICB9OwogI2lmIENP
TVBJTEVSKE1TVkMpCiAjcHJhZ21hIHdhcm5pbmcocG9wKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAwMjE4NzIwLi5lZDY1YWE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEzLTAxLTIxICBCYWxhenMgS2lsdmFkeSAgPGtpbHZh
ZHliQGhvbWVqaW5uaS5jb20+CisKKyAgICAgICAgTUlQUyBERkcgaW1wbGVtZW50YXRpb24uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDEzMjgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBERkcgaW1wbGVt
ZW50YXRpb24gZm9yIE1JUFMuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMy0w
MS0xOCAgTGFzemxvIEdvbWJvcyAgPGwuZ29tYm9zQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFJl
bW92ZSB1bm5lY2Vzc2FyeSBQTEFURk9STSgpIHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCA1ZWZlNDFj
Li42ZmZiNmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKQEAgLTk0NCw2ICs5NDQsMTAgQEAKICNpZiBDUFUoQVJN
X1RSQURJVElPTkFMKQogI2RlZmluZSBFTkFCTEVfREZHX0pJVCAxCiAjZW5kaWYKKy8qIEVuYWJs
ZSB0aGUgREZHIEpJVCBvbiBNSVBTLiAqLworI2lmIENQVShNSVBTKQorI2RlZmluZSBFTkFCTEVf
REZHX0pJVCAxCisjZW5kaWYKICNlbmRpZgogCiAvKiBJZiB0aGUgaml0IGlzIG5vdCBhdmFpbGFi
bGUsIGVuYWJsZSB0aGUgTExJbnQgQyBMb29wOiAqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183750</attachid>
            <date>2013-01-21 03:36:21 -0800</date>
            <delta_ts>2013-01-29 04:46:05 -0800</delta_ts>
            <desc>DFG for MIPS - arg. offset with macro</desc>
            <filename>dfg-m.diff</filename>
            <type>text/plain</type>
            <size>52631</size>
            <attacher name="Balazs Kilvady">kilvadyb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDNmMmIxMDguLjhiZjg0MWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDEzLTAxLTIxICBCYWxhenMgS2lsdmFk
eSAgPGtpbHZhZHliQGhvbWVqaW5uaS5jb20+CisKKyAgICAgICAgTUlQUyBERkcgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
RkcgaW1wbGVtZW50YXRpb24gZm9yIE1JUFMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTUlQU0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpNSVBTQXNzZW1ibGVyKToK
KyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6c2xsdik6CisgICAgICAgIChKU0M6Ok1JUFNB
c3NlbWJsZXI6Om1vdmQpOgorICAgICAgICAoTUlQU0Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6
Ok1JUFNBc3NlbWJsZXI6Om5lZ2QpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJl
bEZvcldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJlbCk6Cisg
ICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6OnZtb3YpOgorICAgICAgICAoSlNDOjpNSVBTQXNz
ZW1ibGVyOjpsaW5rRGlyZWN0SnVtcCk6CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6Om1h
eEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpyZXZl
cnRKdW1wVG9Nb3ZlKToKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhK
dW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKE1h
Y3JvQXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBva2UpOgorICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJNSVBTOjphZGQzMik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlck1JUFMpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmFuZDMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJNSVBTOjpsc2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyTUlQUzo6bXVsMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om9yMzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJzaGlmdDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjp1cnNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OnN1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
Ojp4b3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6c3RvcmUzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6anVtcCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoQWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OmJyYW5jaE11bDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
OjpicmFuY2hTdWIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNo
TmVnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmNhbGwpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmxvYWREb3VibGUpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6Om1vdmVEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OnN3YXBEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6
OnN1YkRvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6bXVsRG91Ymxl
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpkaXZEb3VibGUpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om5lZ2F0ZURvdWJsZSk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRXF1YWwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlck1JUFM6OmJyYW5jaE5vdEVxdWFsKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJNSVBTOjpicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OmJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnRydW5jYXRlRG91YmxlVG9JbnQzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6dHJ1bmNhdGVEb3VibGVUb1VpbnQzMik6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlTm9uWmVybyk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlWmVyb09yTmFOKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjppbnZlcnQpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyTUlQUzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogZGZnL0RG
R0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoQXNzZW1ibHlIZWxwZXJzKToKKyAgICAgICAg
KEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybik6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpk
ZWJ1Z0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEND
YWxsSGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3Vt
ZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUpOgorICAgICAgICAqIGRmZy9ERkdGUFJJbmZvLmg6CisgICAgICAgIChERkcp
OgorICAgICAgICAoRlBSSW5mbyk6CisgICAgICAgIChKU0M6OkRGRzo6RlBSSW5mbzo6dG9SZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6RlBSSW5mbzo6dG9JbmRleCk6CisgICAgICAgIChK
U0M6OkRGRzo6RlBSSW5mbzo6ZGVidWdOYW1lKToKKyAgICAgICAgKiBkZmcvREZHR1BSSW5mby5o
OgorICAgICAgICAoREZHKToKKyAgICAgICAgKEdQUkluZm8pOgorICAgICAgICAoSlNDOjpERkc6
OkdQUkluZm86OnRvUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkdQUkluZm86OnRvSW5k
ZXgpOgorICAgICAgICAoSlNDOjpERkc6OkdQUkluZm86OmRlYnVnTmFtZSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6CisgICAg
ICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAgIChKU0ludGVyZmFjZUpJVCk6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpTQzo6U2NyYXRjaEJ1
ZmZlcjo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoU2NyYXRjaEJ1ZmZlcik6CisKIDIwMTMt
MDEtMjAgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWFr
IEdDIG1hcHMgc2hvdWxkIGJlIGVhc2llciB0byB1c2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKaW5kZXggMDI2Zjg3ZS4uN2Y1NTNiYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKQEAg
LTE1Miw2ICsxNTIsOCBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBTZWdtZW50ZWRWZWN0b3I8QXNz
ZW1ibGVyTGFiZWwsIDY0PiBKdW1wczsKIAogICAgIE1JUFNBc3NlbWJsZXIoKQorICAgICAgICA6
IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCisgICAgICAgICwgbV9pbmRleE9mVGFp
bE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKICAgICB7CiAgICAgfQogCkBAIC0zMjUsNyArMzI3
LDcgQEAgcHVibGljOgogICAgICAgICBlbWl0SW5zdCgweDAwMDAwMDAwIHwgKHJkIDw8IE9QX1NI
X1JEKSB8IChydCA8PCBPUF9TSF9SVCkgfCAoKHNoYW10ICYgMHgxZikgPDwgT1BfU0hfU0hBTVQp
KTsKICAgICB9CiAKLSAgICB2b2lkIHNsbHYoUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBydCwg
aW50IHJzKQorICAgIHZvaWQgc2xsdihSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJ0LCBSZWdp
c3RlcklEIHJzKQogICAgIHsKICAgICAgICAgZW1pdEluc3QoMHgwMDAwMDAwNCB8IChyZCA8PCBP
UF9TSF9SRCkgfCAocnQgPDwgT1BfU0hfUlQpIHwgKHJzIDw8IE9QX1NIX1JTKSk7CiAgICAgfQpA
QCAtNTI3LDYgKzUyOSwxNiBAQCBwdWJsaWM6CiAgICAgICAgIGVtaXRJbnN0KDB4NDYyMDAwMDQg
fCAoZmQgPDwgT1BfU0hfRkQpIHwgKGZzIDw8IE9QX1NIX0ZTKSk7CiAgICAgfQogCisgICAgdm9p
ZCBtb3ZkKEZQUmVnaXN0ZXJJRCBmZCwgRlBSZWdpc3RlcklEIGZzKQorICAgIHsKKyAgICAgICAg
ZW1pdEluc3QoMHg0NjIwMDAwNiB8IChmZCA8PCBPUF9TSF9GRCkgfCAoZnMgPDwgT1BfU0hfRlMp
KTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ2QoRlBSZWdpc3RlcklEIGZkLCBGUFJlZ2lzdGVySUQg
ZnMpCisgICAgeworICAgICAgICBlbWl0SW5zdCgweDQ2MjAwMDA3IHwgKGZkIDw8IE9QX1NIX0ZE
KSB8IChmcyA8PCBPUF9TSF9GUykpOworICAgIH0KKwogICAgIHZvaWQgdHJ1bmN3ZChGUFJlZ2lz
dGVySUQgZmQsIEZQUmVnaXN0ZXJJRCBmcykKICAgICB7CiAgICAgICAgIGVtaXRJbnN0KDB4NDYy
MDAwMGQgfCAoZmQgPDwgT1BfU0hfRkQpIHwgKGZzIDw8IE9QX1NIX0ZTKSk7CkBAIC02MTksOSAr
NjMxLDI0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fYnVmZmVyLmxhYmVsKCk7CiAgICAg
fQogCisgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWxGb3JXYXRjaHBvaW50KCkKKyAgICB7CisgICAg
ICAgIEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IG1fYnVmZmVyLmxhYmVsKCk7CisgICAgICAgIGlm
IChzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdC5tX29mZnNldCkgIT0gbV9pbmRleE9mTGFzdFdhdGNo
cG9pbnQpCisgICAgICAgICAgICByZXN1bHQgPSBsYWJlbCgpOworICAgICAgICBtX2luZGV4T2ZM
YXN0V2F0Y2hwb2ludCA9IHJlc3VsdC5tX29mZnNldDsKKyAgICAgICAgbV9pbmRleE9mVGFpbE9m
TGFzdFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQgKyBtYXhKdW1wUmVwbGFjZW1lbnRTaXpl
KCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgQXNzZW1ibGVyTGFiZWwg
bGFiZWwoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYnVmZmVyLmxhYmVsKCk7CisgICAgICAg
IEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IG1fYnVmZmVyLmxhYmVsKCk7CisgICAgICAgIHdoaWxl
IChVTkxJS0VMWShzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdC5tX29mZnNldCkgPCBtX2luZGV4T2ZU
YWlsT2ZMYXN0V2F0Y2hwb2ludCkpIHsKKyAgICAgICAgICAgIG5vcCgpOworICAgICAgICAgICAg
cmVzdWx0ID0gbV9idWZmZXIubGFiZWwoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgIH0KIAogICAgIEFzc2VtYmxlckxhYmVsIGFsaWduKGludCBhbGlnbm1lbnQpCkBA
IC02NjQsMTQgKzY5MSwyNCBAQCBwdWJsaWM6CiAgICAgLy8gQXNzZW1ibHkgaGVscGVycyBmb3Ig
bW92aW5nIGRhdGEgYmV0d2VlbiBmcCBhbmQgcmVnaXN0ZXJzLgogICAgIHZvaWQgdm1vdihSZWdp
c3RlcklEIHJkMSwgUmVnaXN0ZXJJRCByZDIsIEZQUmVnaXN0ZXJJRCBybikKICAgICB7CisjaWYg
V1RGX01JUFNfSVNBX1JFVigyKSAmJiBXVEZfTUlQU19GUDY0CisgICAgICAgIG1mYzEocmQxLCBy
bik7CisgICAgICAgIG1maGMxKHJkMiwgcm4pOworI2Vsc2UKICAgICAgICAgbWZjMShyZDEsIHJu
KTsKICAgICAgICAgbWZjMShyZDIsIEZQUmVnaXN0ZXJJRChybiArIDEpKTsKKyNlbmRpZgogICAg
IH0KIAogICAgIHZvaWQgdm1vdihGUFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVySUQgcm4xLCBSZWdp
c3RlcklEIHJuMikKICAgICB7CisjaWYgV1RGX01JUFNfSVNBX1JFVigyKSAmJiBXVEZfTUlQU19G
UDY0CisgICAgICAgIG10YzEocm4xLCByZCk7CisgICAgICAgIG10aGMxKHJuMiwgcmQpOworI2Vs
c2UKICAgICAgICAgbXRjMShybjEsIHJkKTsKICAgICAgICAgbXRjMShybjIsIEZQUmVnaXN0ZXJJ
RChyZCArIDEpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHN0YXRpYyB1bnNpZ25lZCBnZXRDYWxs
UmV0dXJuT2Zmc2V0KEFzc2VtYmxlckxhYmVsIGNhbGwpCkBAIC02ODgsNiArNzI1LDM1IEBAIHB1
YmxpYzoKICAgICAvLyB3cml0YWJsZSByZWdpb24gb2YgbWVtb3J5OyB0byBtb2RpZnkgdGhlIGNv
ZGUgaW4gYW4gZXhlY3V0ZS1vbmx5IGV4ZWN1YWJsZQogICAgIC8vIHBvb2wgdGhlICdyZXBhdGNo
JyBhbmQgJ3JlbGluaycgbWV0aG9kcyBzaG91bGQgYmUgdXNlZC4KIAorICAgIHN0YXRpYyBzaXpl
X3QgbGlua0RpcmVjdEp1bXAodm9pZCogY29kZSwgdm9pZCogdG8pCisgICAgeworICAgICAgICBN
SVBTV29yZCogaW5zbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8TUlQU1dvcmQqPihyZWludGVycHJldF9j
YXN0PGludHB0cl90Pihjb2RlKSk7CisgICAgICAgIHNpemVfdCBvcHMgPSAwOworICAgICAgICBp
bnQzMl90IHNsb3RBZGRyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ+KGluc24pICsgNDsKKyAgICAg
ICAgaW50MzJfdCB0b0FkZHIgPSByZWludGVycHJldF9jYXN0PGludD4odG8pOworCisgICAgICAg
IGlmICgoc2xvdEFkZHIgJiAweGYwMDAwMDAwKSAhPSAodG9BZGRyICYgMHhmMDAwMDAwMCkpIHsK
KyAgICAgICAgICAgIC8vIGx1aQorICAgICAgICAgICAgKmluc24gPSAweDNjMDAwMDAwIHwgKE1J
UFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JUKSB8ICgodG9BZGRyID4+IDE2KSAmIDB4ZmZmZik7
CisgICAgICAgICAgICArK2luc247CisgICAgICAgICAgICAvLyBvcmkKKyAgICAgICAgICAgICpp
bnNuID0gMHgzNDAwMDAwMCB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SVCkgfCAoTUlQ
U1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlMpIHwgKHRvQWRkciAmIDB4ZmZmZik7CisgICAgICAg
ICAgICArK2luc247CisgICAgICAgICAgICAvLyBqcgorICAgICAgICAgICAgKmluc24gPSAweDAw
MDAwMDA4IHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JTKTsKKyAgICAgICAgICAgICsr
aW5zbjsKKyAgICAgICAgICAgIG9wcyA9IDQgKiBzaXplb2YoTUlQU1dvcmQpOworICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgLy8gagorICAgICAgICAgICAgKmluc24gPSAweDA4MDAwMDAw
IHwgKCh0b0FkZHIgJiAweDBmZmZmZmZmKSA+PiAyKTsKKyAgICAgICAgICAgICsraW5zbjsKKyAg
ICAgICAgICAgIG9wcyA9IDIgKiBzaXplb2YoTUlQU1dvcmQpOworICAgICAgICB9CisgICAgICAg
IC8vIG5vcAorICAgICAgICAqaW5zbiA9IDB4MDAwMDAwMDA7CisgICAgICAgIHJldHVybiBvcHM7
CisgICAgfQorCiAgICAgdm9pZCBsaW5rSnVtcChBc3NlbWJsZXJMYWJlbCBmcm9tLCBBc3NlbWJs
ZXJMYWJlbCB0bykKICAgICB7CiAgICAgICAgIEFTU0VSVCh0by5pc1NldCgpKTsKQEAgLTgyNSwy
OSArODkxLDM2IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIHJl
dmVydEp1bXBUb01vdmUodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgUmVnaXN0ZXJJRCBydCwgaW50
IGltbSkKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQogICAg
IHsKLSAgICAgICAgTUlQU1dvcmQqIGluc24gPSBzdGF0aWNfY2FzdDxNSVBTV29yZCo+KGluc3Ry
dWN0aW9uU3RhcnQpICsgMTsKLSAgICAgICAgQVNTRVJUKCgqaW5zbiAmIDB4ZmMwMDAwMDApID09
IDB4MzQwMDAwMDApOwotICAgICAgICAqaW5zbiA9ICgqaW5zbiAmIDB4ZmMxZjAwMDApIHwgKGlt
bSAmIDB4ZmZmZik7Ci0gICAgICAgIGNhY2hlRmx1c2goaW5zbiwgc2l6ZW9mKE1JUFNXb3JkKSk7
CisgICAgICAgIHJldHVybiBzaXplb2YoTUlQU1dvcmQpICogNDsKICAgICB9CiAKLSAgICBzdGF0
aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8p
CisgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFRvTW92ZSh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0
LCBSZWdpc3RlcklEIHJ0LCBpbnQgaW1tKQogICAgIHsKLSAgICAgICAgTUlQU1dvcmQqIGluc3Ry
dWN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxNSVBTV29yZCo+KGluc3RydWN0aW9uU3RhcnQpOwot
ICAgICAgICBpbnRwdHJfdCBqdW1wVG8gPSByZWludGVycHJldF9jYXN0PGludHB0cl90Pih0byk7
CisgICAgICAgIE1JUFNXb3JkKiBpbnNuID0gc3RhdGljX2Nhc3Q8TUlQU1dvcmQqPihpbnN0cnVj
dGlvblN0YXJ0KTsKKyAgICAgICAgc2l6ZV90IGNvZGVTaXplID0gMiAqIHNpemVvZihNSVBTV29y
ZCk7CiAKICAgICAgICAgLy8gbHVpCi0gICAgICAgIGluc3RydWN0aW9uWzBdID0gMHgzYzAwMDAw
MCB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SVCkgfCAoKGp1bXBUbyA+PiAxNikgJiAw
eGZmZmYpOworICAgICAgICAqaW5zbiA9IDB4M2MwMDAwMDAgfCAocnQgPDwgT1BfU0hfUlQpIHwg
KChpbW0gPj4gMTYpICYgMHhmZmZmKTsKKyAgICAgICAgKytpbnNuOwogICAgICAgICAvLyBvcmkK
LSAgICAgICAgaW5zdHJ1Y3Rpb25bMV0gPSAweDM0MDAwMDAwIHwgKE1JUFNSZWdpc3RlcnM6OnQ5
IDw8IE9QX1NIX1JUKSB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SUykgfCAoanVtcFRv
ICYgMHhmZmZmKTsKLSAgICAgICAgLy8ganIKLSAgICAgICAgaW5zdHJ1Y3Rpb25bMl0gPSAweDAw
MDAwMDA4IHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JTKTsKLSAgICAgICAgLy8gbm9w
Ci0gICAgICAgIGluc3RydWN0aW9uWzNdID0gMHgwOworICAgICAgICAqaW5zbiA9IDB4MzQwMDAw
MDAgfCAocnQgPDwgT1BfU0hfUlMpIHwgKHJ0IDw8IE9QX1NIX1JUKSB8IChpbW0gJiAweGZmZmYp
OworICAgICAgICArK2luc247CisgICAgICAgIC8vIGlmIGpyICR0OQorICAgICAgICBpZiAoKmlu
c24gPT0gMHgwMzIwMDAwOCkgeworICAgICAgICAgICAgKmluc24gPSAweDAwMDAwMDAwOworICAg
ICAgICAgICAgY29kZVNpemUgKz0gc2l6ZW9mKE1JUFNXb3JkKTsKKyAgICAgICAgfQorICAgICAg
ICBjYWNoZUZsdXNoKGluc24sIGNvZGVTaXplKTsKKyAgICB9CiAKLSAgICAgICAgY2FjaGVGbHVz
aChpbnN0cnVjdGlvbiwgc2l6ZW9mKE1JUFNXb3JkKSAqIDQpOworICAgIHN0YXRpYyB2b2lkIHJl
cGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCB2b2lkKiB0bykKKyAgICB7Cisg
ICAgICAgIEFTU0VSVCghKGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KGluc3RydWN0aW9uU3RhcnQp
ICYgMykpOworICAgICAgICBBU1NFUlQoIShiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pih0bykgJiAz
KSk7CisgICAgICAgIHNpemVfdCBvcHMgPSBsaW5rRGlyZWN0SnVtcChpbnN0cnVjdGlvblN0YXJ0
LCB0byk7CisgICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1Y3Rpb25TdGFydCwgb3BzKTsKICAgICB9
CiAKICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aExvYWQodm9pZCogaW5zdHJ1Y3Rpb25TdGFy
dCkKQEAgLTEwMjMsNiArMTA5Niw4IEBAIHByaXZhdGU6CiAKICAgICBBc3NlbWJsZXJCdWZmZXIg
bV9idWZmZXI7CiAgICAgSnVtcHMgbV9qdW1wczsKKyAgICBpbnQgbV9pbmRleE9mTGFzdFdhdGNo
cG9pbnQ7CisgICAgaW50IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyLmgKaW5kZXggM2Q1NzM0MC4uMmYyNmZmMiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaApAQCAtMjAwLDYgKzIwMCwx
MyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAgICAgCisjaWYgQ1BVKE1JUFMpCisgICAgdm9p
ZCBwb2tlKEZQUmVnaXN0ZXJJRCBzcmMsIGludCBpbmRleCA9IDApCisgICAgeworICAgICAgICBB
U1NFUlQoIShpbmRleCAmIDEpKTsKKyAgICAgICAgc3RvcmVEb3VibGUoc3JjLCBhZGRyZXNzRm9y
UG9rZShpbmRleCkpOworICAgIH0KKyNlbmRpZgogCiAgICAgLy8gQmFja3dhcmRzIGJhbmNoZXMs
IHRoZXNlIGFyZSBjdXJyZW50bHkgYWxsIGltcGxlbWVudGVkIHVzaW5nIGV4aXN0aW5nIGZvcndh
cmRzIGJyYW5jaCBtZWNoYW5pc21zLgogICAgIHZvaWQgYnJhbmNoUHRyKFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIFRydXN0ZWRJbW1QdHIgaW1tLCBMYWJlbCB0YXJn
ZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyTUlQUy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlck1JUFMuaAppbmRleCAxYjFhMTI3Li5iNTkzODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKQEAgLTExNCw2ICsx
MTQsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGRlc3QsIGRlc3QsIHNy
Yyk7CiAgICAgfQogCisgICAgdm9pZCBhZGQzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBv
cDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoZGVz
dCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgYWRkMzIoVHJ1c3RlZEltbTMyIGltbSwg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgYWRkMzIoaW1tLCBkZXN0LCBkZXN0KTsK
QEAgLTI2Nyw2ICsyNzIsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5hbmRJbnNu
KGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBhbmQzMihSZWdpc3RlcklEIG9w
MSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmFuZEluc24oZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgYW5kMzIo
VHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKCFp
bW0ubV92YWx1ZSAmJiAhbV9maXhlZFdpZHRoKQpAQCAtMjgzLDkgKzI5MywxNiBAQCBwdWJsaWM6
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIGxzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0s
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5z
bGwoZGVzdCwgZGVzdCwgaW1tLm1fdmFsdWUpOworICAgICAgICBpZiAoIWltbS5tX3ZhbHVlICYm
ICFtX2ZpeGVkV2lkdGgpCisgICAgICAgICAgICBtb3ZlKE1JUFNSZWdpc3RlcnM6Onplcm8sIGRl
c3QpOworICAgICAgICBlbHNlIGlmIChpbW0ubV92YWx1ZSA+IDAgJiYgaW1tLm1fdmFsdWUgPCA2
NTUzNSAmJiAhbV9maXhlZFdpZHRoKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIuYW5kaShkZXN0
LCBzcmMsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtb3ZlKGlt
bSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFuZEluc24oZGVz
dCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCBs
c2hpZnQzMihSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCkBAIC0yOTMs
MTEgKzMxMCwzMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnNsbHYoZGVzdCwgZGVz
dCwgc2hpZnRBbW91bnQpOwogICAgIH0KIAorICAgIHZvaWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnNsbHYoZGVzdCwgc3JjLCBzaGlmdEFtb3VudCk7CisgICAgfQorCisg
ICAgdm9pZCBsc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuc2xsdihkZXN0LCBkZXN0LCBpbW1UZW1wUmVnaXN0ZXIpOworICAgIH0KKworICAgIHZvaWQg
bHNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICBt
X2Fzc2VtYmxlci5zbGx2KGRlc3QsIHNyYywgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKICAg
ICB2b2lkIG11bDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBtX2Fzc2VtYmxlci5tdWwoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lk
IG11bDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubXVsKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisK
ICAgICB2b2lkIG11bDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lk
dGgpCkBAIC0zNDgsNiArMzg3LDI0IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIub3JJ
bnNuKGRlc3QsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgIH0KIAorICAgIHZvaWQgb3Iz
MihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSAmJiAhbV9maXhlZFdpZHRoKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA+IDAgJiYgaW1tLm1fdmFsdWUg
PCA2NTUzNSAmJiAhbV9maXhlZFdpZHRoKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5vcmko
ZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICAvKgorICAgICAgICAgICAgbGkgICAgICBkYXRhVGVtcCwgaW1tCisgICAgICAg
ICAgICBvciAgICAgIGRlc3QsIHNyYywgZGF0YVRlbXAKKyAgICAgICAgKi8KKyAgICAgICAgbW92
ZShpbW0sIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5vckluc24oZGVz
dCwgc3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKICAgICB2b2lkIG9yMzIoUmVnaXN0
ZXJJRCBzcmMsIEFic29sdXRlQWRkcmVzcyBkZXN0KQogICAgIHsKICAgICAgICAgbG9hZDMyKGRl
c3QubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwpAQCAtMzYwLDYgKzQxNywxMSBAQCBwdWJsaWM6
CiAgICAgICAgIG1fYXNzZW1ibGVyLnNyYXYoZGVzdCwgZGVzdCwgc2hpZnRBbW91bnQpOwogICAg
IH0KIAorICAgIHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRB
bW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnNyYXYo
ZGVzdCwgc3JjLCBzaGlmdEFtb3VudCk7CisgICAgfQorCiAgICAgdm9pZCByc2hpZnQzMihUcnVz
dGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxl
ci5zcmEoZGVzdCwgZGVzdCwgaW1tLm1fdmFsdWUpOwpAQCAtMzc1LDE2ICs0MzcsMzEgQEAgcHVi
bGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zcmx2KGRlc3QsIGRlc3QsIHNoaWZ0QW1vdW50KTsK
ICAgICB9CiAKKyAgICB2b2lkIHVyc2hpZnQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBz
aGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
c3JsdihkZXN0LCBzcmMsIHNoaWZ0QW1vdW50KTsKKyAgICB9CisKICAgICB2b2lkIHVyc2hpZnQz
MihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fz
c2VtYmxlci5zcmwoZGVzdCwgZGVzdCwgaW1tLm1fdmFsdWUpOwogICAgIH0KIAorICAgIHZvaWQg
dXJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zcmwoZGVzdCwgc3JjLCBpbW0ubV92YWx1
ZSk7CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3VidShkZXN0LCBkZXN0LCBzcmMpOwog
ICAgIH0KIAorICAgIHZvaWQgc3ViMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zdWJ1KGRlc3QsIG9w
MSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA+PSAtMzI3NjcgJiYg
aW1tLm1fdmFsdWUgPD0gMzI3NjgKQEAgLTQ5NSw2ICs1NzIsMTEgQEAgcHVibGljOgogICAgICAg
ICBtX2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9p
ZCB4b3IzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oZGVzdCwgb3AxLCBvcDIpOworICAg
IH0KKwogICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKSB7CkBAIC01MTAsNiArNTkyLDIx
IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihkZXN0LCBkZXN0LCBpbW1U
ZW1wUmVnaXN0ZXIpOwogICAgIH0KIAorICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGltbSwg
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChpbW0u
bV92YWx1ZSA9PSAtMSkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9yKGRlc3QsIHNyYywg
TUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICAvKgorICAgICAgICAgICAgbGkgIGltbVRlbXAsIGltbQorICAgICAgICAgICAgeG9y
IGRlc3QsIGRlc3QsIGltbVRlbXAKKyAgICAgICAgKi8KKyAgICAgICAgbW92ZShpbW0sIGltbVRl
bXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oZGVzdCwgc3JjLCBpbW1U
ZW1wUmVnaXN0ZXIpOworICAgIH0KKwogICAgIHZvaWQgc3FydERvdWJsZShGUFJlZ2lzdGVySUQg
c3JjLCBGUFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3FydGQo
ZHN0LCBzcmMpOwpAQCAtOTg5LDYgKzEwODYsNDQgQEAgcHVibGljOgogICAgICAgICB9CiAgICAg
fQogCisgICAgdm9pZCBzdG9yZTMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBhZGRyZXNz
KQorICAgIHsKKyAgICAgICAgaWYgKGFkZHJlc3Mub2Zmc2V0ID49IC0zMjc2OCAmJiBhZGRyZXNz
Lm9mZnNldCA8PSAzMjc2NyAmJiAhbV9maXhlZFdpZHRoKSB7CisgICAgICAgICAgICAvKgorICAg
ICAgICAgICAgICAgIHNsbCAgICAgYWRkclRlbXAsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2Nh
bGUKKyAgICAgICAgICAgICAgICBhZGR1ICAgIGFkZHJUZW1wLCBhZGRyVGVtcCwgYWRkcmVzcy5i
YXNlCisgICAgICAgICAgICAgICAgc3cgICAgICBzcmMsIGFkZHJlc3Mub2Zmc2V0KGFkZHJUZW1w
KQorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsbChhZGRyVGVtcFJl
Z2lzdGVyLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmFkZHUoYWRkclRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5i
YXNlKTsKKyAgICAgICAgICAgIGlmICghaW1tLm1fdmFsdWUpCisgICAgICAgICAgICAgICAgbV9h
c3NlbWJsZXIuc3coTUlQU1JlZ2lzdGVyczo6emVybywgYWRkclRlbXBSZWdpc3RlciwgYWRkcmVz
cy5vZmZzZXQpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbW92ZShpbW0s
IGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3coaW1tVGVt
cFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgIHNs
bCAgICAgYWRkclRlbXAsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUKKyAgICAgICAgICAg
ICAgICBhZGR1ICAgIGFkZHJUZW1wLCBhZGRyVGVtcCwgYWRkcmVzcy5iYXNlCisgICAgICAgICAg
ICAgICAgbHVpICAgICBpbW1UZW1wLCAoYWRkcmVzcy5vZmZzZXQgKyAweDgwMDApID4+IDE2Cisg
ICAgICAgICAgICAgICAgYWRkdSAgICBhZGRyVGVtcCwgYWRkclRlbXAsIGltbVRlbXAKKyAgICAg
ICAgICAgICAgICBzdyAgICAgIHNyYywgKGFkZHJlc3Mub2Zmc2V0ICYgMHhmZmZmKShhdCkKKyAg
ICAgICAgICAgICovCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbGwoYWRkclRlbXBSZWdpc3Rl
ciwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5hZGR1KGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSk7
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sdWkoaW1tVGVtcFJlZ2lzdGVyLCAoYWRkcmVzcy5v
ZmZzZXQgKyAweDgwMDApID4+IDE2KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoYWRk
clRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAg
ICAgICAgIGlmICghaW1tLm1fdmFsdWUgJiYgIW1fZml4ZWRXaWR0aCkKKyAgICAgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5zdyhNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBhZGRyVGVtcFJlZ2lzdGVyLCBh
ZGRyZXNzLm9mZnNldCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBtb3Zl
KGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdyhp
bW1UZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworCiAgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVy
SUQgc3JjLCBjb25zdCB2b2lkKiBhZGRyZXNzKQogICAgIHsKICAgICAgICAgLyoKQEAgLTEzMzYs
NiArMTQ3MSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZml4ZWRXaWR0aCA9IGZhbHNlOwogICAg
IH0KIAorICAgIHZvaWQganVtcChBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAg
ICAgIG1fZml4ZWRXaWR0aCA9IHRydWU7CisgICAgICAgIGxvYWQzMihhZGRyZXNzLm1fcHRyLCBN
SVBTUmVnaXN0ZXJzOjp0OSk7CisgICAgICAgIG1fYXNzZW1ibGVyLmpyKE1JUFNSZWdpc3RlcnM6
OnQ5KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgIG1fZml4ZWRXaWR0aCA9
IGZhbHNlOworICAgIH0KKwogICAgIHZvaWQgbW92ZURvdWJsZVRvSW50cyhGUFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRlc3QyKQogICAgIHsKICAgICAgICAg
bV9hc3NlbWJsZXIudm1vdihkZXN0MSwgZGVzdDIsIHNyYyk7CkBAIC0xNDA0LDYgKzE1NDgsNTMg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcCgpOwogICAgIH0KIAorICAgIEp1bXAgYnJh
bmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklE
IG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKChjb25kID09IE92
ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09
IE5vblplcm8pKTsKKyAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKKyAgICAgICAgICAg
IC8qCisgICAgICAgICAgICAgICAgbW92ZSAgICBkYXRhVGVtcCwgb3AxCisgICAgICAgICAgICAg
ICAgeG9yICAgICBjbXBUZW1wLCBkYXRhVGVtcCwgb3AyCisgICAgICAgICAgICAgICAgYmx0eiAg
ICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIGRpZmYgc2lnbiBiaXQgLT4gbm8gb3ZlcmZsb3cK
KyAgICAgICAgICAgICAgICBhZGR1ICAgIGRlc3QsIGRhdGFUZW1wLCBvcDIKKyAgICAgICAgICAg
ICAgICB4b3IgICAgIGNtcFRlbXAsIGRlc3QsIGRhdGFUZW1wCisgICAgICAgICAgICAgICAgYmdl
eiAgICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIHNhbWUgc2lnbiBiaWcgLT4gbm8gb3ZlcmZs
b3cKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBiICAgICAgIE92ZXJmbG93
CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAg
ICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAg
ICAgICBOb19vdmVyZmxvdzoKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBtb3ZlKG9wMSwg
ZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRl
bXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwgb3AyKTsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxMCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5h
ZGR1KGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7CisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7CisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAgIHJldHVybiBqdW1wKCk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7CisgICAgICAgICAgICBhZGQzMihvcDEs
IG9wMiwgZGVzdCk7CisgICAgICAgICAgICAvLyBDaGVjayBpZiBkZXN0IGlzIG5lZ2F0aXZlLgor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0KGNtcFRlbXBSZWdpc3RlciwgZGVzdCwgTUlQU1Jl
Z2lzdGVyczo6emVybyk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwoY21wVGVt
cFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBpZiAo
Y29uZCA9PSBaZXJvKSB7CisgICAgICAgICAgICBhZGQzMihvcDEsIG9wMiwgZGVzdCk7CisgICAg
ICAgICAgICByZXR1cm4gYnJhbmNoRXF1YWwoZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykgeworICAgICAgICAgICAgYWRk
MzIob3AxLCBvcDIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGRl
c3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIEFTU0VSVCgwKTsK
KyAgICAgICAgcmV0dXJuIEp1bXAoKTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5jaEFkZDMyKFJl
c3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKQEAgLTE0MTcsNiArMTYw
OCwxMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYnJhbmNoQWRkMzIoY29uZCwgaW1tVGVt
cFJlZ2lzdGVyLCBkZXN0KTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENv
bmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgZGVzdCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVk
KSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CisgICAgICAgIGlmIChj
b25kID09IE92ZXJmbG93KSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgIG1vdmUg
ICAgZGF0YVRlbXAsIGRlc3QKKyAgICAgICAgICAgICAgICB4b3JpICAgIGNtcFRlbXAsIGRhdGFU
ZW1wLCBpbW0KKyAgICAgICAgICAgICAgICBibHR6ICAgIGNtcFRlbXAsIE5vX292ZXJmbG93ICAg
ICMgZGlmZiBzaWduIGJpdCAtPiBubyBvdmVyZmxvdworICAgICAgICAgICAgICAgIGFkZGl1ICAg
ZGF0YVRlbXAsIGRhdGFUZW1wLCBpbW0KKyAgICAgICAgICAgICAgICBtb3ZlICAgIGRlc3QsIGRh
dGFUZW1wCisgICAgICAgICAgICAgICAgeG9yaSAgICBjbXBUZW1wLCBkYXRhVGVtcCwgaW1tCisg
ICAgICAgICAgICAgICAgYmdleiAgICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIHNhbWUgc2ln
biBiaWcgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAg
ICBiICAgICAgIE92ZXJmbG93CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAg
bm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAg
ICAgICAgbm9wCisgICAgICAgICAgICBOb19vdmVyZmxvdzoKKyAgICAgICAgICAgICovCisgICAg
ICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPj0gLTMyNzY4ICYmIGltbS5tX3ZhbHVlICA8PSAzMjc2
NyAmJiAhbV9maXhlZFdpZHRoKSB7CisgICAgICAgICAgICAgICAgbG9hZDMyKGRlc3QubV9wdHIs
IGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmkoY21w
VGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW0ubV92YWx1ZSk7CisgICAgICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuYmx0eihjbXBUZW1wUmVnaXN0ZXIsIDEwKTsKKyAgICAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5hZGRpdShkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVy
LCBpbW0ubV92YWx1ZSk7CisgICAgICAgICAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVy
LCBkZXN0Lm1fcHRyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JpKGNtcFRlbXBS
ZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1fdmFsdWUpOworICAgICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCA3KTsKKyAgICAgICAgICAgICAgICBt
X2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
bG9hZDMyKGRlc3QubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIG1v
dmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhv
ckluc24oY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIp
OworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxMCk7
CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkaXUoZGF0YVRlbXBSZWdpc3RlciwgZGF0
YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBzdG9yZTMy
KGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QubV9wdHIpOworICAgICAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnhvcmkoY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0
ZXIpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCA3
KTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIHJldHVybiBqdW1wKCk7CisgICAgICAgIH0KKyAgICAgICAgbW92ZShpbW0sIGlt
bVRlbXBSZWdpc3Rlcik7CisgICAgICAgIGxvYWQzMihkZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lz
dGVyKTsKKyAgICAgICAgYWRkMzIoaW1tVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyKTsK
KyAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0Lm1fcHRyKTsKKyAgICAgICAg
aWYgKGNvbmQgPT0gU2lnbmVkKSB7CisgICAgICAgICAgICAvLyBDaGVjayBpZiBkZXN0IGlzIG5l
Z2F0aXZlLgorICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0KGNtcFRlbXBSZWdpc3RlciwgZGF0
YVRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICByZXR1cm4g
YnJhbmNoTm90RXF1YWwoY21wVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBaZXJvKQorICAgICAgICAgICAgcmV0dXJuIGJy
YW5jaEVxdWFsKGRhdGFUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAg
ICBpZiAoY29uZCA9PSBOb25aZXJvKQorICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFs
KGRhdGFUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICBBU1NFUlQo
MCk7CisgICAgICAgIHJldHVybiBKdW1wKCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hNdWwz
MihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMxLCBSZWdpc3RlcklEIHNyYzIs
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxv
dykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25a
ZXJvKSk7CisgICAgICAgIGlmIChjb25kID09IE92ZXJmbG93KSB7CisgICAgICAgICAgICAvKgor
ICAgICAgICAgICAgICAgIG11bHQgICAgc3JjLCBkZXN0CisgICAgICAgICAgICAgICAgbWZoaSAg
ICBkYXRhVGVtcAorICAgICAgICAgICAgICAgIG1mbG8gICAgZGVzdAorICAgICAgICAgICAgICAg
IHNyYSAgICAgYWRkclRlbXAsIGRlc3QsIDMxCisgICAgICAgICAgICAgICAgYmVxICAgICBkYXRh
VGVtcCwgYWRkclRlbXAsIE5vX292ZXJmbG93ICMgYWxsIHNpZ24gYml0cyAoYml0IDYzIHRvIGJp
dCAzMSkgYXJlIHRoZSBzYW1lIC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgbm9wCisg
ICAgICAgICAgICAgICAgYiAgICAgICBPdmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAg
ICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5v
cAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgTm9fb3ZlcmZsb3c6CisgICAgICAg
ICAgICAqLworICAgICAgICAgICAgbV9hc3NlbWJsZXIubXVsdChzcmMxLCBzcmMyKTsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLm1maGkoZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5tZmxvKGRlc3QpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3JhKGFkZHJU
ZW1wUmVnaXN0ZXIsIGRlc3QsIDMxKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJlcShkYXRh
VGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCA3KTsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLm5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGp1bXAoKTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoY29uZCA9PSBTaWduZWQpIHsKKyAgICAgICAgICAgIG11bDMyKHNyYzEsIHNyYzIsIGRl
c3QpOworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdhdGl2ZS4KKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIE1JUFNSZWdpc3RlcnM6
Onplcm8pOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBSZWdpc3Rl
ciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0g
WmVybykgeworICAgICAgICAgICAgbXVsMzIoc3JjMSwgc3JjMiwgZGVzdCk7CisgICAgICAgICAg
ICByZXR1cm4gYnJhbmNoRXF1YWwoZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykgeworICAgICAgICAgICAgbXVsMzIoc3Jj
MSwgc3JjMiwgZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwoZGVzdCwg
TUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKDApOworICAg
ICAgICByZXR1cm4gSnVtcCgpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoTXVsMzIoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewog
ICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwg
KGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwpAQCAtMTQ2NSw4ICsxNzYxLDcg
QEAgcHVibGljOgogICAgIEp1bXAgYnJhbmNoTXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRy
dXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewog
ICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbW92ZShzcmMsIGRl
c3QpOwotICAgICAgICByZXR1cm4gYnJhbmNoTXVsMzIoY29uZCwgaW1tVGVtcFJlZ2lzdGVyLCBk
ZXN0KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMyKGNvbmQsIGltbVRlbXBSZWdpc3Rlciwg
c3JjLCBkZXN0KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFN1YjMyKFJlc3VsdENvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMTUyNSw4ICsxODIw
LDYwIEBAIHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaFN1YjMyKFJlc3VsdENvbmRpdGlvbiBjb25k
LCBSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1vdmUoc3Jj
LCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjMyKGNvbmQsIGltbVRlbXBSZWdpc3Rl
ciwgZGVzdCk7CisgICAgICAgIHJldHVybiBicmFuY2hTdWIzMihjb25kLCBzcmMsIGltbVRlbXBS
ZWdpc3RlciwgZGVzdCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09
IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOworICAgICAg
ICBpZiAoY29uZCA9PSBPdmVyZmxvdykgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAg
ICBtb3ZlICAgIGRhdGFUZW1wLCBvcDEKKyAgICAgICAgICAgICAgICB4b3IgICAgIGNtcFRlbXAs
IGRhdGFUZW1wLCBvcDIKKyAgICAgICAgICAgICAgICBiZ2V6ICAgIGNtcFRlbXAsIE5vX292ZXJm
bG93ICAgICMgc2FtZSBzaWduIGJpdCAtPiBubyBvdmVyZmxvdworICAgICAgICAgICAgICAgIHN1
YnUgICAgZGVzdCwgZGF0YVRlbXAsIG9wMgorICAgICAgICAgICAgICAgIHhvciAgICAgY21wVGVt
cCwgZGVzdCwgZGF0YVRlbXAKKyAgICAgICAgICAgICAgICBiZ2V6ICAgIGNtcFRlbXAsIE5vX292
ZXJmbG93ICAgICMgc2FtZSBzaWduIGJpdCAtPiBubyBvdmVyZmxvdworICAgICAgICAgICAgICAg
IG5vcAorICAgICAgICAgICAgICAgIGIgICAgICAgT3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBu
b3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAg
ICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgIE5vX292ZXJmbG93Ogor
ICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1vdmUob3AxLCBkYXRhVGVtcFJlZ2lzdGVyKTsK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVt
cFJlZ2lzdGVyLCBvcDIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVn
aXN0ZXIsIDEwKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnUoZGVzdCwgZGF0YVRlbXBS
ZWdpc3Rlciwgb3AyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oY21wVGVtcFJl
Z2lzdGVyLCBkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmJnZXooY21wVGVtcFJlZ2lzdGVyLCA3KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgp
OworICAgICAgICAgICAgcmV0dXJuIGp1bXAoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29u
ZCA9PSBTaWduZWQpIHsKKyAgICAgICAgICAgIHN1YjMyKG9wMSwgb3AyLCBkZXN0KTsKKyAgICAg
ICAgICAgIC8vIENoZWNrIGlmIGRlc3QgaXMgbmVnYXRpdmUuCisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5zbHQoY21wVGVtcFJlZ2lzdGVyLCBkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAg
ICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdp
c3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IFplcm8pIHsKKyAg
ICAgICAgICAgIHN1YjMyKG9wMSwgb3AyLCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBicmFu
Y2hFcXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoY29uZCA9PSBOb25aZXJvKSB7CisgICAgICAgICAgICBzdWIzMihvcDEsIG9wMiwgZGVzdCk7
CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwoZGVzdCwgTUlQU1JlZ2lzdGVyczo6
emVybyk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKDApOworICAgICAgICByZXR1cm4gSnVt
cCgpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoTmVnMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IFJlZ2lzdGVySUQgc3JjRGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmxpKGRhdGFU
ZW1wUmVnaXN0ZXIsIC0xKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMyKGNvbmQsIGRhdGFU
ZW1wUmVnaXN0ZXIsIHNyY0Rlc3QpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoT3IzMihSZXN1
bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTE1
NzgsNyArMTkyNSw4IEBAIHB1YmxpYzoKIAogICAgIENhbGwgY2FsbChSZWdpc3RlcklEIHRhcmdl
dCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmphbHIodGFyZ2V0KTsKKyAgICAgICAgbW92
ZSh0YXJnZXQsIE1JUFNSZWdpc3RlcnM6OnQ5KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuamFscihN
SVBTUmVnaXN0ZXJzOjp0OSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwogICAgICAgICBy
ZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5sYWJlbCgpLCBDYWxsOjpOb25lKTsKICAgICB9CkBAIC0x
ODIyLDcgKzIxNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgbHVpICAgICBpbW1UZW1w
LCAoYWRkcmVzcy5vZmZzZXQgKyAweDgwMDApID4+IDE2CiAgICAgICAgICAgICAgICAgYWRkdSAg
ICBhZGRyVGVtcCwgYWRkclRlbXAsIGltbVRlbXAKICAgICAgICAgICAgICAgICBsd2MxICAgIGRl
c3QsIChhZGRyZXNzLm9mZnNldCAmIDB4ZmZmZikoYXQpCi0gICAgICAgICAgICAgICAgbHdjMSAg
ICBkZXN0KzQsIChhZGRyZXNzLm9mZnNldCAmIDB4ZmZmZiArIDQpKGF0KQorICAgICAgICAgICAg
ICAgIGx3YzEgICAgZGVzdCsxLCAoYWRkcmVzcy5vZmZzZXQgJiAweGZmZmYgKyA0KShhdCkKICAg
ICAgICAgICAgICovCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbGwoYWRkclRlbXBSZWdpc3Rl
ciwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CiAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5hZGR1KGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSk7
CkBAIC0yMDA5LDYgKzIzNTcsMTkgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCisgICAgdm9p
ZCBtb3ZlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgaWYgKHNyYyAhPSBkZXN0IHx8IG1fZml4ZWRXaWR0aCkKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLm1vdmQoZGVzdCwgc3JjKTsKKyAgICB9CisKKyAgICB2b2lkIHN3YXBEb3VibGUo
RlBSZWdpc3RlcklEIGZyMSwgRlBSZWdpc3RlcklEIGZyMikKKyAgICB7CisgICAgICAgIG1vdmVE
b3VibGUoZnIxLCBmcFRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1vdmVEb3VibGUoZnIyLCBmcjEp
OworICAgICAgICBtb3ZlRG91YmxlKGZwVGVtcFJlZ2lzdGVyLCBmcjIpOworICAgIH0KKwogICAg
IHZvaWQgYWRkRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkZChkZXN0LCBkZXN0LCBzcmMpOwpAQCAtMjAzNiw2
ICsyMzk3LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3ViZChkZXN0LCBkZXN0
LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgc3ViRG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQ
UmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuc3ViZChkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCBzdWJEb3VibGUo
QWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbG9hZERvdWJs
ZShzcmMsIGZwVGVtcFJlZ2lzdGVyKTsKQEAgLTIwNTMsMTEgKzI0MTksMzIgQEAgcHVibGljOgog
ICAgICAgICBtX2Fzc2VtYmxlci5tdWxkKGRlc3QsIGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKICAg
ICB9CiAKKyAgICB2b2lkIG11bERvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQg
b3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm11bGQo
ZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgZGl2RG91YmxlKEZQUmVnaXN0ZXJJ
RCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuZGl2
ZChkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgZGl2RG91YmxlKEZQUmVnaXN0
ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuZGl2ZChkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCisgICAgdm9p
ZCBkaXZEb3VibGUoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgbG9hZERvdWJsZShzcmMsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIu
ZGl2ZChkZXN0LCBkZXN0LCBmcFRlbXBSZWdpc3Rlcik7CisgICAgfQorCisgICAgdm9pZCBuZWdh
dGVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5uZWdkKGRlc3QsIHNyYyk7CisgICAgfQorCiAgICAgdm9pZCBjb252
ZXJ0SW50MzJUb0RvdWJsZShSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewogICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKHNyYywgZnBUZW1wUmVnaXN0ZXIpOwpAQCAtMjEx
Nyw2ICsyNTA0LDggQEAgcHVibGljOgogCiAgICAgSnVtcCBicmFuY2hFcXVhbChSZWdpc3RlcklE
IHJzLCBSZWdpc3RlcklEIHJ0KQogICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwogICAgICAgICBtX2Fzc2VtYmxlci5hcHBlbmRKdW1w
KCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmJlcShycywgcnQsIDApOwogICAgICAgICBtX2Fzc2Vt
Ymxlci5ub3AoKTsKQEAgLTIxMjYsNiArMjUxNSw4IEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJh
bmNoTm90RXF1YWwoUmVnaXN0ZXJJRCBycywgUmVnaXN0ZXJJRCBydCkKICAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICAgICAg
bV9hc3NlbWJsZXIuYXBwZW5kSnVtcCgpOwogICAgICAgICBtX2Fzc2VtYmxlci5ibmUocnMsIHJ0
LCAwKTsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CkBAIC0yMTkyLDExICsyNTgzLDMzIEBA
IHB1YmxpYzoKICAgICAvLyBJZiB0aGUgcmVzdWx0IGlzIG5vdCByZXByZXNlbnRhYmxlIGFzIGEg
MzIgYml0IHZhbHVlLCBicmFuY2guCiAgICAgLy8gTWF5IGFsc28gYnJhbmNoIGZvciBzb21lIHZh
bHVlcyB0aGF0IGFyZSByZXByZXNlbnRhYmxlIGluIDMyIGJpdHMKICAgICAvLyAoc3BlY2lmaWNh
bGx5LCBpbiB0aGlzIGNhc2UsIElOVF9NQVggMHg3ZmZmZmZmZikuCi0gICAgSnVtcCBicmFuY2hU
cnVuY2F0ZURvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIGVudW0gQnJhbmNoVHJ1bmNhdGVUeXBlIHsgQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCwgQnJh
bmNoSWZUcnVuY2F0ZVN1Y2Nlc3NmdWwgfTsKKyAgICBKdW1wIGJyYW5jaFRydW5jYXRlRG91Ymxl
VG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QsIEJyYW5jaFRydW5jYXRl
VHlwZSBicmFuY2hUeXBlID0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLnRydW5jd2QoZnBUZW1wUmVnaXN0ZXIsIHNyYyk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLm1mYzEoZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNo
MzIoYnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRydW5jYXRlRmFpbGVkID8gRXF1YWwgOiBOb3RFcXVh
bCwgZGVzdCwgVHJ1c3RlZEltbTMyKDB4N2ZmZmZmZmYpKTsKKyAgICB9CisKKyAgICBKdW1wIGJy
YW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0LCBCcmFuY2hUcnVuY2F0ZVR5cGUgYnJhbmNoVHlwZSA9IEJyYW5jaElmVHJ1bmNhdGVGYWls
ZWQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci50cnVuY3dkKGZwVGVtcFJlZ2lzdGVyLCBz
cmMpOworICAgICAgICBtX2Fzc2VtYmxlci5tZmMxKGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaDMyKGJyYW5jaFR5cGUgPT0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxl
ZCA/IEVxdWFsIDogTm90RXF1YWwsIGRlc3QsIFRydXN0ZWRJbW0zMigwKSk7CisgICAgfQorCisg
ICAgLy8gUmVzdWx0IGlzIHVuZGVmaW5lZCBpZiB0aGUgdmFsdWUgaXMgb3V0c2lkZSBvZiB0aGUg
aW50ZWdlciByYW5nZS4KKyAgICB2b2lkIHRydW5jYXRlRG91YmxlVG9JbnQzMihGUFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci50cnVu
Y3dkKGZwVGVtcFJlZ2lzdGVyLCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci5tZmMxKGRlc3Qs
IGZwVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICAvLyBSZXN1bHQgaXMgdW5kZWZpbmVkIGlm
IHNyYyA+IDJeMzEKKyAgICB2b2lkIHRydW5jYXRlRG91YmxlVG9VaW50MzIoRlBSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIudHJ1bmN3
ZChmcFRlbXBSZWdpc3Rlciwgc3JjKTsKICAgICAgICAgbV9hc3NlbWJsZXIubWZjMShkZXN0LCBm
cFRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBicmFuY2gzMihFcXVhbCwgZGVzdCwgVHJ1
c3RlZEltbTMyKDB4N2ZmZmZmZmYpKTsKICAgICB9CiAKICAgICAvLyBDb252ZXJ0ICdzcmMnIHRv
IGFuIGludGVnZXIsIGFuZCBwbGFjZXMgdGhlIHJlc3VsdGluZyAnZGVzdCcuCkBAIC0yMjE4LDI4
ICsyNjMxLDQzIEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoRG91YmxlTm9uWmVybyhGUFJl
Z2lzdGVySUQgcmVnLCBGUFJlZ2lzdGVySUQgc2NyYXRjaCkKICAgICB7Ci0jaWYgV1RGX01JUFNf
SVNBX1JFVigyKSAmJiBXVEZfTUlQU19GUDY0Ci0gICAgICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQ
U1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm10aGMxKE1J
UFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0Y2gpOwotI2Vsc2UKLSAgICAgICAgbV9hc3NlbWJsZXIu
bXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzY3JhdGNoKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
bXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBGUFJlZ2lzdGVySUQoc2NyYXRjaCArIDEpKTsKLSNl
bmRpZgorICAgICAgICBtX2Fzc2VtYmxlci52bW92KHNjcmF0Y2gsIE1JUFNSZWdpc3RlcnM6Onpl
cm8sIE1JUFNSZWdpc3RlcnM6Onplcm8pOwogICAgICAgICByZXR1cm4gYnJhbmNoRG91YmxlKERv
dWJsZU5vdEVxdWFsLCByZWcsIHNjcmF0Y2gpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoRG91
YmxlWmVyb09yTmFOKEZQUmVnaXN0ZXJJRCByZWcsIEZQUmVnaXN0ZXJJRCBzY3JhdGNoKQogICAg
IHsKLSNpZiBXVEZfTUlQU19JU0FfUkVWKDIpICYmIFdURl9NSVBTX0ZQNjQKLSAgICAgICAgbV9h
c3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzY3JhdGNoKTsKLSAgICAgICAgbV9h
c3NlbWJsZXIubXRoYzEoTUlQU1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7Ci0jZWxzZQotICAg
ICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0Y2gpOwotICAg
ICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIEZQUmVnaXN0ZXJJRChz
Y3JhdGNoICsgMSkpOwotI2VuZGlmCisgICAgICAgIG1fYXNzZW1ibGVyLnZtb3Yoc2NyYXRjaCwg
TUlQU1JlZ2lzdGVyczo6emVybywgTUlQU1JlZ2lzdGVyczo6emVybyk7CiAgICAgICAgIHJldHVy
biBicmFuY2hEb3VibGUoRG91YmxlRXF1YWxPclVub3JkZXJlZCwgcmVnLCBzY3JhdGNoKTsKICAg
ICB9CiAKKyAgICAvLyBJbnZlcnQgYSByZWxhdGlvbmFsIGNvbmRpdGlvbiwgZS5nLiA9PSBiZWNv
bWVzICE9LCA8IGJlY29tZXMgPj0sIGV0Yy4KKyAgICBzdGF0aWMgUmVsYXRpb25hbENvbmRpdGlv
biBpbnZlcnQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQorICAgIHsKKyAgICAgICAgUmVsYXRp
b25hbENvbmRpdGlvbiByOworICAgICAgICBpZiAoY29uZCA9PSBFcXVhbCkKKyAgICAgICAgICAg
IHIgPSBOb3RFcXVhbDsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBOb3RFcXVhbCkKKyAgICAg
ICAgICAgIHIgPSBFcXVhbDsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBBYm92ZSkKKyAgICAg
ICAgICAgIHIgPSBCZWxvd09yRXF1YWw7CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gQWJvdmVP
ckVxdWFsKQorICAgICAgICAgICAgciA9IEJlbG93OworICAgICAgICBlbHNlIGlmIChjb25kID09
IEJlbG93KQorICAgICAgICAgICAgciA9IEFib3ZlT3JFcXVhbDsKKyAgICAgICAgZWxzZSBpZiAo
Y29uZCA9PSBCZWxvd09yRXF1YWwpCisgICAgICAgICAgICByID0gQWJvdmU7CisgICAgICAgIGVs
c2UgaWYgKGNvbmQgPT0gR3JlYXRlclRoYW4pCisgICAgICAgICAgICByID0gTGVzc1RoYW5PckVx
dWFsOworICAgICAgICBlbHNlIGlmIChjb25kID09IEdyZWF0ZXJUaGFuT3JFcXVhbCkKKyAgICAg
ICAgICAgIHIgPSBMZXNzVGhhbjsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBMZXNzVGhhbikK
KyAgICAgICAgICAgIHIgPSBHcmVhdGVyVGhhbk9yRXF1YWw7CisgICAgICAgIGVsc2UgaWYgKGNv
bmQgPT0gTGVzc1RoYW5PckVxdWFsKQorICAgICAgICAgICAgciA9IEdyZWF0ZXJUaGFuOworICAg
ICAgICByZXR1cm4gcjsKKyAgICB9CisKICAgICB2b2lkIG5vcCgpCiAgICAgewogICAgICAgICBt
X2Fzc2VtYmxlci5ub3AoKTsKQEAgLTIyNTIsMTIgKzI2ODAsMTIgQEAgcHVibGljOgogCiAgICAg
c3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2NhdGlvbkxhYmVsIGluc3RydWN0aW9u
U3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9uKQogICAgIHsKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIE1JUFNBc3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVt
cChpbnN0cnVjdGlvblN0YXJ0LmRhdGFMb2NhdGlvbigpLCBkZXN0aW5hdGlvbi5kYXRhTG9jYXRp
b24oKSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2Vt
ZW50U2l6ZSgpCiAgICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
TUlQU0Fzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpOwogICAgICAgICByZXR1cm4g
MDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNz
ZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVs
cGVycy5oCmluZGV4IGZhMGY1ZTAuLjU3M2Q4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaApAQCAtOTMsNiArOTMsMjMgQEAgcHVibGljOgog
ICAgIH0KICNlbmRpZgogCisjaWYgQ1BVKE1JUFMpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHBy
ZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChSZWdpc3RlcklEIHJlZykKKyAgICB7CisgICAg
ICAgIG1vdmUocmV0dXJuQWRkcmVzc1JlZ2lzdGVyLCByZWcpOworICAgIH0KKworICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihSZWdpc3RlcklE
IHJlZykKKyAgICB7CisgICAgICAgIG1vdmUocmVnLCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOwor
ICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9y
ZVJldHVybihBZGRyZXNzIGFkZHJlc3MpCisgICAgeworICAgICAgICBsb2FkUHRyKGFkZHJlc3Ms
IHJldHVybkFkZHJlc3NSZWdpc3Rlcik7CisgICAgfQorI2VuZGlmCisKICAgICB2b2lkIGVtaXRH
ZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVu
dHJ5LCBHUFJSZWcgdG8pCiAgICAgewogICAgICAgICBsb2FkUHRyKEFkZHJlc3MoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5ICogc2l6ZW9mKFJlZ2lzdGVyKSksIHRvKTsKQEAgLTE5
Myw3ICsyMTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihzY3JhdGNo
QnVmZmVyLT5hY3RpdmVMZW5ndGhQdHIoKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgc3Rv
cmVQdHIoVHJ1c3RlZEltbVB0cihzY3JhdGNoU2l6ZSksIEdQUkluZm86OnJlZ1QwKTsKIAotI2lm
IENQVShYODZfNjQpIHx8IENQVShBUk0pCisjaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTSkgfHwg
Q1BVKE1JUFMpCiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihidWZmZXIpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjIpOwogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoYXJndW1lbnQpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpOwogICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ0NhbGxIZWxwZXJzLmgKaW5kZXggOGFkZGUwNS4uM2Q5OWY2ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCkBAIC01NzYsNiArNTc2LDM5IEBAIHB1
YmxpYzoKICAgICAgICAgcG9rZShHUFJJbmZvOjpub25BcmdHUFIwKTsKICAgICB9CiAjZW5kaWYg
Ly8gQ1BVKEFSTV9IQVJERlApCisjZWxpZiBDUFUoTUlQUykKKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEpCisgICAgeworICAgICAgICBtb3ZlRG91Ymxl
KGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBhcmcxLCBGUFJSZWcgYXJnMikKKyAgICB7Cisg
ICAgICAgIGlmIChhcmcyICE9IEZQUkluZm86OmFyZ3VtZW50RlBSMCkgeworICAgICAgICAgICAg
bW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVudEZQUjApOworICAgICAgICAgICAgbW92
ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1bWVudEZQUjEpOworICAgICAgICB9IGVsc2UgaWYg
KGFyZzEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIxKSB7CisgICAgICAgICAgICBtb3ZlRG91Ymxl
KGFyZzIsIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFy
ZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAvLyBTd2FwIGFyZzEsIGFyZzIuCisgICAgICAgICAgICBzd2FwRG91YmxlKEZQUkluZm86OmFy
Z3VtZW50RlBSMCwgRlBSSW5mbzo6YXJndW1lbnRGUFIxKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRlBSUmVn
IGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgYXNzZW1ibGVyKCkudm1vdihHUFJJ
bmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFyZ3VtZW50R1BSMywgYXJnMSk7CisgICAgICAg
IG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CisgICAgICAgIHBva2UoYXJnMiwgNCk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEZQ
UlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgc2V0dXBTdHViQXJndW1lbnRzKGFyZzEsIGFyZzIp
OworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApOworICAgICAgICBwb2tlKGFyZzMsIDQpOworICAgIH0KICNlbHNlCiAjZXJyb3Ig
IkRGRyBKSVQgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtLiIKICNlbmRpZgpAQCAtODAz
LDExOSArODM2LDEyNiBAQCBwdWJsaWM6CiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgc3VpdGFi
bGUgZm9yIGFueSBjYWxsaW5nIGNvbnZlbnRpb24gdGhhdCBwcm92aWRlcyBmb3IKICAgICAvLyBl
eGFjdGx5IDQgYXJndW1lbnQgcmVnaXN0ZXJzLCBlLmcuIEFSTXY3LgogI2lmIE5VTUJFUl9PRl9B
UkdVTUVOVF9SRUdJU1RFUlMgPT0gNAorCisjaWYgQ1BVKE1JUFMpCisjZGVmaW5lIFBPS0VfQVJH
VU1FTlRfT0ZGU0VUIDQKKyNlbHNlCisjZGVmaW5lIFBPS0VfQVJHVU1FTlRfT0ZGU0VUIDAKKyNl
bmRpZgorCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKICAg
ICB7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVO
VF9PRkZTRVQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJn
MiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVz
dGVkSW1tMzIgYXJnNCkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2Uo
YXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0
ciBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewotICAgICAgICBw
b2tlKGFyZzQpOworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAg
ICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAg
IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
R1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJl
ZyBhcmc0LCBHUFJSZWcgYXJnNSkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNSwgMSk7Ci0gICAg
ICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2UoYXJnNSwgUE9LRV9BUkdVTUVOVF9PRkZTRVQg
KyAxKTsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CiAgICAgICAg
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAK
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIFRydXN0ZWRJbW0zMiBhcmc0
KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FS
R1VNRU5UX09GRlNFVCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcx
LCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwg
R1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAg
ICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CiAgICAgICAgIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBH
UFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkKICAgICB7Ci0gICAg
ICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQp
OwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7
CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwg
R1BSUmVnIGFyZzUpCiAgICAgewotICAgICAgICBwb2tlKGFyZzUsIDEpOwotICAgICAgICBwb2tl
KGFyZzQpOworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7Cisg
ICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwogICAgICAgICBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIg
YXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKICAgICB7Ci0gICAg
ICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQp
OwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7
CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVk
SW1tUHRyIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlKGFy
ZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBh
cmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgVHJ1c3RlZEltbVB0ciBhcmc0KQogICAgIHsKLSAgICAg
ICAgcG9rZShhcmc0KTsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7
CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsK
ICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQ
UlJlZyBhcmc0KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgcG9rZShhcmc0
LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1
c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKICAgICB7Ci0gICAgICAg
IHBva2UoYXJnNSwgMSk7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2UoYXJnNSwg
UE9LRV9BUkdVTUVOVF9PRkZTRVQgKyAxKTsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VN
RU5UX09GRlNFVCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFy
ZzMsIEdQUlJlZyBhcmc0LCBUcnVzdGVkSW1tMzIgYXJnNSkKICAgICB7Ci0gICAgICAgIHBva2Uo
YXJnNSwgMSk7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2UoYXJnNSwgUE9LRV9B
UkdVTUVOVF9PRkZTRVQgKyAxKTsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09G
RlNFVCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBh
cmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQ
UlJlZyBhcmc0LCBUcnVzdGVkSW1tUHRyIGFyZzUpCiAgICAgewotICAgICAgICBwb2tlKGFyZzUs
IDEpOwotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1F
TlRfT0ZGU0VUICsgMSk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQp
OwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7
CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBUcnVzdGVk
SW1tMzIgYXJnNCwgVHJ1c3RlZEltbTMyIGFyZzUpCiAgICAgewotICAgICAgICBwb2tlKGFyZzUs
IDEpOwotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1F
TlRfT0ZGU0VUICsgMSk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQp
OwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7
CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIFRydXN0ZWRJbW0zMiBh
cmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCiAgICAgewotICAgICAgICBwb2tlKGFyZzUs
IDEpOwotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1F
TlRfT0ZGU0VUICsgMSk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQp
OwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7
CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcg
YXJnNCwgR1BSUmVnIGFyZzUpCiAgICAgewotICAgICAgICBwb2tlKGFyZzUsIDEpOwotICAgICAg
ICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsg
MSk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwogICAgICAgICBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oCmluZGV4IGQ2YTAzOGEuLjZmOTY4ZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oCkBAIC0xNjQsNiArMTY0LDc0
IEBAIHB1YmxpYzoKIAogI2VuZGlmCiAKKyNpZiBDUFUoTUlQUykKKworY2xhc3MgRlBSSW5mbyB7
CitwdWJsaWM6CisgICAgdHlwZWRlZiBGUFJSZWcgUmVnaXN0ZXJUeXBlOworICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVycyA9IDY7CisKKyAgICAvLyBUZW1wb3Jhcnkg
cmVnaXN0ZXJzLgorICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMCA9IE1JUFNSZWdpc3Rl
cnM6OmYwOworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMSA9IE1JUFNSZWdpc3RlcnM6
OmY0OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMiA9IE1JUFNSZWdpc3RlcnM6OmY2
OworICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUMyA9IE1JUFNSZWdpc3RlcnM6OmY4Owor
ICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgZnBSZWdUNCA9IE1JUFNSZWdpc3RlcnM6OmYxMDsKKyAg
ICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDUgPSBNSVBTUmVnaXN0ZXJzOjpmMTg7CisKKyAg
ICBzdGF0aWMgY29uc3QgRlBSUmVnIHJldHVyblZhbHVlRlBSID0gTUlQU1JlZ2lzdGVyczo6ZjA7
CisKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMCA9IE1JUFNSZWdpc3RlcnM6
OmYxMjsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGFyZ3VtZW50RlBSMSA9IE1JUFNSZWdpc3Rl
cnM6OmYxNDsKKworICAgIHN0YXRpYyBGUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkK
KyAgICB7CisgICAgICAgIHN0YXRpYyBjb25zdCBGUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1i
ZXJPZlJlZ2lzdGVyc10gPSB7CisgICAgICAgICAgICBmcFJlZ1QwLCBmcFJlZ1QxLCBmcFJlZ1Qy
LCBmcFJlZ1QzLCBmcFJlZ1Q0LCBmcFJlZ1Q1IH07CisKKyAgICAgICAgQVNTRVJUKGluZGV4IDwg
bnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAgICByZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRl
eF07CisgICAgfQorCisgICAgc3RhdGljIHVuc2lnbmVkIHRvSW5kZXgoRlBSUmVnIHJlZykKKyAg
ICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7CisgICAgICAgIEFTU0VS
VChyZWcgPCAyMCk7CisgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbmRleEZvclJlZ2lz
dGVyWzIwXSA9IHsKKyAgICAgICAgICAgIDAsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJ
bnZhbGlkSW5kZXgsCisgICAgICAgICAgICAxLCBJbnZhbGlkSW5kZXgsIDIsIEludmFsaWRJbmRl
eCwKKyAgICAgICAgICAgIDMsIEludmFsaWRJbmRleCwgNCwgSW52YWxpZEluZGV4LAorICAgICAg
ICAgICAgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZElu
ZGV4LAorICAgICAgICAgICAgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIDUsIEludmFsaWRJ
bmRleCwKKyAgICAgICAgfTsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gaW5kZXhGb3JSZWdp
c3RlcltyZWddOworICAgICAgICBBU1NFUlQocmVzdWx0ICE9IEludmFsaWRJbmRleCk7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVn
TmFtZShGUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkRlBS
UmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDMyKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNo
YXIqIG5hbWVGb3JSZWdpc3RlclszMl0gPSB7CisgICAgICAgICAgICAiZjAiLCAiZjEiLCAiZjIi
LCAiZjMiLAorICAgICAgICAgICAgImY0IiwgImY1IiwgImY2IiwgImY3IiwKKyAgICAgICAgICAg
ICJmOCIsICJmOSIsICJmMTAiLCAiZjExIiwKKyAgICAgICAgICAgICJmMTIiLCAiZjEzIiwgImYx
NCIsICJmMTUiCisgICAgICAgICAgICAiZjE2IiwgImYxNyIsICJmMTgiLCAiZjE5IgorICAgICAg
ICAgICAgImYyMCIsICJmMjEiLCAiZjIyIiwgImYyMyIKKyAgICAgICAgICAgICJmMjQiLCAiZjI1
IiwgImYyNiIsICJmMjciCisgICAgICAgICAgICAiZjI4IiwgImYyOSIsICJmMzAiLCAiZjMxIgor
ICAgICAgICB9OworICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107CisgICAgfQor
cHJpdmF0ZToKKworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZm
ZmZmZmZmOworfTsKKworI2VuZGlmCisKIHR5cGVkZWYgUmVnaXN0ZXJCYW5rPEZQUkluZm8+Ojpp
dGVyYXRvciBmcHJfaXRlcmF0b3I7CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgKaW5kZXggM2QwNzU1Ni4uYWE2MzRjZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgKQEAgLTQ2MSw2ICs0NjEsNzMgQEAg
cHJpdmF0ZToKIAogI2VuZGlmCiAKKyNpZiBDUFUoTUlQUykKKyNkZWZpbmUgTlVNQkVSX09GX0FS
R1VNRU5UX1JFR0lTVEVSUyA0CisKK2NsYXNzIEdQUkluZm8geworcHVibGljOgorICAgIHR5cGVk
ZWYgR1BSUmVnIFJlZ2lzdGVyVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVy
T2ZSZWdpc3RlcnMgPSA2OworCisgICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KKyAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIHJlZ1QwID0gTUlQU1JlZ2lzdGVyczo6djA7CisgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyByZWdUMSA9IE1JUFNSZWdpc3RlcnM6OnYxOworICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgcmVnVDIgPSBNSVBTUmVnaXN0ZXJzOjp0NDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IHJlZ1QzID0gTUlQU1JlZ2lzdGVyczo6dDU7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdU
NCA9IE1JUFNSZWdpc3RlcnM6OnQ2OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDUgPSBN
SVBTUmVnaXN0ZXJzOjp0NzsKKyAgICAvLyBUaGVzZSByZWdpc3RlcnMgbWF0Y2ggdGhlIGJhc2Vs
aW5lIEpJVC4KKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0g
cmVnVDA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlcjIgPSBy
ZWdUMTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhbGxGcmFtZVJlZ2lzdGVyID0gTUlQU1Jl
Z2lzdGVyczo6czA7CisgICAgLy8gVGhlc2UgY29uc3RhbnRzIHByb3ZpZGUgdGhlIG5hbWVzIGZv
ciB0aGUgZ2VuZXJhbCBwdXJwb3NlIGFyZ3VtZW50ICYgcmV0dXJuIHZhbHVlIHJlZ2lzdGVycy4K
KyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMCA9IE1JUFNSZWdpc3RlcnM6OmEw
OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIxID0gTUlQU1JlZ2lzdGVyczo6
YTE7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjIgPSBNSVBTUmVnaXN0ZXJz
OjphMjsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMyA9IE1JUFNSZWdpc3Rl
cnM6OmEzOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMCA9IHJlZ1QyOworICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uQXJnR1BSMSA9IHJlZ1QzOworICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgbm9uQXJnR1BSMiA9IHJlZ1Q0OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0
dXJuVmFsdWVHUFIgPSByZWdUMDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVl
R1BSMiA9IHJlZ1QxOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgbm9uUHJlc2VydmVkTm9uUmV0
dXJuR1BSID0gcmVnVDU7CisKKyAgICBzdGF0aWMgR1BSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQg
aW5kZXgpCisgICAgeworICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlJlZ2lzdGVycyk7
CisgICAgICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnaXN0ZXJGb3JJbmRleFtudW1iZXJPZlJl
Z2lzdGVyc10gPSB7IHJlZ1QwLCByZWdUMSwgcmVnVDIsIHJlZ1QzLCByZWdUNCwgcmVnVDUgfTsK
KyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOworICAgIH0KKworICAgIHN0
YXRpYyB1bnNpZ25lZCB0b0luZGV4KEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQo
cmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwgMTYpOworICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3RlclsxNl0gPSB7IEludmFsaWRJ
bmRleCwgSW52YWxpZEluZGV4LCAwLCAxLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52
YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZh
bGlkSW5kZXgsIEludmFsaWRJbmRleCwgMiwgMywgNCwgNSB9OworICAgICAgICB1bnNpZ25lZCBy
ZXN1bHQgPSBpbmRleEZvclJlZ2lzdGVyW3JlZ107CisgICAgICAgIEFTU0VSVChyZXN1bHQgIT0g
SW52YWxpZEluZGV4KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0
aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEdQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NF
UlQocmVnICE9IEludmFsaWRHUFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwgMTYpOworICAg
ICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZvclJlZ2lzdGVyWzE2XSA9IHsKKyAgICAgICAg
ICAgICJ6ZXJvIiwgImF0IiwgInYwIiwgInYxIiwKKyAgICAgICAgICAgICJhMCIsICJhMSIsICJh
MiIsICJhMyIsCisgICAgICAgICAgICAidDAiLCAidDEiLCAidDIiLCAidDMiLAorICAgICAgICAg
ICAgInQ0IiwgInQ1IiwgInQ2IiwgInQ3IgorICAgICAgICB9OworICAgICAgICByZXR1cm4gbmFt
ZUZvclJlZ2lzdGVyW3JlZ107CisgICAgfQorcHJpdmF0ZToKKworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOworfTsKKworI2VuZGlmCisKIHR5cGVk
ZWYgUmVnaXN0ZXJCYW5rPEdQUkluZm8+OjppdGVyYXRvciBncHJfaXRlcmF0b3I7CiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaAppbmRleCA2M2UzNTIwLi5iMmVjYmFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xMjc0LDcgKzEyNzQsNyBAQCBw
dWJsaWM6CiAKIC8vIEVuY29kZWRKU1ZhbHVlIGluIEpTVkFMVUUzMl82NCBpcyBhIDY0LWJpdCBp
bnRlZ2VyLiBXaGVuIGJlaW5nIGNvbXBpbGVkIGluIEFSTSBFQUJJLCBpdCBtdXN0IGJlIGFsaWdu
ZWQgZXZlbi1udW1iZXJlZCByZWdpc3RlciAocjAsIHIyIG9yIFtzcF0pLgogLy8gVG8gYXZvaWQg
YXNzZW1ibGllcyBmcm9tIHVzaW5nIHdyb25nIHJlZ2lzdGVycywgbGV0J3Mgb2NjdXB5IHIxIG9y
IHIzIHdpdGggYSBkdW1teSBhcmd1bWVudCB3aGVuIG5lY2Vzc2FyeS4KLSNpZiBDT01QSUxFUl9T
VVBQT1JUUyhFQUJJKSAmJiBDUFUoQVJNKQorI2lmIChDT01QSUxFUl9TVVBQT1JUUyhFQUJJKSAm
JiBDUFUoQVJNKSkgfHwgQ1BVKE1JUFMpCiAjZGVmaW5lIEVBQklfMzJCSVRfRFVNTVlfQVJHICAg
ICAgVHJ1c3RlZEltbTMyKDApLAogI2Vsc2UKICNkZWZpbmUgRUFCSV8zMkJJVF9EVU1NWV9BUkcK
QEAgLTE3MTksNyArMTcxOSw3IEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKICAgICAKLSNpZiAh
ZGVmaW5lZChOREVCVUcpICYmICFDUFUoQVJNKQorI2lmICFkZWZpbmVkKE5ERUJVRykgJiYgIUNQ
VShBUk0pICYmICFDUFUoTUlQUykKICAgICB2b2lkIHByZXBhcmVGb3JFeHRlcm5hbENhbGwoKQog
ICAgIHsKICAgICAgICAgLy8gV2UncmUgYWJvdXQgdG8gY2FsbCBvdXQgdG8gYSAibmF0aXZlIiBo
ZWxwZXIgZnVuY3Rpb24uIFRoZSBoZWxwZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJ
bnRlcmZhY2VKSVQuaAppbmRleCAyZjRiNGUzLi5hMjhmMzUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCkBAIC0xMjUsNiArMTI1LDEwIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJRCBjYWNoZWRSZXN1bHRSZWdp
c3RlciA9IE1JUFNSZWdpc3RlcnM6OnYwOwogICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJ
RCBmaXJzdEFyZ3VtZW50UmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjphMDsKICAgICAgICAgCisj
aWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgICAgICBzdGF0aWMgY29uc3QgUmVnaXN0ZXJJ
RCBidWNrZXRDb3VudGVyUmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjpzMzsKKyNlbmRpZgorCiAg
ICAgICAgIC8vIHJlZ1QwIG11c3QgYmUgdjAgZm9yIHJldHVybmluZyBhIDMyLWJpdCB2YWx1ZS4K
ICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgcmVnVDAgPSBNSVBTUmVnaXN0ZXJzOjp2
MDsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5oCmluZGV4IDNiMDJkYzkuLjdhNjgwODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5oCkBAIC0xMzQsMTQgKzEzNCwxOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0
aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHNpemVfdCBidWZmZXJTaXplKSB7IHJldHVybiBzaXpl
b2Yoc2l6ZV90KSArIGJ1ZmZlclNpemU7IH0KKyAgICAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0
aW9uU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkgeyByZXR1cm4gc2l6ZW9mKFNjcmF0Y2hCdWZmZXIp
ICsgYnVmZmVyU2l6ZTsgfQogICAgICAgICB2b2lkIHNldEFjdGl2ZUxlbmd0aChzaXplX3QgYWN0
aXZlTGVuZ3RoKSB7IG1fYWN0aXZlTGVuZ3RoID0gYWN0aXZlTGVuZ3RoOyB9CiAgICAgICAgIHNp
emVfdCBhY3RpdmVMZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2FjdGl2ZUxlbmd0aDsgfTsKICAg
ICAgICAgc2l6ZV90KiBhY3RpdmVMZW5ndGhQdHIoKSB7IHJldHVybiAmbV9hY3RpdmVMZW5ndGg7
IH07CiAgICAgICAgIHZvaWQqIGRhdGFCdWZmZXIoKSB7IHJldHVybiBtX2J1ZmZlcjsgfQogCiAg
ICAgICAgIHNpemVfdCBtX2FjdGl2ZUxlbmd0aDsKKyNpZiBDUFUoTUlQUykgJiYgKGRlZmluZWQg
V1RGX01JUFNfQVJDSF9SRVYgJiYgV1RGX01JUFNfQVJDSF9SRVYgPT0gMikKKyAgICAgICAgdm9p
ZCogbV9idWZmZXJbMF0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCg4KSkpOworI2Vsc2UKICAgICAg
ICAgdm9pZCogbV9idWZmZXJbMF07CisjZW5kaWYKICAgICB9OwogI2lmIENPTVBJTEVSKE1TVkMp
CiAjcHJhZ21hIHdhcm5pbmcocG9wKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAwMjE4NzIwLi5lZDY1YWE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDEzLTAxLTIxICBCYWxhenMgS2lsdmFkeSAgPGtpbHZhZHliQGhvbWVqaW5u
aS5jb20+CisKKyAgICAgICAgTUlQUyBERkcgaW1wbGVtZW50YXRpb24uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDEzMjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBERkcgaW1wbGVtZW50YXRpb24gZm9y
IE1JUFMuCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKwogMjAxMy0wMS0xOCAgTGFzemxv
IEdvbWJvcyAgPGwuZ29tYm9zQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bm5lY2Vz
c2FyeSBQTEFURk9STSgpIHRlc3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bS5oIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAppbmRleCA1ZWZlNDFjLi42ZmZiNmMxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L1BsYXRmb3JtLmgKQEAgLTk0NCw2ICs5NDQsMTAgQEAKICNpZiBDUFUoQVJNX1RSQURJVElPTkFM
KQogI2RlZmluZSBFTkFCTEVfREZHX0pJVCAxCiAjZW5kaWYKKy8qIEVuYWJsZSB0aGUgREZHIEpJ
VCBvbiBNSVBTLiAqLworI2lmIENQVShNSVBTKQorI2RlZmluZSBFTkFCTEVfREZHX0pJVCAxCisj
ZW5kaWYKICNlbmRpZgogCiAvKiBJZiB0aGUgaml0IGlzIG5vdCBhdmFpbGFibGUsIGVuYWJsZSB0
aGUgTExJbnQgQyBMb29wOiAqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185217</attachid>
            <date>2013-01-29 04:38:13 -0800</date>
            <delta_ts>2013-02-11 11:07:10 -0800</delta_ts>
            <desc>DFG for MIPS - arg. offset with inline</desc>
            <filename>dfg-i.diff</filename>
            <type>text/plain</type>
            <size>52474</size>
            <attacher name="Balazs Kilvady">kilvadyb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDg3NzAxZjQuLjczYTNiYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDEzLTAxLTI5ICBCYWxhenMgS2lsdmFk
eSAgPGtpbHZhZHliQGhvbWVqaW5uaS5jb20+CisKKyAgICAgICAgTUlQUyBERkcgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
RkcgaW1wbGVtZW50YXRpb24gZm9yIE1JUFMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTUlQU0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpNSVBTQXNzZW1ibGVyKToK
KyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6c2xsdik6CisgICAgICAgIChKU0M6Ok1JUFNB
c3NlbWJsZXI6Om1vdmQpOgorICAgICAgICAoTUlQU0Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6
Ok1JUFNBc3NlbWJsZXI6Om5lZ2QpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJl
bEZvcldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJlbCk6Cisg
ICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6OnZtb3YpOgorICAgICAgICAoSlNDOjpNSVBTQXNz
ZW1ibGVyOjpsaW5rRGlyZWN0SnVtcCk6CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6Om1h
eEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpyZXZl
cnRKdW1wVG9Nb3ZlKToKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhK
dW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKE1h
Y3JvQXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBva2UpOgorICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJNSVBTOjphZGQzMik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlck1JUFMpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmFuZDMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJNSVBTOjpsc2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyTUlQUzo6bXVsMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om9yMzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJzaGlmdDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjp1cnNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OnN1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
Ojp4b3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6c3RvcmUzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6anVtcCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoQWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OmJyYW5jaE11bDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
OjpicmFuY2hTdWIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNo
TmVnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmNhbGwpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmxvYWREb3VibGUpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6Om1vdmVEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OnN3YXBEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6
OnN1YkRvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6bXVsRG91Ymxl
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpkaXZEb3VibGUpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om5lZ2F0ZURvdWJsZSk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRXF1YWwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlck1JUFM6OmJyYW5jaE5vdEVxdWFsKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJNSVBTOjpicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OmJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnRydW5jYXRlRG91YmxlVG9JbnQzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6dHJ1bmNhdGVEb3VibGVUb1VpbnQzMik6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlTm9uWmVybyk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlWmVyb09yTmFOKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjppbnZlcnQpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyTUlQUzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogZGZnL0RG
R0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoQXNzZW1ibHlIZWxwZXJzKToKKyAgICAgICAg
KEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybik6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpk
ZWJ1Z0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEND
YWxsSGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3Vt
ZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUpOgorICAgICAgICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6cG9rZUFyZ3Vt
ZW50KToKKyAgICAgICAgKiBkZmcvREZHRlBSSW5mby5oOgorICAgICAgICAoREZHKToKKyAgICAg
ICAgKEZQUkluZm8pOgorICAgICAgICAoSlNDOjpERkc6OkZQUkluZm86OnRvUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpERkc6OkZQUkluZm86OnRvSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6
OkZQUkluZm86OmRlYnVnTmFtZSk6CisgICAgICAgICogZGZnL0RGR0dQUkluZm8uaDoKKyAgICAg
ICAgKERGRyk6CisgICAgICAgIChHUFJJbmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpHUFJJbmZv
Ojp0b1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpHUFJJbmZvOjp0b0luZGV4KToKKyAg
ICAgICAgKEpTQzo6REZHOjpHUFJJbmZvOjpkZWJ1Z05hbWUpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoU3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAqIGpp
dC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAoSlNJbnRlcmZhY2VKSVQpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0M6OlNjcmF0Y2hCdWZmZXI6OmFs
bG9jYXRpb25TaXplKToKKyAgICAgICAgKFNjcmF0Y2hCdWZmZXIpOgorCiAyMDEzLTAxLTI5ICBB
bGxhbiBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5AZGlnaWEuY29tPgogCiAgICAgICAg
IFtRdF0gSW1wbGVtZW50IEluY3JlbWVudGFsU3dlZXBlciBhbmQgSGVhcFRpbWVyCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCmluZGV4IDAyNmY4
N2UuLjdmNTUzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TUlQU0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQ
U0Fzc2VtYmxlci5oCkBAIC0xNTIsNiArMTUyLDggQEAgcHVibGljOgogICAgIHR5cGVkZWYgU2Vn
bWVudGVkVmVjdG9yPEFzc2VtYmxlckxhYmVsLCA2ND4gSnVtcHM7CiAKICAgICBNSVBTQXNzZW1i
bGVyKCkKKyAgICAgICAgOiBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludChJTlRfTUlOKQorICAgICAg
ICAsIG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCiAgICAgewogICAgIH0K
IApAQCAtMzI1LDcgKzMyNyw3IEBAIHB1YmxpYzoKICAgICAgICAgZW1pdEluc3QoMHgwMDAwMDAw
MCB8IChyZCA8PCBPUF9TSF9SRCkgfCAocnQgPDwgT1BfU0hfUlQpIHwgKChzaGFtdCAmIDB4MWYp
IDw8IE9QX1NIX1NIQU1UKSk7CiAgICAgfQogCi0gICAgdm9pZCBzbGx2KFJlZ2lzdGVySUQgcmQs
IFJlZ2lzdGVySUQgcnQsIGludCBycykKKyAgICB2b2lkIHNsbHYoUmVnaXN0ZXJJRCByZCwgUmVn
aXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBycykKICAgICB7CiAgICAgICAgIGVtaXRJbnN0KDB4MDAw
MDAwMDQgfCAocmQgPDwgT1BfU0hfUkQpIHwgKHJ0IDw8IE9QX1NIX1JUKSB8IChycyA8PCBPUF9T
SF9SUykpOwogICAgIH0KQEAgLTUyNyw2ICs1MjksMTYgQEAgcHVibGljOgogICAgICAgICBlbWl0
SW5zdCgweDQ2MjAwMDA0IHwgKGZkIDw8IE9QX1NIX0ZEKSB8IChmcyA8PCBPUF9TSF9GUykpOwog
ICAgIH0KIAorICAgIHZvaWQgbW92ZChGUFJlZ2lzdGVySUQgZmQsIEZQUmVnaXN0ZXJJRCBmcykK
KyAgICB7CisgICAgICAgIGVtaXRJbnN0KDB4NDYyMDAwMDYgfCAoZmQgPDwgT1BfU0hfRkQpIHwg
KGZzIDw8IE9QX1NIX0ZTKSk7CisgICAgfQorCisgICAgdm9pZCBuZWdkKEZQUmVnaXN0ZXJJRCBm
ZCwgRlBSZWdpc3RlcklEIGZzKQorICAgIHsKKyAgICAgICAgZW1pdEluc3QoMHg0NjIwMDAwNyB8
IChmZCA8PCBPUF9TSF9GRCkgfCAoZnMgPDwgT1BfU0hfRlMpKTsKKyAgICB9CisKICAgICB2b2lk
IHRydW5jd2QoRlBSZWdpc3RlcklEIGZkLCBGUFJlZ2lzdGVySUQgZnMpCiAgICAgewogICAgICAg
ICBlbWl0SW5zdCgweDQ2MjAwMDBkIHwgKGZkIDw8IE9QX1NIX0ZEKSB8IChmcyA8PCBPUF9TSF9G
UykpOwpAQCAtNjE5LDkgKzYzMSwyNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2J1ZmZl
ci5sYWJlbCgpOwogICAgIH0KIAorICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsRm9yV2F0Y2hwb2lu
dCgpCisgICAgeworICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2J1ZmZlci5sYWJl
bCgpOworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpICE9IG1f
aW5kZXhPZkxhc3RXYXRjaHBvaW50KQorICAgICAgICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKKyAg
ICAgICAgbV9pbmRleE9mTGFzdFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQ7CisgICAgICAg
IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVt
cFJlcGxhY2VtZW50U2l6ZSgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAg
IEFzc2VtYmxlckxhYmVsIGxhYmVsKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2J1ZmZlci5s
YWJlbCgpOworICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2J1ZmZlci5sYWJlbCgp
OworICAgICAgICB3aGlsZSAoVU5MSUtFTFkoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZz
ZXQpIDwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQpKSB7CisgICAgICAgICAgICBub3Ao
KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IG1fYnVmZmVyLmxhYmVsKCk7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBBc3NlbWJsZXJMYWJlbCBhbGlnbihp
bnQgYWxpZ25tZW50KQpAQCAtNjY0LDE0ICs2OTEsMjQgQEAgcHVibGljOgogICAgIC8vIEFzc2Vt
Ymx5IGhlbHBlcnMgZm9yIG1vdmluZyBkYXRhIGJldHdlZW4gZnAgYW5kIHJlZ2lzdGVycy4KICAg
ICB2b2lkIHZtb3YoUmVnaXN0ZXJJRCByZDEsIFJlZ2lzdGVySUQgcmQyLCBGUFJlZ2lzdGVySUQg
cm4pCiAgICAgeworI2lmIFdURl9NSVBTX0lTQV9SRVYoMikgJiYgV1RGX01JUFNfRlA2NAorICAg
ICAgICBtZmMxKHJkMSwgcm4pOworICAgICAgICBtZmhjMShyZDIsIHJuKTsKKyNlbHNlCiAgICAg
ICAgIG1mYzEocmQxLCBybik7CiAgICAgICAgIG1mYzEocmQyLCBGUFJlZ2lzdGVySUQocm4gKyAx
KSk7CisjZW5kaWYKICAgICB9CiAKICAgICB2b2lkIHZtb3YoRlBSZWdpc3RlcklEIHJkLCBSZWdp
c3RlcklEIHJuMSwgUmVnaXN0ZXJJRCBybjIpCiAgICAgeworI2lmIFdURl9NSVBTX0lTQV9SRVYo
MikgJiYgV1RGX01JUFNfRlA2NAorICAgICAgICBtdGMxKHJuMSwgcmQpOworICAgICAgICBtdGhj
MShybjIsIHJkKTsKKyNlbHNlCiAgICAgICAgIG10YzEocm4xLCByZCk7CiAgICAgICAgIG10YzEo
cm4yLCBGUFJlZ2lzdGVySUQocmQgKyAxKSk7CisjZW5kaWYKICAgICB9CiAKICAgICBzdGF0aWMg
dW5zaWduZWQgZ2V0Q2FsbFJldHVybk9mZnNldChBc3NlbWJsZXJMYWJlbCBjYWxsKQpAQCAtNjg4
LDYgKzcyNSwzNSBAQCBwdWJsaWM6CiAgICAgLy8gd3JpdGFibGUgcmVnaW9uIG9mIG1lbW9yeTsg
dG8gbW9kaWZ5IHRoZSBjb2RlIGluIGFuIGV4ZWN1dGUtb25seSBleGVjdWFibGUKICAgICAvLyBw
b29sIHRoZSAncmVwYXRjaCcgYW5kICdyZWxpbmsnIG1ldGhvZHMgc2hvdWxkIGJlIHVzZWQuCiAK
KyAgICBzdGF0aWMgc2l6ZV90IGxpbmtEaXJlY3RKdW1wKHZvaWQqIGNvZGUsIHZvaWQqIHRvKQor
ICAgIHsKKyAgICAgICAgTUlQU1dvcmQqIGluc24gPSByZWludGVycHJldF9jYXN0PE1JUFNXb3Jk
Kj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oY29kZSkpOworICAgICAgICBzaXplX3Qgb3Bz
ID0gMDsKKyAgICAgICAgaW50MzJfdCBzbG90QWRkciA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50Pihp
bnNuKSArIDQ7CisgICAgICAgIGludDMyX3QgdG9BZGRyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ+
KHRvKTsKKworICAgICAgICBpZiAoKHNsb3RBZGRyICYgMHhmMDAwMDAwMCkgIT0gKHRvQWRkciAm
IDB4ZjAwMDAwMDApKSB7CisgICAgICAgICAgICAvLyBsdWkKKyAgICAgICAgICAgICppbnNuID0g
MHgzYzAwMDAwMCB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SVCkgfCAoKHRvQWRkciA+
PiAxNikgJiAweGZmZmYpOworICAgICAgICAgICAgKytpbnNuOworICAgICAgICAgICAgLy8gb3Jp
CisgICAgICAgICAgICAqaW5zbiA9IDB4MzQwMDAwMDAgfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwg
T1BfU0hfUlQpIHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JTKSB8ICh0b0FkZHIgJiAw
eGZmZmYpOworICAgICAgICAgICAgKytpbnNuOworICAgICAgICAgICAgLy8ganIKKyAgICAgICAg
ICAgICppbnNuID0gMHgwMDAwMDAwOCB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SUyk7
CisgICAgICAgICAgICArK2luc247CisgICAgICAgICAgICBvcHMgPSA0ICogc2l6ZW9mKE1JUFNX
b3JkKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIGoKKyAgICAgICAgICAgICpp
bnNuID0gMHgwODAwMDAwMCB8ICgodG9BZGRyICYgMHgwZmZmZmZmZikgPj4gMik7CisgICAgICAg
ICAgICArK2luc247CisgICAgICAgICAgICBvcHMgPSAyICogc2l6ZW9mKE1JUFNXb3JkKTsKKyAg
ICAgICAgfQorICAgICAgICAvLyBub3AKKyAgICAgICAgKmluc24gPSAweDAwMDAwMDAwOworICAg
ICAgICByZXR1cm4gb3BzOworICAgIH0KKwogICAgIHZvaWQgbGlua0p1bXAoQXNzZW1ibGVyTGFi
ZWwgZnJvbSwgQXNzZW1ibGVyTGFiZWwgdG8pCiAgICAgewogICAgICAgICBBU1NFUlQodG8uaXNT
ZXQoKSk7CkBAIC04MjUsMjkgKzg5MSwzNiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAg
ICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wVG9Nb3ZlKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIFJl
Z2lzdGVySUQgcnQsIGludCBpbW0pCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFj
ZW1lbnRTaXplKCkKICAgICB7Ci0gICAgICAgIE1JUFNXb3JkKiBpbnNuID0gc3RhdGljX2Nhc3Q8
TUlQU1dvcmQqPihpbnN0cnVjdGlvblN0YXJ0KSArIDE7Ci0gICAgICAgIEFTU0VSVCgoKmluc24g
JiAweGZjMDAwMDAwKSA9PSAweDM0MDAwMDAwKTsKLSAgICAgICAgKmluc24gPSAoKmluc24gJiAw
eGZjMWYwMDAwKSB8IChpbW0gJiAweGZmZmYpOwotICAgICAgICBjYWNoZUZsdXNoKGluc24sIHNp
emVvZihNSVBTV29yZCkpOworICAgICAgICByZXR1cm4gc2l6ZW9mKE1JUFNXb3JkKSAqIDQ7CiAg
ICAgfQogCi0gICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKHZvaWQqIGluc3RydWN0aW9u
U3RhcnQsIHZvaWQqIHRvKQorICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBUb01vdmUodm9pZCog
aW5zdHJ1Y3Rpb25TdGFydCwgUmVnaXN0ZXJJRCBydCwgaW50IGltbSkKICAgICB7Ci0gICAgICAg
IE1JUFNXb3JkKiBpbnN0cnVjdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8TUlQU1dvcmQqPihpbnN0
cnVjdGlvblN0YXJ0KTsKLSAgICAgICAgaW50cHRyX3QganVtcFRvID0gcmVpbnRlcnByZXRfY2Fz
dDxpbnRwdHJfdD4odG8pOworICAgICAgICBNSVBTV29yZCogaW5zbiA9IHN0YXRpY19jYXN0PE1J
UFNXb3JkKj4oaW5zdHJ1Y3Rpb25TdGFydCk7CisgICAgICAgIHNpemVfdCBjb2RlU2l6ZSA9IDIg
KiBzaXplb2YoTUlQU1dvcmQpOwogCiAgICAgICAgIC8vIGx1aQotICAgICAgICBpbnN0cnVjdGlv
blswXSA9IDB4M2MwMDAwMDAgfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlQpIHwgKChq
dW1wVG8gPj4gMTYpICYgMHhmZmZmKTsKKyAgICAgICAgKmluc24gPSAweDNjMDAwMDAwIHwgKHJ0
IDw8IE9QX1NIX1JUKSB8ICgoaW1tID4+IDE2KSAmIDB4ZmZmZik7CisgICAgICAgICsraW5zbjsK
ICAgICAgICAgLy8gb3JpCi0gICAgICAgIGluc3RydWN0aW9uWzFdID0gMHgzNDAwMDAwMCB8IChN
SVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SVCkgfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1Bf
U0hfUlMpIHwgKGp1bXBUbyAmIDB4ZmZmZik7Ci0gICAgICAgIC8vIGpyCi0gICAgICAgIGluc3Ry
dWN0aW9uWzJdID0gMHgwMDAwMDAwOCB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SUyk7
Ci0gICAgICAgIC8vIG5vcAotICAgICAgICBpbnN0cnVjdGlvblszXSA9IDB4MDsKKyAgICAgICAg
Kmluc24gPSAweDM0MDAwMDAwIHwgKHJ0IDw8IE9QX1NIX1JTKSB8IChydCA8PCBPUF9TSF9SVCkg
fCAoaW1tICYgMHhmZmZmKTsKKyAgICAgICAgKytpbnNuOworICAgICAgICAvLyBpZiBqciAkdDkK
KyAgICAgICAgaWYgKCppbnNuID09IDB4MDMyMDAwMDgpIHsKKyAgICAgICAgICAgICppbnNuID0g
MHgwMDAwMDAwMDsKKyAgICAgICAgICAgIGNvZGVTaXplICs9IHNpemVvZihNSVBTV29yZCk7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FjaGVGbHVzaChpbnNuLCBjb2RlU2l6ZSk7CisgICAgfQogCi0g
ICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1Y3Rpb24sIHNpemVvZihNSVBTV29yZCkgKiA0KTsKKyAg
ICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9p
ZCogdG8pCisgICAgeworICAgICAgICBBU1NFUlQoIShiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihp
bnN0cnVjdGlvblN0YXJ0KSAmIDMpKTsKKyAgICAgICAgQVNTRVJUKCEoYml0d2lzZV9jYXN0PHVp
bnRwdHJfdD4odG8pICYgMykpOworICAgICAgICBzaXplX3Qgb3BzID0gbGlua0RpcmVjdEp1bXAo
aW5zdHJ1Y3Rpb25TdGFydCwgdG8pOworICAgICAgICBjYWNoZUZsdXNoKGluc3RydWN0aW9uU3Rh
cnQsIG9wcyk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhMb2FkKHZvaWQq
IGluc3RydWN0aW9uU3RhcnQpCkBAIC0xMDIzLDYgKzEwOTYsOCBAQCBwcml2YXRlOgogCiAgICAg
QXNzZW1ibGVyQnVmZmVyIG1fYnVmZmVyOwogICAgIEp1bXBzIG1fanVtcHM7CisgICAgaW50IG1f
aW5kZXhPZkxhc3RXYXRjaHBvaW50OworICAgIGludCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hw
b2ludDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IDdjNWU1ZTguLjIyOGQ4YWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgK
QEAgLTIwMCw2ICsyMDAsMTMgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogICAgIAorI2lmIENQ
VShNSVBTKQorICAgIHZvaWQgcG9rZShGUFJlZ2lzdGVySUQgc3JjLCBpbnQgaW5kZXggPSAwKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKCEoaW5kZXggJiAxKSk7CisgICAgICAgIHN0b3JlRG91Ymxl
KHNyYywgYWRkcmVzc0ZvclBva2UoaW5kZXgpKTsKKyAgICB9CisjZW5kaWYKIAogICAgIC8vIEJh
Y2t3YXJkcyBiYW5jaGVzLCB0aGVzZSBhcmUgY3VycmVudGx5IGFsbCBpbXBsZW1lbnRlZCB1c2lu
ZyBleGlzdGluZyBmb3J3YXJkcyBicmFuY2ggbWVjaGFuaXNtcy4KICAgICB2b2lkIGJyYW5jaFB0
cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBUcnVzdGVkSW1tUHRy
IGltbSwgTGFiZWwgdGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5kZXggNDNhZDQzNC4uNGYxNDk2MCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQ
Uy5oCkBAIC0xMTQsNiArMTE0LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuYWRk
dShkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgYWRkMzIoUmVnaXN0ZXJJRCBv
cDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5hZGR1KGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIGFkZDMyKFRy
dXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGFkZDMyKGlt
bSwgZGVzdCwgZGVzdCk7CkBAIC0yNjcsNiArMjcyLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9h
c3NlbWJsZXIuYW5kSW5zbihkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgYW5k
MzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICBtX2Fzc2VtYmxlci5hbmRJbnNuKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisK
ICAgICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
CiAgICAgICAgIGlmICghaW1tLm1fdmFsdWUgJiYgIW1fZml4ZWRXaWR0aCkKQEAgLTI4Myw5ICsy
OTMsMTYgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgdm9pZCBsc2hpZnQzMihU
cnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgdm9pZCBhbmQzMihUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAg
ICAgbV9hc3NlbWJsZXIuc2xsKGRlc3QsIGRlc3QsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYg
KCFpbW0ubV92YWx1ZSAmJiAhbV9maXhlZFdpZHRoKQorICAgICAgICAgICAgbW92ZShNSVBTUmVn
aXN0ZXJzOjp6ZXJvLCBkZXN0KTsKKyAgICAgICAgZWxzZSBpZiAoaW1tLm1fdmFsdWUgPiAwICYm
IGltbS5tX3ZhbHVlIDwgNjU1MzUgJiYgIW1fZml4ZWRXaWR0aCkKKyAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmFuZGkoZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7CisgICAgICAgIGVsc2UgeworICAg
ICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5hbmRJbnNuKGRlc3QsIHNyYywgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgfQogICAg
IH0KIAogICAgIHZvaWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJ
RCBkZXN0KQpAQCAtMjkzLDExICszMTAsMzMgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxl
ci5zbGx2KGRlc3QsIGRlc3QsIHNoaWZ0QW1vdW50KTsKICAgICB9CiAKKyAgICB2b2lkIGxzaGlm
dDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zbGx2KGRlc3QsIHNyYywgc2hpZnRBbW91
bnQpOworICAgIH0KKworICAgIHZvaWQgbHNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnNsbHYoZGVzdCwgZGVzdCwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAg
ICB9CisKKyAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lz
dGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc2xsdihkZXN0LCBzcmMsIGltbVRlbXBSZWdpc3Rl
cik7CisgICAgfQorCiAgICAgdm9pZCBtdWwzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubXVsKGRlc3QsIGRlc3QsIHNyYyk7CiAg
ICAgfQogCisgICAgdm9pZCBtdWwzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm11bChkZXN0LCBvcDEs
IG9wMik7CisgICAgfQorCiAgICAgdm9pZCBtdWwzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKCFpbW0ubV92YWx1
ZSAmJiAhbV9maXhlZFdpZHRoKQpAQCAtMzQ4LDYgKzM4NywyNCBAQCBwdWJsaWM6CiAgICAgICAg
IG1fYXNzZW1ibGVyLm9ySW5zbihkZXN0LCBkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICB9
CiAKKyAgICB2b2lkIG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmICghaW1tLm1fdmFsdWUgJiYgIW1fZml4ZWRX
aWR0aCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPiAw
ICYmIGltbS5tX3ZhbHVlIDwgNjU1MzUgJiYgIW1fZml4ZWRXaWR0aCkgeworICAgICAgICAgICAg
bV9hc3NlbWJsZXIub3JpKGRlc3QsIHNyYywgaW1tLm1fdmFsdWUpOworICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICAgIGxpICAgICAgZGF0YVRl
bXAsIGltbQorICAgICAgICAgICAgb3IgICAgICBkZXN0LCBzcmMsIGRhdGFUZW1wCisgICAgICAg
ICovCisgICAgICAgIG1vdmUoaW1tLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIub3JJbnNuKGRlc3QsIHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgfQorCiAgICAg
dm9pZCBvcjMyKFJlZ2lzdGVySUQgc3JjLCBBYnNvbHV0ZUFkZHJlc3MgZGVzdCkKICAgICB7CiAg
ICAgICAgIGxvYWQzMihkZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKQEAgLTM2MCw2ICs0
MTcsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zcmF2KGRlc3QsIGRlc3QsIHNo
aWZ0QW1vdW50KTsKICAgICB9CiAKKyAgICB2b2lkIHJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5zcmF2KGRlc3QsIHNyYywgc2hpZnRBbW91bnQpOworICAgIH0KKwogICAgIHZv
aWQgcnNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgbV9hc3NlbWJsZXIuc3JhKGRlc3QsIGRlc3QsIGltbS5tX3ZhbHVlKTsKQEAgLTM3NSwx
NiArNDM3LDMxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3JsdihkZXN0LCBkZXN0
LCBzaGlmdEFtb3VudCk7CiAgICAgfQogCisgICAgdm9pZCB1cnNoaWZ0MzIoUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnNybHYoZGVzdCwgc3JjLCBzaGlmdEFtb3VudCk7CisgICAgfQorCiAg
ICAgdm9pZCB1cnNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3JsKGRlc3QsIGRlc3QsIGltbS5tX3ZhbHVlKTsKICAg
ICB9CiAKKyAgICB2b2lkIHVyc2hpZnQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3JsKGRlc3Qs
IHNyYywgaW1tLm1fdmFsdWUpOworICAgIH0KKwogICAgIHZvaWQgc3ViMzIoUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnUoZGVz
dCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgb3AxLCBS
ZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuc3VidShkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoaW1tLm1fdmFs
dWUgPj0gLTMyNzY3ICYmIGltbS5tX3ZhbHVlIDw9IDMyNzY4CkBAIC00OTUsNiArNTcyLDExIEBA
IHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihkZXN0LCBkZXN0LCBzcmMpOwog
ICAgIH0KIAorICAgIHZvaWQgeG9yMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRlc3Qs
IG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkgewpA
QCAtNTEwLDYgKzU5MiwyMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24o
ZGVzdCwgZGVzdCwgaW1tVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKKyAgICB2b2lkIHhvcjMyKFRy
dXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
Lm5vcihkZXN0LCBzcmMsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICAgIGxpICBpbW1UZW1wLCBpbW0K
KyAgICAgICAgICAgIHhvciBkZXN0LCBkZXN0LCBpbW1UZW1wCisgICAgICAgICovCisgICAgICAg
IG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNu
KGRlc3QsIHNyYywgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKICAgICB2b2lkIHNxcnREb3Vi
bGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1f
YXNzZW1ibGVyLnNxcnRkKGRzdCwgc3JjKTsKQEAgLTk4OSw2ICsxMDg2LDQ0IEBAIHB1YmxpYzoK
ICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgc3RvcmUzMihUcnVzdGVkSW1tMzIgaW1tLCBC
YXNlSW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlmIChhZGRyZXNzLm9mZnNldCA+PSAt
MzI3NjggJiYgYWRkcmVzcy5vZmZzZXQgPD0gMzI3NjcgJiYgIW1fZml4ZWRXaWR0aCkgeworICAg
ICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICBzbGwgICAgIGFkZHJUZW1wLCBhZGRyZXNzLmlu
ZGV4LCBhZGRyZXNzLnNjYWxlCisgICAgICAgICAgICAgICAgYWRkdSAgICBhZGRyVGVtcCwgYWRk
clRlbXAsIGFkZHJlc3MuYmFzZQorICAgICAgICAgICAgICAgIHN3ICAgICAgc3JjLCBhZGRyZXNz
Lm9mZnNldChhZGRyVGVtcCkKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5zbGwoYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7Cisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVn
aXN0ZXIsIGFkZHJlc3MuYmFzZSk7CisgICAgICAgICAgICBpZiAoIWltbS5tX3ZhbHVlKQorICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN3KE1JUFNSZWdpc3RlcnM6Onplcm8sIGFkZHJUZW1w
UmVnaXN0ZXIsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnN3KGltbVRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5vZmZz
ZXQpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyoKKyAg
ICAgICAgICAgICAgICBzbGwgICAgIGFkZHJUZW1wLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNj
YWxlCisgICAgICAgICAgICAgICAgYWRkdSAgICBhZGRyVGVtcCwgYWRkclRlbXAsIGFkZHJlc3Mu
YmFzZQorICAgICAgICAgICAgICAgIGx1aSAgICAgaW1tVGVtcCwgKGFkZHJlc3Mub2Zmc2V0ICsg
MHg4MDAwKSA+PiAxNgorICAgICAgICAgICAgICAgIGFkZHUgICAgYWRkclRlbXAsIGFkZHJUZW1w
LCBpbW1UZW1wCisgICAgICAgICAgICAgICAgc3cgICAgICBzcmMsIChhZGRyZXNzLm9mZnNldCAm
IDB4ZmZmZikoYXQpCisgICAgICAgICAgICAqLworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2xs
KGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkdShhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVy
LCBhZGRyZXNzLmJhc2UpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubHVpKGltbVRlbXBSZWdp
c3RlciwgKGFkZHJlc3Mub2Zmc2V0ICsgMHg4MDAwKSA+PiAxNik7CisgICAgICAgICAgICBtX2Fz
c2VtYmxlci5hZGR1KGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGltbVRlbXBS
ZWdpc3Rlcik7CisgICAgICAgICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgp
CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3coTUlQU1JlZ2lzdGVyczo6emVybywgYWRk
clRlbXBSZWdpc3RlciwgYWRkcmVzcy5vZmZzZXQpOworICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAg
bV9hc3NlbWJsZXIuc3coaW1tVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNz
Lm9mZnNldCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKwogICAgIHZvaWQg
c3RvcmUzMihSZWdpc3RlcklEIHNyYywgY29uc3Qgdm9pZCogYWRkcmVzcykKICAgICB7CiAgICAg
ICAgIC8qCkBAIC0xMzM2LDYgKzE0NzEsMTUgQEAgcHVibGljOgogICAgICAgICBtX2ZpeGVkV2lk
dGggPSBmYWxzZTsKICAgICB9CiAKKyAgICB2b2lkIGp1bXAoQWJzb2x1dGVBZGRyZXNzIGFkZHJl
c3MpCisgICAgeworICAgICAgICBtX2ZpeGVkV2lkdGggPSB0cnVlOworICAgICAgICBsb2FkMzIo
YWRkcmVzcy5tX3B0ciwgTUlQU1JlZ2lzdGVyczo6dDkpOworICAgICAgICBtX2Fzc2VtYmxlci5q
cihNSVBTUmVnaXN0ZXJzOjp0OSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAg
ICBtX2ZpeGVkV2lkdGggPSBmYWxzZTsKKyAgICB9CisKICAgICB2b2lkIG1vdmVEb3VibGVUb0lu
dHMoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikK
ICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnZtb3YoZGVzdDEsIGRlc3QyLCBzcmMpOwpAQCAt
MTQwNCw2ICsxNTQ4LDUzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEp1bXAoKTsKICAgICB9
CiAKKyAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFT
U0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBa
ZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CisgICAgICAgIGlmIChjb25kID09IE92ZXJmbG93
KSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgIG1vdmUgICAgZGF0YVRlbXAsIG9w
MQorICAgICAgICAgICAgICAgIHhvciAgICAgY21wVGVtcCwgZGF0YVRlbXAsIG9wMgorICAgICAg
ICAgICAgICAgIGJsdHogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBkaWZmIHNpZ24gYml0
IC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgYWRkdSAgICBkZXN0LCBkYXRhVGVtcCwg
b3AyCisgICAgICAgICAgICAgICAgeG9yICAgICBjbXBUZW1wLCBkZXN0LCBkYXRhVGVtcAorICAg
ICAgICAgICAgICAgIGJnZXogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24g
YmlnIC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAg
YiAgICAgICBPdmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5v
cAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAg
ICAgIG5vcAorICAgICAgICAgICAgTm9fb3ZlcmZsb3c6CisgICAgICAgICAgICAqLworICAgICAg
ICAgICAgbW92ZShvcDEsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJs
ZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRlbXBSZWdpc3RlciwgMTApOworICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkdShkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyLCBvcDIpOworICAgICAg
ICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIGRhdGFUZW1w
UmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIs
IDcpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICByZXR1cm4g
anVtcCgpOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IFNpZ25lZCkgeworICAgICAg
ICAgICAgYWRkMzIob3AxLCBvcDIsIGRlc3QpOworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVz
dCBpcyBuZWdhdGl2ZS4KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0
ZXIsIGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgcmV0dXJuIGJyYW5j
aE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKGNvbmQgPT0gWmVybykgeworICAgICAgICAgICAgYWRkMzIob3AxLCBv
cDIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKGRlc3QsIE1JUFNSZWdp
c3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IE5vblplcm8pIHsK
KyAgICAgICAgICAgIGFkZDMyKG9wMSwgb3AyLCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBi
cmFuY2hOb3RFcXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAg
ICAgICBBU1NFUlQoMCk7CisgICAgICAgIHJldHVybiBKdW1wKCk7CisgICAgfQorCiAgICAgSnVt
cCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7
CkBAIC0xNDE3LDYgKzE2MDgsMTExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaEFk
ZDMyKGNvbmQsIGltbVRlbXBSZWdpc3RlciwgZGVzdCk7CiAgICAgfQogCisgICAgSnVtcCBicmFu
Y2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVB
ZGRyZXNzIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8
IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykp
OworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgeworICAgICAgICAgICAgLyoKKyAgICAg
ICAgICAgICAgICBtb3ZlICAgIGRhdGFUZW1wLCBkZXN0CisgICAgICAgICAgICAgICAgeG9yaSAg
ICBjbXBUZW1wLCBkYXRhVGVtcCwgaW1tCisgICAgICAgICAgICAgICAgYmx0eiAgICBjbXBUZW1w
LCBOb19vdmVyZmxvdyAgICAjIGRpZmYgc2lnbiBiaXQgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAg
ICAgICAgICBhZGRpdSAgIGRhdGFUZW1wLCBkYXRhVGVtcCwgaW1tCisgICAgICAgICAgICAgICAg
bW92ZSAgICBkZXN0LCBkYXRhVGVtcAorICAgICAgICAgICAgICAgIHhvcmkgICAgY21wVGVtcCwg
ZGF0YVRlbXAsIGltbQorICAgICAgICAgICAgICAgIGJnZXogICAgY21wVGVtcCwgTm9fb3ZlcmZs
b3cgICAgIyBzYW1lIHNpZ24gYmlnIC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgbm9w
CisgICAgICAgICAgICAgICAgYiAgICAgICBPdmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAor
ICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAg
IG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgTm9fb3ZlcmZsb3c6CisgICAg
ICAgICAgICAqLworICAgICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID49IC0zMjc2OCAmJiBpbW0u
bV92YWx1ZSAgPD0gMzI3NjcgJiYgIW1fZml4ZWRXaWR0aCkgeworICAgICAgICAgICAgICAgIGxv
YWQzMihkZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fz
c2VtYmxlci54b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1fdmFs
dWUpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAx
MCk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkaXUoZGF0YVRlbXBSZWdpc3Rlciwg
ZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1fdmFsdWUpOworICAgICAgICAgICAgICAgIHN0b3JlMzIo
ZGF0YVRlbXBSZWdpc3RlciwgZGVzdC5tX3B0cik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJs
ZXIueG9yaShjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbS5tX3ZhbHVlKTsK
KyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7Cisg
ICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIGxvYWQzMihkZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAg
ICAgICAgICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAg
ICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwg
aW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRl
bXBSZWdpc3RlciwgMTApOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGl1KGRhdGFU
ZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAg
ICAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0Lm1fcHRyKTsKKyAgICAgICAg
ICAgICAgICBtX2Fzc2VtYmxlci54b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rl
ciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNt
cFRlbXBSZWdpc3RlciwgNyk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4ganVtcCgpOworICAgICAgICB9CisgICAg
ICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICBsb2FkMzIoZGVzdC5tX3B0
ciwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIGFkZDMyKGltbVRlbXBSZWdpc3RlciwgZGF0
YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdC5t
X3B0cik7CisgICAgICAgIGlmIChjb25kID09IFNpZ25lZCkgeworICAgICAgICAgICAgLy8gQ2hl
Y2sgaWYgZGVzdCBpcyBuZWdhdGl2ZS4KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBU
ZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAg
ICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lz
dGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gWmVybykKKyAgICAg
ICAgICAgIHJldHVybiBicmFuY2hFcXVhbChkYXRhVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJz
Ojp6ZXJvKTsKKyAgICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykKKyAgICAgICAgICAgIHJldHVy
biBicmFuY2hOb3RFcXVhbChkYXRhVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsK
KyAgICAgICAgQVNTRVJUKDApOworICAgICAgICByZXR1cm4gSnVtcCgpOworICAgIH0KKworICAg
IEp1bXAgYnJhbmNoTXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjMSwg
UmVnaXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQo
KGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykg
fHwgKGNvbmQgPT0gTm9uWmVybykpOworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgewor
ICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICBtdWx0ICAgIHNyYywgZGVzdAorICAgICAg
ICAgICAgICAgIG1maGkgICAgZGF0YVRlbXAKKyAgICAgICAgICAgICAgICBtZmxvICAgIGRlc3QK
KyAgICAgICAgICAgICAgICBzcmEgICAgIGFkZHJUZW1wLCBkZXN0LCAzMQorICAgICAgICAgICAg
ICAgIGJlcSAgICAgZGF0YVRlbXAsIGFkZHJUZW1wLCBOb19vdmVyZmxvdyAjIGFsbCBzaWduIGJp
dHMgKGJpdCA2MyB0byBiaXQgMzEpIGFyZSB0aGUgc2FtZSAtPiBubyBvdmVyZmxvdworICAgICAg
ICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIGIgICAgICAgT3ZlcmZsb3cKKyAgICAgICAg
ICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAg
ICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgIE5vX292
ZXJmbG93OgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm11bHQoc3Jj
MSwgc3JjMik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tZmhpKGRhdGFUZW1wUmVnaXN0ZXIp
OworICAgICAgICAgICAgbV9hc3NlbWJsZXIubWZsbyhkZXN0KTsKKyAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnNyYShhZGRyVGVtcFJlZ2lzdGVyLCBkZXN0LCAzMSk7CisgICAgICAgICAgICBtX2Fz
c2VtYmxlci5iZXEoZGF0YVRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgNyk7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAgIHJldHVybiBqdW1wKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7CisgICAgICAgICAgICBtdWwz
MihzcmMxLCBzcmMyLCBkZXN0KTsKKyAgICAgICAgICAgIC8vIENoZWNrIGlmIGRlc3QgaXMgbmVn
YXRpdmUuCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHQoY21wVGVtcFJlZ2lzdGVyLCBkZXN0
LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVh
bChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAg
ICAgIGlmIChjb25kID09IFplcm8pIHsKKyAgICAgICAgICAgIG11bDMyKHNyYzEsIHNyYzIsIGRl
c3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6
Onplcm8pOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IE5vblplcm8pIHsKKyAgICAg
ICAgICAgIG11bDMyKHNyYzEsIHNyYzIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5j
aE5vdEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAg
IEFTU0VSVCgwKTsKKyAgICAgICAgcmV0dXJuIEp1bXAoKTsKKyAgICB9CisKICAgICBKdW1wIGJy
YW5jaE11bDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29u
ZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKQEAg
LTE0NjUsOCArMTc2MSw3IEBAIHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENv
bmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7Ci0gICAg
ICAgIG1vdmUoc3JjLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMyKGNvbmQsIGlt
bVRlbXBSZWdpc3RlciwgZGVzdCk7CisgICAgICAgIHJldHVybiBicmFuY2hNdWwzMihjb25kLCBp
bW1UZW1wUmVnaXN0ZXIsIHNyYywgZGVzdCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hTdWIz
MihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
QEAgLTE1MjUsOCArMTgyMCw2MCBAQCBwdWJsaWM6CiAgICAgSnVtcCBicmFuY2hTdWIzMihSZXN1
bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOwot
ICAgICAgICBtb3ZlKHNyYywgZGVzdCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hTdWIzMihjb25k
LCBpbW1UZW1wUmVnaXN0ZXIsIGRlc3QpOworICAgICAgICByZXR1cm4gYnJhbmNoU3ViMzIoY29u
ZCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIsIGRlc3QpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNo
U3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9w
MiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJm
bG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5v
blplcm8pKTsKKyAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIC8q
CisgICAgICAgICAgICAgICAgbW92ZSAgICBkYXRhVGVtcCwgb3AxCisgICAgICAgICAgICAgICAg
eG9yICAgICBjbXBUZW1wLCBkYXRhVGVtcCwgb3AyCisgICAgICAgICAgICAgICAgYmdleiAgICBj
bXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIHNhbWUgc2lnbiBiaXQgLT4gbm8gb3ZlcmZsb3cKKyAg
ICAgICAgICAgICAgICBzdWJ1ICAgIGRlc3QsIGRhdGFUZW1wLCBvcDIKKyAgICAgICAgICAgICAg
ICB4b3IgICAgIGNtcFRlbXAsIGRlc3QsIGRhdGFUZW1wCisgICAgICAgICAgICAgICAgYmdleiAg
ICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIHNhbWUgc2lnbiBiaXQgLT4gbm8gb3ZlcmZsb3cK
KyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBiICAgICAgIE92ZXJmbG93Cisg
ICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAg
bm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAg
ICBOb19vdmVyZmxvdzoKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBtb3ZlKG9wMSwgZGF0
YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBS
ZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwgb3AyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmJnZXooY21wVGVtcFJlZ2lzdGVyLCAxMCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJ1
KGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci54
b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7CisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAgIHJldHVybiBqdW1wKCk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7CisgICAgICAgICAgICBzdWIzMihvcDEsIG9w
MiwgZGVzdCk7CisgICAgICAgICAgICAvLyBDaGVjayBpZiBkZXN0IGlzIG5lZ2F0aXZlLgorICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuc2x0KGNtcFRlbXBSZWdpc3RlciwgZGVzdCwgTUlQU1JlZ2lz
dGVyczo6emVybyk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwoY21wVGVtcFJl
Z2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29u
ZCA9PSBaZXJvKSB7CisgICAgICAgICAgICBzdWIzMihvcDEsIG9wMiwgZGVzdCk7CisgICAgICAg
ICAgICByZXR1cm4gYnJhbmNoRXF1YWwoZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykgeworICAgICAgICAgICAgc3ViMzIo
b3AxLCBvcDIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGRlc3Qs
IE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIEFTU0VSVCgwKTsKKyAg
ICAgICAgcmV0dXJuIEp1bXAoKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaE5lZzMyKFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyY0Rlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5saShkYXRhVGVtcFJlZ2lzdGVyLCAtMSk7CisgICAgICAgIHJldHVybiBicmFuY2hN
dWwzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBzcmNEZXN0KTsKICAgICB9CiAKICAgICBKdW1w
IGJyYW5jaE9yMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCkBAIC0xNTc4LDcgKzE5MjUsOCBAQCBwdWJsaWM6CiAKICAgICBDYWxsIGNhbGwo
UmVnaXN0ZXJJRCB0YXJnZXQpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5qYWxyKHRhcmdl
dCk7CisgICAgICAgIG1vdmUodGFyZ2V0LCBNSVBTUmVnaXN0ZXJzOjp0OSk7CisgICAgICAgIG1f
YXNzZW1ibGVyLmphbHIoTUlQU1JlZ2lzdGVyczo6dDkpOwogICAgICAgICBtX2Fzc2VtYmxlci5u
b3AoKTsKICAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIubGFiZWwoKSwgQ2FsbDo6Tm9u
ZSk7CiAgICAgfQpAQCAtMTgyMiw3ICsyMTcwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
IGx1aSAgICAgaW1tVGVtcCwgKGFkZHJlc3Mub2Zmc2V0ICsgMHg4MDAwKSA+PiAxNgogICAgICAg
ICAgICAgICAgIGFkZHUgICAgYWRkclRlbXAsIGFkZHJUZW1wLCBpbW1UZW1wCiAgICAgICAgICAg
ICAgICAgbHdjMSAgICBkZXN0LCAoYWRkcmVzcy5vZmZzZXQgJiAweGZmZmYpKGF0KQotICAgICAg
ICAgICAgICAgIGx3YzEgICAgZGVzdCs0LCAoYWRkcmVzcy5vZmZzZXQgJiAweGZmZmYgKyA0KShh
dCkKKyAgICAgICAgICAgICAgICBsd2MxICAgIGRlc3QrMSwgKGFkZHJlc3Mub2Zmc2V0ICYgMHhm
ZmZmICsgNCkoYXQpCiAgICAgICAgICAgICAqLwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2xs
KGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOwogICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkdShhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVy
LCBhZGRyZXNzLmJhc2UpOwpAQCAtMjAwOSw2ICsyMzU3LDE5IEBAIHB1YmxpYzoKICNlbmRpZgog
ICAgIH0KIAorICAgIHZvaWQgbW92ZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChzcmMgIT0gZGVzdCB8fCBtX2ZpeGVkV2lkdGgp
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZkKGRlc3QsIHNyYyk7CisgICAgfQorCisgICAg
dm9pZCBzd2FwRG91YmxlKEZQUmVnaXN0ZXJJRCBmcjEsIEZQUmVnaXN0ZXJJRCBmcjIpCisgICAg
eworICAgICAgICBtb3ZlRG91YmxlKGZyMSwgZnBUZW1wUmVnaXN0ZXIpOworICAgICAgICBtb3Zl
RG91YmxlKGZyMiwgZnIxKTsKKyAgICAgICAgbW92ZURvdWJsZShmcFRlbXBSZWdpc3RlciwgZnIy
KTsKKyAgICB9CisKICAgICB2b2lkIGFkZERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGQoZGVzdCwgZGVzdCwg
c3JjKTsKQEAgLTIwMzYsNiArMjM5NywxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVy
LnN1YmQoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIHN1YkRvdWJsZShGUFJl
Z2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIG1fYXNzZW1ibGVyLnN1YmQoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAg
IHZvaWQgc3ViRG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIGxvYWREb3VibGUoc3JjLCBmcFRlbXBSZWdpc3Rlcik7CkBAIC0yMDUzLDExICsyNDE5
LDMyIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubXVsZChkZXN0LCBkZXN0LCBmcFRl
bXBSZWdpc3Rlcik7CiAgICAgfQogCisgICAgdm9pZCBtdWxEb3VibGUoRlBSZWdpc3RlcklEIG9w
MSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5tdWxkKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIGRpdkRv
dWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLmRpdmQoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIGRp
dkRvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmRpdmQoZGVzdCwgb3AxLCBvcDIpOwor
ICAgIH0KKworICAgIHZvaWQgZGl2RG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIGxvYWREb3VibGUoc3JjLCBmcFRlbXBSZWdpc3Rlcik7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmRpdmQoZGVzdCwgZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOworICAgIH0K
KworICAgIHZvaWQgbmVnYXRlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBk
ZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVnZChkZXN0LCBzcmMpOworICAgIH0K
KwogICAgIHZvaWQgY29udmVydEludDMyVG9Eb3VibGUoUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubXRjMShzcmMsIGZwVGVtcFJl
Z2lzdGVyKTsKQEAgLTIxMTcsNiArMjUwNCw4IEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNo
RXF1YWwoUmVnaXN0ZXJJRCBycywgUmVnaXN0ZXJJRCBydCkKICAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLm5vcCgpOworICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICAgICAgbV9hc3Nl
bWJsZXIuYXBwZW5kSnVtcCgpOwogICAgICAgICBtX2Fzc2VtYmxlci5iZXEocnMsIHJ0LCAwKTsK
ICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CkBAIC0yMTI2LDYgKzI1MTUsOCBAQCBwdWJsaWM6
CiAKICAgICBKdW1wIGJyYW5jaE5vdEVxdWFsKFJlZ2lzdGVySUQgcnMsIFJlZ2lzdGVySUQgcnQp
CiAgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgbV9hc3NlbWJsZXIu
bm9wKCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFwcGVuZEp1bXAoKTsKICAgICAgICAgbV9hc3Nl
bWJsZXIuYm5lKHJzLCBydCwgMCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwpAQCAtMjE5
MiwxMSArMjU4MywzMyBAQCBwdWJsaWM6CiAgICAgLy8gSWYgdGhlIHJlc3VsdCBpcyBub3QgcmVw
cmVzZW50YWJsZSBhcyBhIDMyIGJpdCB2YWx1ZSwgYnJhbmNoLgogICAgIC8vIE1heSBhbHNvIGJy
YW5jaCBmb3Igc29tZSB2YWx1ZXMgdGhhdCBhcmUgcmVwcmVzZW50YWJsZSBpbiAzMiBiaXRzCiAg
ICAgLy8gKHNwZWNpZmljYWxseSwgaW4gdGhpcyBjYXNlLCBJTlRfTUFYIDB4N2ZmZmZmZmYpLgot
ICAgIEp1bXAgYnJhbmNoVHJ1bmNhdGVEb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICBlbnVtIEJyYW5jaFRydW5jYXRlVHlwZSB7IEJyYW5jaElmVHJ1
bmNhdGVGYWlsZWQsIEJyYW5jaElmVHJ1bmNhdGVTdWNjZXNzZnVsIH07CisgICAgSnVtcCBicmFu
Y2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
LCBCcmFuY2hUcnVuY2F0ZVR5cGUgYnJhbmNoVHlwZSA9IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci50cnVuY3dkKGZwVGVtcFJlZ2lzdGVyLCBzcmMp
OworICAgICAgICBtX2Fzc2VtYmxlci5tZmMxKGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICAg
ICAgcmV0dXJuIGJyYW5jaDMyKGJyYW5jaFR5cGUgPT0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCA/
IEVxdWFsIDogTm90RXF1YWwsIGRlc3QsIFRydXN0ZWRJbW0zMigweDdmZmZmZmZmKSk7CisgICAg
fQorCisgICAgSnVtcCBicmFuY2hUcnVuY2F0ZURvdWJsZVRvVWludDMyKEZQUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCwgQnJhbmNoVHJ1bmNhdGVUeXBlIGJyYW5jaFR5cGUgPSBCcmFu
Y2hJZlRydW5jYXRlRmFpbGVkKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudHJ1bmN3ZChm
cFRlbXBSZWdpc3Rlciwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubWZjMShkZXN0LCBmcFRl
bXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2gzMihicmFuY2hUeXBlID09IEJyYW5j
aElmVHJ1bmNhdGVGYWlsZWQgPyBFcXVhbCA6IE5vdEVxdWFsLCBkZXN0LCBUcnVzdGVkSW1tMzIo
MCkpOworICAgIH0KKworICAgIC8vIFJlc3VsdCBpcyB1bmRlZmluZWQgaWYgdGhlIHZhbHVlIGlz
IG91dHNpZGUgb2YgdGhlIGludGVnZXIgcmFuZ2UuCisgICAgdm9pZCB0cnVuY2F0ZURvdWJsZVRv
SW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIudHJ1bmN3ZChmcFRlbXBSZWdpc3Rlciwgc3JjKTsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubWZjMShkZXN0LCBmcFRlbXBSZWdpc3Rlcik7CisgICAgfQorCisgICAgLy8gUmVzdWx0
IGlzIHVuZGVmaW5lZCBpZiBzcmMgPiAyXjMxCisgICAgdm9pZCB0cnVuY2F0ZURvdWJsZVRvVWlu
dDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1f
YXNzZW1ibGVyLnRydW5jd2QoZnBUZW1wUmVnaXN0ZXIsIHNyYyk7CiAgICAgICAgIG1fYXNzZW1i
bGVyLm1mYzEoZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIo
RXF1YWwsIGRlc3QsIFRydXN0ZWRJbW0zMigweDdmZmZmZmZmKSk7CiAgICAgfQogCiAgICAgLy8g
Q29udmVydCAnc3JjJyB0byBhbiBpbnRlZ2VyLCBhbmQgcGxhY2VzIHRoZSByZXN1bHRpbmcgJ2Rl
c3QnLgpAQCAtMjIxOCwyOCArMjYzMSw0MyBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaERv
dWJsZU5vblplcm8oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpCiAgICAg
ewotI2lmIFdURl9NSVBTX0lTQV9SRVYoMikgJiYgV1RGX01JUFNfRlA2NAotICAgICAgICBtX2Fz
c2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0Y2gpOwotICAgICAgICBtX2Fz
c2VtYmxlci5tdGhjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzY3JhdGNoKTsKLSNlbHNlCi0gICAg
ICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQU1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQU1JlZ2lzdGVyczo6emVybywgRlBSZWdpc3RlcklEKHNj
cmF0Y2ggKyAxKSk7Ci0jZW5kaWYKKyAgICAgICAgbV9hc3NlbWJsZXIudm1vdihzY3JhdGNoLCBN
SVBTUmVnaXN0ZXJzOjp6ZXJvLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKICAgICAgICAgcmV0dXJu
IGJyYW5jaERvdWJsZShEb3VibGVOb3RFcXVhbCwgcmVnLCBzY3JhdGNoKTsKICAgICB9CiAKICAg
ICBKdW1wIGJyYW5jaERvdWJsZVplcm9Pck5hTihGUFJlZ2lzdGVySUQgcmVnLCBGUFJlZ2lzdGVy
SUQgc2NyYXRjaCkKICAgICB7Ci0jaWYgV1RGX01JUFNfSVNBX1JFVigyKSAmJiBXVEZfTUlQU19G
UDY0Ci0gICAgICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQU1JlZ2lzdGVyczo6emVybywgc2NyYXRj
aCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm10aGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0
Y2gpOwotI2Vsc2UKLSAgICAgICAgbV9hc3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJv
LCBzY3JhdGNoKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJv
LCBGUFJlZ2lzdGVySUQoc2NyYXRjaCArIDEpKTsKLSNlbmRpZgorICAgICAgICBtX2Fzc2VtYmxl
ci52bW92KHNjcmF0Y2gsIE1JUFNSZWdpc3RlcnM6Onplcm8sIE1JUFNSZWdpc3RlcnM6Onplcm8p
OwogICAgICAgICByZXR1cm4gYnJhbmNoRG91YmxlKERvdWJsZUVxdWFsT3JVbm9yZGVyZWQsIHJl
Zywgc2NyYXRjaCk7CiAgICAgfQogCisgICAgLy8gSW52ZXJ0IGEgcmVsYXRpb25hbCBjb25kaXRp
b24sIGUuZy4gPT0gYmVjb21lcyAhPSwgPCBiZWNvbWVzID49LCBldGMuCisgICAgc3RhdGljIFJl
bGF0aW9uYWxDb25kaXRpb24gaW52ZXJ0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKKyAgICB7
CisgICAgICAgIFJlbGF0aW9uYWxDb25kaXRpb24gcjsKKyAgICAgICAgaWYgKGNvbmQgPT0gRXF1
YWwpCisgICAgICAgICAgICByID0gTm90RXF1YWw7CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0g
Tm90RXF1YWwpCisgICAgICAgICAgICByID0gRXF1YWw7CisgICAgICAgIGVsc2UgaWYgKGNvbmQg
PT0gQWJvdmUpCisgICAgICAgICAgICByID0gQmVsb3dPckVxdWFsOworICAgICAgICBlbHNlIGlm
IChjb25kID09IEFib3ZlT3JFcXVhbCkKKyAgICAgICAgICAgIHIgPSBCZWxvdzsKKyAgICAgICAg
ZWxzZSBpZiAoY29uZCA9PSBCZWxvdykKKyAgICAgICAgICAgIHIgPSBBYm92ZU9yRXF1YWw7Cisg
ICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gQmVsb3dPckVxdWFsKQorICAgICAgICAgICAgciA9IEFi
b3ZlOworICAgICAgICBlbHNlIGlmIChjb25kID09IEdyZWF0ZXJUaGFuKQorICAgICAgICAgICAg
ciA9IExlc3NUaGFuT3JFcXVhbDsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBHcmVhdGVyVGhh
bk9yRXF1YWwpCisgICAgICAgICAgICByID0gTGVzc1RoYW47CisgICAgICAgIGVsc2UgaWYgKGNv
bmQgPT0gTGVzc1RoYW4pCisgICAgICAgICAgICByID0gR3JlYXRlclRoYW5PckVxdWFsOworICAg
ICAgICBlbHNlIGlmIChjb25kID09IExlc3NUaGFuT3JFcXVhbCkKKyAgICAgICAgICAgIHIgPSBH
cmVhdGVyVGhhbjsKKyAgICAgICAgcmV0dXJuIHI7CisgICAgfQorCiAgICAgdm9pZCBub3AoKQog
ICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CkBAIC0yMjUyLDEyICsyNjgwLDEyIEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25M
YWJlbCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKICAg
ICB7Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIE1JUFNB
c3NlbWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmRhdGFMb2NhdGlvbigp
LCBkZXN0aW5hdGlvbi5kYXRhTG9jYXRpb24oKSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBw
dHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCiAgICAgewotICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBNSVBTQXNzZW1ibGVyOjptYXhKdW1wUmVw
bGFjZW1lbnRTaXplKCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggZmEwZjVlMC4uNTcz
ZDhkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhl
bHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVy
cy5oCkBAIC05Myw2ICs5MywyMyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKKyNpZiBDUFUo
TUlQUykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJD
YWxsKFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAgICAgbW92ZShyZXR1cm5BZGRyZXNzUmVn
aXN0ZXIsIHJlZyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHJlc3RvcmVSZXR1
cm5BZGRyZXNzQmVmb3JlUmV0dXJuKFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAgICAgbW92
ZShyZWcsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEFkZHJlc3MgYWRkcmVzcykK
KyAgICB7CisgICAgICAgIGxvYWRQdHIoYWRkcmVzcywgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsK
KyAgICB9CisjZW5kaWYKKwogICAgIHZvaWQgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIo
SlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnksIEdQUlJlZyB0bykKICAgICB7CiAg
ICAgICAgIGxvYWRQdHIoQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZW50cnkg
KiBzaXplb2YoUmVnaXN0ZXIpKSwgdG8pOwpAQCAtMTkzLDcgKzIxMCw3IEBAIHB1YmxpYzoKICAg
ICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFjdGl2ZUxlbmd0aFB0cigp
KSwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKHNjcmF0
Y2hTaXplKSwgR1BSSW5mbzo6cmVnVDApOwogCi0jaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTSkK
KyNpZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNKSB8fCBDUFUoTUlQUykKICAgICAgICAgbW92ZShU
cnVzdGVkSW1tUHRyKGJ1ZmZlciksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CiAgICAgICAgIG1v
dmUoVHJ1c3RlZEltbVB0cihhcmd1bWVudCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAgICAg
ICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVy
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAppbmRleCA4
YWRkZTA1Li4wNzBlYTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxI
ZWxwZXJzLmgKQEAgLTU3Niw2ICs1NzYsMzkgQEAgcHVibGljOgogICAgICAgICBwb2tlKEdQUklu
Zm86Om5vbkFyZ0dQUjApOwogICAgIH0KICNlbmRpZiAvLyBDUFUoQVJNX0hBUkRGUCkKKyNlbGlm
IENQVShNSVBTKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcg
YXJnMSkKKyAgICB7CisgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJndW1lbnRG
UFIwKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBS
UmVnIGFyZzEsIEZQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgaWYgKGFyZzIgIT0gRlBSSW5m
bzo6YXJndW1lbnRGUFIwKSB7CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86
OmFyZ3VtZW50RlBSMCk7CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzIsIEZQUkluZm86OmFy
Z3VtZW50RlBSMSk7CisgICAgICAgIH0gZWxzZSBpZiAoYXJnMSAhPSBGUFJJbmZvOjphcmd1bWVu
dEZQUjEpIHsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMiwgRlBSSW5mbzo6YXJndW1lbnRG
UFIxKTsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJndW1lbnRGUFIw
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFN3YXAgYXJnMSwgYXJnMi4KKyAg
ICAgICAgICAgIHN3YXBEb3VibGUoRlBSSW5mbzo6YXJndW1lbnRGUFIwLCBGUFJJbmZvOjphcmd1
bWVudEZQUjEpOworICAgICAgICB9CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShGUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAg
eworICAgICAgICBhc3NlbWJsZXIoKS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5m
bzo6YXJndW1lbnRHUFIzLCBhcmcxKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVS
ZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcG9rZShhcmcyLCA0KTsK
KyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgRlBSUmVnIGFyZzMpCisgICAgeworICAgICAg
ICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHBva2Uo
YXJnMywgNCk7CisgICAgfQogI2Vsc2UKICNlcnJvciAiREZHIEpJVCBub3Qgc3VwcG9ydGVkIG9u
IHRoaXMgcGxhdGZvcm0uIgogI2VuZGlmCkBAIC04MDMsMTE5ICs4MzYsMTMwIEBAIHB1YmxpYzoK
ICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzdWl0YWJsZSBmb3IgYW55IGNhbGxpbmcgY29udmVu
dGlvbiB0aGF0IHByb3ZpZGVzIGZvcgogICAgIC8vIGV4YWN0bHkgNCBhcmd1bWVudCByZWdpc3Rl
cnMsIGUuZy4gQVJNdjcuCiAjaWYgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA9PSA0CisK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBBcmd1bWVudD4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
cG9rZUFyZ3VtZW50KEFyZ3VtZW50IGFyZywgaW50IGluZGV4ID0gMCkKKyAgICB7CisjaWYgQ1BV
KE1JUFMpCisgICAgICAgIHBva2UoYXJnLCBpbmRleCArIDQpOworI2Vsc2UKKyAgICAgICAgcG9r
ZShhcmcsIGluZGV4KTsKKyNlbmRpZgorICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJS
ZWcgYXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFyZzQpOworICAgICAg
ICBwb2tlQXJndW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVn
IGFyZzMsIFRydXN0ZWRJbW0zMiBhcmc0KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAg
ICAgICAgcG9rZUFyZ3VtZW50KGFyZzQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBh
cmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewotICAgICAgICBwb2tl
KGFyZzQpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVz
dGVkSW1tUHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFy
ZzUpCiAgICAgewotICAgICAgICBwb2tlKGFyZzUsIDEpOwotICAgICAgICBwb2tlKGFyZzQpOwor
ICAgICAgICBwb2tlQXJndW1lbnQoYXJnNSwgMSk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc0
KTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMp
OwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgVHJ1c3Rl
ZEltbTMyIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlQXJn
dW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgR1BS
UmVnIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAg
ICAgcG9rZUFyZ3VtZW50KGFyZzQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJl
ZyBhcmczLCBUcnVzdGVkSW1tUHRyIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFyZzQpOwor
ICAgICAgICBwb2tlQXJndW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwg
R1BSUmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKICAgICB7Ci0gICAgICAgIHBv
a2UoYXJnNSwgMSk7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2VBcmd1bWVudChh
cmc1LCAxKTsKKyAgICAgICAgcG9rZUFyZ3VtZW50KGFyZzQpOwogICAgICAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJn
MSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKICAgICB7Ci0gICAgICAg
IHBva2UoYXJnNCk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMy
IGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbVB0ciBhcmc0KQogICAg
IHsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgcG9rZUFyZ3VtZW50KGFyZzQpOwogICAg
ICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAg
fQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVk
SW1tUHRyIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlQXJn
dW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBh
cmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZElt
bTMyIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAg
ICAgcG9rZUFyZ3VtZW50KGFyZzQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0
ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCiAgICAgewotICAgICAgICBw
b2tlKGFyZzUsIDEpOwotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlQXJndW1lbnQo
YXJnNSwgMSk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQsIFRydXN0ZWRJbW0zMiBh
cmc1KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCAxKTsKLSAgICAgICAgcG9rZShhcmc0KTsK
KyAgICAgICAgcG9rZUFyZ3VtZW50KGFyZzUsIDEpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJn
NCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmcz
KTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJl
ZyBhcmc0LCBUcnVzdGVkSW1tUHRyIGFyZzUpCiAgICAgewotICAgICAgICBwb2tlKGFyZzUsIDEp
OwotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNSwgMSk7Cisg
ICAgICAgIHBva2VBcmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBh
cmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQsIFRydXN0ZWRJbW0zMiBhcmc1KQog
ICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCAxKTsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAg
ICAgcG9rZUFyZ3VtZW50KGFyZzUsIDEpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNCk7CiAg
ICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAg
ICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMs
IEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNSwgMSk7
Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc1LCAxKTsKKyAg
ICAgICAgcG9rZUFyZ3VtZW50KGFyZzQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVj
U3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFy
ZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCiAgICAgewotICAgICAg
ICBwb2tlKGFyZzUsIDEpOwotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlQXJndW1l
bnQoYXJnNSwgMSk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaAppbmRleCA5MzFhNzcxLi4zNTU2NzY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaApAQCAtMTY0LDYgKzE2NCw3NCBAQCBw
dWJsaWM6CiAKICNlbmRpZgogCisjaWYgQ1BVKE1JUFMpCisKK2NsYXNzIEZQUkluZm8geworcHVi
bGljOgorICAgIHR5cGVkZWYgRlBSUmVnIFJlZ2lzdGVyVHlwZTsKKyAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA2OworCisgICAgLy8gVGVtcG9yYXJ5IHJlZ2lz
dGVycy4KKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDAgPSBNSVBTUmVnaXN0ZXJzOjpm
MDsKKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDEgPSBNSVBTUmVnaXN0ZXJzOjpmNDsK
KyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDIgPSBNSVBTUmVnaXN0ZXJzOjpmNjsKKyAg
ICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDMgPSBNSVBTUmVnaXN0ZXJzOjpmODsKKyAgICBz
dGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDQgPSBNSVBTUmVnaXN0ZXJzOjpmMTA7CisgICAgc3Rh
dGljIGNvbnN0IEZQUlJlZyBmcFJlZ1Q1ID0gTUlQU1JlZ2lzdGVyczo6ZjE4OworCisgICAgc3Rh
dGljIGNvbnN0IEZQUlJlZyByZXR1cm5WYWx1ZUZQUiA9IE1JUFNSZWdpc3RlcnM6OmYwOworCisg
ICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjAgPSBNSVBTUmVnaXN0ZXJzOjpmMTI7
CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjEgPSBNSVBTUmVnaXN0ZXJzOjpm
MTQ7CisKKyAgICBzdGF0aWMgRlBSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCisgICAg
eworICAgICAgICBzdGF0aWMgY29uc3QgRlBSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZS
ZWdpc3RlcnNdID0geworICAgICAgICAgICAgZnBSZWdUMCwgZnBSZWdUMSwgZnBSZWdUMiwgZnBS
ZWdUMywgZnBSZWdUNCwgZnBSZWdUNSB9OworCisgICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJl
ck9mUmVnaXN0ZXJzKTsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOwor
ICAgIH0KKworICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEZQUlJlZyByZWcpCisgICAgewor
ICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcpOworICAgICAgICBBU1NFUlQocmVn
IDwgMjApOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3Rlclsy
MF0gPSB7CisgICAgICAgICAgICAwLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxp
ZEluZGV4LAorICAgICAgICAgICAgMSwgSW52YWxpZEluZGV4LCAyLCBJbnZhbGlkSW5kZXgsCisg
ICAgICAgICAgICAzLCBJbnZhbGlkSW5kZXgsIDQsIEludmFsaWRJbmRleCwKKyAgICAgICAgICAg
IEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwK
KyAgICAgICAgICAgIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCA1LCBJbnZhbGlkSW5kZXgs
CisgICAgICAgIH07CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGluZGV4Rm9yUmVnaXN0ZXJb
cmVnXTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdCAhPSBJbnZhbGlkSW5kZXgpOworICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUo
RlBSUmVnIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7
CisgICAgICAgIEFTU0VSVChyZWcgPCAzMik7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBu
YW1lRm9yUmVnaXN0ZXJbMzJdID0geworICAgICAgICAgICAgImYwIiwgImYxIiwgImYyIiwgImYz
IiwKKyAgICAgICAgICAgICJmNCIsICJmNSIsICJmNiIsICJmNyIsCisgICAgICAgICAgICAiZjgi
LCAiZjkiLCAiZjEwIiwgImYxMSIsCisgICAgICAgICAgICAiZjEyIiwgImYxMyIsICJmMTQiLCAi
ZjE1IgorICAgICAgICAgICAgImYxNiIsICJmMTciLCAiZjE4IiwgImYxOSIKKyAgICAgICAgICAg
ICJmMjAiLCAiZjIxIiwgImYyMiIsICJmMjMiCisgICAgICAgICAgICAiZjI0IiwgImYyNSIsICJm
MjYiLCAiZjI3IgorICAgICAgICAgICAgImYyOCIsICJmMjkiLCAiZjMwIiwgImYzMSIKKyAgICAg
ICAgfTsKKyAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOworICAgIH0KK3ByaXZh
dGU6CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW52YWxpZEluZGV4ID0gMHhmZmZmZmZm
ZjsKK307CisKKyNlbmRpZgorCiB0eXBlZGVmIFJlZ2lzdGVyQmFuazxGUFJJbmZvPjo6aXRlcmF0
b3IgZnByX2l0ZXJhdG9yOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCmluZGV4IDNkMDc1NTYuLmFhNjM0Y2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCkBAIC00NjEsNiArNDYxLDczIEBAIHByaXZh
dGU6CiAKICNlbmRpZgogCisjaWYgQ1BVKE1JUFMpCisjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVO
VF9SRUdJU1RFUlMgNAorCitjbGFzcyBHUFJJbmZvIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEdQ
UlJlZyBSZWdpc3RlclR5cGU7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVn
aXN0ZXJzID0gNjsKKworICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyByZWdUMCA9IE1JUFNSZWdpc3RlcnM6OnYwOworICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgcmVnVDEgPSBNSVBTUmVnaXN0ZXJzOjp2MTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IHJlZ1QyID0gTUlQU1JlZ2lzdGVyczo6dDQ7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdU
MyA9IE1JUFNSZWdpc3RlcnM6OnQ1OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDQgPSBN
SVBTUmVnaXN0ZXJzOjp0NjsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q1ID0gTUlQU1Jl
Z2lzdGVyczo6dDc7CisgICAgLy8gVGhlc2UgcmVnaXN0ZXJzIG1hdGNoIHRoZSBiYXNlbGluZSBK
SVQuCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IHJlZ1Qw
OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIyID0gcmVnVDE7
CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IE1JUFNSZWdpc3Rl
cnM6OnMwOworICAgIC8vIFRoZXNlIGNvbnN0YW50cyBwcm92aWRlIHRoZSBuYW1lcyBmb3IgdGhl
IGdlbmVyYWwgcHVycG9zZSBhcmd1bWVudCAmIHJldHVybiB2YWx1ZSByZWdpc3RlcnMuCisgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjAgPSBNSVBTUmVnaXN0ZXJzOjphMDsKKyAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMSA9IE1JUFNSZWdpc3RlcnM6OmExOwor
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIyID0gTUlQU1JlZ2lzdGVyczo6YTI7
CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBNSVBTUmVnaXN0ZXJzOjph
MzsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjAgPSByZWdUMjsKKyAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjEgPSByZWdUMzsKKyAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIG5vbkFyZ0dQUjIgPSByZWdUNDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZh
bHVlR1BSID0gcmVnVDA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIg
PSByZWdUMTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQ
UiA9IHJlZ1Q1OworCisgICAgc3RhdGljIEdQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOworICAg
ICAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3Rl
cnNdID0geyByZWdUMCwgcmVnVDEsIHJlZ1QyLCByZWdUMywgcmVnVDQsIHJlZ1Q1IH07CisgICAg
ICAgIHJldHVybiByZWdpc3RlckZvckluZGV4W2luZGV4XTsKKyAgICB9CisKKyAgICBzdGF0aWMg
dW5zaWduZWQgdG9JbmRleChHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAh
PSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDE2KTsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVnaXN0ZXJbMTZdID0geyBJbnZhbGlkSW5kZXgs
IEludmFsaWRJbmRleCwgMCwgMSwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJ
bmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZElu
ZGV4LCBJbnZhbGlkSW5kZXgsIDIsIDMsIDQsIDUgfTsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0
ID0gaW5kZXhGb3JSZWdpc3RlcltyZWddOworICAgICAgICBBU1NFUlQocmVzdWx0ICE9IEludmFs
aWRJbmRleCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIGNv
bnN0IGNoYXIqIGRlYnVnTmFtZShHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJl
ZyAhPSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDE2KTsKKyAgICAgICAg
c3RhdGljIGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclsxNl0gPSB7CisgICAgICAgICAgICAi
emVybyIsICJhdCIsICJ2MCIsICJ2MSIsCisgICAgICAgICAgICAiYTAiLCAiYTEiLCAiYTIiLCAi
YTMiLAorICAgICAgICAgICAgInQwIiwgInQxIiwgInQyIiwgInQzIiwKKyAgICAgICAgICAgICJ0
NCIsICJ0NSIsICJ0NiIsICJ0NyIKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIG5hbWVGb3JS
ZWdpc3RlcltyZWddOworICAgIH0KK3ByaXZhdGU6CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgSW52YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsKK307CisKKyNlbmRpZgorCiB0eXBlZGVmIFJl
Z2lzdGVyQmFuazxHUFJJbmZvPjo6aXRlcmF0b3IgZ3ByX2l0ZXJhdG9yOwogCiB9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgKaW5kZXggZmI4YTVmNy4uMDA5NGZmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTI2MCw3ICsxMjYwLDcgQEAgcHVibGlj
OgogCiAvLyBFbmNvZGVkSlNWYWx1ZSBpbiBKU1ZBTFVFMzJfNjQgaXMgYSA2NC1iaXQgaW50ZWdl
ci4gV2hlbiBiZWluZyBjb21waWxlZCBpbiBBUk0gRUFCSSwgaXQgbXVzdCBiZSBhbGlnbmVkIGV2
ZW4tbnVtYmVyZWQgcmVnaXN0ZXIgKHIwLCByMiBvciBbc3BdKS4KIC8vIFRvIGF2b2lkIGFzc2Vt
YmxpZXMgZnJvbSB1c2luZyB3cm9uZyByZWdpc3RlcnMsIGxldCdzIG9jY3VweSByMSBvciByMyB3
aXRoIGEgZHVtbXkgYXJndW1lbnQgd2hlbiBuZWNlc3NhcnkuCi0jaWYgQ09NUElMRVJfU1VQUE9S
VFMoRUFCSSkgJiYgQ1BVKEFSTSkKKyNpZiAoQ09NUElMRVJfU1VQUE9SVFMoRUFCSSkgJiYgQ1BV
KEFSTSkpIHx8IENQVShNSVBTKQogI2RlZmluZSBFQUJJXzMyQklUX0RVTU1ZX0FSRyAgICAgIFRy
dXN0ZWRJbW0zMigwKSwKICNlbHNlCiAjZGVmaW5lIEVBQklfMzJCSVRfRFVNTVlfQVJHCkBAIC0x
NzEwLDcgKzE3MTAsNyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAgICAgCi0jaWYgIWRlZmlu
ZWQoTkRFQlVHKSAmJiAhQ1BVKEFSTSkKKyNpZiAhZGVmaW5lZChOREVCVUcpICYmICFDUFUoQVJN
KSAmJiAhQ1BVKE1JUFMpCiAgICAgdm9pZCBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCkKICAgICB7
CiAgICAgICAgIC8vIFdlJ3JlIGFib3V0IHRvIGNhbGwgb3V0IHRvIGEgIm5hdGl2ZSIgaGVscGVy
IGZ1bmN0aW9uLiBUaGUgaGVscGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pTSW50ZXJmYWNlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJm
YWNlSklULmgKaW5kZXggN2ZkZWFmMC4uNDhhZDZiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSlNJbnRlcmZhY2VKSVQuaApAQCAtMTI1LDYgKzEyNSwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FjaGVkUmVzdWx0UmVnaXN0ZXIg
PSBNSVBTUmVnaXN0ZXJzOjp2MDsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgZmly
c3RBcmd1bWVudFJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6YTA7CiAgICAgICAgIAorI2lmIEVO
QUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgYnVj
a2V0Q291bnRlclJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6czM7CisjZW5kaWYKKwogICAgICAg
ICAvLyByZWdUMCBtdXN0IGJlIHYwIGZvciByZXR1cm5pbmcgYSAzMi1iaXQgdmFsdWUuCiAgICAg
ICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QwID0gTUlQU1JlZ2lzdGVyczo6djA7CiAg
ICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaApp
bmRleCBiOTYxYTg3Li5lZDJlZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuaApAQCAtMTQwLDE0ICsxNDAsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHNp
emVfdCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkgeyByZXR1cm4gc2l6ZW9mKHNp
emVfdCkgKyBidWZmZXJTaXplOyB9CisgICAgICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNp
emUoc2l6ZV90IGJ1ZmZlclNpemUpIHsgcmV0dXJuIHNpemVvZihTY3JhdGNoQnVmZmVyKSArIGJ1
ZmZlclNpemU7IH0KICAgICAgICAgdm9pZCBzZXRBY3RpdmVMZW5ndGgoc2l6ZV90IGFjdGl2ZUxl
bmd0aCkgeyBtX2FjdGl2ZUxlbmd0aCA9IGFjdGl2ZUxlbmd0aDsgfQogICAgICAgICBzaXplX3Qg
YWN0aXZlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVMZW5ndGg7IH07CiAgICAgICAg
IHNpemVfdCogYWN0aXZlTGVuZ3RoUHRyKCkgeyByZXR1cm4gJm1fYWN0aXZlTGVuZ3RoOyB9Owog
ICAgICAgICB2b2lkKiBkYXRhQnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogICAgICAg
ICBzaXplX3QgbV9hY3RpdmVMZW5ndGg7CisjaWYgQ1BVKE1JUFMpICYmIChkZWZpbmVkIFdURl9N
SVBTX0FSQ0hfUkVWICYmIFdURl9NSVBTX0FSQ0hfUkVWID09IDIpCisgICAgICAgIHZvaWQqIG1f
YnVmZmVyWzBdIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKTsKKyNlbHNlCiAgICAgICAgIHZv
aWQqIG1fYnVmZmVyWzBdOworI2VuZGlmCiAgICAgfTsKICNpZiBDT01QSUxFUihNU1ZDKQogI3By
YWdtYSB3YXJuaW5nKHBvcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291
cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZmNjNjA5OC4uNjViZjkyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NCBAQAorMjAxMy0wMS0yOSAgQmFsYXpzIEtpbHZhZHkgIDxraWx2YWR5YkBob21lamlubmkuY29t
PgorCisgICAgICAgIE1JUFMgREZHIGltcGxlbWVudGF0aW9uLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMzI4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgREZHIGltcGxlbWVudGF0aW9uIGZvciBNSVBT
LgorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTMtMDEtMjggIEJlbmphbWluIFBv
dWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFN0cmluZyBjb25zdHJ1Y3Rl
ZCBmcm9tIExpdGVyYWxzIHNob3VsZCBiZSBub24tZW1wdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IDM0NDk5
ZjAuLmI2ZTIxMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIv
U291cmNlL1dURi93dGYvUGxhdGZvcm0uaApAQCAtOTQ0LDYgKzk0NCwxMCBAQAogI2lmIENQVShB
Uk1fVFJBRElUSU9OQUwpCiAjZGVmaW5lIEVOQUJMRV9ERkdfSklUIDEKICNlbmRpZgorLyogRW5h
YmxlIHRoZSBERkcgSklUIG9uIE1JUFMuICovCisjaWYgQ1BVKE1JUFMpCisjZGVmaW5lIEVOQUJM
RV9ERkdfSklUIDEKKyNlbmRpZgogI2VuZGlmCiAKIC8qIElmIHRoZSBqaXQgaXMgbm90IGF2YWls
YWJsZSwgZW5hYmxlIHRoZSBMTEludCBDIExvb3A6ICovCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185219</attachid>
            <date>2013-01-29 04:46:05 -0800</date>
            <delta_ts>2013-02-18 07:12:42 -0800</delta_ts>
            <desc>DFG for MIPS - arg. offset with macro</desc>
            <filename>dfg-m.diff</filename>
            <type>text/plain</type>
            <size>52690</size>
            <attacher name="Balazs Kilvady">kilvadyb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDg3NzAxZjQuLjE3YjM1ZjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDEzLTAxLTI5ICBCYWxhenMgS2lsdmFk
eSAgPGtpbHZhZHliQGhvbWVqaW5uaS5jb20+CisKKyAgICAgICAgTUlQUyBERkcgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
RkcgaW1wbGVtZW50YXRpb24gZm9yIE1JUFMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTUlQU0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpNSVBTQXNzZW1ibGVyKToK
KyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6c2xsdik6CisgICAgICAgIChKU0M6Ok1JUFNB
c3NlbWJsZXI6Om1vdmQpOgorICAgICAgICAoTUlQU0Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6
Ok1JUFNBc3NlbWJsZXI6Om5lZ2QpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJl
bEZvcldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJlbCk6Cisg
ICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6OnZtb3YpOgorICAgICAgICAoSlNDOjpNSVBTQXNz
ZW1ibGVyOjpsaW5rRGlyZWN0SnVtcCk6CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6Om1h
eEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpyZXZl
cnRKdW1wVG9Nb3ZlKToKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhK
dW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKE1h
Y3JvQXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBva2UpOgorICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJNSVBTOjphZGQzMik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlck1JUFMpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmFuZDMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJNSVBTOjpsc2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyTUlQUzo6bXVsMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om9yMzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJzaGlmdDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjp1cnNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OnN1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
Ojp4b3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6c3RvcmUzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6anVtcCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoQWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OmJyYW5jaE11bDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
OjpicmFuY2hTdWIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNo
TmVnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmNhbGwpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmxvYWREb3VibGUpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6Om1vdmVEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OnN3YXBEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6
OnN1YkRvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6bXVsRG91Ymxl
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpkaXZEb3VibGUpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om5lZ2F0ZURvdWJsZSk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRXF1YWwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlck1JUFM6OmJyYW5jaE5vdEVxdWFsKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJNSVBTOjpicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OmJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnRydW5jYXRlRG91YmxlVG9JbnQzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6dHJ1bmNhdGVEb3VibGVUb1VpbnQzMik6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlTm9uWmVybyk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlWmVyb09yTmFOKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjppbnZlcnQpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyTUlQUzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogZGZnL0RG
R0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoQXNzZW1ibHlIZWxwZXJzKToKKyAgICAgICAg
KEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybik6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpk
ZWJ1Z0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEND
YWxsSGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3Vt
ZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUpOgorICAgICAgICAqIGRmZy9ERkdGUFJJbmZvLmg6CisgICAgICAgIChERkcp
OgorICAgICAgICAoRlBSSW5mbyk6CisgICAgICAgIChKU0M6OkRGRzo6RlBSSW5mbzo6dG9SZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6RlBSSW5mbzo6dG9JbmRleCk6CisgICAgICAgIChK
U0M6OkRGRzo6RlBSSW5mbzo6ZGVidWdOYW1lKToKKyAgICAgICAgKiBkZmcvREZHR1BSSW5mby5o
OgorICAgICAgICAoREZHKToKKyAgICAgICAgKEdQUkluZm8pOgorICAgICAgICAoSlNDOjpERkc6
OkdQUkluZm86OnRvUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkdQUkluZm86OnRvSW5k
ZXgpOgorICAgICAgICAoSlNDOjpERkc6OkdQUkluZm86OmRlYnVnTmFtZSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6CisgICAg
ICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAgIChKU0ludGVyZmFjZUpJVCk6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpTQzo6U2NyYXRjaEJ1
ZmZlcjo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoU2NyYXRjaEJ1ZmZlcik6CisKIDIwMTMt
MDEtMjkgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAK
ICAgICAgICAgW1F0XSBJbXBsZW1lbnQgSW5jcmVtZW50YWxTd2VlcGVyIGFuZCBIZWFwVGltZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKaW5k
ZXggMDI2Zjg3ZS4uN2Y1NTNiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NSVBTQXNzZW1ibGVyLmgKQEAgLTE1Miw2ICsxNTIsOCBAQCBwdWJsaWM6CiAgICAgdHlw
ZWRlZiBTZWdtZW50ZWRWZWN0b3I8QXNzZW1ibGVyTGFiZWwsIDY0PiBKdW1wczsKIAogICAgIE1J
UFNBc3NlbWJsZXIoKQorICAgICAgICA6IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KElOVF9NSU4p
CisgICAgICAgICwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKICAgICB7
CiAgICAgfQogCkBAIC0zMjUsNyArMzI3LDcgQEAgcHVibGljOgogICAgICAgICBlbWl0SW5zdCgw
eDAwMDAwMDAwIHwgKHJkIDw8IE9QX1NIX1JEKSB8IChydCA8PCBPUF9TSF9SVCkgfCAoKHNoYW10
ICYgMHgxZikgPDwgT1BfU0hfU0hBTVQpKTsKICAgICB9CiAKLSAgICB2b2lkIHNsbHYoUmVnaXN0
ZXJJRCByZCwgUmVnaXN0ZXJJRCBydCwgaW50IHJzKQorICAgIHZvaWQgc2xsdihSZWdpc3RlcklE
IHJkLCBSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJzKQogICAgIHsKICAgICAgICAgZW1pdElu
c3QoMHgwMDAwMDAwNCB8IChyZCA8PCBPUF9TSF9SRCkgfCAocnQgPDwgT1BfU0hfUlQpIHwgKHJz
IDw8IE9QX1NIX1JTKSk7CiAgICAgfQpAQCAtNTI3LDYgKzUyOSwxNiBAQCBwdWJsaWM6CiAgICAg
ICAgIGVtaXRJbnN0KDB4NDYyMDAwMDQgfCAoZmQgPDwgT1BfU0hfRkQpIHwgKGZzIDw8IE9QX1NI
X0ZTKSk7CiAgICAgfQogCisgICAgdm9pZCBtb3ZkKEZQUmVnaXN0ZXJJRCBmZCwgRlBSZWdpc3Rl
cklEIGZzKQorICAgIHsKKyAgICAgICAgZW1pdEluc3QoMHg0NjIwMDAwNiB8IChmZCA8PCBPUF9T
SF9GRCkgfCAoZnMgPDwgT1BfU0hfRlMpKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ2QoRlBSZWdp
c3RlcklEIGZkLCBGUFJlZ2lzdGVySUQgZnMpCisgICAgeworICAgICAgICBlbWl0SW5zdCgweDQ2
MjAwMDA3IHwgKGZkIDw8IE9QX1NIX0ZEKSB8IChmcyA8PCBPUF9TSF9GUykpOworICAgIH0KKwog
ICAgIHZvaWQgdHJ1bmN3ZChGUFJlZ2lzdGVySUQgZmQsIEZQUmVnaXN0ZXJJRCBmcykKICAgICB7
CiAgICAgICAgIGVtaXRJbnN0KDB4NDYyMDAwMGQgfCAoZmQgPDwgT1BfU0hfRkQpIHwgKGZzIDw8
IE9QX1NIX0ZTKSk7CkBAIC02MTksOSArNjMxLDI0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IG1fYnVmZmVyLmxhYmVsKCk7CiAgICAgfQogCisgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWxGb3JX
YXRjaHBvaW50KCkKKyAgICB7CisgICAgICAgIEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IG1fYnVm
ZmVyLmxhYmVsKCk7CisgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdC5tX29mZnNl
dCkgIT0gbV9pbmRleE9mTGFzdFdhdGNocG9pbnQpCisgICAgICAgICAgICByZXN1bHQgPSBsYWJl
bCgpOworICAgICAgICBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludCA9IHJlc3VsdC5tX29mZnNldDsK
KyAgICAgICAgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQg
KyBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQorCiAgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWwoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1f
YnVmZmVyLmxhYmVsKCk7CisgICAgICAgIEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IG1fYnVmZmVy
LmxhYmVsKCk7CisgICAgICAgIHdoaWxlIChVTkxJS0VMWShzdGF0aWNfY2FzdDxpbnQ+KHJlc3Vs
dC5tX29mZnNldCkgPCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCkpIHsKKyAgICAgICAg
ICAgIG5vcCgpOworICAgICAgICAgICAgcmVzdWx0ID0gbV9idWZmZXIubGFiZWwoKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIEFzc2VtYmxlckxhYmVs
IGFsaWduKGludCBhbGlnbm1lbnQpCkBAIC02NjQsMTQgKzY5MSwyNCBAQCBwdWJsaWM6CiAgICAg
Ly8gQXNzZW1ibHkgaGVscGVycyBmb3IgbW92aW5nIGRhdGEgYmV0d2VlbiBmcCBhbmQgcmVnaXN0
ZXJzLgogICAgIHZvaWQgdm1vdihSZWdpc3RlcklEIHJkMSwgUmVnaXN0ZXJJRCByZDIsIEZQUmVn
aXN0ZXJJRCBybikKICAgICB7CisjaWYgV1RGX01JUFNfSVNBX1JFVigyKSAmJiBXVEZfTUlQU19G
UDY0CisgICAgICAgIG1mYzEocmQxLCBybik7CisgICAgICAgIG1maGMxKHJkMiwgcm4pOworI2Vs
c2UKICAgICAgICAgbWZjMShyZDEsIHJuKTsKICAgICAgICAgbWZjMShyZDIsIEZQUmVnaXN0ZXJJ
RChybiArIDEpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQgdm1vdihGUFJlZ2lzdGVySUQg
cmQsIFJlZ2lzdGVySUQgcm4xLCBSZWdpc3RlcklEIHJuMikKICAgICB7CisjaWYgV1RGX01JUFNf
SVNBX1JFVigyKSAmJiBXVEZfTUlQU19GUDY0CisgICAgICAgIG10YzEocm4xLCByZCk7CisgICAg
ICAgIG10aGMxKHJuMiwgcmQpOworI2Vsc2UKICAgICAgICAgbXRjMShybjEsIHJkKTsKICAgICAg
ICAgbXRjMShybjIsIEZQUmVnaXN0ZXJJRChyZCArIDEpKTsKKyNlbmRpZgogICAgIH0KIAogICAg
IHN0YXRpYyB1bnNpZ25lZCBnZXRDYWxsUmV0dXJuT2Zmc2V0KEFzc2VtYmxlckxhYmVsIGNhbGwp
CkBAIC02ODgsNiArNzI1LDM1IEBAIHB1YmxpYzoKICAgICAvLyB3cml0YWJsZSByZWdpb24gb2Yg
bWVtb3J5OyB0byBtb2RpZnkgdGhlIGNvZGUgaW4gYW4gZXhlY3V0ZS1vbmx5IGV4ZWN1YWJsZQog
ICAgIC8vIHBvb2wgdGhlICdyZXBhdGNoJyBhbmQgJ3JlbGluaycgbWV0aG9kcyBzaG91bGQgYmUg
dXNlZC4KIAorICAgIHN0YXRpYyBzaXplX3QgbGlua0RpcmVjdEp1bXAodm9pZCogY29kZSwgdm9p
ZCogdG8pCisgICAgeworICAgICAgICBNSVBTV29yZCogaW5zbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8
TUlQU1dvcmQqPihyZWludGVycHJldF9jYXN0PGludHB0cl90Pihjb2RlKSk7CisgICAgICAgIHNp
emVfdCBvcHMgPSAwOworICAgICAgICBpbnQzMl90IHNsb3RBZGRyID0gcmVpbnRlcnByZXRfY2Fz
dDxpbnQ+KGluc24pICsgNDsKKyAgICAgICAgaW50MzJfdCB0b0FkZHIgPSByZWludGVycHJldF9j
YXN0PGludD4odG8pOworCisgICAgICAgIGlmICgoc2xvdEFkZHIgJiAweGYwMDAwMDAwKSAhPSAo
dG9BZGRyICYgMHhmMDAwMDAwMCkpIHsKKyAgICAgICAgICAgIC8vIGx1aQorICAgICAgICAgICAg
Kmluc24gPSAweDNjMDAwMDAwIHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JUKSB8ICgo
dG9BZGRyID4+IDE2KSAmIDB4ZmZmZik7CisgICAgICAgICAgICArK2luc247CisgICAgICAgICAg
ICAvLyBvcmkKKyAgICAgICAgICAgICppbnNuID0gMHgzNDAwMDAwMCB8IChNSVBTUmVnaXN0ZXJz
Ojp0OSA8PCBPUF9TSF9SVCkgfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlMpIHwgKHRv
QWRkciAmIDB4ZmZmZik7CisgICAgICAgICAgICArK2luc247CisgICAgICAgICAgICAvLyBqcgor
ICAgICAgICAgICAgKmluc24gPSAweDAwMDAwMDA4IHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9Q
X1NIX1JTKTsKKyAgICAgICAgICAgICsraW5zbjsKKyAgICAgICAgICAgIG9wcyA9IDQgKiBzaXpl
b2YoTUlQU1dvcmQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gagorICAgICAg
ICAgICAgKmluc24gPSAweDA4MDAwMDAwIHwgKCh0b0FkZHIgJiAweDBmZmZmZmZmKSA+PiAyKTsK
KyAgICAgICAgICAgICsraW5zbjsKKyAgICAgICAgICAgIG9wcyA9IDIgKiBzaXplb2YoTUlQU1dv
cmQpOworICAgICAgICB9CisgICAgICAgIC8vIG5vcAorICAgICAgICAqaW5zbiA9IDB4MDAwMDAw
MDA7CisgICAgICAgIHJldHVybiBvcHM7CisgICAgfQorCiAgICAgdm9pZCBsaW5rSnVtcChBc3Nl
bWJsZXJMYWJlbCBmcm9tLCBBc3NlbWJsZXJMYWJlbCB0bykKICAgICB7CiAgICAgICAgIEFTU0VS
VCh0by5pc1NldCgpKTsKQEAgLTgyNSwyOSArODkxLDM2IEBAIHB1YmxpYzoKICNlbmRpZgogICAg
IH0KIAotICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBUb01vdmUodm9pZCogaW5zdHJ1Y3Rpb25T
dGFydCwgUmVnaXN0ZXJJRCBydCwgaW50IGltbSkKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1
bXBSZXBsYWNlbWVudFNpemUoKQogICAgIHsKLSAgICAgICAgTUlQU1dvcmQqIGluc24gPSBzdGF0
aWNfY2FzdDxNSVBTV29yZCo+KGluc3RydWN0aW9uU3RhcnQpICsgMTsKLSAgICAgICAgQVNTRVJU
KCgqaW5zbiAmIDB4ZmMwMDAwMDApID09IDB4MzQwMDAwMDApOwotICAgICAgICAqaW5zbiA9ICgq
aW5zbiAmIDB4ZmMxZjAwMDApIHwgKGltbSAmIDB4ZmZmZik7Ci0gICAgICAgIGNhY2hlRmx1c2go
aW5zbiwgc2l6ZW9mKE1JUFNXb3JkKSk7CisgICAgICAgIHJldHVybiBzaXplb2YoTUlQU1dvcmQp
ICogNDsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5z
dHJ1Y3Rpb25TdGFydCwgdm9pZCogdG8pCisgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFRvTW92
ZSh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCBSZWdpc3RlcklEIHJ0LCBpbnQgaW1tKQogICAgIHsK
LSAgICAgICAgTUlQU1dvcmQqIGluc3RydWN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxNSVBTV29y
ZCo+KGluc3RydWN0aW9uU3RhcnQpOwotICAgICAgICBpbnRwdHJfdCBqdW1wVG8gPSByZWludGVy
cHJldF9jYXN0PGludHB0cl90Pih0byk7CisgICAgICAgIE1JUFNXb3JkKiBpbnNuID0gc3RhdGlj
X2Nhc3Q8TUlQU1dvcmQqPihpbnN0cnVjdGlvblN0YXJ0KTsKKyAgICAgICAgc2l6ZV90IGNvZGVT
aXplID0gMiAqIHNpemVvZihNSVBTV29yZCk7CiAKICAgICAgICAgLy8gbHVpCi0gICAgICAgIGlu
c3RydWN0aW9uWzBdID0gMHgzYzAwMDAwMCB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9S
VCkgfCAoKGp1bXBUbyA+PiAxNikgJiAweGZmZmYpOworICAgICAgICAqaW5zbiA9IDB4M2MwMDAw
MDAgfCAocnQgPDwgT1BfU0hfUlQpIHwgKChpbW0gPj4gMTYpICYgMHhmZmZmKTsKKyAgICAgICAg
KytpbnNuOwogICAgICAgICAvLyBvcmkKLSAgICAgICAgaW5zdHJ1Y3Rpb25bMV0gPSAweDM0MDAw
MDAwIHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JUKSB8IChNSVBTUmVnaXN0ZXJzOjp0
OSA8PCBPUF9TSF9SUykgfCAoanVtcFRvICYgMHhmZmZmKTsKLSAgICAgICAgLy8ganIKLSAgICAg
ICAgaW5zdHJ1Y3Rpb25bMl0gPSAweDAwMDAwMDA4IHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9Q
X1NIX1JTKTsKLSAgICAgICAgLy8gbm9wCi0gICAgICAgIGluc3RydWN0aW9uWzNdID0gMHgwOwor
ICAgICAgICAqaW5zbiA9IDB4MzQwMDAwMDAgfCAocnQgPDwgT1BfU0hfUlMpIHwgKHJ0IDw8IE9Q
X1NIX1JUKSB8IChpbW0gJiAweGZmZmYpOworICAgICAgICArK2luc247CisgICAgICAgIC8vIGlm
IGpyICR0OQorICAgICAgICBpZiAoKmluc24gPT0gMHgwMzIwMDAwOCkgeworICAgICAgICAgICAg
Kmluc24gPSAweDAwMDAwMDAwOworICAgICAgICAgICAgY29kZVNpemUgKz0gc2l6ZW9mKE1JUFNX
b3JkKTsKKyAgICAgICAgfQorICAgICAgICBjYWNoZUZsdXNoKGluc24sIGNvZGVTaXplKTsKKyAg
ICB9CiAKLSAgICAgICAgY2FjaGVGbHVzaChpbnN0cnVjdGlvbiwgc2l6ZW9mKE1JUFNXb3JkKSAq
IDQpOworICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0cnVjdGlvblN0
YXJ0LCB2b2lkKiB0bykKKyAgICB7CisgICAgICAgIEFTU0VSVCghKGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KGluc3RydWN0aW9uU3RhcnQpICYgMykpOworICAgICAgICBBU1NFUlQoIShiaXR3aXNl
X2Nhc3Q8dWludHB0cl90Pih0bykgJiAzKSk7CisgICAgICAgIHNpemVfdCBvcHMgPSBsaW5rRGly
ZWN0SnVtcChpbnN0cnVjdGlvblN0YXJ0LCB0byk7CisgICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1
Y3Rpb25TdGFydCwgb3BzKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aExv
YWQodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKQEAgLTEwMjMsNiArMTA5Niw4IEBAIHByaXZhdGU6
CiAKICAgICBBc3NlbWJsZXJCdWZmZXIgbV9idWZmZXI7CiAgICAgSnVtcHMgbV9qdW1wczsKKyAg
ICBpbnQgbV9pbmRleE9mTGFzdFdhdGNocG9pbnQ7CisgICAgaW50IG1faW5kZXhPZlRhaWxPZkxh
c3RXYXRjaHBvaW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggN2M1ZTVlOC4uMjI4
ZDhhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXIuaApAQCAtMjAwLDYgKzIwMCwxMyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAgICAg
CisjaWYgQ1BVKE1JUFMpCisgICAgdm9pZCBwb2tlKEZQUmVnaXN0ZXJJRCBzcmMsIGludCBpbmRl
eCA9IDApCisgICAgeworICAgICAgICBBU1NFUlQoIShpbmRleCAmIDEpKTsKKyAgICAgICAgc3Rv
cmVEb3VibGUoc3JjLCBhZGRyZXNzRm9yUG9rZShpbmRleCkpOworICAgIH0KKyNlbmRpZgogCiAg
ICAgLy8gQmFja3dhcmRzIGJhbmNoZXMsIHRoZXNlIGFyZSBjdXJyZW50bHkgYWxsIGltcGxlbWVu
dGVkIHVzaW5nIGV4aXN0aW5nIGZvcndhcmRzIGJyYW5jaCBtZWNoYW5pc21zLgogICAgIHZvaWQg
YnJhbmNoUHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIFRydXN0
ZWRJbW1QdHIgaW1tLCBMYWJlbCB0YXJnZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAppbmRleCA0M2FkNDM0Li40ZjE0OTYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyTUlQUy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJNSVBTLmgKQEAgLTExNCw2ICsxMTQsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGR1KGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBhZGQzMihSZWdp
c3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmFkZHUoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQg
YWRkMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAg
YWRkMzIoaW1tLCBkZXN0LCBkZXN0KTsKQEAgLTI2Nyw2ICsyNzIsMTEgQEAgcHVibGljOgogICAg
ICAgICBtX2Fzc2VtYmxlci5hbmRJbnNuKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAg
dm9pZCBhbmQzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZEluc24oZGVzdCwgb3AxLCBvcDIpOwor
ICAgIH0KKwogICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSAmJiAhbV9maXhlZFdpZHRoKQpAQCAt
MjgzLDkgKzI5MywxNiBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIGxz
aGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB2b2lkIGFuZDMy
KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewotICAgICAgICBtX2Fzc2VtYmxlci5zbGwoZGVzdCwgZGVzdCwgaW1tLm1fdmFsdWUpOworICAg
ICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCisgICAgICAgICAgICBtb3Zl
KE1JUFNSZWdpc3RlcnM6Onplcm8sIGRlc3QpOworICAgICAgICBlbHNlIGlmIChpbW0ubV92YWx1
ZSA+IDAgJiYgaW1tLm1fdmFsdWUgPCA2NTUzNSAmJiAhbV9maXhlZFdpZHRoKQorICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuYW5kaShkZXN0LCBzcmMsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmFuZEluc24oZGVzdCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAg
ICB9CiAgICAgfQogCiAgICAgdm9pZCBsc2hpZnQzMihSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBS
ZWdpc3RlcklEIGRlc3QpCkBAIC0yOTMsMTEgKzMxMCwzMyBAQCBwdWJsaWM6CiAgICAgICAgIG1f
YXNzZW1ibGVyLnNsbHYoZGVzdCwgZGVzdCwgc2hpZnRBbW91bnQpOwogICAgIH0KIAorICAgIHZv
aWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnNsbHYoZGVzdCwgc3JjLCBz
aGlmdEFtb3VudCk7CisgICAgfQorCisgICAgdm9pZCBsc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lz
dGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc2xsdihkZXN0LCBkZXN0LCBpbW1UZW1wUmVnaXN0
ZXIpOworICAgIH0KKworICAgIHZvaWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJ
bW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoaW1tLCBpbW1U
ZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5zbGx2KGRlc3QsIHNyYywgaW1tVGVt
cFJlZ2lzdGVyKTsKKyAgICB9CisKICAgICB2b2lkIG11bDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tdWwoZGVzdCwgZGVzdCwg
c3JjKTsKICAgICB9CiAKKyAgICB2b2lkIG11bDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklE
IG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubXVsKGRl
c3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIG11bDMyKFRydXN0ZWRJbW0zMiBpbW0s
IFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoIWlt
bS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCkBAIC0zNDgsNiArMzg3LDI0IEBAIHB1YmxpYzoK
ICAgICAgICAgbV9hc3NlbWJsZXIub3JJbnNuKGRlc3QsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIp
OwogICAgIH0KIAorICAgIHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSAmJiAh
bV9maXhlZFdpZHRoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChpbW0ubV92
YWx1ZSA+IDAgJiYgaW1tLm1fdmFsdWUgPCA2NTUzNSAmJiAhbV9maXhlZFdpZHRoKSB7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5vcmkoZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgICAgbGkgICAg
ICBkYXRhVGVtcCwgaW1tCisgICAgICAgICAgICBvciAgICAgIGRlc3QsIHNyYywgZGF0YVRlbXAK
KyAgICAgICAgKi8KKyAgICAgICAgbW92ZShpbW0sIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAg
ICBtX2Fzc2VtYmxlci5vckluc24oZGVzdCwgc3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICB9
CisKICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIEFic29sdXRlQWRkcmVzcyBkZXN0KQog
ICAgIHsKICAgICAgICAgbG9hZDMyKGRlc3QubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwpAQCAt
MzYwLDYgKzQxNywxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnNyYXYoZGVzdCwg
ZGVzdCwgc2hpZnRBbW91bnQpOwogICAgIH0KIAorICAgIHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJ
RCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnNyYXYoZGVzdCwgc3JjLCBzaGlmdEFtb3VudCk7CisgICAgfQor
CiAgICAgdm9pZCByc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAg
ICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zcmEoZGVzdCwgZGVzdCwgaW1tLm1fdmFsdWUpOwpA
QCAtMzc1LDE2ICs0MzcsMzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zcmx2KGRl
c3QsIGRlc3QsIHNoaWZ0QW1vdW50KTsKICAgICB9CiAKKyAgICB2b2lkIHVyc2hpZnQzMihSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3JsdihkZXN0LCBzcmMsIHNoaWZ0QW1vdW50KTsKKyAg
ICB9CisKICAgICB2b2lkIHVyc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zcmwoZGVzdCwgZGVzdCwgaW1tLm1fdmFs
dWUpOwogICAgIH0KIAorICAgIHZvaWQgdXJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5z
cmwoZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIu
c3VidShkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgc3ViMzIoUmVnaXN0ZXJJ
RCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5zdWJ1KGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMy
KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChp
bW0ubV92YWx1ZSA+PSAtMzI3NjcgJiYgaW1tLm1fdmFsdWUgPD0gMzI3NjgKQEAgLTQ5NSw2ICs1
NzIsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIGRlc3Qs
IHNyYyk7CiAgICAgfQogCisgICAgdm9pZCB4b3IzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJ
RCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvcklu
c24oZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMy
IGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09
IC0xKSB7CkBAIC01MTAsNiArNTkyLDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIu
eG9ySW5zbihkZXN0LCBkZXN0LCBpbW1UZW1wUmVnaXN0ZXIpOwogICAgIH0KIAorICAgIHZvaWQg
eG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkgeworICAgICAgICAgICAgbV9h
c3NlbWJsZXIubm9yKGRlc3QsIHNyYywgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgICAgbGkgIGltbVRl
bXAsIGltbQorICAgICAgICAgICAgeG9yIGRlc3QsIGRlc3QsIGltbVRlbXAKKyAgICAgICAgKi8K
KyAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVy
Lnhvckluc24oZGVzdCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgIH0KKwogICAgIHZvaWQg
c3FydERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAg
ICAgICAgbV9hc3NlbWJsZXIuc3FydGQoZHN0LCBzcmMpOwpAQCAtOTg5LDYgKzEwODYsNDQgQEAg
cHVibGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCBzdG9yZTMyKFRydXN0ZWRJbW0z
MiBpbW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKGFkZHJlc3Mub2Zm
c2V0ID49IC0zMjc2OCAmJiBhZGRyZXNzLm9mZnNldCA8PSAzMjc2NyAmJiAhbV9maXhlZFdpZHRo
KSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgIHNsbCAgICAgYWRkclRlbXAsIGFk
ZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUKKyAgICAgICAgICAgICAgICBhZGR1ICAgIGFkZHJU
ZW1wLCBhZGRyVGVtcCwgYWRkcmVzcy5iYXNlCisgICAgICAgICAgICAgICAgc3cgICAgICBzcmMs
IGFkZHJlc3Mub2Zmc2V0KGFkZHJUZW1wKQorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLnNsbChhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNj
YWxlKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoYWRkclRlbXBSZWdpc3RlciwgYWRk
clRlbXBSZWdpc3RlciwgYWRkcmVzcy5iYXNlKTsKKyAgICAgICAgICAgIGlmICghaW1tLm1fdmFs
dWUpCisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3coTUlQU1JlZ2lzdGVyczo6emVybywg
YWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5vZmZzZXQpOworICAgICAgICAgICAgZWxzZSB7Cisg
ICAgICAgICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuc3coaW1tVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRy
ZXNzLm9mZnNldCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAvKgorICAgICAgICAgICAgICAgIHNsbCAgICAgYWRkclRlbXAsIGFkZHJlc3MuaW5kZXgsIGFk
ZHJlc3Muc2NhbGUKKyAgICAgICAgICAgICAgICBhZGR1ICAgIGFkZHJUZW1wLCBhZGRyVGVtcCwg
YWRkcmVzcy5iYXNlCisgICAgICAgICAgICAgICAgbHVpICAgICBpbW1UZW1wLCAoYWRkcmVzcy5v
ZmZzZXQgKyAweDgwMDApID4+IDE2CisgICAgICAgICAgICAgICAgYWRkdSAgICBhZGRyVGVtcCwg
YWRkclRlbXAsIGltbVRlbXAKKyAgICAgICAgICAgICAgICBzdyAgICAgIHNyYywgKGFkZHJlc3Mu
b2Zmc2V0ICYgMHhmZmZmKShhdCkKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5zbGwoYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJUZW1w
UmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sdWkoaW1t
VGVtcFJlZ2lzdGVyLCAoYWRkcmVzcy5vZmZzZXQgKyAweDgwMDApID4+IDE2KTsKKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmFkZHUoYWRkclRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3Rlciwg
aW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlmICghaW1tLm1fdmFsdWUgJiYgIW1fZml4
ZWRXaWR0aCkKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdyhNSVBTUmVnaXN0ZXJzOjp6
ZXJvLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5zdyhpbW1UZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIs
IGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworCiAg
ICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCBjb25zdCB2b2lkKiBhZGRyZXNzKQogICAg
IHsKICAgICAgICAgLyoKQEAgLTEzMzYsNiArMTQ3MSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIG1f
Zml4ZWRXaWR0aCA9IGZhbHNlOwogICAgIH0KIAorICAgIHZvaWQganVtcChBYnNvbHV0ZUFkZHJl
c3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fZml4ZWRXaWR0aCA9IHRydWU7CisgICAgICAg
IGxvYWQzMihhZGRyZXNzLm1fcHRyLCBNSVBTUmVnaXN0ZXJzOjp0OSk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmpyKE1JUFNSZWdpc3RlcnM6OnQ5KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7
CisgICAgICAgIG1fZml4ZWRXaWR0aCA9IGZhbHNlOworICAgIH0KKwogICAgIHZvaWQgbW92ZURv
dWJsZVRvSW50cyhGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklE
IGRlc3QyKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIudm1vdihkZXN0MSwgZGVzdDIsIHNy
Yyk7CkBAIC0xNDA0LDYgKzE1NDgsNTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcCgp
OwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJl
Z2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChj
b25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKKyAgICAgICAgaWYgKGNvbmQgPT0g
T3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgbW92ZSAgICBkYXRh
VGVtcCwgb3AxCisgICAgICAgICAgICAgICAgeG9yICAgICBjbXBUZW1wLCBkYXRhVGVtcCwgb3Ay
CisgICAgICAgICAgICAgICAgYmx0eiAgICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIGRpZmYg
c2lnbiBiaXQgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBhZGR1ICAgIGRlc3QsIGRh
dGFUZW1wLCBvcDIKKyAgICAgICAgICAgICAgICB4b3IgICAgIGNtcFRlbXAsIGRlc3QsIGRhdGFU
ZW1wCisgICAgICAgICAgICAgICAgYmdleiAgICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIHNh
bWUgc2lnbiBiaWcgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAg
ICAgICAgICBiICAgICAgIE92ZXJmbG93CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAg
ICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAg
ICAgICAgICAgICAgbm9wCisgICAgICAgICAgICBOb19vdmVyZmxvdzoKKyAgICAgICAgICAgICov
CisgICAgICAgICAgICBtb3ZlKG9wMSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBt
X2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwgb3Ay
KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxMCk7Cisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGVzdCwg
ZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBS
ZWdpc3RlciwgNyk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAg
IHJldHVybiBqdW1wKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7
CisgICAgICAgICAgICBhZGQzMihvcDEsIG9wMiwgZGVzdCk7CisgICAgICAgICAgICAvLyBDaGVj
ayBpZiBkZXN0IGlzIG5lZ2F0aXZlLgorICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0KGNtcFRl
bXBSZWdpc3RlciwgZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICByZXR1
cm4gYnJhbmNoTm90RXF1YWwoY21wVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBaZXJvKSB7CisgICAgICAgICAgICBhZGQz
MihvcDEsIG9wMiwgZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoRXF1YWwoZGVzdCwg
TUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gTm9u
WmVybykgeworICAgICAgICAgICAgYWRkMzIob3AxLCBvcDIsIGRlc3QpOworICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaE5vdEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAg
ICB9CisgICAgICAgIEFTU0VSVCgwKTsKKyAgICAgICAgcmV0dXJuIEp1bXAoKTsKKyAgICB9CisK
ICAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIg
aW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJl
Z2lzdGVyKTsKQEAgLTE0MTcsNiArMTYwOCwxMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
YnJhbmNoQWRkMzIoY29uZCwgaW1tVGVtcFJlZ2lzdGVyLCBkZXN0KTsKICAgICB9CiAKKyAgICBK
dW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBB
YnNvbHV0ZUFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVy
ZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBO
b25aZXJvKSk7CisgICAgICAgIGlmIChjb25kID09IE92ZXJmbG93KSB7CisgICAgICAgICAgICAv
KgorICAgICAgICAgICAgICAgIG1vdmUgICAgZGF0YVRlbXAsIGRlc3QKKyAgICAgICAgICAgICAg
ICB4b3JpICAgIGNtcFRlbXAsIGRhdGFUZW1wLCBpbW0KKyAgICAgICAgICAgICAgICBibHR6ICAg
IGNtcFRlbXAsIE5vX292ZXJmbG93ICAgICMgZGlmZiBzaWduIGJpdCAtPiBubyBvdmVyZmxvdwor
ICAgICAgICAgICAgICAgIGFkZGl1ICAgZGF0YVRlbXAsIGRhdGFUZW1wLCBpbW0KKyAgICAgICAg
ICAgICAgICBtb3ZlICAgIGRlc3QsIGRhdGFUZW1wCisgICAgICAgICAgICAgICAgeG9yaSAgICBj
bXBUZW1wLCBkYXRhVGVtcCwgaW1tCisgICAgICAgICAgICAgICAgYmdleiAgICBjbXBUZW1wLCBO
b19vdmVyZmxvdyAgICAjIHNhbWUgc2lnbiBiaWcgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAg
ICAgICBub3AKKyAgICAgICAgICAgICAgICBiICAgICAgIE92ZXJmbG93CisgICAgICAgICAgICAg
ICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAg
ICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICBOb19vdmVyZmxv
dzoKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPj0gLTMyNzY4
ICYmIGltbS5tX3ZhbHVlICA8PSAzMjc2NyAmJiAhbV9maXhlZFdpZHRoKSB7CisgICAgICAgICAg
ICAgICAgbG9hZDMyKGRlc3QubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnhvcmkoY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBp
bW0ubV92YWx1ZSk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmx0eihjbXBUZW1wUmVn
aXN0ZXIsIDEwKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRpdShkYXRhVGVtcFJl
Z2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW0ubV92YWx1ZSk7CisgICAgICAgICAgICAgICAg
c3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0Lm1fcHRyKTsKKyAgICAgICAgICAgICAgICBt
X2Fzc2VtYmxlci54b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1f
dmFsdWUpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVy
LCA3KTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgbG9hZDMyKGRlc3QubV9wdHIsIGRhdGFUZW1wUmVnaXN0
ZXIpOworICAgICAgICAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJl
Z2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJs
dHooY21wVGVtcFJlZ2lzdGVyLCAxMCk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRk
aXUoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsK
KyAgICAgICAgICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QubV9wdHIpOwor
ICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmkoY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVt
cFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmJnZXooY21wVGVtcFJlZ2lzdGVyLCA3KTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5u
b3AoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBqdW1wKCk7CisgICAgICAg
IH0KKyAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIGxvYWQzMihk
ZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgYWRkMzIoaW1tVGVtcFJlZ2lz
dGVyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVy
LCBkZXN0Lm1fcHRyKTsKKyAgICAgICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7CisgICAgICAgICAg
ICAvLyBDaGVjayBpZiBkZXN0IGlzIG5lZ2F0aXZlLgorICAgICAgICAgICAgbV9hc3NlbWJsZXIu
c2x0KGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVy
byk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwoY21wVGVtcFJlZ2lzdGVyLCBN
SVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBaZXJv
KQorICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKGRhdGFUZW1wUmVnaXN0ZXIsIE1JUFNS
ZWdpc3RlcnM6Onplcm8pOworICAgICAgICBpZiAoY29uZCA9PSBOb25aZXJvKQorICAgICAgICAg
ICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGRhdGFUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6
Onplcm8pOworICAgICAgICBBU1NFUlQoMCk7CisgICAgICAgIHJldHVybiBKdW1wKCk7CisgICAg
fQorCisgICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBzcmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9
PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CisgICAgICAgIGlmIChjb25kID09IE92ZXJm
bG93KSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgIG11bHQgICAgc3JjLCBkZXN0
CisgICAgICAgICAgICAgICAgbWZoaSAgICBkYXRhVGVtcAorICAgICAgICAgICAgICAgIG1mbG8g
ICAgZGVzdAorICAgICAgICAgICAgICAgIHNyYSAgICAgYWRkclRlbXAsIGRlc3QsIDMxCisgICAg
ICAgICAgICAgICAgYmVxICAgICBkYXRhVGVtcCwgYWRkclRlbXAsIE5vX292ZXJmbG93ICMgYWxs
IHNpZ24gYml0cyAoYml0IDYzIHRvIGJpdCAzMSkgYXJlIHRoZSBzYW1lIC0+IG5vIG92ZXJmbG93
CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgYiAgICAgICBPdmVyZmxvdwor
ICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAg
IG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAg
ICAgTm9fb3ZlcmZsb3c6CisgICAgICAgICAgICAqLworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
bXVsdChzcmMxLCBzcmMyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1maGkoZGF0YVRlbXBS
ZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tZmxvKGRlc3QpOworICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuc3JhKGFkZHJUZW1wUmVnaXN0ZXIsIGRlc3QsIDMxKTsKKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmJlcShkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCA3
KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGp1
bXAoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKKyAgICAgICAg
ICAgIG11bDMyKHNyYzEsIHNyYzIsIGRlc3QpOworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVz
dCBpcyBuZWdhdGl2ZS4KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0
ZXIsIGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgcmV0dXJuIGJyYW5j
aE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKGNvbmQgPT0gWmVybykgeworICAgICAgICAgICAgbXVsMzIoc3JjMSwg
c3JjMiwgZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoRXF1YWwoZGVzdCwgTUlQU1Jl
Z2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykg
eworICAgICAgICAgICAgbXVsMzIoc3JjMSwgc3JjMiwgZGVzdCk7CisgICAgICAgICAgICByZXR1
cm4gYnJhbmNoTm90RXF1YWwoZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0K
KyAgICAgICAgQVNTRVJUKDApOworICAgICAgICByZXR1cm4gSnVtcCgpOworICAgIH0KKwogICAg
IEp1bXAgYnJhbmNoTXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cp
IHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVy
bykpOwpAQCAtMTQ2NSw4ICsxNzYxLDcgQEAgcHVibGljOgogICAgIEp1bXAgYnJhbmNoTXVsMzIo
UmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVy
KTsKLSAgICAgICAgbW92ZShzcmMsIGRlc3QpOwotICAgICAgICByZXR1cm4gYnJhbmNoTXVsMzIo
Y29uZCwgaW1tVGVtcFJlZ2lzdGVyLCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMy
KGNvbmQsIGltbVRlbXBSZWdpc3Rlciwgc3JjLCBkZXN0KTsKICAgICB9CiAKICAgICBKdW1wIGJy
YW5jaFN1YjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJ
RCBkZXN0KQpAQCAtMTUyNSw4ICsxODIwLDYwIEBAIHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaFN1
YjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdp
c3Rlcik7Ci0gICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaFN1
YjMyKGNvbmQsIGltbVRlbXBSZWdpc3RlciwgZGVzdCk7CisgICAgICAgIHJldHVybiBicmFuY2hT
dWIzMihjb25kLCBzcmMsIGltbVRlbXBSZWdpc3RlciwgZGVzdCk7CisgICAgfQorCisgICAgSnVt
cCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIFJlZ2lz
dGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoKGNvbmQg
PT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNv
bmQgPT0gTm9uWmVybykpOworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgeworICAgICAg
ICAgICAgLyoKKyAgICAgICAgICAgICAgICBtb3ZlICAgIGRhdGFUZW1wLCBvcDEKKyAgICAgICAg
ICAgICAgICB4b3IgICAgIGNtcFRlbXAsIGRhdGFUZW1wLCBvcDIKKyAgICAgICAgICAgICAgICBi
Z2V6ICAgIGNtcFRlbXAsIE5vX292ZXJmbG93ICAgICMgc2FtZSBzaWduIGJpdCAtPiBubyBvdmVy
ZmxvdworICAgICAgICAgICAgICAgIHN1YnUgICAgZGVzdCwgZGF0YVRlbXAsIG9wMgorICAgICAg
ICAgICAgICAgIHhvciAgICAgY21wVGVtcCwgZGVzdCwgZGF0YVRlbXAKKyAgICAgICAgICAgICAg
ICBiZ2V6ICAgIGNtcFRlbXAsIE5vX292ZXJmbG93ICAgICMgc2FtZSBzaWduIGJpdCAtPiBubyBv
dmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIGIgICAgICAgT3Zl
cmZsb3cKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAg
ICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAg
ICAgICAgICAgIE5vX292ZXJmbG93OgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1vdmUo
b3AxLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24o
Y21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBvcDIpOworICAgICAgICAgICAgbV9h
c3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDEwKTsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnN1YnUoZGVzdCwgZGF0YVRlbXBSZWdpc3Rlciwgb3AyKTsKKyAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnhvckluc24oY21wVGVtcFJlZ2lzdGVyLCBkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyKTsK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCA3KTsKKyAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGp1bXAoKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKKyAgICAgICAgICAgIHN1YjMy
KG9wMSwgb3AyLCBkZXN0KTsKKyAgICAgICAgICAgIC8vIENoZWNrIGlmIGRlc3QgaXMgbmVnYXRp
dmUuCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHQoY21wVGVtcFJlZ2lzdGVyLCBkZXN0LCBN
SVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChj
bXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAg
IGlmIChjb25kID09IFplcm8pIHsKKyAgICAgICAgICAgIHN1YjMyKG9wMSwgb3AyLCBkZXN0KTsK
KyAgICAgICAgICAgIHJldHVybiBicmFuY2hFcXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJv
KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBOb25aZXJvKSB7CisgICAgICAgICAg
ICBzdWIzMihvcDEsIG9wMiwgZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1
YWwoZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJU
KDApOworICAgICAgICByZXR1cm4gSnVtcCgpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoTmVn
MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjRGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLmxpKGRhdGFUZW1wUmVnaXN0ZXIsIC0xKTsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaE11bDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHNyY0Rlc3QpOwogICAgIH0KIAog
ICAgIEp1bXAgYnJhbmNoT3IzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKQEAgLTE1NzgsNyArMTkyNSw4IEBAIHB1YmxpYzoKIAogICAgIENh
bGwgY2FsbChSZWdpc3RlcklEIHRhcmdldCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmph
bHIodGFyZ2V0KTsKKyAgICAgICAgbW92ZSh0YXJnZXQsIE1JUFNSZWdpc3RlcnM6OnQ5KTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuamFscihNSVBTUmVnaXN0ZXJzOjp0OSk7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLm5vcCgpOwogICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5sYWJlbCgpLCBD
YWxsOjpOb25lKTsKICAgICB9CkBAIC0xODIyLDcgKzIxNzAsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgbHVpICAgICBpbW1UZW1wLCAoYWRkcmVzcy5vZmZzZXQgKyAweDgwMDApID4+IDE2
CiAgICAgICAgICAgICAgICAgYWRkdSAgICBhZGRyVGVtcCwgYWRkclRlbXAsIGltbVRlbXAKICAg
ICAgICAgICAgICAgICBsd2MxICAgIGRlc3QsIChhZGRyZXNzLm9mZnNldCAmIDB4ZmZmZikoYXQp
Ci0gICAgICAgICAgICAgICAgbHdjMSAgICBkZXN0KzQsIChhZGRyZXNzLm9mZnNldCAmIDB4ZmZm
ZiArIDQpKGF0KQorICAgICAgICAgICAgICAgIGx3YzEgICAgZGVzdCsxLCAoYWRkcmVzcy5vZmZz
ZXQgJiAweGZmZmYgKyA0KShhdCkKICAgICAgICAgICAgICovCiAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5zbGwoYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7
CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJUZW1w
UmVnaXN0ZXIsIGFkZHJlc3MuYmFzZSk7CkBAIC0yMDA5LDYgKzIzNTcsMTkgQEAgcHVibGljOgog
I2VuZGlmCiAgICAgfQogCisgICAgdm9pZCBtb3ZlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQ
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKHNyYyAhPSBkZXN0IHx8IG1fZml4
ZWRXaWR0aCkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmQoZGVzdCwgc3JjKTsKKyAgICB9
CisKKyAgICB2b2lkIHN3YXBEb3VibGUoRlBSZWdpc3RlcklEIGZyMSwgRlBSZWdpc3RlcklEIGZy
MikKKyAgICB7CisgICAgICAgIG1vdmVEb3VibGUoZnIxLCBmcFRlbXBSZWdpc3Rlcik7CisgICAg
ICAgIG1vdmVEb3VibGUoZnIyLCBmcjEpOworICAgICAgICBtb3ZlRG91YmxlKGZwVGVtcFJlZ2lz
dGVyLCBmcjIpOworICAgIH0KKwogICAgIHZvaWQgYWRkRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMs
IEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkZChkZXN0
LCBkZXN0LCBzcmMpOwpAQCAtMjAzNiw2ICsyMzk3LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9h
c3NlbWJsZXIuc3ViZChkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgc3ViRG91
YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViZChkZXN0LCBvcDEsIG9wMik7CisgICAg
fQorCiAgICAgdm9pZCBzdWJEb3VibGUoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgbG9hZERvdWJsZShzcmMsIGZwVGVtcFJlZ2lzdGVyKTsKQEAgLTIwNTMs
MTEgKzI0MTksMzIgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5tdWxkKGRlc3QsIGRl
c3QsIGZwVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKKyAgICB2b2lkIG11bERvdWJsZShGUFJlZ2lz
dGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLm11bGQoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZv
aWQgZGl2RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICAgICAgICAgbV9hc3NlbWJsZXIuZGl2ZChkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAg
IHZvaWQgZGl2RG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuZGl2ZChkZXN0LCBvcDEs
IG9wMik7CisgICAgfQorCisgICAgdm9pZCBkaXZEb3VibGUoQWRkcmVzcyBzcmMsIEZQUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZERvdWJsZShzcmMsIGZwVGVtcFJlZ2lzdGVy
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuZGl2ZChkZXN0LCBkZXN0LCBmcFRlbXBSZWdpc3Rlcik7
CisgICAgfQorCisgICAgdm9pZCBuZWdhdGVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdp
c3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdkKGRlc3QsIHNyYyk7
CisgICAgfQorCiAgICAgdm9pZCBjb252ZXJ0SW50MzJUb0RvdWJsZShSZWdpc3RlcklEIHNyYywg
RlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKHNyYywg
ZnBUZW1wUmVnaXN0ZXIpOwpAQCAtMjExNyw2ICsyNTA0LDggQEAgcHVibGljOgogCiAgICAgSnVt
cCBicmFuY2hFcXVhbChSZWdpc3RlcklEIHJzLCBSZWdpc3RlcklEIHJ0KQogICAgIHsKKyAgICAg
ICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwogICAgICAg
ICBtX2Fzc2VtYmxlci5hcHBlbmRKdW1wKCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmJlcShycywg
cnQsIDApOwogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKQEAgLTIxMjYsNiArMjUxNSw4IEBA
IHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoTm90RXF1YWwoUmVnaXN0ZXJJRCBycywgUmVnaXN0
ZXJJRCBydCkKICAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICBtX2Fz
c2VtYmxlci5ub3AoKTsKICAgICAgICAgbV9hc3NlbWJsZXIuYXBwZW5kSnVtcCgpOwogICAgICAg
ICBtX2Fzc2VtYmxlci5ibmUocnMsIHJ0LCAwKTsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7
CkBAIC0yMTkyLDExICsyNTgzLDMzIEBAIHB1YmxpYzoKICAgICAvLyBJZiB0aGUgcmVzdWx0IGlz
IG5vdCByZXByZXNlbnRhYmxlIGFzIGEgMzIgYml0IHZhbHVlLCBicmFuY2guCiAgICAgLy8gTWF5
IGFsc28gYnJhbmNoIGZvciBzb21lIHZhbHVlcyB0aGF0IGFyZSByZXByZXNlbnRhYmxlIGluIDMy
IGJpdHMKICAgICAvLyAoc3BlY2lmaWNhbGx5LCBpbiB0aGlzIGNhc2UsIElOVF9NQVggMHg3ZmZm
ZmZmZikuCi0gICAgSnVtcCBicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIGVudW0gQnJhbmNoVHJ1bmNhdGVUeXBlIHsgQnJh
bmNoSWZUcnVuY2F0ZUZhaWxlZCwgQnJhbmNoSWZUcnVuY2F0ZVN1Y2Nlc3NmdWwgfTsKKyAgICBK
dW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRlc3QsIEJyYW5jaFRydW5jYXRlVHlwZSBicmFuY2hUeXBlID0gQnJhbmNoSWZUcnVuY2F0
ZUZhaWxlZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnRydW5jd2QoZnBUZW1wUmVnaXN0
ZXIsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1mYzEoZGVzdCwgZnBUZW1wUmVnaXN0ZXIp
OworICAgICAgICByZXR1cm4gYnJhbmNoMzIoYnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRydW5jYXRl
RmFpbGVkID8gRXF1YWwgOiBOb3RFcXVhbCwgZGVzdCwgVHJ1c3RlZEltbTMyKDB4N2ZmZmZmZmYp
KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIoRlBSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBCcmFuY2hUcnVuY2F0ZVR5cGUgYnJhbmNoVHlw
ZSA9IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci50
cnVuY3dkKGZwVGVtcFJlZ2lzdGVyLCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci5tZmMxKGRl
c3QsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGJyYW5jaFR5cGUg
PT0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCA/IEVxdWFsIDogTm90RXF1YWwsIGRlc3QsIFRydXN0
ZWRJbW0zMigwKSk7CisgICAgfQorCisgICAgLy8gUmVzdWx0IGlzIHVuZGVmaW5lZCBpZiB0aGUg
dmFsdWUgaXMgb3V0c2lkZSBvZiB0aGUgaW50ZWdlciByYW5nZS4KKyAgICB2b2lkIHRydW5jYXRl
RG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci50cnVuY3dkKGZwVGVtcFJlZ2lzdGVyLCBzcmMpOworICAgICAg
ICBtX2Fzc2VtYmxlci5tZmMxKGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICAv
LyBSZXN1bHQgaXMgdW5kZWZpbmVkIGlmIHNyYyA+IDJeMzEKKyAgICB2b2lkIHRydW5jYXRlRG91
YmxlVG9VaW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgbV9hc3NlbWJsZXIudHJ1bmN3ZChmcFRlbXBSZWdpc3Rlciwgc3JjKTsKICAgICAgICAg
bV9hc3NlbWJsZXIubWZjMShkZXN0LCBmcFRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBi
cmFuY2gzMihFcXVhbCwgZGVzdCwgVHJ1c3RlZEltbTMyKDB4N2ZmZmZmZmYpKTsKICAgICB9CiAK
ICAgICAvLyBDb252ZXJ0ICdzcmMnIHRvIGFuIGludGVnZXIsIGFuZCBwbGFjZXMgdGhlIHJlc3Vs
dGluZyAnZGVzdCcuCkBAIC0yMjE4LDI4ICsyNjMxLDQzIEBAIHB1YmxpYzoKIAogICAgIEp1bXAg
YnJhbmNoRG91YmxlTm9uWmVybyhGUFJlZ2lzdGVySUQgcmVnLCBGUFJlZ2lzdGVySUQgc2NyYXRj
aCkKICAgICB7Ci0jaWYgV1RGX01JUFNfSVNBX1JFVigyKSAmJiBXVEZfTUlQU19GUDY0Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQU1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7Ci0gICAg
ICAgIG1fYXNzZW1ibGVyLm10aGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0Y2gpOwotI2Vs
c2UKLSAgICAgICAgbV9hc3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzY3JhdGNo
KTsKLSAgICAgICAgbV9hc3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBGUFJlZ2lz
dGVySUQoc2NyYXRjaCArIDEpKTsKLSNlbmRpZgorICAgICAgICBtX2Fzc2VtYmxlci52bW92KHNj
cmF0Y2gsIE1JUFNSZWdpc3RlcnM6Onplcm8sIE1JUFNSZWdpc3RlcnM6Onplcm8pOwogICAgICAg
ICByZXR1cm4gYnJhbmNoRG91YmxlKERvdWJsZU5vdEVxdWFsLCByZWcsIHNjcmF0Y2gpOwogICAg
IH0KIAogICAgIEp1bXAgYnJhbmNoRG91YmxlWmVyb09yTmFOKEZQUmVnaXN0ZXJJRCByZWcsIEZQ
UmVnaXN0ZXJJRCBzY3JhdGNoKQogICAgIHsKLSNpZiBXVEZfTUlQU19JU0FfUkVWKDIpICYmIFdU
Rl9NSVBTX0ZQNjQKLSAgICAgICAgbV9hc3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJv
LCBzY3JhdGNoKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubXRoYzEoTUlQU1JlZ2lzdGVyczo6emVy
bywgc2NyYXRjaCk7Ci0jZWxzZQotICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdpc3Rl
cnM6Onplcm8sIHNjcmF0Y2gpOwotICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdpc3Rl
cnM6Onplcm8sIEZQUmVnaXN0ZXJJRChzY3JhdGNoICsgMSkpOwotI2VuZGlmCisgICAgICAgIG1f
YXNzZW1ibGVyLnZtb3Yoc2NyYXRjaCwgTUlQU1JlZ2lzdGVyczo6emVybywgTUlQU1JlZ2lzdGVy
czo6emVybyk7CiAgICAgICAgIHJldHVybiBicmFuY2hEb3VibGUoRG91YmxlRXF1YWxPclVub3Jk
ZXJlZCwgcmVnLCBzY3JhdGNoKTsKICAgICB9CiAKKyAgICAvLyBJbnZlcnQgYSByZWxhdGlvbmFs
IGNvbmRpdGlvbiwgZS5nLiA9PSBiZWNvbWVzICE9LCA8IGJlY29tZXMgPj0sIGV0Yy4KKyAgICBz
dGF0aWMgUmVsYXRpb25hbENvbmRpdGlvbiBpbnZlcnQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
KQorICAgIHsKKyAgICAgICAgUmVsYXRpb25hbENvbmRpdGlvbiByOworICAgICAgICBpZiAoY29u
ZCA9PSBFcXVhbCkKKyAgICAgICAgICAgIHIgPSBOb3RFcXVhbDsKKyAgICAgICAgZWxzZSBpZiAo
Y29uZCA9PSBOb3RFcXVhbCkKKyAgICAgICAgICAgIHIgPSBFcXVhbDsKKyAgICAgICAgZWxzZSBp
ZiAoY29uZCA9PSBBYm92ZSkKKyAgICAgICAgICAgIHIgPSBCZWxvd09yRXF1YWw7CisgICAgICAg
IGVsc2UgaWYgKGNvbmQgPT0gQWJvdmVPckVxdWFsKQorICAgICAgICAgICAgciA9IEJlbG93Owor
ICAgICAgICBlbHNlIGlmIChjb25kID09IEJlbG93KQorICAgICAgICAgICAgciA9IEFib3ZlT3JF
cXVhbDsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBCZWxvd09yRXF1YWwpCisgICAgICAgICAg
ICByID0gQWJvdmU7CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gR3JlYXRlclRoYW4pCisgICAg
ICAgICAgICByID0gTGVzc1RoYW5PckVxdWFsOworICAgICAgICBlbHNlIGlmIChjb25kID09IEdy
ZWF0ZXJUaGFuT3JFcXVhbCkKKyAgICAgICAgICAgIHIgPSBMZXNzVGhhbjsKKyAgICAgICAgZWxz
ZSBpZiAoY29uZCA9PSBMZXNzVGhhbikKKyAgICAgICAgICAgIHIgPSBHcmVhdGVyVGhhbk9yRXF1
YWw7CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gTGVzc1RoYW5PckVxdWFsKQorICAgICAgICAg
ICAgciA9IEdyZWF0ZXJUaGFuOworICAgICAgICByZXR1cm4gcjsKKyAgICB9CisKICAgICB2b2lk
IG5vcCgpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKQEAgLTIyNTIsMTIgKzI2
ODAsMTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVM
b2NhdGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0
aW9uKQogICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgTUlQU0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZGF0YUxv
Y2F0aW9uKCksIGRlc3RpbmF0aW9uLmRhdGFMb2NhdGlvbigpKTsKICAgICB9CiAgICAgCiAgICAg
c3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKICAgICB7Ci0gICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIE1JUFNBc3NlbWJsZXI6Om1h
eEp1bXBSZXBsYWNlbWVudFNpemUoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaAppbmRleCBmYTBm
NWUwLi41NzNkOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fz
c2VtYmx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1i
bHlIZWxwZXJzLmgKQEAgLTkzLDYgKzkzLDIzIEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAor
I2lmIENQVShNSVBTKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwcmVzZXJ2ZVJldHVybkFkZHJl
c3NBZnRlckNhbGwoUmVnaXN0ZXJJRCByZWcpCisgICAgeworICAgICAgICBtb3ZlKHJldHVybkFk
ZHJlc3NSZWdpc3RlciwgcmVnKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVz
dG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oUmVnaXN0ZXJJRCByZWcpCisgICAgeworICAg
ICAgICBtb3ZlKHJlZywgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKKyAgICB9CisKKyAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oQWRkcmVzcyBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbG9hZFB0cihhZGRyZXNzLCByZXR1cm5BZGRyZXNzUmVn
aXN0ZXIpOworICAgIH0KKyNlbmRpZgorCiAgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhl
YWRlclB0cihKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSwgR1BSUmVnIHRvKQog
ICAgIHsKICAgICAgICAgbG9hZFB0cihBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVy
LCBlbnRyeSAqIHNpemVvZihSZWdpc3RlcikpLCB0byk7CkBAIC0xOTMsNyArMjEwLDcgQEAgcHVi
bGljOgogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWN0aXZlTGVu
Z3RoUHRyKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1Q
dHIoc2NyYXRjaFNpemUpLCBHUFJJbmZvOjpyZWdUMCk7CiAKLSNpZiBDUFUoWDg2XzY0KSB8fCBD
UFUoQVJNKQorI2lmIENQVShYODZfNjQpIHx8IENQVShBUk0pIHx8IENQVShNSVBTKQogICAgICAg
ICBtb3ZlKFRydXN0ZWRJbW1QdHIoYnVmZmVyKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKICAg
ICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFyZ3VtZW50KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIx
KTsKICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0Nh
bGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5o
CmluZGV4IDhhZGRlMDUuLjNkOTlmNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDQ2FsbEhlbHBlcnMuaApAQCAtNTc2LDYgKzU3NiwzOSBAQCBwdWJsaWM6CiAgICAgICAgIHBv
a2UoR1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgfQogI2VuZGlmIC8vIENQVShBUk1fSEFSREZQ
KQorI2VsaWYgQ1BVKE1JUFMpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRz
KEZQUlJlZyBhcmcxKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjph
cmd1bWVudEZQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3Vt
ZW50cyhGUFJSZWcgYXJnMSwgRlBSUmVnIGFyZzIpCisgICAgeworICAgICAgICBpZiAoYXJnMiAh
PSBGUFJJbmZvOjphcmd1bWVudEZQUjApIHsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMSwg
RlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMiwgRlBS
SW5mbzo6YXJndW1lbnRGUFIxKTsKKyAgICAgICAgfSBlbHNlIGlmIChhcmcxICE9IEZQUkluZm86
OmFyZ3VtZW50RlBSMSkgeworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjph
cmd1bWVudEZQUjEpOworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1
bWVudEZQUjApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gU3dhcCBhcmcxLCBh
cmcyLgorICAgICAgICAgICAgc3dhcERvdWJsZShGUFJJbmZvOjphcmd1bWVudEZQUjAsIEZQUklu
Zm86OmFyZ3VtZW50RlBSMSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEZQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MikKKyAgICB7CisgICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJndW1lbnRHUFIy
LCBHUFJJbmZvOjphcmd1bWVudEdQUjMsIGFyZzEpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBwb2tlKGFy
ZzIsIDQpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBGUFJSZWcgYXJnMykKKyAgICB7
CisgICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKKyAgICAgICAgbW92ZShH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAg
ICAgcG9rZShhcmczLCA0KTsKKyAgICB9CiAjZWxzZQogI2Vycm9yICJERkcgSklUIG5vdCBzdXBw
b3J0ZWQgb24gdGhpcyBwbGF0Zm9ybS4iCiAjZW5kaWYKQEAgLTgwMywxMTkgKzgzNiwxMjYgQEAg
cHVibGljOgogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHN1aXRhYmxlIGZvciBhbnkgY2FsbGlu
ZyBjb252ZW50aW9uIHRoYXQgcHJvdmlkZXMgZm9yCiAgICAgLy8gZXhhY3RseSA0IGFyZ3VtZW50
IHJlZ2lzdGVycywgZS5nLiBBUk12Ny4KICNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJT
ID09IDQKKworI2lmIENQVShNSVBTKQorI2RlZmluZSBQT0tFX0FSR1VNRU5UX09GRlNFVCA0Cisj
ZWxzZQorI2RlZmluZSBQT0tFX0FSR1VNRU5UX09GRlNFVCAwCisjZW5kaWYKKwogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewotICAgICAgICBwb2tl
KGFyZzQpOworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAg
ICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0K
IAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BS
UmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQpCiAg
ICAgewotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1F
TlRfT0ZGU0VUKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZElt
bTMyIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAg
ICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CiAgICAgICAgIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVz
dGVkSW1tUHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFy
ZzUpCiAgICAgewotICAgICAgICBwb2tlKGFyZzUsIDEpOwotICAgICAgICBwb2tlKGFyZzQpOwor
ICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7CisgICAgICAgIHBv
a2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCkKICAgICB7Ci0gICAgICAg
IHBva2UoYXJnNCk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwog
ICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAg
ICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJS
ZWcgYXJnNCkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2UoYXJnNCwg
UE9LRV9BUkdVTUVOVF9PRkZTRVQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJl
ZyBhcmczLCBUcnVzdGVkSW1tUHRyIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFyZzQpOwor
ICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEs
IEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQogICAg
IHsKLSAgICAgICAgcG9rZShhcmc1LCAxKTsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAg
cG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOworICAgICAgICBwb2tlKGFyZzQs
IFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcy
LCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFyZzQpOwor
ICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMy
IGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbVB0ciBhcmc0KQogICAg
IHsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5U
X09GRlNFVCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMy
IGFyZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNCk7Cisg
ICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwogICAgICAgICBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIg
YXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCkKICAgICB7
Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9P
RkZTRVQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwg
YXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBH
UFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCiAgICAgewotICAgICAgICBwb2tlKGFyZzUsIDEpOwot
ICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZG
U0VUICsgMSk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwogICAg
ICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAg
fQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwg
VHJ1c3RlZEltbTMyIGFyZzUpCiAgICAgewotICAgICAgICBwb2tlKGFyZzUsIDEpOwotICAgICAg
ICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsg
MSk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwogICAgICAgICBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVk
SW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgVHJ1c3Rl
ZEltbVB0ciBhcmc1KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCAxKTsKLSAgICAgICAgcG9r
ZShhcmc0KTsKKyAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOwor
ICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMy
IGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQsIFRydXN0
ZWRJbW0zMiBhcmc1KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCAxKTsKLSAgICAgICAgcG9r
ZShhcmc0KTsKKyAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOwor
ICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMy
IGFyZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQs
IEdQUlJlZyBhcmc1KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCAxKTsKLSAgICAgICAgcG9r
ZShhcmc0KTsKKyAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOwor
ICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAgICAgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFM
V0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMy
IGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1
KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCAxKTsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAg
ICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOworICAgICAgICBwb2tl
KGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZQUkluZm8uaAppbmRleCA5MzFhNzcxLi4zNTU2NzY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0ZQUkluZm8uaApAQCAtMTY0LDYgKzE2NCw3NCBAQCBwdWJsaWM6CiAKICNl
bmRpZgogCisjaWYgQ1BVKE1JUFMpCisKK2NsYXNzIEZQUkluZm8geworcHVibGljOgorICAgIHR5
cGVkZWYgRlBSUmVnIFJlZ2lzdGVyVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVt
YmVyT2ZSZWdpc3RlcnMgPSA2OworCisgICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KKyAgICBz
dGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDAgPSBNSVBTUmVnaXN0ZXJzOjpmMDsKKyAgICBzdGF0
aWMgY29uc3QgRlBSUmVnIGZwUmVnVDEgPSBNSVBTUmVnaXN0ZXJzOjpmNDsKKyAgICBzdGF0aWMg
Y29uc3QgRlBSUmVnIGZwUmVnVDIgPSBNSVBTUmVnaXN0ZXJzOjpmNjsKKyAgICBzdGF0aWMgY29u
c3QgRlBSUmVnIGZwUmVnVDMgPSBNSVBTUmVnaXN0ZXJzOjpmODsKKyAgICBzdGF0aWMgY29uc3Qg
RlBSUmVnIGZwUmVnVDQgPSBNSVBTUmVnaXN0ZXJzOjpmMTA7CisgICAgc3RhdGljIGNvbnN0IEZQ
UlJlZyBmcFJlZ1Q1ID0gTUlQU1JlZ2lzdGVyczo6ZjE4OworCisgICAgc3RhdGljIGNvbnN0IEZQ
UlJlZyByZXR1cm5WYWx1ZUZQUiA9IE1JUFNSZWdpc3RlcnM6OmYwOworCisgICAgc3RhdGljIGNv
bnN0IEZQUlJlZyBhcmd1bWVudEZQUjAgPSBNSVBTUmVnaXN0ZXJzOjpmMTI7CisgICAgc3RhdGlj
IGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjEgPSBNSVBTUmVnaXN0ZXJzOjpmMTQ7CisKKyAgICBz
dGF0aWMgRlBSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBz
dGF0aWMgY29uc3QgRlBSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0g
eworICAgICAgICAgICAgZnBSZWdUMCwgZnBSZWdUMSwgZnBSZWdUMiwgZnBSZWdUMywgZnBSZWdU
NCwgZnBSZWdUNSB9OworCisgICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mUmVnaXN0ZXJz
KTsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOworICAgIH0KKworICAg
IHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEZQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NF
UlQocmVnICE9IEludmFsaWRGUFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwgMjApOworICAg
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3RlclsyMF0gPSB7CisgICAg
ICAgICAgICAwLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LAorICAg
ICAgICAgICAgMSwgSW52YWxpZEluZGV4LCAyLCBJbnZhbGlkSW5kZXgsCisgICAgICAgICAgICAz
LCBJbnZhbGlkSW5kZXgsIDQsIEludmFsaWRJbmRleCwKKyAgICAgICAgICAgIEludmFsaWRJbmRl
eCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwKKyAgICAgICAgICAg
IEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCA1LCBJbnZhbGlkSW5kZXgsCisgICAgICAgIH07
CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGluZGV4Rm9yUmVnaXN0ZXJbcmVnXTsKKyAgICAg
ICAgQVNTRVJUKHJlc3VsdCAhPSBJbnZhbGlkSW5kZXgpOworICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoRlBSUmVnIHJlZykK
KyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7CisgICAgICAgIEFT
U0VSVChyZWcgPCAzMik7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lRm9yUmVnaXN0
ZXJbMzJdID0geworICAgICAgICAgICAgImYwIiwgImYxIiwgImYyIiwgImYzIiwKKyAgICAgICAg
ICAgICJmNCIsICJmNSIsICJmNiIsICJmNyIsCisgICAgICAgICAgICAiZjgiLCAiZjkiLCAiZjEw
IiwgImYxMSIsCisgICAgICAgICAgICAiZjEyIiwgImYxMyIsICJmMTQiLCAiZjE1IgorICAgICAg
ICAgICAgImYxNiIsICJmMTciLCAiZjE4IiwgImYxOSIKKyAgICAgICAgICAgICJmMjAiLCAiZjIx
IiwgImYyMiIsICJmMjMiCisgICAgICAgICAgICAiZjI0IiwgImYyNSIsICJmMjYiLCAiZjI3Igor
ICAgICAgICAgICAgImYyOCIsICJmMjkiLCAiZjMwIiwgImYzMSIKKyAgICAgICAgfTsKKyAgICAg
ICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOworICAgIH0KK3ByaXZhdGU6CisKKyAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgSW52YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsKK307CisKKyNl
bmRpZgorCiB0eXBlZGVmIFJlZ2lzdGVyQmFuazxGUFJJbmZvPjo6aXRlcmF0b3IgZnByX2l0ZXJh
dG9yOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR1BSSW5mby5oCmluZGV4IDNkMDc1NTYuLmFhNjM0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR1BSSW5mby5oCkBAIC00NjEsNiArNDYxLDczIEBAIHByaXZhdGU6CiAKICNlbmRp
ZgogCisjaWYgQ1BVKE1JUFMpCisjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMg
NAorCitjbGFzcyBHUFJJbmZvIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEdQUlJlZyBSZWdpc3Rl
clR5cGU7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gNjsK
KworICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBy
ZWdUMCA9IE1JUFNSZWdpc3RlcnM6OnYwOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDEg
PSBNSVBTUmVnaXN0ZXJzOjp2MTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QyID0gTUlQ
U1JlZ2lzdGVyczo6dDQ7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMyA9IE1JUFNSZWdp
c3RlcnM6OnQ1OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDQgPSBNSVBTUmVnaXN0ZXJz
Ojp0NjsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q1ID0gTUlQU1JlZ2lzdGVyczo6dDc7
CisgICAgLy8gVGhlc2UgcmVnaXN0ZXJzIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQuCisgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IHJlZ1QwOworICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIyID0gcmVnVDE7CisgICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OnMwOworICAg
IC8vIFRoZXNlIGNvbnN0YW50cyBwcm92aWRlIHRoZSBuYW1lcyBmb3IgdGhlIGdlbmVyYWwgcHVy
cG9zZSBhcmd1bWVudCAmIHJldHVybiB2YWx1ZSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyBhcmd1bWVudEdQUjAgPSBNSVBTUmVnaXN0ZXJzOjphMDsKKyAgICBzdGF0aWMgY29u
c3QgR1BSUmVnIGFyZ3VtZW50R1BSMSA9IE1JUFNSZWdpc3RlcnM6OmExOworICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgYXJndW1lbnRHUFIyID0gTUlQU1JlZ2lzdGVyczo6YTI7CisgICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBNSVBTUmVnaXN0ZXJzOjphMzsKKyAgICBzdGF0
aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjAgPSByZWdUMjsKKyAgICBzdGF0aWMgY29uc3QgR1BS
UmVnIG5vbkFyZ0dQUjEgPSByZWdUMzsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQ
UjIgPSByZWdUNDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gcmVn
VDA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSByZWdUMTsKKyAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IHJlZ1Q1Owor
CisgICAgc3RhdGljIEdQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0geyByZWdU
MCwgcmVnVDEsIHJlZ1QyLCByZWdUMywgcmVnVDQsIHJlZ1Q1IH07CisgICAgICAgIHJldHVybiBy
ZWdpc3RlckZvckluZGV4W2luZGV4XTsKKyAgICB9CisKKyAgICBzdGF0aWMgdW5zaWduZWQgdG9J
bmRleChHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BS
UmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDE2KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGluZGV4Rm9yUmVnaXN0ZXJbMTZdID0geyBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRl
eCwgMCwgMSwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxp
ZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlk
SW5kZXgsIDIsIDMsIDQsIDUgfTsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gaW5kZXhGb3JS
ZWdpc3RlcltyZWddOworICAgICAgICBBU1NFUlQocmVzdWx0ICE9IEludmFsaWRJbmRleCk7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRl
YnVnTmFtZShHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlk
R1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDE2KTsKKyAgICAgICAgc3RhdGljIGNvbnN0
IGNoYXIqIG5hbWVGb3JSZWdpc3RlclsxNl0gPSB7CisgICAgICAgICAgICAiemVybyIsICJhdCIs
ICJ2MCIsICJ2MSIsCisgICAgICAgICAgICAiYTAiLCAiYTEiLCAiYTIiLCAiYTMiLAorICAgICAg
ICAgICAgInQwIiwgInQxIiwgInQyIiwgInQzIiwKKyAgICAgICAgICAgICJ0NCIsICJ0NSIsICJ0
NiIsICJ0NyIKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWdd
OworICAgIH0KK3ByaXZhdGU6CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW52YWxpZElu
ZGV4ID0gMHhmZmZmZmZmZjsKK307CisKKyNlbmRpZgorCiB0eXBlZGVmIFJlZ2lzdGVyQmFuazxH
UFJJbmZvPjo6aXRlcmF0b3IgZ3ByX2l0ZXJhdG9yOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5k
ZXggZmI4YTVmNy4uMDA5NGZmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaApAQCAtMTI2MCw3ICsxMjYwLDcgQEAgcHVibGljOgogCiAvLyBFbmNv
ZGVkSlNWYWx1ZSBpbiBKU1ZBTFVFMzJfNjQgaXMgYSA2NC1iaXQgaW50ZWdlci4gV2hlbiBiZWlu
ZyBjb21waWxlZCBpbiBBUk0gRUFCSSwgaXQgbXVzdCBiZSBhbGlnbmVkIGV2ZW4tbnVtYmVyZWQg
cmVnaXN0ZXIgKHIwLCByMiBvciBbc3BdKS4KIC8vIFRvIGF2b2lkIGFzc2VtYmxpZXMgZnJvbSB1
c2luZyB3cm9uZyByZWdpc3RlcnMsIGxldCdzIG9jY3VweSByMSBvciByMyB3aXRoIGEgZHVtbXkg
YXJndW1lbnQgd2hlbiBuZWNlc3NhcnkuCi0jaWYgQ09NUElMRVJfU1VQUE9SVFMoRUFCSSkgJiYg
Q1BVKEFSTSkKKyNpZiAoQ09NUElMRVJfU1VQUE9SVFMoRUFCSSkgJiYgQ1BVKEFSTSkpIHx8IENQ
VShNSVBTKQogI2RlZmluZSBFQUJJXzMyQklUX0RVTU1ZX0FSRyAgICAgIFRydXN0ZWRJbW0zMigw
KSwKICNlbHNlCiAjZGVmaW5lIEVBQklfMzJCSVRfRFVNTVlfQVJHCkBAIC0xNzEwLDcgKzE3MTAs
NyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAgICAgCi0jaWYgIWRlZmluZWQoTkRFQlVHKSAm
JiAhQ1BVKEFSTSkKKyNpZiAhZGVmaW5lZChOREVCVUcpICYmICFDUFUoQVJNKSAmJiAhQ1BVKE1J
UFMpCiAgICAgdm9pZCBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCkKICAgICB7CiAgICAgICAgIC8v
IFdlJ3JlIGFib3V0IHRvIGNhbGwgb3V0IHRvIGEgIm5hdGl2ZSIgaGVscGVyIGZ1bmN0aW9uLiBU
aGUgaGVscGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJm
YWNlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKaW5k
ZXggN2ZkZWFmMC4uNDhhZDZiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KU0ludGVyZmFjZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRl
cmZhY2VKSVQuaApAQCAtMTI1LDYgKzEyNSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
c3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSBNSVBTUmVnaXN0
ZXJzOjp2MDsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgZmlyc3RBcmd1bWVudFJl
Z2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6YTA7CiAgICAgICAgIAorI2lmIEVOQUJMRShWQUxVRV9Q
Uk9GSUxFUikKKyAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgYnVja2V0Q291bnRlclJl
Z2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6czM7CisjZW5kaWYKKwogICAgICAgICAvLyByZWdUMCBt
dXN0IGJlIHYwIGZvciByZXR1cm5pbmcgYSAzMi1iaXQgdmFsdWUuCiAgICAgICAgIHN0YXRpYyBj
b25zdCBSZWdpc3RlcklEIHJlZ1QwID0gTUlQU1JlZ2lzdGVyczo6djA7CiAgICAgICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAppbmRleCBiOTYxYTg3
Li5lZDJlZjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuaApAQCAtMTQwLDE0ICsxNDAsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0
aW9uU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkgeyByZXR1cm4gc2l6ZW9mKHNpemVfdCkgKyBidWZm
ZXJTaXplOyB9CisgICAgICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90IGJ1
ZmZlclNpemUpIHsgcmV0dXJuIHNpemVvZihTY3JhdGNoQnVmZmVyKSArIGJ1ZmZlclNpemU7IH0K
ICAgICAgICAgdm9pZCBzZXRBY3RpdmVMZW5ndGgoc2l6ZV90IGFjdGl2ZUxlbmd0aCkgeyBtX2Fj
dGl2ZUxlbmd0aCA9IGFjdGl2ZUxlbmd0aDsgfQogICAgICAgICBzaXplX3QgYWN0aXZlTGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVMZW5ndGg7IH07CiAgICAgICAgIHNpemVfdCogYWN0
aXZlTGVuZ3RoUHRyKCkgeyByZXR1cm4gJm1fYWN0aXZlTGVuZ3RoOyB9OwogICAgICAgICB2b2lk
KiBkYXRhQnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogICAgICAgICBzaXplX3QgbV9h
Y3RpdmVMZW5ndGg7CisjaWYgQ1BVKE1JUFMpICYmIChkZWZpbmVkIFdURl9NSVBTX0FSQ0hfUkVW
ICYmIFdURl9NSVBTX0FSQ0hfUkVWID09IDIpCisgICAgICAgIHZvaWQqIG1fYnVmZmVyWzBdIF9f
YXR0cmlidXRlX18oKGFsaWduZWQoOCkpKTsKKyNlbHNlCiAgICAgICAgIHZvaWQqIG1fYnVmZmVy
WzBdOworI2VuZGlmCiAgICAgfTsKICNpZiBDT01QSUxFUihNU1ZDKQogI3ByYWdtYSB3YXJuaW5n
KHBvcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKaW5kZXggZmNjNjA5OC4uNjViZjkyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0w
MS0yOSAgQmFsYXpzIEtpbHZhZHkgIDxraWx2YWR5YkBob21lamlubmkuY29tPgorCisgICAgICAg
IE1JUFMgREZHIGltcGxlbWVudGF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgREZHIGltcGxlbWVudGF0aW9uIGZvciBNSVBTLgorCisgICAgICAg
ICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTMtMDEtMjggIEJlbmphbWluIFBvdWxhaW4gIDxiZW5q
YW1pbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFN0cmluZyBjb25zdHJ1Y3RlZCBmcm9tIExpdGVy
YWxzIHNob3VsZCBiZSBub24tZW1wdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtLmggYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IDM0NDk5ZjAuLmI2ZTIxMTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKKysrIGIvU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaApAQCAtOTQ0LDYgKzk0NCwxMCBAQAogI2lmIENQVShBUk1fVFJBRElUSU9O
QUwpCiAjZGVmaW5lIEVOQUJMRV9ERkdfSklUIDEKICNlbmRpZgorLyogRW5hYmxlIHRoZSBERkcg
SklUIG9uIE1JUFMuICovCisjaWYgQ1BVKE1JUFMpCisjZGVmaW5lIEVOQUJMRV9ERkdfSklUIDEK
KyNlbmRpZgogI2VuZGlmCiAKIC8qIElmIHRoZSBqaXQgaXMgbm90IGF2YWlsYWJsZSwgZW5hYmxl
IHRoZSBMTEludCBDIExvb3A6ICovCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187616</attachid>
            <date>2013-02-11 11:07:10 -0800</date>
            <delta_ts>2013-02-18 07:04:04 -0800</delta_ts>
            <desc>DFG for MIPS - arg. offset with inline</desc>
            <filename>dfg-i.diff</filename>
            <type>text/plain</type>
            <size>52470</size>
            <attacher name="Balazs Kilvady">kilvadyb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDQ3ZjA3ZDYuLmM2MWQ4OTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDEzLTAyLTExICBCYWxhenMgS2lsdmFk
eSAgPGtpbHZhZHliQGhvbWVqaW5uaS5jb20+CisKKyAgICAgICAgTUlQUyBERkcgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
RkcgaW1wbGVtZW50YXRpb24gZm9yIE1JUFMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTUlQU0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpNSVBTQXNzZW1ibGVyKToK
KyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6c2xsdik6CisgICAgICAgIChKU0M6Ok1JUFNB
c3NlbWJsZXI6Om1vdmQpOgorICAgICAgICAoTUlQU0Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6
Ok1JUFNBc3NlbWJsZXI6Om5lZ2QpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJl
bEZvcldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJlbCk6Cisg
ICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6OnZtb3YpOgorICAgICAgICAoSlNDOjpNSVBTQXNz
ZW1ibGVyOjpsaW5rRGlyZWN0SnVtcCk6CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6Om1h
eEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpyZXZl
cnRKdW1wVG9Nb3ZlKToKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhK
dW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKE1h
Y3JvQXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBva2UpOgorICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJNSVBTOjphZGQzMik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlck1JUFMpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmFuZDMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJNSVBTOjpsc2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyTUlQUzo6bXVsMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om9yMzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJzaGlmdDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjp1cnNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OnN1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
Ojp4b3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6c3RvcmUzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6anVtcCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoQWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OmJyYW5jaE11bDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
OjpicmFuY2hTdWIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNo
TmVnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmNhbGwpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmxvYWREb3VibGUpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6Om1vdmVEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OnN3YXBEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6
OnN1YkRvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6bXVsRG91Ymxl
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpkaXZEb3VibGUpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om5lZ2F0ZURvdWJsZSk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRXF1YWwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlck1JUFM6OmJyYW5jaE5vdEVxdWFsKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJNSVBTOjpicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OmJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnRydW5jYXRlRG91YmxlVG9JbnQzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6dHJ1bmNhdGVEb3VibGVUb1VpbnQzMik6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlTm9uWmVybyk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlWmVyb09yTmFOKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjppbnZlcnQpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyTUlQUzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogZGZnL0RG
R0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoQXNzZW1ibHlIZWxwZXJzKToKKyAgICAgICAg
KEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybik6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpk
ZWJ1Z0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEND
YWxsSGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3Vt
ZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUpOgorICAgICAgICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6cG9rZUFyZ3Vt
ZW50KToKKyAgICAgICAgKiBkZmcvREZHRlBSSW5mby5oOgorICAgICAgICAoREZHKToKKyAgICAg
ICAgKEZQUkluZm8pOgorICAgICAgICAoSlNDOjpERkc6OkZQUkluZm86OnRvUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpERkc6OkZQUkluZm86OnRvSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6
OkZQUkluZm86OmRlYnVnTmFtZSk6CisgICAgICAgICogZGZnL0RGR0dQUkluZm8uaDoKKyAgICAg
ICAgKERGRyk6CisgICAgICAgIChHUFJJbmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpHUFJJbmZv
Ojp0b1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpHUFJJbmZvOjp0b0luZGV4KToKKyAg
ICAgICAgKEpTQzo6REZHOjpHUFJJbmZvOjpkZWJ1Z05hbWUpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoU3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAqIGpp
dC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAoSlNJbnRlcmZhY2VKSVQpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0M6OlNjcmF0Y2hCdWZmZXI6OmFs
bG9jYXRpb25TaXplKToKKyAgICAgICAgKFNjcmF0Y2hCdWZmZXIpOgorCiAyMDEzLTAyLTExICBD
c2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdl
ZCBmaXggYWZ0ZXIgcjEzOTU0IGZvciAhRU5BQkxFKEpJVCkgYnVpbGRzLgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaAppbmRleCAwMjZmODdlLi43
ZjU1M2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNB
c3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3Nl
bWJsZXIuaApAQCAtMTUyLDYgKzE1Miw4IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIFNlZ21lbnRl
ZFZlY3RvcjxBc3NlbWJsZXJMYWJlbCwgNjQ+IEp1bXBzOwogCiAgICAgTUlQU0Fzc2VtYmxlcigp
CisgICAgICAgIDogbV9pbmRleE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKKyAgICAgICAgLCBt
X2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludChJTlRfTUlOKQogICAgIHsKICAgICB9CiAKQEAg
LTMyNSw3ICszMjcsNyBAQCBwdWJsaWM6CiAgICAgICAgIGVtaXRJbnN0KDB4MDAwMDAwMDAgfCAo
cmQgPDwgT1BfU0hfUkQpIHwgKHJ0IDw8IE9QX1NIX1JUKSB8ICgoc2hhbXQgJiAweDFmKSA8PCBP
UF9TSF9TSEFNVCkpOwogICAgIH0KIAotICAgIHZvaWQgc2xsdihSZWdpc3RlcklEIHJkLCBSZWdp
c3RlcklEIHJ0LCBpbnQgcnMpCisgICAgdm9pZCBzbGx2KFJlZ2lzdGVySUQgcmQsIFJlZ2lzdGVy
SUQgcnQsIFJlZ2lzdGVySUQgcnMpCiAgICAgewogICAgICAgICBlbWl0SW5zdCgweDAwMDAwMDA0
IHwgKHJkIDw8IE9QX1NIX1JEKSB8IChydCA8PCBPUF9TSF9SVCkgfCAocnMgPDwgT1BfU0hfUlMp
KTsKICAgICB9CkBAIC01MjcsNiArNTI5LDE2IEBAIHB1YmxpYzoKICAgICAgICAgZW1pdEluc3Qo
MHg0NjIwMDAwNCB8IChmZCA8PCBPUF9TSF9GRCkgfCAoZnMgPDwgT1BfU0hfRlMpKTsKICAgICB9
CiAKKyAgICB2b2lkIG1vdmQoRlBSZWdpc3RlcklEIGZkLCBGUFJlZ2lzdGVySUQgZnMpCisgICAg
eworICAgICAgICBlbWl0SW5zdCgweDQ2MjAwMDA2IHwgKGZkIDw8IE9QX1NIX0ZEKSB8IChmcyA8
PCBPUF9TSF9GUykpOworICAgIH0KKworICAgIHZvaWQgbmVnZChGUFJlZ2lzdGVySUQgZmQsIEZQ
UmVnaXN0ZXJJRCBmcykKKyAgICB7CisgICAgICAgIGVtaXRJbnN0KDB4NDYyMDAwMDcgfCAoZmQg
PDwgT1BfU0hfRkQpIHwgKGZzIDw8IE9QX1NIX0ZTKSk7CisgICAgfQorCiAgICAgdm9pZCB0cnVu
Y3dkKEZQUmVnaXN0ZXJJRCBmZCwgRlBSZWdpc3RlcklEIGZzKQogICAgIHsKICAgICAgICAgZW1p
dEluc3QoMHg0NjIwMDAwZCB8IChmZCA8PCBPUF9TSF9GRCkgfCAoZnMgPDwgT1BfU0hfRlMpKTsK
QEAgLTYxOSw5ICs2MzEsMjQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9idWZmZXIubGFi
ZWwoKTsKICAgICB9CiAKKyAgICBBc3NlbWJsZXJMYWJlbCBsYWJlbEZvcldhdGNocG9pbnQoKQor
ICAgIHsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgcmVzdWx0ID0gbV9idWZmZXIubGFiZWwoKTsK
KyAgICAgICAgaWYgKHN0YXRpY19jYXN0PGludD4ocmVzdWx0Lm1fb2Zmc2V0KSAhPSBtX2luZGV4
T2ZMYXN0V2F0Y2hwb2ludCkKKyAgICAgICAgICAgIHJlc3VsdCA9IGxhYmVsKCk7CisgICAgICAg
IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0OworICAgICAgICBtX2lu
ZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCA9IHJlc3VsdC5tX29mZnNldCArIG1heEp1bXBSZXBs
YWNlbWVudFNpemUoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBBc3Nl
bWJsZXJMYWJlbCBsYWJlbCgpCiAgICAgewotICAgICAgICByZXR1cm4gbV9idWZmZXIubGFiZWwo
KTsKKyAgICAgICAgQXNzZW1ibGVyTGFiZWwgcmVzdWx0ID0gbV9idWZmZXIubGFiZWwoKTsKKyAg
ICAgICAgd2hpbGUgKFVOTElLRUxZKHN0YXRpY19jYXN0PGludD4ocmVzdWx0Lm1fb2Zmc2V0KSA8
IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50KSkgeworICAgICAgICAgICAgbm9wKCk7Cisg
ICAgICAgICAgICByZXN1bHQgPSBtX2J1ZmZlci5sYWJlbCgpOworICAgICAgICB9CisgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogCiAgICAgQXNzZW1ibGVyTGFiZWwgYWxpZ24oaW50IGFs
aWdubWVudCkKQEAgLTY2NCwxNCArNjkxLDI0IEBAIHB1YmxpYzoKICAgICAvLyBBc3NlbWJseSBo
ZWxwZXJzIGZvciBtb3ZpbmcgZGF0YSBiZXR3ZWVuIGZwIGFuZCByZWdpc3RlcnMuCiAgICAgdm9p
ZCB2bW92KFJlZ2lzdGVySUQgcmQxLCBSZWdpc3RlcklEIHJkMiwgRlBSZWdpc3RlcklEIHJuKQog
ICAgIHsKKyNpZiBXVEZfTUlQU19JU0FfUkVWKDIpICYmIFdURl9NSVBTX0ZQNjQKKyAgICAgICAg
bWZjMShyZDEsIHJuKTsKKyAgICAgICAgbWZoYzEocmQyLCBybik7CisjZWxzZQogICAgICAgICBt
ZmMxKHJkMSwgcm4pOwogICAgICAgICBtZmMxKHJkMiwgRlBSZWdpc3RlcklEKHJuICsgMSkpOwor
I2VuZGlmCiAgICAgfQogCiAgICAgdm9pZCB2bW92KEZQUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJ
RCBybjEsIFJlZ2lzdGVySUQgcm4yKQogICAgIHsKKyNpZiBXVEZfTUlQU19JU0FfUkVWKDIpICYm
IFdURl9NSVBTX0ZQNjQKKyAgICAgICAgbXRjMShybjEsIHJkKTsKKyAgICAgICAgbXRoYzEocm4y
LCByZCk7CisjZWxzZQogICAgICAgICBtdGMxKHJuMSwgcmQpOwogICAgICAgICBtdGMxKHJuMiwg
RlBSZWdpc3RlcklEKHJkICsgMSkpOworI2VuZGlmCiAgICAgfQogCiAgICAgc3RhdGljIHVuc2ln
bmVkIGdldENhbGxSZXR1cm5PZmZzZXQoQXNzZW1ibGVyTGFiZWwgY2FsbCkKQEAgLTY4OCw2ICs3
MjUsMzUgQEAgcHVibGljOgogICAgIC8vIHdyaXRhYmxlIHJlZ2lvbiBvZiBtZW1vcnk7IHRvIG1v
ZGlmeSB0aGUgY29kZSBpbiBhbiBleGVjdXRlLW9ubHkgZXhlY3VhYmxlCiAgICAgLy8gcG9vbCB0
aGUgJ3JlcGF0Y2gnIGFuZCAncmVsaW5rJyBtZXRob2RzIHNob3VsZCBiZSB1c2VkLgogCisgICAg
c3RhdGljIHNpemVfdCBsaW5rRGlyZWN0SnVtcCh2b2lkKiBjb2RlLCB2b2lkKiB0bykKKyAgICB7
CisgICAgICAgIE1JUFNXb3JkKiBpbnNuID0gcmVpbnRlcnByZXRfY2FzdDxNSVBTV29yZCo+KHJl
aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGNvZGUpKTsKKyAgICAgICAgc2l6ZV90IG9wcyA9IDA7
CisgICAgICAgIGludDMyX3Qgc2xvdEFkZHIgPSByZWludGVycHJldF9jYXN0PGludD4oaW5zbikg
KyA0OworICAgICAgICBpbnQzMl90IHRvQWRkciA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50Pih0byk7
CisKKyAgICAgICAgaWYgKChzbG90QWRkciAmIDB4ZjAwMDAwMDApICE9ICh0b0FkZHIgJiAweGYw
MDAwMDAwKSkgeworICAgICAgICAgICAgLy8gbHVpCisgICAgICAgICAgICAqaW5zbiA9IDB4M2Mw
MDAwMDAgfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlQpIHwgKCh0b0FkZHIgPj4gMTYp
ICYgMHhmZmZmKTsKKyAgICAgICAgICAgICsraW5zbjsKKyAgICAgICAgICAgIC8vIG9yaQorICAg
ICAgICAgICAgKmluc24gPSAweDM0MDAwMDAwIHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NI
X1JUKSB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SUykgfCAodG9BZGRyICYgMHhmZmZm
KTsKKyAgICAgICAgICAgICsraW5zbjsKKyAgICAgICAgICAgIC8vIGpyCisgICAgICAgICAgICAq
aW5zbiA9IDB4MDAwMDAwMDggfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlMpOworICAg
ICAgICAgICAgKytpbnNuOworICAgICAgICAgICAgb3BzID0gNCAqIHNpemVvZihNSVBTV29yZCk7
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBqCisgICAgICAgICAgICAqaW5zbiA9
IDB4MDgwMDAwMDAgfCAoKHRvQWRkciAmIDB4MGZmZmZmZmYpID4+IDIpOworICAgICAgICAgICAg
KytpbnNuOworICAgICAgICAgICAgb3BzID0gMiAqIHNpemVvZihNSVBTV29yZCk7CisgICAgICAg
IH0KKyAgICAgICAgLy8gbm9wCisgICAgICAgICppbnNuID0gMHgwMDAwMDAwMDsKKyAgICAgICAg
cmV0dXJuIG9wczsKKyAgICB9CisKICAgICB2b2lkIGxpbmtKdW1wKEFzc2VtYmxlckxhYmVsIGZy
b20sIEFzc2VtYmxlckxhYmVsIHRvKQogICAgIHsKICAgICAgICAgQVNTRVJUKHRvLmlzU2V0KCkp
OwpAQCAtODI1LDI5ICs4OTEsMzYgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQogCi0gICAgc3Rh
dGljIHZvaWQgcmV2ZXJ0SnVtcFRvTW92ZSh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCBSZWdpc3Rl
cklEIHJ0LCBpbnQgaW1tKQorICAgIHN0YXRpYyBwdHJkaWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50
U2l6ZSgpCiAgICAgewotICAgICAgICBNSVBTV29yZCogaW5zbiA9IHN0YXRpY19jYXN0PE1JUFNX
b3JkKj4oaW5zdHJ1Y3Rpb25TdGFydCkgKyAxOwotICAgICAgICBBU1NFUlQoKCppbnNuICYgMHhm
YzAwMDAwMCkgPT0gMHgzNDAwMDAwMCk7Ci0gICAgICAgICppbnNuID0gKCppbnNuICYgMHhmYzFm
MDAwMCkgfCAoaW1tICYgMHhmZmZmKTsKLSAgICAgICAgY2FjaGVGbHVzaChpbnNuLCBzaXplb2Yo
TUlQU1dvcmQpKTsKKyAgICAgICAgcmV0dXJuIHNpemVvZihNSVBTV29yZCkgKiA0OwogICAgIH0K
IAotICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0
LCB2b2lkKiB0bykKKyAgICBzdGF0aWMgdm9pZCByZXZlcnRKdW1wVG9Nb3ZlKHZvaWQqIGluc3Ry
dWN0aW9uU3RhcnQsIFJlZ2lzdGVySUQgcnQsIGludCBpbW0pCiAgICAgewotICAgICAgICBNSVBT
V29yZCogaW5zdHJ1Y3Rpb24gPSByZWludGVycHJldF9jYXN0PE1JUFNXb3JkKj4oaW5zdHJ1Y3Rp
b25TdGFydCk7Ci0gICAgICAgIGludHB0cl90IGp1bXBUbyA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50
cHRyX3Q+KHRvKTsKKyAgICAgICAgTUlQU1dvcmQqIGluc24gPSBzdGF0aWNfY2FzdDxNSVBTV29y
ZCo+KGluc3RydWN0aW9uU3RhcnQpOworICAgICAgICBzaXplX3QgY29kZVNpemUgPSAyICogc2l6
ZW9mKE1JUFNXb3JkKTsKIAogICAgICAgICAvLyBsdWkKLSAgICAgICAgaW5zdHJ1Y3Rpb25bMF0g
PSAweDNjMDAwMDAwIHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JUKSB8ICgoanVtcFRv
ID4+IDE2KSAmIDB4ZmZmZik7CisgICAgICAgICppbnNuID0gMHgzYzAwMDAwMCB8IChydCA8PCBP
UF9TSF9SVCkgfCAoKGltbSA+PiAxNikgJiAweGZmZmYpOworICAgICAgICArK2luc247CiAgICAg
ICAgIC8vIG9yaQotICAgICAgICBpbnN0cnVjdGlvblsxXSA9IDB4MzQwMDAwMDAgfCAoTUlQU1Jl
Z2lzdGVyczo6dDkgPDwgT1BfU0hfUlQpIHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JT
KSB8IChqdW1wVG8gJiAweGZmZmYpOwotICAgICAgICAvLyBqcgotICAgICAgICBpbnN0cnVjdGlv
blsyXSA9IDB4MDAwMDAwMDggfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlMpOwotICAg
ICAgICAvLyBub3AKLSAgICAgICAgaW5zdHJ1Y3Rpb25bM10gPSAweDA7CisgICAgICAgICppbnNu
ID0gMHgzNDAwMDAwMCB8IChydCA8PCBPUF9TSF9SUykgfCAocnQgPDwgT1BfU0hfUlQpIHwgKGlt
bSAmIDB4ZmZmZik7CisgICAgICAgICsraW5zbjsKKyAgICAgICAgLy8gaWYganIgJHQ5CisgICAg
ICAgIGlmICgqaW5zbiA9PSAweDAzMjAwMDA4KSB7CisgICAgICAgICAgICAqaW5zbiA9IDB4MDAw
MDAwMDA7CisgICAgICAgICAgICBjb2RlU2l6ZSArPSBzaXplb2YoTUlQU1dvcmQpOworICAgICAg
ICB9CisgICAgICAgIGNhY2hlRmx1c2goaW5zbiwgY29kZVNpemUpOworICAgIH0KIAotICAgICAg
ICBjYWNoZUZsdXNoKGluc3RydWN0aW9uLCBzaXplb2YoTUlQU1dvcmQpICogNCk7CisgICAgc3Rh
dGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIHZvaWQqIHRv
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKCEoYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4oaW5zdHJ1
Y3Rpb25TdGFydCkgJiAzKSk7CisgICAgICAgIEFTU0VSVCghKGJpdHdpc2VfY2FzdDx1aW50cHRy
X3Q+KHRvKSAmIDMpKTsKKyAgICAgICAgc2l6ZV90IG9wcyA9IGxpbmtEaXJlY3RKdW1wKGluc3Ry
dWN0aW9uU3RhcnQsIHRvKTsKKyAgICAgICAgY2FjaGVGbHVzaChpbnN0cnVjdGlvblN0YXJ0LCBv
cHMpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoTG9hZCh2b2lkKiBpbnN0
cnVjdGlvblN0YXJ0KQpAQCAtMTAyMyw2ICsxMDk2LDggQEAgcHJpdmF0ZToKIAogICAgIEFzc2Vt
YmxlckJ1ZmZlciBtX2J1ZmZlcjsKICAgICBKdW1wcyBtX2p1bXBzOworICAgIGludCBtX2luZGV4
T2ZMYXN0V2F0Y2hwb2ludDsKKyAgICBpbnQgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAppbmRleCA3YzVlNWU4Li4yMjhkOGFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCkBAIC0y
MDAsNiArMjAwLDEzIEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKICAgICAKKyNpZiBDUFUoTUlQ
UykKKyAgICB2b2lkIHBva2UoRlBSZWdpc3RlcklEIHNyYywgaW50IGluZGV4ID0gMCkKKyAgICB7
CisgICAgICAgIEFTU0VSVCghKGluZGV4ICYgMSkpOworICAgICAgICBzdG9yZURvdWJsZShzcmMs
IGFkZHJlc3NGb3JQb2tlKGluZGV4KSk7CisgICAgfQorI2VuZGlmCiAKICAgICAvLyBCYWNrd2Fy
ZHMgYmFuY2hlcywgdGhlc2UgYXJlIGN1cnJlbnRseSBhbGwgaW1wbGVtZW50ZWQgdXNpbmcgZXhp
c3RpbmcgZm9yd2FyZHMgYnJhbmNoIG1lY2hhbmlzbXMuCiAgICAgdm9pZCBicmFuY2hQdHIoUmVs
YXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwgVHJ1c3RlZEltbVB0ciBpbW0s
IExhYmVsIHRhcmdldCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyTUlQUy5oCmluZGV4IDQzYWQ0MzQuLjRmMTQ5NjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaApA
QCAtMTE0LDYgKzExNCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoZGVz
dCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIGFkZDMyKFJlZ2lzdGVySUQgb3AxLCBS
ZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuYWRkdShkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCBhZGQzMihUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBhZGQzMihpbW0sIGRl
c3QsIGRlc3QpOwpAQCAtMjY3LDYgKzI3MiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1i
bGVyLmFuZEluc24oZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKFJl
Z2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIuYW5kSW5zbihkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAg
dm9pZCBhbmQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAg
ICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCkBAIC0yODMsOSArMjkzLDE2
IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgbHNoaWZ0MzIoVHJ1c3Rl
ZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMy
IGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLnNsbChkZXN0LCBkZXN0LCBpbW0ubV92YWx1ZSk7CisgICAgICAgIGlmICghaW1t
Lm1fdmFsdWUgJiYgIW1fZml4ZWRXaWR0aCkKKyAgICAgICAgICAgIG1vdmUoTUlQU1JlZ2lzdGVy
czo6emVybywgZGVzdCk7CisgICAgICAgIGVsc2UgaWYgKGltbS5tX3ZhbHVlID4gMCAmJiBpbW0u
bV92YWx1ZSA8IDY1NTM1ICYmICFtX2ZpeGVkV2lkdGgpCisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5hbmRpKGRlc3QsIHNyYywgaW1tLm1fdmFsdWUpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
YW5kSW5zbihkZXN0LCBzcmMsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIH0KICAgICB9CiAK
ICAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVz
dCkKQEAgLTI5MywxMSArMzEwLDMzIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc2xs
dihkZXN0LCBkZXN0LCBzaGlmdEFtb3VudCk7CiAgICAgfQogCisgICAgdm9pZCBsc2hpZnQzMihS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc2xsdihkZXN0LCBzcmMsIHNoaWZ0QW1vdW50KTsK
KyAgICB9CisKKyAgICB2b2lkIGxzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAg
ICBtX2Fzc2VtYmxlci5zbGx2KGRlc3QsIGRlc3QsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgfQor
CisgICAgdm9pZCBsc2hpZnQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7
CisgICAgICAgIG1fYXNzZW1ibGVyLnNsbHYoZGVzdCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIpOwor
ICAgIH0KKwogICAgIHZvaWQgbXVsMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm11bChkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0K
IAorICAgIHZvaWQgbXVsMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tdWwoZGVzdCwgb3AxLCBvcDIp
OworICAgIH0KKwogICAgIHZvaWQgbXVsMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmICghaW1tLm1fdmFsdWUgJiYg
IW1fZml4ZWRXaWR0aCkKQEAgLTM0OCw2ICszODcsMjQgQEAgcHVibGljOgogICAgICAgICBtX2Fz
c2VtYmxlci5vckluc24oZGVzdCwgZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCisg
ICAgdm9pZCBvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCisgICAgeworICAgICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID4gMCAmJiBp
bW0ubV92YWx1ZSA8IDY1NTM1ICYmICFtX2ZpeGVkV2lkdGgpIHsKKyAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLm9yaShkZXN0LCBzcmMsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAgICBsaSAgICAgIGRhdGFUZW1wLCBp
bW0KKyAgICAgICAgICAgIG9yICAgICAgZGVzdCwgc3JjLCBkYXRhVGVtcAorICAgICAgICAqLwor
ICAgICAgICBtb3ZlKGltbSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVy
Lm9ySW5zbihkZXN0LCBzcmMsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgIH0KKwogICAgIHZvaWQg
b3IzMihSZWdpc3RlcklEIHNyYywgQWJzb2x1dGVBZGRyZXNzIGRlc3QpCiAgICAgewogICAgICAg
ICBsb2FkMzIoZGVzdC5tX3B0ciwgZGF0YVRlbXBSZWdpc3Rlcik7CkBAIC0zNjAsNiArNDE3LDEx
IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3JhdihkZXN0LCBkZXN0LCBzaGlmdEFt
b3VudCk7CiAgICAgfQogCisgICAgdm9pZCByc2hpZnQzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIuc3JhdihkZXN0LCBzcmMsIHNoaWZ0QW1vdW50KTsKKyAgICB9CisKICAgICB2b2lkIHJz
aGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IG1fYXNzZW1ibGVyLnNyYShkZXN0LCBkZXN0LCBpbW0ubV92YWx1ZSk7CkBAIC0zNzUsMTYgKzQz
NywzMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnNybHYoZGVzdCwgZGVzdCwgc2hp
ZnRBbW91bnQpOwogICAgIH0KIAorICAgIHZvaWQgdXJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBt
X2Fzc2VtYmxlci5zcmx2KGRlc3QsIHNyYywgc2hpZnRBbW91bnQpOworICAgIH0KKwogICAgIHZv
aWQgdXJzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLnNybChkZXN0LCBkZXN0LCBpbW0ubV92YWx1ZSk7CiAgICAgfQog
CisgICAgdm9pZCB1cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnNybChkZXN0LCBzcmMs
IGltbS5tX3ZhbHVlKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zdWJ1KGRlc3QsIGRl
c3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBzdWIzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0
ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnN1
YnUoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgc3ViMzIoVHJ1c3RlZEltbTMy
IGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID49
IC0zMjc2NyAmJiBpbW0ubV92YWx1ZSA8PSAzMjc2OApAQCAtNDk1LDYgKzU3MiwxMSBAQCBwdWJs
aWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9
CiAKKyAgICB2b2lkIHhvcjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihkZXN0LCBvcDEs
IG9wMik7CisgICAgfQorCiAgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpIHsKQEAgLTUx
MCw2ICs1OTIsMjEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRlc3Qs
IGRlc3QsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAgfQogCisgICAgdm9pZCB4b3IzMihUcnVzdGVk
SW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgaWYgKGltbS5tX3ZhbHVlID09IC0xKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3Io
ZGVzdCwgc3JjLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAgICBsaSAgaW1tVGVtcCwgaW1tCisgICAg
ICAgICAgICB4b3IgZGVzdCwgZGVzdCwgaW1tVGVtcAorICAgICAgICAqLworICAgICAgICBtb3Zl
KGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihkZXN0
LCBzcmMsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgfQorCiAgICAgdm9pZCBzcXJ0RG91YmxlKEZQ
UmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Fzc2Vt
Ymxlci5zcXJ0ZChkc3QsIHNyYyk7CkBAIC05ODksNiArMTA4Niw0NCBAQCBwdWJsaWM6CiAgICAg
ICAgIH0KICAgICB9CiAKKyAgICB2b2lkIHN0b3JlMzIoVHJ1c3RlZEltbTMyIGltbSwgQmFzZUlu
ZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBpZiAoYWRkcmVzcy5vZmZzZXQgPj0gLTMyNzY4
ICYmIGFkZHJlc3Mub2Zmc2V0IDw9IDMyNzY3ICYmICFtX2ZpeGVkV2lkdGgpIHsKKyAgICAgICAg
ICAgIC8qCisgICAgICAgICAgICAgICAgc2xsICAgICBhZGRyVGVtcCwgYWRkcmVzcy5pbmRleCwg
YWRkcmVzcy5zY2FsZQorICAgICAgICAgICAgICAgIGFkZHUgICAgYWRkclRlbXAsIGFkZHJUZW1w
LCBhZGRyZXNzLmJhc2UKKyAgICAgICAgICAgICAgICBzdyAgICAgIHNyYywgYWRkcmVzcy5vZmZz
ZXQoYWRkclRlbXApCisgICAgICAgICAgICAqLworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2xs
KGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkdShhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVy
LCBhZGRyZXNzLmJhc2UpOworICAgICAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSkKKyAgICAgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5zdyhNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBhZGRyVGVtcFJlZ2lz
dGVyLCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5zdyhpbW1UZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3Mub2Zmc2V0KTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qCisgICAgICAg
ICAgICAgICAgc2xsICAgICBhZGRyVGVtcCwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZQor
ICAgICAgICAgICAgICAgIGFkZHUgICAgYWRkclRlbXAsIGFkZHJUZW1wLCBhZGRyZXNzLmJhc2UK
KyAgICAgICAgICAgICAgICBsdWkgICAgIGltbVRlbXAsIChhZGRyZXNzLm9mZnNldCArIDB4ODAw
MCkgPj4gMTYKKyAgICAgICAgICAgICAgICBhZGR1ICAgIGFkZHJUZW1wLCBhZGRyVGVtcCwgaW1t
VGVtcAorICAgICAgICAgICAgICAgIHN3ICAgICAgc3JjLCAoYWRkcmVzcy5vZmZzZXQgJiAweGZm
ZmYpKGF0KQorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsbChhZGRy
VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmFkZHUoYWRkclRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgYWRk
cmVzcy5iYXNlKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmx1aShpbW1UZW1wUmVnaXN0ZXIs
IChhZGRyZXNzLm9mZnNldCArIDB4ODAwMCkgPj4gMTYpOworICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuYWRkdShhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0
ZXIpOworICAgICAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSAmJiAhbV9maXhlZFdpZHRoKQorICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN3KE1JUFNSZWdpc3RlcnM6Onplcm8sIGFkZHJUZW1w
UmVnaXN0ZXIsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnN3KGltbVRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5vZmZz
ZXQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisKICAgICB2b2lkIHN0b3Jl
MzIoUmVnaXN0ZXJJRCBzcmMsIGNvbnN0IHZvaWQqIGFkZHJlc3MpCiAgICAgewogICAgICAgICAv
KgpAQCAtMTMzNiw2ICsxNDcxLDE1IEBAIHB1YmxpYzoKICAgICAgICAgbV9maXhlZFdpZHRoID0g
ZmFsc2U7CiAgICAgfQogCisgICAgdm9pZCBqdW1wKEFic29sdXRlQWRkcmVzcyBhZGRyZXNzKQor
ICAgIHsKKyAgICAgICAgbV9maXhlZFdpZHRoID0gdHJ1ZTsKKyAgICAgICAgbG9hZDMyKGFkZHJl
c3MubV9wdHIsIE1JUFNSZWdpc3RlcnM6OnQ5KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuanIoTUlQ
U1JlZ2lzdGVyczo6dDkpOworICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgbV9m
aXhlZFdpZHRoID0gZmFsc2U7CisgICAgfQorCiAgICAgdm9pZCBtb3ZlRG91YmxlVG9JbnRzKEZQ
UmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdDEsIFJlZ2lzdGVySUQgZGVzdDIpCiAgICAg
ewogICAgICAgICBtX2Fzc2VtYmxlci52bW92KGRlc3QxLCBkZXN0Miwgc3JjKTsKQEAgLTE0MDQs
NiArMTU0OCw1MyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKCk7CiAgICAgfQogCisg
ICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEs
IFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQo
KGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykg
fHwgKGNvbmQgPT0gTm9uWmVybykpOworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgewor
ICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICBtb3ZlICAgIGRhdGFUZW1wLCBvcDEKKyAg
ICAgICAgICAgICAgICB4b3IgICAgIGNtcFRlbXAsIGRhdGFUZW1wLCBvcDIKKyAgICAgICAgICAg
ICAgICBibHR6ICAgIGNtcFRlbXAsIE5vX292ZXJmbG93ICAgICMgZGlmZiBzaWduIGJpdCAtPiBu
byBvdmVyZmxvdworICAgICAgICAgICAgICAgIGFkZHUgICAgZGVzdCwgZGF0YVRlbXAsIG9wMgor
ICAgICAgICAgICAgICAgIHhvciAgICAgY21wVGVtcCwgZGVzdCwgZGF0YVRlbXAKKyAgICAgICAg
ICAgICAgICBiZ2V6ICAgIGNtcFRlbXAsIE5vX292ZXJmbG93ICAgICMgc2FtZSBzaWduIGJpZyAt
PiBubyBvdmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIGIgICAg
ICAgT3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAg
ICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBu
b3AKKyAgICAgICAgICAgIE5vX292ZXJmbG93OgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAg
IG1vdmUob3AxLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhv
ckluc24oY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBvcDIpOworICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuYmx0eihjbXBUZW1wUmVnaXN0ZXIsIDEwKTsKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmFkZHUoZGVzdCwgZGF0YVRlbXBSZWdpc3Rlciwgb3AyKTsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnhvckluc24oY21wVGVtcFJlZ2lzdGVyLCBkZXN0LCBkYXRhVGVtcFJlZ2lz
dGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCA3KTsK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGp1bXAo
KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKKyAgICAgICAgICAg
IGFkZDMyKG9wMSwgb3AyLCBkZXN0KTsKKyAgICAgICAgICAgIC8vIENoZWNrIGlmIGRlc3QgaXMg
bmVnYXRpdmUuCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHQoY21wVGVtcFJlZ2lzdGVyLCBk
ZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RF
cXVhbChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9Cisg
ICAgICAgIGlmIChjb25kID09IFplcm8pIHsKKyAgICAgICAgICAgIGFkZDMyKG9wMSwgb3AyLCBk
ZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hFcXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJz
Ojp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBOb25aZXJvKSB7CisgICAg
ICAgICAgICBhZGQzMihvcDEsIG9wMiwgZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNo
Tm90RXF1YWwoZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAg
QVNTRVJUKDApOworICAgICAgICByZXR1cm4gSnVtcCgpOworICAgIH0KKwogICAgIEp1bXAgYnJh
bmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOwpAQCAt
MTQxNyw2ICsxNjA4LDExMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBicmFuY2hBZGQzMihj
b25kLCBpbW1UZW1wUmVnaXN0ZXIsIGRlc3QpOwogICAgIH0KIAorICAgIEp1bXAgYnJhbmNoQWRk
MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVz
cyBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29u
ZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKKyAg
ICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAg
ICAgICAgbW92ZSAgICBkYXRhVGVtcCwgZGVzdAorICAgICAgICAgICAgICAgIHhvcmkgICAgY21w
VGVtcCwgZGF0YVRlbXAsIGltbQorICAgICAgICAgICAgICAgIGJsdHogICAgY21wVGVtcCwgTm9f
b3ZlcmZsb3cgICAgIyBkaWZmIHNpZ24gYml0IC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAg
ICAgYWRkaXUgICBkYXRhVGVtcCwgZGF0YVRlbXAsIGltbQorICAgICAgICAgICAgICAgIG1vdmUg
ICAgZGVzdCwgZGF0YVRlbXAKKyAgICAgICAgICAgICAgICB4b3JpICAgIGNtcFRlbXAsIGRhdGFU
ZW1wLCBpbW0KKyAgICAgICAgICAgICAgICBiZ2V6ICAgIGNtcFRlbXAsIE5vX292ZXJmbG93ICAg
ICMgc2FtZSBzaWduIGJpZyAtPiBubyBvdmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAg
ICAgICAgICAgICAgIGIgICAgICAgT3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBub3AKKyAgICAg
ICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AK
KyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgIE5vX292ZXJmbG93OgorICAgICAgICAg
ICAgKi8KKyAgICAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA+PSAtMzI3NjggJiYgaW1tLm1fdmFs
dWUgIDw9IDMyNzY3ICYmICFtX2ZpeGVkV2lkdGgpIHsKKyAgICAgICAgICAgICAgICBsb2FkMzIo
ZGVzdC5tX3B0ciwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJs
ZXIueG9yaShjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbS5tX3ZhbHVlKTsK
KyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRlbXBSZWdpc3RlciwgMTApOwor
ICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGl1KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFU
ZW1wUmVnaXN0ZXIsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBzdG9yZTMyKGRhdGFU
ZW1wUmVnaXN0ZXIsIGRlc3QubV9wdHIpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhv
cmkoY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW0ubV92YWx1ZSk7CisgICAg
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDcpOworICAgICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBsb2FkMzIoZGVzdC5tX3B0ciwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAg
ICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbV9h
c3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRl
bXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmx0eihjbXBUZW1wUmVn
aXN0ZXIsIDEwKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRpdShkYXRhVGVtcFJl
Z2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAg
ICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdC5tX3B0cik7CisgICAgICAgICAgICAg
ICAgbV9hc3NlbWJsZXIueG9yaShjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGlt
bVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1w
UmVnaXN0ZXIsIDcpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGp1bXAoKTsKKyAgICAgICAgfQorICAgICAgICBt
b3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbG9hZDMyKGRlc3QubV9wdHIsIGRh
dGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBhZGQzMihpbW1UZW1wUmVnaXN0ZXIsIGRhdGFUZW1w
UmVnaXN0ZXIpOworICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QubV9wdHIp
OworICAgICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKKyAgICAgICAgICAgIC8vIENoZWNrIGlm
IGRlc3QgaXMgbmVnYXRpdmUuCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHQoY21wVGVtcFJl
Z2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAg
ICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6
Onplcm8pOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IFplcm8pCisgICAgICAgICAg
ICByZXR1cm4gYnJhbmNoRXF1YWwoZGF0YVRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVy
byk7CisgICAgICAgIGlmIChjb25kID09IE5vblplcm8pCisgICAgICAgICAgICByZXR1cm4gYnJh
bmNoTm90RXF1YWwoZGF0YVRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAg
ICAgIEFTU0VSVCgwKTsKKyAgICAgICAgcmV0dXJuIEp1bXAoKTsKKyAgICB9CisKKyAgICBKdW1w
IGJyYW5jaE11bDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYzEsIFJlZ2lz
dGVySUQgc3JjMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKChjb25k
ID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChj
b25kID09IE5vblplcm8pKTsKKyAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKKyAgICAg
ICAgICAgIC8qCisgICAgICAgICAgICAgICAgbXVsdCAgICBzcmMsIGRlc3QKKyAgICAgICAgICAg
ICAgICBtZmhpICAgIGRhdGFUZW1wCisgICAgICAgICAgICAgICAgbWZsbyAgICBkZXN0CisgICAg
ICAgICAgICAgICAgc3JhICAgICBhZGRyVGVtcCwgZGVzdCwgMzEKKyAgICAgICAgICAgICAgICBi
ZXEgICAgIGRhdGFUZW1wLCBhZGRyVGVtcCwgTm9fb3ZlcmZsb3cgIyBhbGwgc2lnbiBiaXRzIChi
aXQgNjMgdG8gYml0IDMxKSBhcmUgdGhlIHNhbWUgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAg
ICAgICBub3AKKyAgICAgICAgICAgICAgICBiICAgICAgIE92ZXJmbG93CisgICAgICAgICAgICAg
ICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAg
ICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICBOb19vdmVyZmxv
dzoKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tdWx0KHNyYzEsIHNy
YzIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubWZoaShkYXRhVGVtcFJlZ2lzdGVyKTsKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLm1mbG8oZGVzdCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5zcmEoYWRkclRlbXBSZWdpc3RlciwgZGVzdCwgMzEpOworICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuYmVxKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIDcpOworICAgICAgICAg
ICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICByZXR1cm4ganVtcCgpOworICAgICAg
ICB9CisgICAgICAgIGlmIChjb25kID09IFNpZ25lZCkgeworICAgICAgICAgICAgbXVsMzIoc3Jj
MSwgc3JjMiwgZGVzdCk7CisgICAgICAgICAgICAvLyBDaGVjayBpZiBkZXN0IGlzIG5lZ2F0aXZl
LgorICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0KGNtcFRlbXBSZWdpc3RlciwgZGVzdCwgTUlQ
U1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwoY21w
VGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoY29uZCA9PSBaZXJvKSB7CisgICAgICAgICAgICBtdWwzMihzcmMxLCBzcmMyLCBkZXN0KTsK
KyAgICAgICAgICAgIHJldHVybiBicmFuY2hFcXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJv
KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBOb25aZXJvKSB7CisgICAgICAgICAg
ICBtdWwzMihzcmMxLCBzcmMyLCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RF
cXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBBU1NF
UlQoMCk7CisgICAgICAgIHJldHVybiBKdW1wKCk7CisgICAgfQorCiAgICAgSnVtcCBicmFuY2hN
dWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0g
U2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CkBAIC0xNDY1
LDggKzE3NjEsNyBAQCBwdWJsaWM6CiAgICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRp
b24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7CiAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICBt
b3ZlKHNyYywgZGVzdCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hNdWwzMihjb25kLCBpbW1UZW1w
UmVnaXN0ZXIsIGRlc3QpOworICAgICAgICByZXR1cm4gYnJhbmNoTXVsMzIoY29uZCwgaW1tVGVt
cFJlZ2lzdGVyLCBzcmMsIGRlc3QpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVz
dWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCkBAIC0x
NTI1LDggKzE4MjAsNjAgQEAgcHVibGljOgogICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29u
ZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKLSAgICAg
ICAgbW92ZShzcmMsIGRlc3QpOwotICAgICAgICByZXR1cm4gYnJhbmNoU3ViMzIoY29uZCwgaW1t
VGVtcFJlZ2lzdGVyLCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjMyKGNvbmQsIHNy
YywgaW1tVGVtcFJlZ2lzdGVyLCBkZXN0KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFN1YjMy
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykg
fHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJv
KSk7CisgICAgICAgIGlmIChjb25kID09IE92ZXJmbG93KSB7CisgICAgICAgICAgICAvKgorICAg
ICAgICAgICAgICAgIG1vdmUgICAgZGF0YVRlbXAsIG9wMQorICAgICAgICAgICAgICAgIHhvciAg
ICAgY21wVGVtcCwgZGF0YVRlbXAsIG9wMgorICAgICAgICAgICAgICAgIGJnZXogICAgY21wVGVt
cCwgTm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24gYml0IC0+IG5vIG92ZXJmbG93CisgICAgICAg
ICAgICAgICAgc3VidSAgICBkZXN0LCBkYXRhVGVtcCwgb3AyCisgICAgICAgICAgICAgICAgeG9y
ICAgICBjbXBUZW1wLCBkZXN0LCBkYXRhVGVtcAorICAgICAgICAgICAgICAgIGJnZXogICAgY21w
VGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24gYml0IC0+IG5vIG92ZXJmbG93CisgICAg
ICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgYiAgICAgICBPdmVyZmxvdworICAgICAg
ICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAor
ICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgTm9f
b3ZlcmZsb3c6CisgICAgICAgICAgICAqLworICAgICAgICAgICAgbW92ZShvcDEsIGRhdGFUZW1w
UmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0
ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6
KGNtcFRlbXBSZWdpc3RlciwgMTApOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3VidShkZXN0
LCBkYXRhVGVtcFJlZ2lzdGVyLCBvcDIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5z
bihjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAg
bV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDcpOworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubm9wKCk7CisgICAgICAgICAgICByZXR1cm4ganVtcCgpOworICAgICAgICB9CisgICAg
ICAgIGlmIChjb25kID09IFNpZ25lZCkgeworICAgICAgICAgICAgc3ViMzIob3AxLCBvcDIsIGRl
c3QpOworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdhdGl2ZS4KKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIE1JUFNSZWdpc3RlcnM6
Onplcm8pOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBSZWdpc3Rl
ciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0g
WmVybykgeworICAgICAgICAgICAgc3ViMzIob3AxLCBvcDIsIGRlc3QpOworICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9
CisgICAgICAgIGlmIChjb25kID09IE5vblplcm8pIHsKKyAgICAgICAgICAgIHN1YjMyKG9wMSwg
b3AyLCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChkZXN0LCBNSVBT
UmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBBU1NFUlQoMCk7CisgICAgICAg
IHJldHVybiBKdW1wKCk7CisgICAgfQorCisgICAgSnVtcCBicmFuY2hOZWczMihSZXN1bHRDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmNEZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubGkoZGF0YVRlbXBSZWdpc3RlciwgLTEpOworICAgICAgICByZXR1cm4gYnJhbmNoTXVsMzIo
Y29uZCwgZGF0YVRlbXBSZWdpc3Rlciwgc3JjRGVzdCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFu
Y2hPcjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQpAQCAtMTU3OCw3ICsxOTI1LDggQEAgcHVibGljOgogCiAgICAgQ2FsbCBjYWxsKFJlZ2lz
dGVySUQgdGFyZ2V0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuamFscih0YXJnZXQpOwor
ICAgICAgICBtb3ZlKHRhcmdldCwgTUlQU1JlZ2lzdGVyczo6dDkpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5qYWxyKE1JUFNSZWdpc3RlcnM6OnQ5KTsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7
CiAgICAgICAgIHJldHVybiBDYWxsKG1fYXNzZW1ibGVyLmxhYmVsKCksIENhbGw6Ok5vbmUpOwog
ICAgIH0KQEAgLTE4MjIsNyArMjE3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBsdWkg
ICAgIGltbVRlbXAsIChhZGRyZXNzLm9mZnNldCArIDB4ODAwMCkgPj4gMTYKICAgICAgICAgICAg
ICAgICBhZGR1ICAgIGFkZHJUZW1wLCBhZGRyVGVtcCwgaW1tVGVtcAogICAgICAgICAgICAgICAg
IGx3YzEgICAgZGVzdCwgKGFkZHJlc3Mub2Zmc2V0ICYgMHhmZmZmKShhdCkKLSAgICAgICAgICAg
ICAgICBsd2MxICAgIGRlc3QrNCwgKGFkZHJlc3Mub2Zmc2V0ICYgMHhmZmZmICsgNCkoYXQpCisg
ICAgICAgICAgICAgICAgbHdjMSAgICBkZXN0KzEsIChhZGRyZXNzLm9mZnNldCAmIDB4ZmZmZiAr
IDQpKGF0KQogICAgICAgICAgICAgKi8KICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsbChhZGRy
VGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxlKTsKICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmFkZHUoYWRkclRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgYWRk
cmVzcy5iYXNlKTsKQEAgLTIwMDksNiArMjM1NywxOSBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9
CiAKKyAgICB2b2lkIG1vdmVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRl
c3QpCisgICAgeworICAgICAgICBpZiAoc3JjICE9IGRlc3QgfHwgbV9maXhlZFdpZHRoKQorICAg
ICAgICAgICAgbV9hc3NlbWJsZXIubW92ZChkZXN0LCBzcmMpOworICAgIH0KKworICAgIHZvaWQg
c3dhcERvdWJsZShGUFJlZ2lzdGVySUQgZnIxLCBGUFJlZ2lzdGVySUQgZnIyKQorICAgIHsKKyAg
ICAgICAgbW92ZURvdWJsZShmcjEsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbW92ZURvdWJs
ZShmcjIsIGZyMSk7CisgICAgICAgIG1vdmVEb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGZyMik7Cisg
ICAgfQorCiAgICAgdm9pZCBhZGREb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5hZGRkKGRlc3QsIGRlc3QsIHNyYyk7
CkBAIC0yMDM2LDYgKzIzOTcsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zdWJk
KGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBzdWJEb3VibGUoRlBSZWdpc3Rl
cklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci5zdWJkKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lk
IHN1YkRvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAg
ICBsb2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIpOwpAQCAtMjA1MywxMSArMjQxOSwzMiBA
QCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLm11bGQoZGVzdCwgZGVzdCwgZnBUZW1wUmVn
aXN0ZXIpOwogICAgIH0KIAorICAgIHZvaWQgbXVsRG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQ
UmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3Nl
bWJsZXIubXVsZChkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCBkaXZEb3VibGUo
RlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fz
c2VtYmxlci5kaXZkKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBkaXZEb3Vi
bGUoRlBSZWdpc3RlcklEIG9wMSwgRlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5kaXZkKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9
CisKKyAgICB2b2lkIGRpdkRvdWJsZShBZGRyZXNzIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBsb2FkRG91YmxlKHNyYywgZnBUZW1wUmVnaXN0ZXIpOworICAgICAgICBt
X2Fzc2VtYmxlci5kaXZkKGRlc3QsIGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKKyAg
ICB2b2lkIG5lZ2F0ZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5lZ2QoZGVzdCwgc3JjKTsKKyAgICB9CisKICAg
ICB2b2lkIGNvbnZlcnRJbnQzMlRvRG91YmxlKFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm10YzEoc3JjLCBmcFRlbXBSZWdpc3Rl
cik7CkBAIC0yMTE3LDYgKzI1MDQsOCBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaEVxdWFs
KFJlZ2lzdGVySUQgcnMsIFJlZ2lzdGVySUQgcnQpCiAgICAgeworICAgICAgICBtX2Fzc2VtYmxl
ci5ub3AoKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CiAgICAgICAgIG1fYXNzZW1ibGVy
LmFwcGVuZEp1bXAoKTsKICAgICAgICAgbV9hc3NlbWJsZXIuYmVxKHJzLCBydCwgMCk7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLm5vcCgpOwpAQCAtMjEyNiw2ICsyNTE1LDggQEAgcHVibGljOgogCiAg
ICAgSnVtcCBicmFuY2hOb3RFcXVhbChSZWdpc3RlcklEIHJzLCBSZWdpc3RlcklEIHJ0KQogICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgp
OwogICAgICAgICBtX2Fzc2VtYmxlci5hcHBlbmRKdW1wKCk7CiAgICAgICAgIG1fYXNzZW1ibGVy
LmJuZShycywgcnQsIDApOwogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKQEAgLTIxOTIsMTEg
KzI1ODMsMzMgQEAgcHVibGljOgogICAgIC8vIElmIHRoZSByZXN1bHQgaXMgbm90IHJlcHJlc2Vu
dGFibGUgYXMgYSAzMiBiaXQgdmFsdWUsIGJyYW5jaC4KICAgICAvLyBNYXkgYWxzbyBicmFuY2gg
Zm9yIHNvbWUgdmFsdWVzIHRoYXQgYXJlIHJlcHJlc2VudGFibGUgaW4gMzIgYml0cwogICAgIC8v
IChzcGVjaWZpY2FsbHksIGluIHRoaXMgY2FzZSwgSU5UX01BWCAweDdmZmZmZmZmKS4KLSAgICBK
dW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCisgICAgZW51bSBCcmFuY2hUcnVuY2F0ZVR5cGUgeyBCcmFuY2hJZlRydW5jYXRl
RmFpbGVkLCBCcmFuY2hJZlRydW5jYXRlU3VjY2Vzc2Z1bCB9OworICAgIEp1bXAgYnJhbmNoVHJ1
bmNhdGVEb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCwgQnJh
bmNoVHJ1bmNhdGVUeXBlIGJyYW5jaFR5cGUgPSBCcmFuY2hJZlRydW5jYXRlRmFpbGVkKQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIudHJ1bmN3ZChmcFRlbXBSZWdpc3Rlciwgc3JjKTsKKyAg
ICAgICAgbV9hc3NlbWJsZXIubWZjMShkZXN0LCBmcFRlbXBSZWdpc3Rlcik7CisgICAgICAgIHJl
dHVybiBicmFuY2gzMihicmFuY2hUeXBlID09IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQgPyBFcXVh
bCA6IE5vdEVxdWFsLCBkZXN0LCBUcnVzdGVkSW1tMzIoMHg3ZmZmZmZmZikpOworICAgIH0KKwor
ICAgIEp1bXAgYnJhbmNoVHJ1bmNhdGVEb3VibGVUb1VpbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRlc3QsIEJyYW5jaFRydW5jYXRlVHlwZSBicmFuY2hUeXBlID0gQnJhbmNoSWZU
cnVuY2F0ZUZhaWxlZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnRydW5jd2QoZnBUZW1w
UmVnaXN0ZXIsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1mYzEoZGVzdCwgZnBUZW1wUmVn
aXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoYnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRy
dW5jYXRlRmFpbGVkID8gRXF1YWwgOiBOb3RFcXVhbCwgZGVzdCwgVHJ1c3RlZEltbTMyKDApKTsK
KyAgICB9CisKKyAgICAvLyBSZXN1bHQgaXMgdW5kZWZpbmVkIGlmIHRoZSB2YWx1ZSBpcyBvdXRz
aWRlIG9mIHRoZSBpbnRlZ2VyIHJhbmdlLgorICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb0ludDMy
KEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNz
ZW1ibGVyLnRydW5jd2QoZnBUZW1wUmVnaXN0ZXIsIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVy
Lm1mYzEoZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOworICAgIH0KKworICAgIC8vIFJlc3VsdCBpcyB1
bmRlZmluZWQgaWYgc3JjID4gMl4zMQorICAgIHZvaWQgdHJ1bmNhdGVEb3VibGVUb1VpbnQzMihG
UFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2Vt
Ymxlci50cnVuY3dkKGZwVGVtcFJlZ2lzdGVyLCBzcmMpOwogICAgICAgICBtX2Fzc2VtYmxlci5t
ZmMxKGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKEVxdWFs
LCBkZXN0LCBUcnVzdGVkSW1tMzIoMHg3ZmZmZmZmZikpOwogICAgIH0KIAogICAgIC8vIENvbnZl
cnQgJ3NyYycgdG8gYW4gaW50ZWdlciwgYW5kIHBsYWNlcyB0aGUgcmVzdWx0aW5nICdkZXN0Jy4K
QEAgLTIyMTgsMjggKzI2MzEsNDMgQEAgcHVibGljOgogCiAgICAgSnVtcCBicmFuY2hEb3VibGVO
b25aZXJvKEZQUmVnaXN0ZXJJRCByZWcsIEZQUmVnaXN0ZXJJRCBzY3JhdGNoKQogICAgIHsKLSNp
ZiBXVEZfTUlQU19JU0FfUkVWKDIpICYmIFdURl9NSVBTX0ZQNjQKLSAgICAgICAgbV9hc3NlbWJs
ZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzY3JhdGNoKTsKLSAgICAgICAgbV9hc3NlbWJs
ZXIubXRoYzEoTUlQU1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7Ci0jZWxzZQotICAgICAgICBt
X2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0Y2gpOwotICAgICAgICBt
X2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIEZQUmVnaXN0ZXJJRChzY3JhdGNo
ICsgMSkpOwotI2VuZGlmCisgICAgICAgIG1fYXNzZW1ibGVyLnZtb3Yoc2NyYXRjaCwgTUlQU1Jl
Z2lzdGVyczo6emVybywgTUlQU1JlZ2lzdGVyczo6emVybyk7CiAgICAgICAgIHJldHVybiBicmFu
Y2hEb3VibGUoRG91YmxlTm90RXF1YWwsIHJlZywgc2NyYXRjaCk7CiAgICAgfQogCiAgICAgSnVt
cCBicmFuY2hEb3VibGVaZXJvT3JOYU4oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEIHNj
cmF0Y2gpCiAgICAgewotI2lmIFdURl9NSVBTX0lTQV9SRVYoMikgJiYgV1RGX01JUFNfRlA2NAot
ICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0Y2gpOwot
ICAgICAgICBtX2Fzc2VtYmxlci5tdGhjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzY3JhdGNoKTsK
LSNlbHNlCi0gICAgICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQU1JlZ2lzdGVyczo6emVybywgc2Ny
YXRjaCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQU1JlZ2lzdGVyczo6emVybywgRlBS
ZWdpc3RlcklEKHNjcmF0Y2ggKyAxKSk7Ci0jZW5kaWYKKyAgICAgICAgbV9hc3NlbWJsZXIudm1v
dihzY3JhdGNoLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKICAg
ICAgICAgcmV0dXJuIGJyYW5jaERvdWJsZShEb3VibGVFcXVhbE9yVW5vcmRlcmVkLCByZWcsIHNj
cmF0Y2gpOwogICAgIH0KIAorICAgIC8vIEludmVydCBhIHJlbGF0aW9uYWwgY29uZGl0aW9uLCBl
LmcuID09IGJlY29tZXMgIT0sIDwgYmVjb21lcyA+PSwgZXRjLgorICAgIHN0YXRpYyBSZWxhdGlv
bmFsQ29uZGl0aW9uIGludmVydChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQpCisgICAgeworICAg
ICAgICBSZWxhdGlvbmFsQ29uZGl0aW9uIHI7CisgICAgICAgIGlmIChjb25kID09IEVxdWFsKQor
ICAgICAgICAgICAgciA9IE5vdEVxdWFsOworICAgICAgICBlbHNlIGlmIChjb25kID09IE5vdEVx
dWFsKQorICAgICAgICAgICAgciA9IEVxdWFsOworICAgICAgICBlbHNlIGlmIChjb25kID09IEFi
b3ZlKQorICAgICAgICAgICAgciA9IEJlbG93T3JFcXVhbDsKKyAgICAgICAgZWxzZSBpZiAoY29u
ZCA9PSBBYm92ZU9yRXF1YWwpCisgICAgICAgICAgICByID0gQmVsb3c7CisgICAgICAgIGVsc2Ug
aWYgKGNvbmQgPT0gQmVsb3cpCisgICAgICAgICAgICByID0gQWJvdmVPckVxdWFsOworICAgICAg
ICBlbHNlIGlmIChjb25kID09IEJlbG93T3JFcXVhbCkKKyAgICAgICAgICAgIHIgPSBBYm92ZTsK
KyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBHcmVhdGVyVGhhbikKKyAgICAgICAgICAgIHIgPSBM
ZXNzVGhhbk9yRXF1YWw7CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gR3JlYXRlclRoYW5PckVx
dWFsKQorICAgICAgICAgICAgciA9IExlc3NUaGFuOworICAgICAgICBlbHNlIGlmIChjb25kID09
IExlc3NUaGFuKQorICAgICAgICAgICAgciA9IEdyZWF0ZXJUaGFuT3JFcXVhbDsKKyAgICAgICAg
ZWxzZSBpZiAoY29uZCA9PSBMZXNzVGhhbk9yRXF1YWwpCisgICAgICAgICAgICByID0gR3JlYXRl
clRoYW47CisgICAgICAgIHJldHVybiByOworICAgIH0KKwogICAgIHZvaWQgbm9wKCkKICAgICB7
CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwpAQCAtMjI1MiwxMiArMjY4MCwxMiBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAoQ29kZUxvY2F0aW9uTGFiZWwg
aW5zdHJ1Y3Rpb25TdGFydCwgQ29kZUxvY2F0aW9uTGFiZWwgZGVzdGluYXRpb24pCiAgICAgewot
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBNSVBTQXNzZW1i
bGVyOjpyZXBsYWNlV2l0aEp1bXAoaW5zdHJ1Y3Rpb25TdGFydC5kYXRhTG9jYXRpb24oKSwgZGVz
dGluYXRpb24uZGF0YUxvY2F0aW9uKCkpOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgcHRyZGlm
Zl90IG1heEp1bXBSZXBsYWNlbWVudFNpemUoKQogICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgTUlQU0Fzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2Vt
ZW50U2l6ZSgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oCmluZGV4IGZhMGY1ZTAuLjU3M2Q4ZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaApA
QCAtOTMsNiArOTMsMjMgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogCisjaWYgQ1BVKE1JUFMp
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChS
ZWdpc3RlcklEIHJlZykKKyAgICB7CisgICAgICAgIG1vdmUocmV0dXJuQWRkcmVzc1JlZ2lzdGVy
LCByZWcpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCByZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybihSZWdpc3RlcklEIHJlZykKKyAgICB7CisgICAgICAgIG1vdmUocmVn
LCByZXR1cm5BZGRyZXNzUmVnaXN0ZXIpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihBZGRyZXNzIGFkZHJlc3MpCisgICAg
eworICAgICAgICBsb2FkUHRyKGFkZHJlc3MsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7CisgICAg
fQorI2VuZGlmCisKICAgICB2b2lkIGVtaXRHZXRGcm9tQ2FsbEZyYW1lSGVhZGVyUHRyKEpTU3Rh
Y2s6OkNhbGxGcmFtZUhlYWRlckVudHJ5IGVudHJ5LCBHUFJSZWcgdG8pCiAgICAgewogICAgICAg
ICBsb2FkUHRyKEFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGVudHJ5ICogc2l6
ZW9mKFJlZ2lzdGVyKSksIHRvKTsKQEAgLTE5Myw3ICsyMTAsNyBAQCBwdWJsaWM6CiAgICAgICAg
IG1vdmUoVHJ1c3RlZEltbVB0cihzY3JhdGNoQnVmZmVyLT5hY3RpdmVMZW5ndGhQdHIoKSksIEdQ
UkluZm86OnJlZ1QwKTsKICAgICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihzY3JhdGNoU2l6
ZSksIEdQUkluZm86OnJlZ1QwKTsKIAotI2lmIENQVShYODZfNjQpIHx8IENQVShBUk0pCisjaWYg
Q1BVKFg4Nl82NCkgfHwgQ1BVKEFSTSkgfHwgQ1BVKE1JUFMpCiAgICAgICAgIG1vdmUoVHJ1c3Rl
ZEltbVB0cihidWZmZXIpLCBHUFJJbmZvOjphcmd1bWVudEdQUjIpOwogICAgICAgICBtb3ZlKFRy
dXN0ZWRJbW1QdHIoYXJndW1lbnQpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOwogICAgICAgICBt
b3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgKaW5kZXggOGFkZGUw
NS4uMDcwZWE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2Fs
bEhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVy
cy5oCkBAIC01NzYsNiArNTc2LDM5IEBAIHB1YmxpYzoKICAgICAgICAgcG9rZShHUFJJbmZvOjpu
b25BcmdHUFIwKTsKICAgICB9CiAjZW5kaWYgLy8gQ1BVKEFSTV9IQVJERlApCisjZWxpZiBDUFUo
TUlQUykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVnIGFyZzEp
CisgICAgeworICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7
CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQUlJlZyBh
cmcxLCBGUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAgIGlmIChhcmcyICE9IEZQUkluZm86OmFy
Z3VtZW50RlBSMCkgeworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1
bWVudEZQUjApOworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1bWVu
dEZQUjEpOworICAgICAgICB9IGVsc2UgaWYgKGFyZzEgIT0gRlBSSW5mbzo6YXJndW1lbnRGUFIx
KSB7CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzIsIEZQUkluZm86OmFyZ3VtZW50RlBSMSk7
CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBTd2FwIGFyZzEsIGFyZzIuCisgICAgICAg
ICAgICBzd2FwRG91YmxlKEZQUkluZm86OmFyZ3VtZW50RlBSMCwgRlBSSW5mbzo6YXJndW1lbnRG
UFIxKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoRlBSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAg
ICAgICAgYXNzZW1ibGVyKCkudm1vdihHUFJJbmZvOjphcmd1bWVudEdQUjIsIEdQUkluZm86OmFy
Z3VtZW50R1BSMywgYXJnMSk7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0
ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHBva2UoYXJnMiwgNCk7CisgICAg
fQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShH
UFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEZQUlJlZyBhcmczKQorICAgIHsKKyAgICAgICAgc2V0
dXBTdHViQXJndW1lbnRzKGFyZzEsIGFyZzIpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBwb2tlKGFyZzMs
IDQpOworICAgIH0KICNlbHNlCiAjZXJyb3IgIkRGRyBKSVQgbm90IHN1cHBvcnRlZCBvbiB0aGlz
IHBsYXRmb3JtLiIKICNlbmRpZgpAQCAtODAzLDExOSArODM2LDEzMCBAQCBwdWJsaWM6CiAgICAg
Ly8gVGhlc2UgbWV0aG9kcyBhcmUgc3VpdGFibGUgZm9yIGFueSBjYWxsaW5nIGNvbnZlbnRpb24g
dGhhdCBwcm92aWRlcyBmb3IKICAgICAvLyBleGFjdGx5IDQgYXJndW1lbnQgcmVnaXN0ZXJzLCBl
LmcuIEFSTXY3LgogI2lmIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgPT0gNAorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgQXJndW1lbnQ+CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHBva2VB
cmd1bWVudChBcmd1bWVudCBhcmcsIGludCBpbmRleCA9IDApCisgICAgeworI2lmIENQVShNSVBT
KQorICAgICAgICBwb2tlKGFyZywgaW5kZXggKyA0KTsKKyNlbHNlCisgICAgICAgIHBva2UoYXJn
LCBpbmRleCk7CisjZW5kaWYKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFy
ZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgcG9r
ZUFyZ3VtZW50KGFyZzQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmcz
LCBUcnVzdGVkSW1tMzIgYXJnNCkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAg
IHBva2VBcmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwg
VHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc0
KTsKKyAgICAgICAgcG9rZUFyZ3VtZW50KGFyZzQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZElt
bVB0ciBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQog
ICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCAxKTsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAg
ICAgcG9rZUFyZ3VtZW50KGFyZzUsIDEpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNCk7CiAg
ICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAg
ICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIFRydXN0ZWRJbW0z
MiBhcmc0KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgcG9rZUFyZ3VtZW50
KGFyZzQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwg
YXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBh
cmczLCBHUFJSZWcgYXJnNCkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBv
a2VBcmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJn
MywgVHJ1c3RlZEltbVB0ciBhcmc0KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAg
ICAgcG9rZUFyZ3VtZW50KGFyZzQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJl
ZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCiAgICAgewotICAgICAgICBwb2tlKGFy
ZzUsIDEpOwotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNSwg
MSk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQ
UlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewotICAgICAgICBwb2tl
KGFyZzQpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcx
LCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkKICAgICB7Ci0g
ICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc0KTsKICAgICAgICAg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAog
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3Rl
ZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgVHJ1c3RlZEltbVB0
ciBhcmc0KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgcG9rZUFyZ3VtZW50
KGFyZzQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwg
YXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0
aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBh
cmczLCBHUFJSZWcgYXJnNCkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBv
a2VBcmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFy
ZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFy
Z3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1t
MzIgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQogICAgIHsKLSAgICAgICAgcG9rZShh
cmc1LCAxKTsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgcG9rZUFyZ3VtZW50KGFyZzUs
IDEpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcg
YXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQUlJlZyBhcmc0LCBUcnVzdGVkSW1tMzIgYXJnNSkK
ICAgICB7Ci0gICAgICAgIHBva2UoYXJnNSwgMSk7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAg
ICAgIHBva2VBcmd1bWVudChhcmc1LCAxKTsKKyAgICAgICAgcG9rZUFyZ3VtZW50KGFyZzQpOwog
ICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAg
ICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJn
NCwgVHJ1c3RlZEltbVB0ciBhcmc1KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCAxKTsKLSAg
ICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgcG9rZUFyZ3VtZW50KGFyZzUsIDEpOworICAgICAg
ICBwb2tlQXJndW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwg
R1BSUmVnIGFyZzMsIFRydXN0ZWRJbW0zMiBhcmc0LCBUcnVzdGVkSW1tMzIgYXJnNSkKICAgICB7
Ci0gICAgICAgIHBva2UoYXJnNSwgMSk7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBv
a2VBcmd1bWVudChhcmc1LCAxKTsKKyAgICAgICAgcG9rZUFyZ3VtZW50KGFyZzQpOwogICAgICAg
ICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQog
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVz
dGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJS
ZWcgYXJnNCwgR1BSUmVnIGFyZzUpCiAgICAgewotICAgICAgICBwb2tlKGFyZzUsIDEpOwotICAg
ICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNSwgMSk7CisgICAgICAg
IHBva2VBcmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBH
UFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQogICAgIHsKLSAgICAgICAgcG9r
ZShhcmc1LCAxKTsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgcG9rZUFyZ3VtZW50KGFy
ZzUsIDEpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBSSW5mby5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGUFJJbmZvLmgKaW5kZXggOTMxYTc3MS4uMzU1Njc2NCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmgKQEAgLTE2NCw2ICsxNjQsNzQgQEAgcHVibGlj
OgogCiAjZW5kaWYKIAorI2lmIENQVShNSVBTKQorCitjbGFzcyBGUFJJbmZvIHsKK3B1YmxpYzoK
KyAgICB0eXBlZGVmIEZQUlJlZyBSZWdpc3RlclR5cGU7CisgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIG51bWJlck9mUmVnaXN0ZXJzID0gNjsKKworICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMu
CisgICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QwID0gTUlQU1JlZ2lzdGVyczo6ZjA7Cisg
ICAgc3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QxID0gTUlQU1JlZ2lzdGVyczo6ZjQ7CisgICAg
c3RhdGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QyID0gTUlQU1JlZ2lzdGVyczo6ZjY7CisgICAgc3Rh
dGljIGNvbnN0IEZQUlJlZyBmcFJlZ1QzID0gTUlQU1JlZ2lzdGVyczo6Zjg7CisgICAgc3RhdGlj
IGNvbnN0IEZQUlJlZyBmcFJlZ1Q0ID0gTUlQU1JlZ2lzdGVyczo6ZjEwOworICAgIHN0YXRpYyBj
b25zdCBGUFJSZWcgZnBSZWdUNSA9IE1JUFNSZWdpc3RlcnM6OmYxODsKKworICAgIHN0YXRpYyBj
b25zdCBGUFJSZWcgcmV0dXJuVmFsdWVGUFIgPSBNSVBTUmVnaXN0ZXJzOjpmMDsKKworICAgIHN0
YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIwID0gTUlQU1JlZ2lzdGVyczo6ZjEyOworICAg
IHN0YXRpYyBjb25zdCBGUFJSZWcgYXJndW1lbnRGUFIxID0gTUlQU1JlZ2lzdGVyczo6ZjE0Owor
CisgICAgc3RhdGljIEZQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAg
ICAgICAgc3RhdGljIGNvbnN0IEZQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0
ZXJzXSA9IHsKKyAgICAgICAgICAgIGZwUmVnVDAsIGZwUmVnVDEsIGZwUmVnVDIsIGZwUmVnVDMs
IGZwUmVnVDQsIGZwUmVnVDUgfTsKKworICAgICAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlJl
Z2lzdGVycyk7CisgICAgICAgIHJldHVybiByZWdpc3RlckZvckluZGV4W2luZGV4XTsKKyAgICB9
CisKKyAgICBzdGF0aWMgdW5zaWduZWQgdG9JbmRleChGUFJSZWcgcmVnKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkRlBSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDIw
KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVnaXN0ZXJbMjBdID0g
eworICAgICAgICAgICAgMCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRl
eCwKKyAgICAgICAgICAgIDEsIEludmFsaWRJbmRleCwgMiwgSW52YWxpZEluZGV4LAorICAgICAg
ICAgICAgMywgSW52YWxpZEluZGV4LCA0LCBJbnZhbGlkSW5kZXgsCisgICAgICAgICAgICBJbnZh
bGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsCisgICAg
ICAgICAgICBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgNSwgSW52YWxpZEluZGV4LAorICAg
ICAgICB9OworICAgICAgICB1bnNpZ25lZCByZXN1bHQgPSBpbmRleEZvclJlZ2lzdGVyW3JlZ107
CisgICAgICAgIEFTU0VSVChyZXN1bHQgIT0gSW52YWxpZEluZGV4KTsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEZQUlJl
ZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcpOworICAg
ICAgICBBU1NFUlQocmVnIDwgMzIpOworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciogbmFtZUZv
clJlZ2lzdGVyWzMyXSA9IHsKKyAgICAgICAgICAgICJmMCIsICJmMSIsICJmMiIsICJmMyIsCisg
ICAgICAgICAgICAiZjQiLCAiZjUiLCAiZjYiLCAiZjciLAorICAgICAgICAgICAgImY4IiwgImY5
IiwgImYxMCIsICJmMTEiLAorICAgICAgICAgICAgImYxMiIsICJmMTMiLCAiZjE0IiwgImYxNSIK
KyAgICAgICAgICAgICJmMTYiLCAiZjE3IiwgImYxOCIsICJmMTkiCisgICAgICAgICAgICAiZjIw
IiwgImYyMSIsICJmMjIiLCAiZjIzIgorICAgICAgICAgICAgImYyNCIsICJmMjUiLCAiZjI2Iiwg
ImYyNyIKKyAgICAgICAgICAgICJmMjgiLCAiZjI5IiwgImYzMCIsICJmMzEiCisgICAgICAgIH07
CisgICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0ZXJbcmVnXTsKKyAgICB9Citwcml2YXRlOgor
CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEludmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7Cit9
OworCisjZW5kaWYKKwogdHlwZWRlZiBSZWdpc3RlckJhbms8RlBSSW5mbz46Oml0ZXJhdG9yIGZw
cl9pdGVyYXRvcjsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dQUkluZm8uaAppbmRleCAzZDA3NTU2Li5hYTYzNGNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaApAQCAtNDYxLDYgKzQ2MSw3MyBAQCBwcml2YXRlOgog
CiAjZW5kaWYKIAorI2lmIENQVShNSVBTKQorI2RlZmluZSBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVH
SVNURVJTIDQKKworY2xhc3MgR1BSSW5mbyB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBHUFJSZWcg
UmVnaXN0ZXJUeXBlOworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlJlZ2lzdGVy
cyA9IDY7CisKKyAgICAvLyBUZW1wb3JhcnkgcmVnaXN0ZXJzLgorICAgIHN0YXRpYyBjb25zdCBH
UFJSZWcgcmVnVDAgPSBNSVBTUmVnaXN0ZXJzOjp2MDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IHJlZ1QxID0gTUlQU1JlZ2lzdGVyczo6djE7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdU
MiA9IE1JUFNSZWdpc3RlcnM6OnQ0OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDMgPSBN
SVBTUmVnaXN0ZXJzOjp0NTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q0ID0gTUlQU1Jl
Z2lzdGVyczo6dDY7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUNSA9IE1JUFNSZWdpc3Rl
cnM6OnQ3OworICAgIC8vIFRoZXNlIHJlZ2lzdGVycyBtYXRjaCB0aGUgYmFzZWxpbmUgSklULgor
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSByZWdUMDsKKyAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIGNhY2hlZFJlc3VsdFJlZ2lzdGVyMiA9IHJlZ1QxOworICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgY2FsbEZyYW1lUmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJzOjpz
MDsKKyAgICAvLyBUaGVzZSBjb25zdGFudHMgcHJvdmlkZSB0aGUgbmFtZXMgZm9yIHRoZSBnZW5l
cmFsIHB1cnBvc2UgYXJndW1lbnQgJiByZXR1cm4gdmFsdWUgcmVnaXN0ZXJzLgorICAgIHN0YXRp
YyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIwID0gTUlQU1JlZ2lzdGVyczo6YTA7CisgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjEgPSBNSVBTUmVnaXN0ZXJzOjphMTsKKyAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMiA9IE1JUFNSZWdpc3RlcnM6OmEyOworICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIzID0gTUlQU1JlZ2lzdGVyczo6YTM7Cisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25BcmdHUFIwID0gcmVnVDI7CisgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyBub25BcmdHUFIxID0gcmVnVDM7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBu
b25BcmdHUFIyID0gcmVnVDQ7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQ
UiA9IHJlZ1QwOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmV0dXJuVmFsdWVHUFIyID0gcmVn
VDE7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBub25QcmVzZXJ2ZWROb25SZXR1cm5HUFIgPSBy
ZWdUNTsKKworICAgIHN0YXRpYyBHUFJSZWcgdG9SZWdpc3Rlcih1bnNpZ25lZCBpbmRleCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mUmVnaXN0ZXJzKTsKKyAgICAgICAg
c3RhdGljIGNvbnN0IEdQUlJlZyByZWdpc3RlckZvckluZGV4W251bWJlck9mUmVnaXN0ZXJzXSA9
IHsgcmVnVDAsIHJlZ1QxLCByZWdUMiwgcmVnVDMsIHJlZ1Q0LCByZWdUNSB9OworICAgICAgICBy
ZXR1cm4gcmVnaXN0ZXJGb3JJbmRleFtpbmRleF07CisgICAgfQorCisgICAgc3RhdGljIHVuc2ln
bmVkIHRvSW5kZXgoR1BSUmVnIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52
YWxpZEdQUlJlZyk7CisgICAgICAgIEFTU0VSVChyZWcgPCAxNik7CisgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBpbmRleEZvclJlZ2lzdGVyWzE2XSA9IHsgSW52YWxpZEluZGV4LCBJbnZh
bGlkSW5kZXgsIDAsIDEsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgs
IEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwg
SW52YWxpZEluZGV4LCAyLCAzLCA0LCA1IH07CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGlu
ZGV4Rm9yUmVnaXN0ZXJbcmVnXTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdCAhPSBJbnZhbGlkSW5k
ZXgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBkZWJ1Z05hbWUoR1BSUmVnIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0g
SW52YWxpZEdQUlJlZyk7CisgICAgICAgIEFTU0VSVChyZWcgPCAxNik7CisgICAgICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBuYW1lRm9yUmVnaXN0ZXJbMTZdID0geworICAgICAgICAgICAgInplcm8i
LCAiYXQiLCAidjAiLCAidjEiLAorICAgICAgICAgICAgImEwIiwgImExIiwgImEyIiwgImEzIiwK
KyAgICAgICAgICAgICJ0MCIsICJ0MSIsICJ0MiIsICJ0MyIsCisgICAgICAgICAgICAidDQiLCAi
dDUiLCAidDYiLCAidDciCisgICAgICAgIH07CisgICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0
ZXJbcmVnXTsKKyAgICB9Citwcml2YXRlOgorCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIElu
dmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7Cit9OworCisjZW5kaWYKKwogdHlwZWRlZiBSZWdpc3Rl
ckJhbms8R1BSSW5mbz46Oml0ZXJhdG9yIGdwcl9pdGVyYXRvcjsKIAogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCmluZGV4IDQ0NmY3YTYuLmY4OTUyZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTEyNTksNyArMTI1OSw3IEBAIHB1YmxpYzoKIAog
Ly8gRW5jb2RlZEpTVmFsdWUgaW4gSlNWQUxVRTMyXzY0IGlzIGEgNjQtYml0IGludGVnZXIuIFdo
ZW4gYmVpbmcgY29tcGlsZWQgaW4gQVJNIEVBQkksIGl0IG11c3QgYmUgYWxpZ25lZCBldmVuLW51
bWJlcmVkIHJlZ2lzdGVyIChyMCwgcjIgb3IgW3NwXSkuCiAvLyBUbyBhdm9pZCBhc3NlbWJsaWVz
IGZyb20gdXNpbmcgd3JvbmcgcmVnaXN0ZXJzLCBsZXQncyBvY2N1cHkgcjEgb3IgcjMgd2l0aCBh
IGR1bW15IGFyZ3VtZW50IHdoZW4gbmVjZXNzYXJ5LgotI2lmIENPTVBJTEVSX1NVUFBPUlRTKEVB
QkkpICYmIENQVShBUk0pCisjaWYgKENPTVBJTEVSX1NVUFBPUlRTKEVBQkkpICYmIENQVShBUk0p
KSB8fCBDUFUoTUlQUykKICNkZWZpbmUgRUFCSV8zMkJJVF9EVU1NWV9BUkcgICAgICBUcnVzdGVk
SW1tMzIoMCksCiAjZWxzZQogI2RlZmluZSBFQUJJXzMyQklUX0RVTU1ZX0FSRwpAQCAtMTcwOSw3
ICsxNzA5LDcgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogICAgIAotI2lmICFkZWZpbmVkKE5E
RUJVRykgJiYgIUNQVShBUk0pCisjaWYgIWRlZmluZWQoTkRFQlVHKSAmJiAhQ1BVKEFSTSkgJiYg
IUNQVShNSVBTKQogICAgIHZvaWQgcHJlcGFyZUZvckV4dGVybmFsQ2FsbCgpCiAgICAgewogICAg
ICAgICAvLyBXZSdyZSBhYm91dCB0byBjYWxsIG91dCB0byBhICJuYXRpdmUiIGhlbHBlciBmdW5j
dGlvbi4gVGhlIGhlbHBlcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
U0ludGVyZmFjZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJ
VC5oCmluZGV4IDdmZGVhZjAuLjQ4YWQ2YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pTSW50ZXJmYWNlSklULmgKQEAgLTEyNSw2ICsxMjUsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGNhY2hlZFJlc3VsdFJlZ2lzdGVyID0gTUlQ
U1JlZ2lzdGVyczo6djA7CiAgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGZpcnN0QXJn
dW1lbnRSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OmEwOwogICAgICAgICAKKyNpZiBFTkFCTEUo
VkFMVUVfUFJPRklMRVIpCisgICAgICAgIHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIGJ1Y2tldENv
dW50ZXJSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OnMzOworI2VuZGlmCisKICAgICAgICAgLy8g
cmVnVDAgbXVzdCBiZSB2MCBmb3IgcmV0dXJuaW5nIGEgMzItYml0IHZhbHVlLgogICAgICAgICBz
dGF0aWMgY29uc3QgUmVnaXN0ZXJJRCByZWdUMCA9IE1JUFNSZWdpc3RlcnM6OnYwOwogICAgICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKaW5kZXgg
NWQ0N2FiOS4uYzAyZjMzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxEYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxEYXRhLmgKQEAgLTE0MSwxNCArMTQxLDE4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBzaXplX3Qg
YWxsb2NhdGlvblNpemUoc2l6ZV90IGJ1ZmZlclNpemUpIHsgcmV0dXJuIHNpemVvZihzaXplX3Qp
ICsgYnVmZmVyU2l6ZTsgfQorICAgICAgICBzdGF0aWMgc2l6ZV90IGFsbG9jYXRpb25TaXplKHNp
emVfdCBidWZmZXJTaXplKSB7IHJldHVybiBzaXplb2YoU2NyYXRjaEJ1ZmZlcikgKyBidWZmZXJT
aXplOyB9CiAgICAgICAgIHZvaWQgc2V0QWN0aXZlTGVuZ3RoKHNpemVfdCBhY3RpdmVMZW5ndGgp
IHsgbV9hY3RpdmVMZW5ndGggPSBhY3RpdmVMZW5ndGg7IH0KICAgICAgICAgc2l6ZV90IGFjdGl2
ZUxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlTGVuZ3RoOyB9OwogICAgICAgICBzaXpl
X3QqIGFjdGl2ZUxlbmd0aFB0cigpIHsgcmV0dXJuICZtX2FjdGl2ZUxlbmd0aDsgfTsKICAgICAg
ICAgdm9pZCogZGF0YUJ1ZmZlcigpIHsgcmV0dXJuIG1fYnVmZmVyOyB9CiAKICAgICAgICAgc2l6
ZV90IG1fYWN0aXZlTGVuZ3RoOworI2lmIENQVShNSVBTKSAmJiAoZGVmaW5lZCBXVEZfTUlQU19B
UkNIX1JFViAmJiBXVEZfTUlQU19BUkNIX1JFViA9PSAyKQorICAgICAgICB2b2lkKiBtX2J1ZmZl
clswXSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDgpKSk7CisjZWxzZQogICAgICAgICB2b2lkKiBt
X2J1ZmZlclswXTsKKyNlbmRpZgogICAgIH07CiAjaWYgQ09NUElMRVIoTVNWQykKICNwcmFnbWEg
d2FybmluZyhwb3ApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCmluZGV4IDdkNzU4Y2QuLjAyNmYzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTMtMDItMTEgIEJhbGF6cyBLaWx2YWR5ICA8a2lsdmFkeWJAaG9tZWppbm5pLmNvbT4KKwor
ICAgICAgICBNSVBTIERGRyBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTMyOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIERGRyBpbXBsZW1lbnRhdGlvbiBmb3IgTUlQUy4KKwor
ICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDEzLTAyLTExICBDaHJpc3RvcGhlIER1bWV6
ICA8Y2guZHVtZXpAc2lzYS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBTdG9wIHVzaW5n
IHNtYXJ0IHBvaW50ZXJzIGZvciBFY29yZV9UaW1lcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvUGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggNDRmMWQwMC4u
MWFmZDYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC05MTMsNiArOTEzLDEwIEBACiAjaWYgQ1BVKEFSTV9U
UkFESVRJT05BTCkKICNkZWZpbmUgRU5BQkxFX0RGR19KSVQgMQogI2VuZGlmCisvKiBFbmFibGUg
dGhlIERGRyBKSVQgb24gTUlQUy4gKi8KKyNpZiBDUFUoTUlQUykKKyNkZWZpbmUgRU5BQkxFX0RG
R19KSVQgMQorI2VuZGlmCiAjZW5kaWYKIAogLyogSWYgdGhlIGppdCBpcyBub3QgYXZhaWxhYmxl
LCBlbmFibGUgdGhlIExMSW50IEMgTG9vcDogKi8K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188878</attachid>
            <date>2013-02-18 07:04:04 -0800</date>
            <delta_ts>2013-09-05 08:49:40 -0700</delta_ts>
            <desc>DFG for MIPS - arg. offset with inline</desc>
            <filename>dfg-i.diff</filename>
            <type>text/plain</type>
            <size>52467</size>
            <attacher name="Balazs Kilvady">kilvadyb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGY4NDIyODUuLjk3YjU2Y2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk0IEBACisyMDEzLTAyLTE4ICBCYWxhenMgS2lsdmFk
eSAgPGtpbHZhZHliQGhvbWVqaW5uaS5jb20+CisKKyAgICAgICAgTUlQUyBERkcgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
RkcgaW1wbGVtZW50YXRpb24gZm9yIE1JUFMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTUlQU0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpNSVBTQXNzZW1ibGVyKToK
KyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6c2xsdik6CisgICAgICAgIChKU0M6Ok1JUFNB
c3NlbWJsZXI6Om1vdmQpOgorICAgICAgICAoTUlQU0Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6
Ok1JUFNBc3NlbWJsZXI6Om5lZ2QpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJl
bEZvcldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJlbCk6Cisg
ICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6OnZtb3YpOgorICAgICAgICAoSlNDOjpNSVBTQXNz
ZW1ibGVyOjpsaW5rRGlyZWN0SnVtcCk6CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6Om1h
eEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpyZXZl
cnRKdW1wVG9Nb3ZlKToKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhK
dW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKE1h
Y3JvQXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBva2UpOgorICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJNSVBTOjphZGQzMik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlck1JUFMpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmFuZDMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJNSVBTOjpsc2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyTUlQUzo6bXVsMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om9yMzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJzaGlmdDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjp1cnNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OnN1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
Ojp4b3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6c3RvcmUzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6anVtcCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoQWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OmJyYW5jaE11bDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
OjpicmFuY2hTdWIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNo
TmVnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmNhbGwpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmxvYWREb3VibGUpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6Om1vdmVEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OnN3YXBEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6
OnN1YkRvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6bXVsRG91Ymxl
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpkaXZEb3VibGUpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om5lZ2F0ZURvdWJsZSk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRXF1YWwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlck1JUFM6OmJyYW5jaE5vdEVxdWFsKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJNSVBTOjpicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OmJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnRydW5jYXRlRG91YmxlVG9JbnQzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6dHJ1bmNhdGVEb3VibGVUb1VpbnQzMik6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlTm9uWmVybyk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlWmVyb09yTmFOKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjppbnZlcnQpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyTUlQUzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogZGZnL0RG
R0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoQXNzZW1ibHlIZWxwZXJzKToKKyAgICAgICAg
KEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybik6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpk
ZWJ1Z0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEND
YWxsSGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3Vt
ZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUpOgorICAgICAgICAoSlNDOjpERkc6OkNDYWxsSGVscGVyczo6cG9rZUFyZ3Vt
ZW50KToKKyAgICAgICAgKiBkZmcvREZHRlBSSW5mby5oOgorICAgICAgICAoREZHKToKKyAgICAg
ICAgKEZQUkluZm8pOgorICAgICAgICAoSlNDOjpERkc6OkZQUkluZm86OnRvUmVnaXN0ZXIpOgor
ICAgICAgICAoSlNDOjpERkc6OkZQUkluZm86OnRvSW5kZXgpOgorICAgICAgICAoSlNDOjpERkc6
OkZQUkluZm86OmRlYnVnTmFtZSk6CisgICAgICAgICogZGZnL0RGR0dQUkluZm8uaDoKKyAgICAg
ICAgKERGRyk6CisgICAgICAgIChHUFJJbmZvKToKKyAgICAgICAgKEpTQzo6REZHOjpHUFJJbmZv
Ojp0b1JlZ2lzdGVyKToKKyAgICAgICAgKEpTQzo6REZHOjpHUFJJbmZvOjp0b0luZGV4KToKKyAg
ICAgICAgKEpTQzo6REZHOjpHUFJJbmZvOjpkZWJ1Z05hbWUpOgorICAgICAgICAqIGRmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAoU3BlY3VsYXRpdmVKSVQpOgorICAgICAgICAqIGpp
dC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAoSlNJbnRlcmZhY2VKSVQpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgIChKU0M6OlNjcmF0Y2hCdWZmZXI6OmFs
bG9jYXRpb25TaXplKToKKyAgICAgICAgKFNjcmF0Y2hCdWZmZXIpOgorCiAyMDEzLTAyLTE4ICBJ
bHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkIHNwZWN1bGF0aXZlIGJ1aWxkIGZpeCBmb3IgQXBwbGUgV2luIGJvdHMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCmluZGV4IDAyNmY4N2Uu
LjdmNTUzYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQ
U0Fzc2VtYmxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fz
c2VtYmxlci5oCkBAIC0xNTIsNiArMTUyLDggQEAgcHVibGljOgogICAgIHR5cGVkZWYgU2VnbWVu
dGVkVmVjdG9yPEFzc2VtYmxlckxhYmVsLCA2ND4gSnVtcHM7CiAKICAgICBNSVBTQXNzZW1ibGVy
KCkKKyAgICAgICAgOiBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludChJTlRfTUlOKQorICAgICAgICAs
IG1faW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCiAgICAgewogICAgIH0KIApA
QCAtMzI1LDcgKzMyNyw3IEBAIHB1YmxpYzoKICAgICAgICAgZW1pdEluc3QoMHgwMDAwMDAwMCB8
IChyZCA8PCBPUF9TSF9SRCkgfCAocnQgPDwgT1BfU0hfUlQpIHwgKChzaGFtdCAmIDB4MWYpIDw8
IE9QX1NIX1NIQU1UKSk7CiAgICAgfQogCi0gICAgdm9pZCBzbGx2KFJlZ2lzdGVySUQgcmQsIFJl
Z2lzdGVySUQgcnQsIGludCBycykKKyAgICB2b2lkIHNsbHYoUmVnaXN0ZXJJRCByZCwgUmVnaXN0
ZXJJRCBydCwgUmVnaXN0ZXJJRCBycykKICAgICB7CiAgICAgICAgIGVtaXRJbnN0KDB4MDAwMDAw
MDQgfCAocmQgPDwgT1BfU0hfUkQpIHwgKHJ0IDw8IE9QX1NIX1JUKSB8IChycyA8PCBPUF9TSF9S
UykpOwogICAgIH0KQEAgLTUyNyw2ICs1MjksMTYgQEAgcHVibGljOgogICAgICAgICBlbWl0SW5z
dCgweDQ2MjAwMDA0IHwgKGZkIDw8IE9QX1NIX0ZEKSB8IChmcyA8PCBPUF9TSF9GUykpOwogICAg
IH0KIAorICAgIHZvaWQgbW92ZChGUFJlZ2lzdGVySUQgZmQsIEZQUmVnaXN0ZXJJRCBmcykKKyAg
ICB7CisgICAgICAgIGVtaXRJbnN0KDB4NDYyMDAwMDYgfCAoZmQgPDwgT1BfU0hfRkQpIHwgKGZz
IDw8IE9QX1NIX0ZTKSk7CisgICAgfQorCisgICAgdm9pZCBuZWdkKEZQUmVnaXN0ZXJJRCBmZCwg
RlBSZWdpc3RlcklEIGZzKQorICAgIHsKKyAgICAgICAgZW1pdEluc3QoMHg0NjIwMDAwNyB8IChm
ZCA8PCBPUF9TSF9GRCkgfCAoZnMgPDwgT1BfU0hfRlMpKTsKKyAgICB9CisKICAgICB2b2lkIHRy
dW5jd2QoRlBSZWdpc3RlcklEIGZkLCBGUFJlZ2lzdGVySUQgZnMpCiAgICAgewogICAgICAgICBl
bWl0SW5zdCgweDQ2MjAwMDBkIHwgKGZkIDw8IE9QX1NIX0ZEKSB8IChmcyA8PCBPUF9TSF9GUykp
OwpAQCAtNjE5LDkgKzYzMSwyNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2J1ZmZlci5s
YWJlbCgpOwogICAgIH0KIAorICAgIEFzc2VtYmxlckxhYmVsIGxhYmVsRm9yV2F0Y2hwb2ludCgp
CisgICAgeworICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2J1ZmZlci5sYWJlbCgp
OworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQpICE9IG1faW5k
ZXhPZkxhc3RXYXRjaHBvaW50KQorICAgICAgICAgICAgcmVzdWx0ID0gbGFiZWwoKTsKKyAgICAg
ICAgbV9pbmRleE9mTGFzdFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQ7CisgICAgICAgIG1f
aW5kZXhPZlRhaWxPZkxhc3RXYXRjaHBvaW50ID0gcmVzdWx0Lm1fb2Zmc2V0ICsgbWF4SnVtcFJl
cGxhY2VtZW50U2l6ZSgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIEFz
c2VtYmxlckxhYmVsIGxhYmVsKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2J1ZmZlci5sYWJl
bCgpOworICAgICAgICBBc3NlbWJsZXJMYWJlbCByZXN1bHQgPSBtX2J1ZmZlci5sYWJlbCgpOwor
ICAgICAgICB3aGlsZSAoVU5MSUtFTFkoc3RhdGljX2Nhc3Q8aW50PihyZXN1bHQubV9vZmZzZXQp
IDwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQpKSB7CisgICAgICAgICAgICBub3AoKTsK
KyAgICAgICAgICAgIHJlc3VsdCA9IG1fYnVmZmVyLmxhYmVsKCk7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKICAgICBBc3NlbWJsZXJMYWJlbCBhbGlnbihpbnQg
YWxpZ25tZW50KQpAQCAtNjY0LDE0ICs2OTEsMjQgQEAgcHVibGljOgogICAgIC8vIEFzc2VtYmx5
IGhlbHBlcnMgZm9yIG1vdmluZyBkYXRhIGJldHdlZW4gZnAgYW5kIHJlZ2lzdGVycy4KICAgICB2
b2lkIHZtb3YoUmVnaXN0ZXJJRCByZDEsIFJlZ2lzdGVySUQgcmQyLCBGUFJlZ2lzdGVySUQgcm4p
CiAgICAgeworI2lmIFdURl9NSVBTX0lTQV9SRVYoMikgJiYgV1RGX01JUFNfRlA2NAorICAgICAg
ICBtZmMxKHJkMSwgcm4pOworICAgICAgICBtZmhjMShyZDIsIHJuKTsKKyNlbHNlCiAgICAgICAg
IG1mYzEocmQxLCBybik7CiAgICAgICAgIG1mYzEocmQyLCBGUFJlZ2lzdGVySUQocm4gKyAxKSk7
CisjZW5kaWYKICAgICB9CiAKICAgICB2b2lkIHZtb3YoRlBSZWdpc3RlcklEIHJkLCBSZWdpc3Rl
cklEIHJuMSwgUmVnaXN0ZXJJRCBybjIpCiAgICAgeworI2lmIFdURl9NSVBTX0lTQV9SRVYoMikg
JiYgV1RGX01JUFNfRlA2NAorICAgICAgICBtdGMxKHJuMSwgcmQpOworICAgICAgICBtdGhjMShy
bjIsIHJkKTsKKyNlbHNlCiAgICAgICAgIG10YzEocm4xLCByZCk7CiAgICAgICAgIG10YzEocm4y
LCBGUFJlZ2lzdGVySUQocmQgKyAxKSk7CisjZW5kaWYKICAgICB9CiAKICAgICBzdGF0aWMgdW5z
aWduZWQgZ2V0Q2FsbFJldHVybk9mZnNldChBc3NlbWJsZXJMYWJlbCBjYWxsKQpAQCAtNjg4LDYg
KzcyNSwzNSBAQCBwdWJsaWM6CiAgICAgLy8gd3JpdGFibGUgcmVnaW9uIG9mIG1lbW9yeTsgdG8g
bW9kaWZ5IHRoZSBjb2RlIGluIGFuIGV4ZWN1dGUtb25seSBleGVjdWFibGUKICAgICAvLyBwb29s
IHRoZSAncmVwYXRjaCcgYW5kICdyZWxpbmsnIG1ldGhvZHMgc2hvdWxkIGJlIHVzZWQuCiAKKyAg
ICBzdGF0aWMgc2l6ZV90IGxpbmtEaXJlY3RKdW1wKHZvaWQqIGNvZGUsIHZvaWQqIHRvKQorICAg
IHsKKyAgICAgICAgTUlQU1dvcmQqIGluc24gPSByZWludGVycHJldF9jYXN0PE1JUFNXb3JkKj4o
cmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oY29kZSkpOworICAgICAgICBzaXplX3Qgb3BzID0g
MDsKKyAgICAgICAgaW50MzJfdCBzbG90QWRkciA9IHJlaW50ZXJwcmV0X2Nhc3Q8aW50PihpbnNu
KSArIDQ7CisgICAgICAgIGludDMyX3QgdG9BZGRyID0gcmVpbnRlcnByZXRfY2FzdDxpbnQ+KHRv
KTsKKworICAgICAgICBpZiAoKHNsb3RBZGRyICYgMHhmMDAwMDAwMCkgIT0gKHRvQWRkciAmIDB4
ZjAwMDAwMDApKSB7CisgICAgICAgICAgICAvLyBsdWkKKyAgICAgICAgICAgICppbnNuID0gMHgz
YzAwMDAwMCB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SVCkgfCAoKHRvQWRkciA+PiAx
NikgJiAweGZmZmYpOworICAgICAgICAgICAgKytpbnNuOworICAgICAgICAgICAgLy8gb3JpCisg
ICAgICAgICAgICAqaW5zbiA9IDB4MzQwMDAwMDAgfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1Bf
U0hfUlQpIHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JTKSB8ICh0b0FkZHIgJiAweGZm
ZmYpOworICAgICAgICAgICAgKytpbnNuOworICAgICAgICAgICAgLy8ganIKKyAgICAgICAgICAg
ICppbnNuID0gMHgwMDAwMDAwOCB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SUyk7Cisg
ICAgICAgICAgICArK2luc247CisgICAgICAgICAgICBvcHMgPSA0ICogc2l6ZW9mKE1JUFNXb3Jk
KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIGoKKyAgICAgICAgICAgICppbnNu
ID0gMHgwODAwMDAwMCB8ICgodG9BZGRyICYgMHgwZmZmZmZmZikgPj4gMik7CisgICAgICAgICAg
ICArK2luc247CisgICAgICAgICAgICBvcHMgPSAyICogc2l6ZW9mKE1JUFNXb3JkKTsKKyAgICAg
ICAgfQorICAgICAgICAvLyBub3AKKyAgICAgICAgKmluc24gPSAweDAwMDAwMDAwOworICAgICAg
ICByZXR1cm4gb3BzOworICAgIH0KKwogICAgIHZvaWQgbGlua0p1bXAoQXNzZW1ibGVyTGFiZWwg
ZnJvbSwgQXNzZW1ibGVyTGFiZWwgdG8pCiAgICAgewogICAgICAgICBBU1NFUlQodG8uaXNTZXQo
KSk7CkBAIC04MjUsMjkgKzg5MSwzNiBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAKLSAgICBz
dGF0aWMgdm9pZCByZXZlcnRKdW1wVG9Nb3ZlKHZvaWQqIGluc3RydWN0aW9uU3RhcnQsIFJlZ2lz
dGVySUQgcnQsIGludCBpbW0pCisgICAgc3RhdGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1l
bnRTaXplKCkKICAgICB7Ci0gICAgICAgIE1JUFNXb3JkKiBpbnNuID0gc3RhdGljX2Nhc3Q8TUlQ
U1dvcmQqPihpbnN0cnVjdGlvblN0YXJ0KSArIDE7Ci0gICAgICAgIEFTU0VSVCgoKmluc24gJiAw
eGZjMDAwMDAwKSA9PSAweDM0MDAwMDAwKTsKLSAgICAgICAgKmluc24gPSAoKmluc24gJiAweGZj
MWYwMDAwKSB8IChpbW0gJiAweGZmZmYpOwotICAgICAgICBjYWNoZUZsdXNoKGluc24sIHNpemVv
ZihNSVBTV29yZCkpOworICAgICAgICByZXR1cm4gc2l6ZW9mKE1JUFNXb3JkKSAqIDQ7CiAgICAg
fQogCi0gICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKHZvaWQqIGluc3RydWN0aW9uU3Rh
cnQsIHZvaWQqIHRvKQorICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBUb01vdmUodm9pZCogaW5z
dHJ1Y3Rpb25TdGFydCwgUmVnaXN0ZXJJRCBydCwgaW50IGltbSkKICAgICB7Ci0gICAgICAgIE1J
UFNXb3JkKiBpbnN0cnVjdGlvbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8TUlQU1dvcmQqPihpbnN0cnVj
dGlvblN0YXJ0KTsKLSAgICAgICAgaW50cHRyX3QganVtcFRvID0gcmVpbnRlcnByZXRfY2FzdDxp
bnRwdHJfdD4odG8pOworICAgICAgICBNSVBTV29yZCogaW5zbiA9IHN0YXRpY19jYXN0PE1JUFNX
b3JkKj4oaW5zdHJ1Y3Rpb25TdGFydCk7CisgICAgICAgIHNpemVfdCBjb2RlU2l6ZSA9IDIgKiBz
aXplb2YoTUlQU1dvcmQpOwogCiAgICAgICAgIC8vIGx1aQotICAgICAgICBpbnN0cnVjdGlvblsw
XSA9IDB4M2MwMDAwMDAgfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlQpIHwgKChqdW1w
VG8gPj4gMTYpICYgMHhmZmZmKTsKKyAgICAgICAgKmluc24gPSAweDNjMDAwMDAwIHwgKHJ0IDw8
IE9QX1NIX1JUKSB8ICgoaW1tID4+IDE2KSAmIDB4ZmZmZik7CisgICAgICAgICsraW5zbjsKICAg
ICAgICAgLy8gb3JpCi0gICAgICAgIGluc3RydWN0aW9uWzFdID0gMHgzNDAwMDAwMCB8IChNSVBT
UmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SVCkgfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hf
UlMpIHwgKGp1bXBUbyAmIDB4ZmZmZik7Ci0gICAgICAgIC8vIGpyCi0gICAgICAgIGluc3RydWN0
aW9uWzJdID0gMHgwMDAwMDAwOCB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SUyk7Ci0g
ICAgICAgIC8vIG5vcAotICAgICAgICBpbnN0cnVjdGlvblszXSA9IDB4MDsKKyAgICAgICAgKmlu
c24gPSAweDM0MDAwMDAwIHwgKHJ0IDw8IE9QX1NIX1JTKSB8IChydCA8PCBPUF9TSF9SVCkgfCAo
aW1tICYgMHhmZmZmKTsKKyAgICAgICAgKytpbnNuOworICAgICAgICAvLyBpZiBqciAkdDkKKyAg
ICAgICAgaWYgKCppbnNuID09IDB4MDMyMDAwMDgpIHsKKyAgICAgICAgICAgICppbnNuID0gMHgw
MDAwMDAwMDsKKyAgICAgICAgICAgIGNvZGVTaXplICs9IHNpemVvZihNSVBTV29yZCk7CisgICAg
ICAgIH0KKyAgICAgICAgY2FjaGVGbHVzaChpbnNuLCBjb2RlU2l6ZSk7CisgICAgfQogCi0gICAg
ICAgIGNhY2hlRmx1c2goaW5zdHJ1Y3Rpb24sIHNpemVvZihNSVBTV29yZCkgKiA0KTsKKyAgICBz
dGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1Y3Rpb25TdGFydCwgdm9pZCog
dG8pCisgICAgeworICAgICAgICBBU1NFUlQoIShiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihpbnN0
cnVjdGlvblN0YXJ0KSAmIDMpKTsKKyAgICAgICAgQVNTRVJUKCEoYml0d2lzZV9jYXN0PHVpbnRw
dHJfdD4odG8pICYgMykpOworICAgICAgICBzaXplX3Qgb3BzID0gbGlua0RpcmVjdEp1bXAoaW5z
dHJ1Y3Rpb25TdGFydCwgdG8pOworICAgICAgICBjYWNoZUZsdXNoKGluc3RydWN0aW9uU3RhcnQs
IG9wcyk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhMb2FkKHZvaWQqIGlu
c3RydWN0aW9uU3RhcnQpCkBAIC0xMDIzLDYgKzEwOTYsOCBAQCBwcml2YXRlOgogCiAgICAgQXNz
ZW1ibGVyQnVmZmVyIG1fYnVmZmVyOwogICAgIEp1bXBzIG1fanVtcHM7CisgICAgaW50IG1faW5k
ZXhPZkxhc3RXYXRjaHBvaW50OworICAgIGludCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2lu
dDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlci5oCmluZGV4IDdjNWU1ZTguLjIyOGQ4YWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKQEAg
LTIwMCw2ICsyMDAsMTMgQEAgcHVibGljOgogICAgIH0KICNlbmRpZgogICAgIAorI2lmIENQVShN
SVBTKQorICAgIHZvaWQgcG9rZShGUFJlZ2lzdGVySUQgc3JjLCBpbnQgaW5kZXggPSAwKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKCEoaW5kZXggJiAxKSk7CisgICAgICAgIHN0b3JlRG91YmxlKHNy
YywgYWRkcmVzc0ZvclBva2UoaW5kZXgpKTsKKyAgICB9CisjZW5kaWYKIAogICAgIC8vIEJhY2t3
YXJkcyBiYW5jaGVzLCB0aGVzZSBhcmUgY3VycmVudGx5IGFsbCBpbXBsZW1lbnRlZCB1c2luZyBl
eGlzdGluZyBmb3J3YXJkcyBicmFuY2ggbWVjaGFuaXNtcy4KICAgICB2b2lkIGJyYW5jaFB0cihS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBUcnVzdGVkSW1tUHRyIGlt
bSwgTGFiZWwgdGFyZ2V0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJNSVBTLmgKaW5kZXggNDNhZDQzNC4uNGYxNDk2MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5o
CkBAIC0xMTQsNiArMTE0LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkdShk
ZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgYWRkMzIoUmVnaXN0ZXJJRCBvcDEs
IFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGR1KGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIGFkZDMyKFRydXN0
ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGFkZDMyKGltbSwg
ZGVzdCwgZGVzdCk7CkBAIC0yNjcsNiArMjcyLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3Nl
bWJsZXIuYW5kSW5zbihkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgYW5kMzIo
UmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgewor
ICAgICAgICBtX2Fzc2VtYmxlci5hbmRJbnNuKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAg
ICB2b2lkIGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAg
ICAgICAgIGlmICghaW1tLm1fdmFsdWUgJiYgIW1fZml4ZWRXaWR0aCkKQEAgLTI4Myw5ICsyOTMs
MTYgQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogCi0gICAgdm9pZCBsc2hpZnQzMihUcnVz
dGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgdm9pZCBhbmQzMihUcnVzdGVkSW1t
MzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAg
bV9hc3NlbWJsZXIuc2xsKGRlc3QsIGRlc3QsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgaWYgKCFp
bW0ubV92YWx1ZSAmJiAhbV9maXhlZFdpZHRoKQorICAgICAgICAgICAgbW92ZShNSVBTUmVnaXN0
ZXJzOjp6ZXJvLCBkZXN0KTsKKyAgICAgICAgZWxzZSBpZiAoaW1tLm1fdmFsdWUgPiAwICYmIGlt
bS5tX3ZhbHVlIDwgNjU1MzUgJiYgIW1fZml4ZWRXaWR0aCkKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmFuZGkoZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7CisgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5hbmRJbnNuKGRlc3QsIHNyYywgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgfQogICAgIH0K
IAogICAgIHZvaWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBk
ZXN0KQpAQCAtMjkzLDExICszMTAsMzMgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5z
bGx2KGRlc3QsIGRlc3QsIHNoaWZ0QW1vdW50KTsKICAgICB9CiAKKyAgICB2b2lkIGxzaGlmdDMy
KFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3Qp
CisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zbGx2KGRlc3QsIHNyYywgc2hpZnRBbW91bnQp
OworICAgIH0KKworICAgIHZvaWQgbHNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnNsbHYoZGVzdCwgZGVzdCwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICB9
CisKKyAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVy
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc2xsdihkZXN0LCBzcmMsIGltbVRlbXBSZWdpc3Rlcik7
CisgICAgfQorCiAgICAgdm9pZCBtdWwzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubXVsKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAg
fQogCisgICAgdm9pZCBtdWwzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm11bChkZXN0LCBvcDEsIG9w
Mik7CisgICAgfQorCiAgICAgdm9pZCBtdWwzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSAm
JiAhbV9maXhlZFdpZHRoKQpAQCAtMzQ4LDYgKzM4NywyNCBAQCBwdWJsaWM6CiAgICAgICAgIG1f
YXNzZW1ibGVyLm9ySW5zbihkZXN0LCBkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAK
KyAgICB2b2lkIG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIGlmICghaW1tLm1fdmFsdWUgJiYgIW1fZml4ZWRXaWR0
aCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPiAwICYm
IGltbS5tX3ZhbHVlIDwgNjU1MzUgJiYgIW1fZml4ZWRXaWR0aCkgeworICAgICAgICAgICAgbV9h
c3NlbWJsZXIub3JpKGRlc3QsIHNyYywgaW1tLm1fdmFsdWUpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICAgIGxpICAgICAgZGF0YVRlbXAs
IGltbQorICAgICAgICAgICAgb3IgICAgICBkZXN0LCBzcmMsIGRhdGFUZW1wCisgICAgICAgICov
CisgICAgICAgIG1vdmUoaW1tLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIub3JJbnNuKGRlc3QsIHNyYywgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgfQorCiAgICAgdm9p
ZCBvcjMyKFJlZ2lzdGVySUQgc3JjLCBBYnNvbHV0ZUFkZHJlc3MgZGVzdCkKICAgICB7CiAgICAg
ICAgIGxvYWQzMihkZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKQEAgLTM2MCw2ICs0MTcs
MTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zcmF2KGRlc3QsIGRlc3QsIHNoaWZ0
QW1vdW50KTsKICAgICB9CiAKKyAgICB2b2lkIHJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIHNoaWZ0QW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5zcmF2KGRlc3QsIHNyYywgc2hpZnRBbW91bnQpOworICAgIH0KKwogICAgIHZvaWQg
cnNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAg
ICAgbV9hc3NlbWJsZXIuc3JhKGRlc3QsIGRlc3QsIGltbS5tX3ZhbHVlKTsKQEAgLTM3NSwxNiAr
NDM3LDMxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIuc3JsdihkZXN0LCBkZXN0LCBz
aGlmdEFtb3VudCk7CiAgICAgfQogCisgICAgdm9pZCB1cnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLnNybHYoZGVzdCwgc3JjLCBzaGlmdEFtb3VudCk7CisgICAgfQorCiAgICAg
dm9pZCB1cnNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsK
ICAgICAgICAgbV9hc3NlbWJsZXIuc3JsKGRlc3QsIGRlc3QsIGltbS5tX3ZhbHVlKTsKICAgICB9
CiAKKyAgICB2b2lkIHVyc2hpZnQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3JsKGRlc3QsIHNy
YywgaW1tLm1fdmFsdWUpOworICAgIH0KKwogICAgIHZvaWQgc3ViMzIoUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnUoZGVzdCwg
ZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgb3AxLCBSZWdp
c3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIu
c3VidShkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihUcnVzdGVkSW1t
MzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoaW1tLm1fdmFsdWUg
Pj0gLTMyNzY3ICYmIGltbS5tX3ZhbHVlIDw9IDMyNzY4CkBAIC00OTUsNiArNTcyLDExIEBAIHB1
YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihkZXN0LCBkZXN0LCBzcmMpOwogICAg
IH0KIAorICAgIHZvaWQgeG9yMzIoUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdp
c3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIG9w
MSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkgewpAQCAt
NTEwLDYgKzU5MiwyMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oZGVz
dCwgZGVzdCwgaW1tVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKKyAgICB2b2lkIHhvcjMyKFRydXN0
ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5v
cihkZXN0LCBzcmMsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICAgIGxpICBpbW1UZW1wLCBpbW0KKyAg
ICAgICAgICAgIHhvciBkZXN0LCBkZXN0LCBpbW1UZW1wCisgICAgICAgICovCisgICAgICAgIG1v
dmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRl
c3QsIHNyYywgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKICAgICB2b2lkIHNxcnREb3VibGUo
RlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLnNxcnRkKGRzdCwgc3JjKTsKQEAgLTk4OSw2ICsxMDg2LDQ0IEBAIHB1YmxpYzoKICAg
ICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgc3RvcmUzMihUcnVzdGVkSW1tMzIgaW1tLCBCYXNl
SW5kZXggYWRkcmVzcykKKyAgICB7CisgICAgICAgIGlmIChhZGRyZXNzLm9mZnNldCA+PSAtMzI3
NjggJiYgYWRkcmVzcy5vZmZzZXQgPD0gMzI3NjcgJiYgIW1fZml4ZWRXaWR0aCkgeworICAgICAg
ICAgICAgLyoKKyAgICAgICAgICAgICAgICBzbGwgICAgIGFkZHJUZW1wLCBhZGRyZXNzLmluZGV4
LCBhZGRyZXNzLnNjYWxlCisgICAgICAgICAgICAgICAgYWRkdSAgICBhZGRyVGVtcCwgYWRkclRl
bXAsIGFkZHJlc3MuYmFzZQorICAgICAgICAgICAgICAgIHN3ICAgICAgc3JjLCBhZGRyZXNzLm9m
ZnNldChhZGRyVGVtcCkKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5z
bGwoYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0
ZXIsIGFkZHJlc3MuYmFzZSk7CisgICAgICAgICAgICBpZiAoIWltbS5tX3ZhbHVlKQorICAgICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnN3KE1JUFNSZWdpc3RlcnM6Onplcm8sIGFkZHJUZW1wUmVn
aXN0ZXIsIGFkZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnN3KGltbVRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5vZmZzZXQp
OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyoKKyAgICAg
ICAgICAgICAgICBzbGwgICAgIGFkZHJUZW1wLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
CisgICAgICAgICAgICAgICAgYWRkdSAgICBhZGRyVGVtcCwgYWRkclRlbXAsIGFkZHJlc3MuYmFz
ZQorICAgICAgICAgICAgICAgIGx1aSAgICAgaW1tVGVtcCwgKGFkZHJlc3Mub2Zmc2V0ICsgMHg4
MDAwKSA+PiAxNgorICAgICAgICAgICAgICAgIGFkZHUgICAgYWRkclRlbXAsIGFkZHJUZW1wLCBp
bW1UZW1wCisgICAgICAgICAgICAgICAgc3cgICAgICBzcmMsIChhZGRyZXNzLm9mZnNldCAmIDB4
ZmZmZikoYXQpCisgICAgICAgICAgICAqLworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2xsKGFk
ZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOworICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkdShhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBh
ZGRyZXNzLmJhc2UpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubHVpKGltbVRlbXBSZWdpc3Rl
ciwgKGFkZHJlc3Mub2Zmc2V0ICsgMHg4MDAwKSA+PiAxNik7CisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGR1KGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdp
c3Rlcik7CisgICAgICAgICAgICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCisg
ICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3coTUlQU1JlZ2lzdGVyczo6emVybywgYWRkclRl
bXBSZWdpc3RlciwgYWRkcmVzcy5vZmZzZXQpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbV9h
c3NlbWJsZXIuc3coaW1tVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm9m
ZnNldCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKwogICAgIHZvaWQgc3Rv
cmUzMihSZWdpc3RlcklEIHNyYywgY29uc3Qgdm9pZCogYWRkcmVzcykKICAgICB7CiAgICAgICAg
IC8qCkBAIC0xMzM2LDYgKzE0NzEsMTUgQEAgcHVibGljOgogICAgICAgICBtX2ZpeGVkV2lkdGgg
PSBmYWxzZTsKICAgICB9CiAKKyAgICB2b2lkIGp1bXAoQWJzb2x1dGVBZGRyZXNzIGFkZHJlc3Mp
CisgICAgeworICAgICAgICBtX2ZpeGVkV2lkdGggPSB0cnVlOworICAgICAgICBsb2FkMzIoYWRk
cmVzcy5tX3B0ciwgTUlQU1JlZ2lzdGVyczo6dDkpOworICAgICAgICBtX2Fzc2VtYmxlci5qcihN
SVBTUmVnaXN0ZXJzOjp0OSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICBt
X2ZpeGVkV2lkdGggPSBmYWxzZTsKKyAgICB9CisKICAgICB2b2lkIG1vdmVEb3VibGVUb0ludHMo
RlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0MSwgUmVnaXN0ZXJJRCBkZXN0MikKICAg
ICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLnZtb3YoZGVzdDEsIGRlc3QyLCBzcmMpOwpAQCAtMTQw
NCw2ICsxNTQ4LDUzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEp1bXAoKTsKICAgICB9CiAK
KyAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIG9w
MSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VS
VCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJv
KSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CisgICAgICAgIGlmIChjb25kID09IE92ZXJmbG93KSB7
CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgIG1vdmUgICAgZGF0YVRlbXAsIG9wMQor
ICAgICAgICAgICAgICAgIHhvciAgICAgY21wVGVtcCwgZGF0YVRlbXAsIG9wMgorICAgICAgICAg
ICAgICAgIGJsdHogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBkaWZmIHNpZ24gYml0IC0+
IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgYWRkdSAgICBkZXN0LCBkYXRhVGVtcCwgb3Ay
CisgICAgICAgICAgICAgICAgeG9yICAgICBjbXBUZW1wLCBkZXN0LCBkYXRhVGVtcAorICAgICAg
ICAgICAgICAgIGJnZXogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24gYmln
IC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgYiAg
ICAgICBPdmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAor
ICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAg
IG5vcAorICAgICAgICAgICAgTm9fb3ZlcmZsb3c6CisgICAgICAgICAgICAqLworICAgICAgICAg
ICAgbW92ZShvcDEsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
eG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7CisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRlbXBSZWdpc3RlciwgMTApOworICAgICAgICAgICAg
bV9hc3NlbWJsZXIuYWRkdShkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyLCBvcDIpOworICAgICAgICAg
ICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIGRhdGFUZW1wUmVn
aXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDcp
OworICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICByZXR1cm4ganVt
cCgpOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IFNpZ25lZCkgeworICAgICAgICAg
ICAgYWRkMzIob3AxLCBvcDIsIGRlc3QpOworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBp
cyBuZWdhdGl2ZS4KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIs
IGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5v
dEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGNvbmQgPT0gWmVybykgeworICAgICAgICAgICAgYWRkMzIob3AxLCBvcDIs
IGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKGRlc3QsIE1JUFNSZWdpc3Rl
cnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IE5vblplcm8pIHsKKyAg
ICAgICAgICAgIGFkZDMyKG9wMSwgb3AyLCBkZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBicmFu
Y2hOb3RFcXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAg
ICBBU1NFUlQoMCk7CisgICAgICAgIHJldHVybiBKdW1wKCk7CisgICAgfQorCiAgICAgSnVtcCBi
cmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CkBA
IC0xNDE3LDYgKzE2MDgsMTExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaEFkZDMy
KGNvbmQsIGltbVRlbXBSZWdpc3RlciwgZGVzdCk7CiAgICAgfQogCisgICAgSnVtcCBicmFuY2hB
ZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRy
ZXNzIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChj
b25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwor
ICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgeworICAgICAgICAgICAgLyoKKyAgICAgICAg
ICAgICAgICBtb3ZlICAgIGRhdGFUZW1wLCBkZXN0CisgICAgICAgICAgICAgICAgeG9yaSAgICBj
bXBUZW1wLCBkYXRhVGVtcCwgaW1tCisgICAgICAgICAgICAgICAgYmx0eiAgICBjbXBUZW1wLCBO
b19vdmVyZmxvdyAgICAjIGRpZmYgc2lnbiBiaXQgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAg
ICAgICBhZGRpdSAgIGRhdGFUZW1wLCBkYXRhVGVtcCwgaW1tCisgICAgICAgICAgICAgICAgbW92
ZSAgICBkZXN0LCBkYXRhVGVtcAorICAgICAgICAgICAgICAgIHhvcmkgICAgY21wVGVtcCwgZGF0
YVRlbXAsIGltbQorICAgICAgICAgICAgICAgIGJnZXogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cg
ICAgIyBzYW1lIHNpZ24gYmlnIC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgbm9wCisg
ICAgICAgICAgICAgICAgYiAgICAgICBPdmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAg
ICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5v
cAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgTm9fb3ZlcmZsb3c6CisgICAgICAg
ICAgICAqLworICAgICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID49IC0zMjc2OCAmJiBpbW0ubV92
YWx1ZSAgPD0gMzI3NjcgJiYgIW1fZml4ZWRXaWR0aCkgeworICAgICAgICAgICAgICAgIGxvYWQz
MihkZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci54b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1fdmFsdWUp
OworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxMCk7
CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkaXUoZGF0YVRlbXBSZWdpc3RlciwgZGF0
YVRlbXBSZWdpc3RlciwgaW1tLm1fdmFsdWUpOworICAgICAgICAgICAgICAgIHN0b3JlMzIoZGF0
YVRlbXBSZWdpc3RlciwgZGVzdC5tX3B0cik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIu
eG9yaShjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbS5tX3ZhbHVlKTsKKyAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7CisgICAg
ICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIGxvYWQzMihkZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAg
ICAgICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBt
X2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1t
VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRlbXBS
ZWdpc3RlciwgMTApOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGl1KGRhdGFUZW1w
UmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAg
ICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0Lm1fcHRyKTsKKyAgICAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci54b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwg
aW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRl
bXBSZWdpc3RlciwgNyk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4ganVtcCgpOworICAgICAgICB9CisgICAgICAg
IG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICBsb2FkMzIoZGVzdC5tX3B0ciwg
ZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIGFkZDMyKGltbVRlbXBSZWdpc3RlciwgZGF0YVRl
bXBSZWdpc3Rlcik7CisgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdC5tX3B0
cik7CisgICAgICAgIGlmIChjb25kID09IFNpZ25lZCkgeworICAgICAgICAgICAgLy8gQ2hlY2sg
aWYgZGVzdCBpcyBuZWdhdGl2ZS4KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1w
UmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAg
ICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVy
czo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gWmVybykKKyAgICAgICAg
ICAgIHJldHVybiBicmFuY2hFcXVhbChkYXRhVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6
ZXJvKTsKKyAgICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykKKyAgICAgICAgICAgIHJldHVybiBi
cmFuY2hOb3RFcXVhbChkYXRhVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAg
ICAgICAgQVNTRVJUKDApOworICAgICAgICByZXR1cm4gSnVtcCgpOworICAgIH0KKworICAgIEp1
bXAgYnJhbmNoTXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjMSwgUmVn
aXN0ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoKGNv
bmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwg
KGNvbmQgPT0gTm9uWmVybykpOworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgeworICAg
ICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICBtdWx0ICAgIHNyYywgZGVzdAorICAgICAgICAg
ICAgICAgIG1maGkgICAgZGF0YVRlbXAKKyAgICAgICAgICAgICAgICBtZmxvICAgIGRlc3QKKyAg
ICAgICAgICAgICAgICBzcmEgICAgIGFkZHJUZW1wLCBkZXN0LCAzMQorICAgICAgICAgICAgICAg
IGJlcSAgICAgZGF0YVRlbXAsIGFkZHJUZW1wLCBOb19vdmVyZmxvdyAjIGFsbCBzaWduIGJpdHMg
KGJpdCA2MyB0byBiaXQgMzEpIGFyZSB0aGUgc2FtZSAtPiBubyBvdmVyZmxvdworICAgICAgICAg
ICAgICAgIG5vcAorICAgICAgICAgICAgICAgIGIgICAgICAgT3ZlcmZsb3cKKyAgICAgICAgICAg
ICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAg
ICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgIE5vX292ZXJm
bG93OgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm11bHQoc3JjMSwg
c3JjMik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tZmhpKGRhdGFUZW1wUmVnaXN0ZXIpOwor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIubWZsbyhkZXN0KTsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnNyYShhZGRyVGVtcFJlZ2lzdGVyLCBkZXN0LCAzMSk7CisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5iZXEoZGF0YVRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgNyk7CisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAgIHJldHVybiBqdW1wKCk7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7CisgICAgICAgICAgICBtdWwzMihz
cmMxLCBzcmMyLCBkZXN0KTsKKyAgICAgICAgICAgIC8vIENoZWNrIGlmIGRlc3QgaXMgbmVnYXRp
dmUuCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHQoY21wVGVtcFJlZ2lzdGVyLCBkZXN0LCBN
SVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChj
bXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAg
IGlmIChjb25kID09IFplcm8pIHsKKyAgICAgICAgICAgIG11bDMyKHNyYzEsIHNyYzIsIGRlc3Qp
OworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onpl
cm8pOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IE5vblplcm8pIHsKKyAgICAgICAg
ICAgIG11bDMyKHNyYzEsIHNyYzIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5v
dEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIEFT
U0VSVCgwKTsKKyAgICAgICAgcmV0dXJuIEp1bXAoKTsKKyAgICB9CisKICAgICBKdW1wIGJyYW5j
aE11bDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9
PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKQEAgLTE0
NjUsOCArMTc2MSw3IEBAIHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaE11bDMyKFJlc3VsdENvbmRp
dGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7Ci0gICAgICAg
IG1vdmUoc3JjLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMyKGNvbmQsIGltbVRl
bXBSZWdpc3RlciwgZGVzdCk7CisgICAgICAgIHJldHVybiBicmFuY2hNdWwzMihjb25kLCBpbW1U
ZW1wUmVnaXN0ZXIsIHNyYywgZGVzdCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hTdWIzMihS
ZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKQEAg
LTE1MjUsOCArMTgyMCw2MCBAQCBwdWJsaWM6CiAgICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRD
b25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOwotICAg
ICAgICBtb3ZlKHNyYywgZGVzdCk7Ci0gICAgICAgIHJldHVybiBicmFuY2hTdWIzMihjb25kLCBp
bW1UZW1wUmVnaXN0ZXIsIGRlc3QpOworICAgICAgICByZXR1cm4gYnJhbmNoU3ViMzIoY29uZCwg
c3JjLCBpbW1UZW1wUmVnaXN0ZXIsIGRlc3QpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoU3Vi
MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93
KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblpl
cm8pKTsKKyAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIC8qCisg
ICAgICAgICAgICAgICAgbW92ZSAgICBkYXRhVGVtcCwgb3AxCisgICAgICAgICAgICAgICAgeG9y
ICAgICBjbXBUZW1wLCBkYXRhVGVtcCwgb3AyCisgICAgICAgICAgICAgICAgYmdleiAgICBjbXBU
ZW1wLCBOb19vdmVyZmxvdyAgICAjIHNhbWUgc2lnbiBiaXQgLT4gbm8gb3ZlcmZsb3cKKyAgICAg
ICAgICAgICAgICBzdWJ1ICAgIGRlc3QsIGRhdGFUZW1wLCBvcDIKKyAgICAgICAgICAgICAgICB4
b3IgICAgIGNtcFRlbXAsIGRlc3QsIGRhdGFUZW1wCisgICAgICAgICAgICAgICAgYmdleiAgICBj
bXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIHNhbWUgc2lnbiBiaXQgLT4gbm8gb3ZlcmZsb3cKKyAg
ICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBiICAgICAgIE92ZXJmbG93CisgICAg
ICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9w
CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICBO
b19vdmVyZmxvdzoKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBtb3ZlKG9wMSwgZGF0YVRl
bXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdp
c3RlciwgZGF0YVRlbXBSZWdpc3Rlciwgb3AyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJn
ZXooY21wVGVtcFJlZ2lzdGVyLCAxMCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJ1KGRl
c3QsIGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJ
bnNuKGNtcFRlbXBSZWdpc3RlciwgZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgNyk7CisgICAgICAgICAgICBtX2Fz
c2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAgIHJldHVybiBqdW1wKCk7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7CisgICAgICAgICAgICBzdWIzMihvcDEsIG9wMiwg
ZGVzdCk7CisgICAgICAgICAgICAvLyBDaGVjayBpZiBkZXN0IGlzIG5lZ2F0aXZlLgorICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuc2x0KGNtcFRlbXBSZWdpc3RlciwgZGVzdCwgTUlQU1JlZ2lzdGVy
czo6emVybyk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwoY21wVGVtcFJlZ2lz
dGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9
PSBaZXJvKSB7CisgICAgICAgICAgICBzdWIzMihvcDEsIG9wMiwgZGVzdCk7CisgICAgICAgICAg
ICByZXR1cm4gYnJhbmNoRXF1YWwoZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykgeworICAgICAgICAgICAgc3ViMzIob3Ax
LCBvcDIsIGRlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGRlc3QsIE1J
UFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIEFTU0VSVCgwKTsKKyAgICAg
ICAgcmV0dXJuIEp1bXAoKTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaE5lZzMyKFJlc3VsdENv
bmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyY0Rlc3QpCisgICAgeworICAgICAgICBtX2Fzc2Vt
Ymxlci5saShkYXRhVGVtcFJlZ2lzdGVyLCAtMSk7CisgICAgICAgIHJldHVybiBicmFuY2hNdWwz
Mihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBzcmNEZXN0KTsKICAgICB9CiAKICAgICBKdW1wIGJy
YW5jaE9yMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCkBAIC0xNTc4LDcgKzE5MjUsOCBAQCBwdWJsaWM6CiAKICAgICBDYWxsIGNhbGwoUmVn
aXN0ZXJJRCB0YXJnZXQpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5qYWxyKHRhcmdldCk7
CisgICAgICAgIG1vdmUodGFyZ2V0LCBNSVBTUmVnaXN0ZXJzOjp0OSk7CisgICAgICAgIG1fYXNz
ZW1ibGVyLmphbHIoTUlQU1JlZ2lzdGVyczo6dDkpOwogICAgICAgICBtX2Fzc2VtYmxlci5ub3Ao
KTsKICAgICAgICAgcmV0dXJuIENhbGwobV9hc3NlbWJsZXIubGFiZWwoKSwgQ2FsbDo6Tm9uZSk7
CiAgICAgfQpAQCAtMTgyMiw3ICsyMTcwLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGx1
aSAgICAgaW1tVGVtcCwgKGFkZHJlc3Mub2Zmc2V0ICsgMHg4MDAwKSA+PiAxNgogICAgICAgICAg
ICAgICAgIGFkZHUgICAgYWRkclRlbXAsIGFkZHJUZW1wLCBpbW1UZW1wCiAgICAgICAgICAgICAg
ICAgbHdjMSAgICBkZXN0LCAoYWRkcmVzcy5vZmZzZXQgJiAweGZmZmYpKGF0KQotICAgICAgICAg
ICAgICAgIGx3YzEgICAgZGVzdCs0LCAoYWRkcmVzcy5vZmZzZXQgJiAweGZmZmYgKyA0KShhdCkK
KyAgICAgICAgICAgICAgICBsd2MxICAgIGRlc3QrMSwgKGFkZHJlc3Mub2Zmc2V0ICYgMHhmZmZm
ICsgNCkoYXQpCiAgICAgICAgICAgICAqLwogICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2xsKGFk
ZHJUZW1wUmVnaXN0ZXIsIGFkZHJlc3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUpOwogICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkdShhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBh
ZGRyZXNzLmJhc2UpOwpAQCAtMjAwOSw2ICsyMzU3LDE5IEBAIHB1YmxpYzoKICNlbmRpZgogICAg
IH0KIAorICAgIHZvaWQgbW92ZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIGlmIChzcmMgIT0gZGVzdCB8fCBtX2ZpeGVkV2lkdGgpCisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5tb3ZkKGRlc3QsIHNyYyk7CisgICAgfQorCisgICAgdm9p
ZCBzd2FwRG91YmxlKEZQUmVnaXN0ZXJJRCBmcjEsIEZQUmVnaXN0ZXJJRCBmcjIpCisgICAgewor
ICAgICAgICBtb3ZlRG91YmxlKGZyMSwgZnBUZW1wUmVnaXN0ZXIpOworICAgICAgICBtb3ZlRG91
YmxlKGZyMiwgZnIxKTsKKyAgICAgICAgbW92ZURvdWJsZShmcFRlbXBSZWdpc3RlciwgZnIyKTsK
KyAgICB9CisKICAgICB2b2lkIGFkZERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGQoZGVzdCwgZGVzdCwgc3Jj
KTsKQEAgLTIwMzYsNiArMjM5NywxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnN1
YmQoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIHN1YkRvdWJsZShGUFJlZ2lz
dGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnN1YmQoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZv
aWQgc3ViRG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIGxvYWREb3VibGUoc3JjLCBmcFRlbXBSZWdpc3Rlcik7CkBAIC0yMDUzLDExICsyNDE5LDMy
IEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIubXVsZChkZXN0LCBkZXN0LCBmcFRlbXBS
ZWdpc3Rlcik7CiAgICAgfQogCisgICAgdm9pZCBtdWxEb3VibGUoRlBSZWdpc3RlcklEIG9wMSwg
RlBSZWdpc3RlcklEIG9wMiwgRlBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5tdWxkKGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIGRpdkRvdWJs
ZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1f
YXNzZW1ibGVyLmRpdmQoZGVzdCwgZGVzdCwgc3JjKTsKICAgICB9CiAKKyAgICB2b2lkIGRpdkRv
dWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVz
dCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmRpdmQoZGVzdCwgb3AxLCBvcDIpOworICAg
IH0KKworICAgIHZvaWQgZGl2RG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIGxvYWREb3VibGUoc3JjLCBmcFRlbXBSZWdpc3Rlcik7CisgICAgICAg
IG1fYXNzZW1ibGVyLmRpdmQoZGVzdCwgZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOworICAgIH0KKwor
ICAgIHZvaWQgbmVnYXRlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0
KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubmVnZChkZXN0LCBzcmMpOworICAgIH0KKwog
ICAgIHZvaWQgY29udmVydEludDMyVG9Eb3VibGUoUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubXRjMShzcmMsIGZwVGVtcFJlZ2lz
dGVyKTsKQEAgLTIxMTcsNiArMjUwNCw4IEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoRXF1
YWwoUmVnaXN0ZXJJRCBycywgUmVnaXN0ZXJJRCBydCkKICAgICB7CisgICAgICAgIG1fYXNzZW1i
bGVyLm5vcCgpOworICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKICAgICAgICAgbV9hc3NlbWJs
ZXIuYXBwZW5kSnVtcCgpOwogICAgICAgICBtX2Fzc2VtYmxlci5iZXEocnMsIHJ0LCAwKTsKICAg
ICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CkBAIC0yMTI2LDYgKzI1MTUsOCBAQCBwdWJsaWM6CiAK
ICAgICBKdW1wIGJyYW5jaE5vdEVxdWFsKFJlZ2lzdGVySUQgcnMsIFJlZ2lzdGVySUQgcnQpCiAg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9w
KCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFwcGVuZEp1bXAoKTsKICAgICAgICAgbV9hc3NlbWJs
ZXIuYm5lKHJzLCBydCwgMCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwpAQCAtMjE5Miwx
MSArMjU4MywzMyBAQCBwdWJsaWM6CiAgICAgLy8gSWYgdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVz
ZW50YWJsZSBhcyBhIDMyIGJpdCB2YWx1ZSwgYnJhbmNoLgogICAgIC8vIE1heSBhbHNvIGJyYW5j
aCBmb3Igc29tZSB2YWx1ZXMgdGhhdCBhcmUgcmVwcmVzZW50YWJsZSBpbiAzMiBiaXRzCiAgICAg
Ly8gKHNwZWNpZmljYWxseSwgaW4gdGhpcyBjYXNlLCBJTlRfTUFYIDB4N2ZmZmZmZmYpLgotICAg
IEp1bXAgYnJhbmNoVHJ1bmNhdGVEb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lz
dGVySUQgZGVzdCkKKyAgICBlbnVtIEJyYW5jaFRydW5jYXRlVHlwZSB7IEJyYW5jaElmVHJ1bmNh
dGVGYWlsZWQsIEJyYW5jaElmVHJ1bmNhdGVTdWNjZXNzZnVsIH07CisgICAgSnVtcCBicmFuY2hU
cnVuY2F0ZURvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBC
cmFuY2hUcnVuY2F0ZVR5cGUgYnJhbmNoVHlwZSA9IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci50cnVuY3dkKGZwVGVtcFJlZ2lzdGVyLCBzcmMpOwor
ICAgICAgICBtX2Fzc2VtYmxlci5tZmMxKGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAg
cmV0dXJuIGJyYW5jaDMyKGJyYW5jaFR5cGUgPT0gQnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCA/IEVx
dWFsIDogTm90RXF1YWwsIGRlc3QsIFRydXN0ZWRJbW0zMigweDdmZmZmZmZmKSk7CisgICAgfQor
CisgICAgSnVtcCBicmFuY2hUcnVuY2F0ZURvdWJsZVRvVWludDMyKEZQUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCwgQnJhbmNoVHJ1bmNhdGVUeXBlIGJyYW5jaFR5cGUgPSBCcmFuY2hJ
ZlRydW5jYXRlRmFpbGVkKQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIudHJ1bmN3ZChmcFRl
bXBSZWdpc3Rlciwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIubWZjMShkZXN0LCBmcFRlbXBS
ZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2gzMihicmFuY2hUeXBlID09IEJyYW5jaElm
VHJ1bmNhdGVGYWlsZWQgPyBFcXVhbCA6IE5vdEVxdWFsLCBkZXN0LCBUcnVzdGVkSW1tMzIoMCkp
OworICAgIH0KKworICAgIC8vIFJlc3VsdCBpcyB1bmRlZmluZWQgaWYgdGhlIHZhbHVlIGlzIG91
dHNpZGUgb2YgdGhlIGludGVnZXIgcmFuZ2UuCisgICAgdm9pZCB0cnVuY2F0ZURvdWJsZVRvSW50
MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9h
c3NlbWJsZXIudHJ1bmN3ZChmcFRlbXBSZWdpc3Rlciwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIubWZjMShkZXN0LCBmcFRlbXBSZWdpc3Rlcik7CisgICAgfQorCisgICAgLy8gUmVzdWx0IGlz
IHVuZGVmaW5lZCBpZiBzcmMgPiAyXjMxCisgICAgdm9pZCB0cnVuY2F0ZURvdWJsZVRvVWludDMy
KEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLnRydW5jd2QoZnBUZW1wUmVnaXN0ZXIsIHNyYyk7CiAgICAgICAgIG1fYXNzZW1ibGVy
Lm1mYzEoZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoRXF1
YWwsIGRlc3QsIFRydXN0ZWRJbW0zMigweDdmZmZmZmZmKSk7CiAgICAgfQogCiAgICAgLy8gQ29u
dmVydCAnc3JjJyB0byBhbiBpbnRlZ2VyLCBhbmQgcGxhY2VzIHRoZSByZXN1bHRpbmcgJ2Rlc3Qn
LgpAQCAtMjIxOCwyOCArMjYzMSw0MyBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaERvdWJs
ZU5vblplcm8oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEIHNjcmF0Y2gpCiAgICAgewot
I2lmIFdURl9NSVBTX0lTQV9SRVYoMikgJiYgV1RGX01JUFNfRlA2NAotICAgICAgICBtX2Fzc2Vt
Ymxlci5tdGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0Y2gpOwotICAgICAgICBtX2Fzc2Vt
Ymxlci5tdGhjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzY3JhdGNoKTsKLSNlbHNlCi0gICAgICAg
IG1fYXNzZW1ibGVyLm10YzEoTUlQU1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLm10YzEoTUlQU1JlZ2lzdGVyczo6emVybywgRlBSZWdpc3RlcklEKHNjcmF0
Y2ggKyAxKSk7Ci0jZW5kaWYKKyAgICAgICAgbV9hc3NlbWJsZXIudm1vdihzY3JhdGNoLCBNSVBT
UmVnaXN0ZXJzOjp6ZXJvLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKICAgICAgICAgcmV0dXJuIGJy
YW5jaERvdWJsZShEb3VibGVOb3RFcXVhbCwgcmVnLCBzY3JhdGNoKTsKICAgICB9CiAKICAgICBK
dW1wIGJyYW5jaERvdWJsZVplcm9Pck5hTihGUFJlZ2lzdGVySUQgcmVnLCBGUFJlZ2lzdGVySUQg
c2NyYXRjaCkKICAgICB7Ci0jaWYgV1RGX01JUFNfSVNBX1JFVigyKSAmJiBXVEZfTUlQU19GUDY0
Ci0gICAgICAgIG1fYXNzZW1ibGVyLm10YzEoTUlQU1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7
Ci0gICAgICAgIG1fYXNzZW1ibGVyLm10aGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0Y2gp
OwotI2Vsc2UKLSAgICAgICAgbV9hc3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBz
Y3JhdGNoKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBG
UFJlZ2lzdGVySUQoc2NyYXRjaCArIDEpKTsKLSNlbmRpZgorICAgICAgICBtX2Fzc2VtYmxlci52
bW92KHNjcmF0Y2gsIE1JUFNSZWdpc3RlcnM6Onplcm8sIE1JUFNSZWdpc3RlcnM6Onplcm8pOwog
ICAgICAgICByZXR1cm4gYnJhbmNoRG91YmxlKERvdWJsZUVxdWFsT3JVbm9yZGVyZWQsIHJlZywg
c2NyYXRjaCk7CiAgICAgfQogCisgICAgLy8gSW52ZXJ0IGEgcmVsYXRpb25hbCBjb25kaXRpb24s
IGUuZy4gPT0gYmVjb21lcyAhPSwgPCBiZWNvbWVzID49LCBldGMuCisgICAgc3RhdGljIFJlbGF0
aW9uYWxDb25kaXRpb24gaW52ZXJ0KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCkKKyAgICB7Cisg
ICAgICAgIFJlbGF0aW9uYWxDb25kaXRpb24gcjsKKyAgICAgICAgaWYgKGNvbmQgPT0gRXF1YWwp
CisgICAgICAgICAgICByID0gTm90RXF1YWw7CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gTm90
RXF1YWwpCisgICAgICAgICAgICByID0gRXF1YWw7CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0g
QWJvdmUpCisgICAgICAgICAgICByID0gQmVsb3dPckVxdWFsOworICAgICAgICBlbHNlIGlmIChj
b25kID09IEFib3ZlT3JFcXVhbCkKKyAgICAgICAgICAgIHIgPSBCZWxvdzsKKyAgICAgICAgZWxz
ZSBpZiAoY29uZCA9PSBCZWxvdykKKyAgICAgICAgICAgIHIgPSBBYm92ZU9yRXF1YWw7CisgICAg
ICAgIGVsc2UgaWYgKGNvbmQgPT0gQmVsb3dPckVxdWFsKQorICAgICAgICAgICAgciA9IEFib3Zl
OworICAgICAgICBlbHNlIGlmIChjb25kID09IEdyZWF0ZXJUaGFuKQorICAgICAgICAgICAgciA9
IExlc3NUaGFuT3JFcXVhbDsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBHcmVhdGVyVGhhbk9y
RXF1YWwpCisgICAgICAgICAgICByID0gTGVzc1RoYW47CisgICAgICAgIGVsc2UgaWYgKGNvbmQg
PT0gTGVzc1RoYW4pCisgICAgICAgICAgICByID0gR3JlYXRlclRoYW5PckVxdWFsOworICAgICAg
ICBlbHNlIGlmIChjb25kID09IExlc3NUaGFuT3JFcXVhbCkKKyAgICAgICAgICAgIHIgPSBHcmVh
dGVyVGhhbjsKKyAgICAgICAgcmV0dXJuIHI7CisgICAgfQorCiAgICAgdm9pZCBub3AoKQogICAg
IHsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CkBAIC0yMjUyLDEyICsyNjgwLDEyIEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcChDb2RlTG9jYXRpb25MYWJl
bCBpbnN0cnVjdGlvblN0YXJ0LCBDb2RlTG9jYXRpb25MYWJlbCBkZXN0aW5hdGlvbikKICAgICB7
Ci0gICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIE1JUFNBc3Nl
bWJsZXI6OnJlcGxhY2VXaXRoSnVtcChpbnN0cnVjdGlvblN0YXJ0LmRhdGFMb2NhdGlvbigpLCBk
ZXN0aW5hdGlvbi5kYXRhTG9jYXRpb24oKSk7CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBwdHJk
aWZmX3QgbWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgpCiAgICAgewotICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBNSVBTQXNzZW1ibGVyOjptYXhKdW1wUmVwbGFj
ZW1lbnRTaXplKCk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggZmEwZjVlMC4uNTczZDhk
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBl
cnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5o
CkBAIC05Myw2ICs5MywyMyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAKKyNpZiBDUFUoTUlQ
UykKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxs
KFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAgICAgbW92ZShyZXR1cm5BZGRyZXNzUmVnaXN0
ZXIsIHJlZyk7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHJlc3RvcmVSZXR1cm5B
ZGRyZXNzQmVmb3JlUmV0dXJuKFJlZ2lzdGVySUQgcmVnKQorICAgIHsKKyAgICAgICAgbW92ZShy
ZWcsIHJldHVybkFkZHJlc3NSZWdpc3Rlcik7CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2
b2lkIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKEFkZHJlc3MgYWRkcmVzcykKKyAg
ICB7CisgICAgICAgIGxvYWRQdHIoYWRkcmVzcywgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKKyAg
ICB9CisjZW5kaWYKKwogICAgIHZvaWQgZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXJQdHIoSlNT
dGFjazo6Q2FsbEZyYW1lSGVhZGVyRW50cnkgZW50cnksIEdQUlJlZyB0bykKICAgICB7CiAgICAg
ICAgIGxvYWRQdHIoQWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgZW50cnkgKiBz
aXplb2YoUmVnaXN0ZXIpKSwgdG8pOwpAQCAtMTkzLDcgKzIxMCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKHNjcmF0Y2hCdWZmZXItPmFjdGl2ZUxlbmd0aFB0cigpKSwg
R1BSSW5mbzo6cmVnVDApOwogICAgICAgICBzdG9yZVB0cihUcnVzdGVkSW1tUHRyKHNjcmF0Y2hT
aXplKSwgR1BSSW5mbzo6cmVnVDApOwogCi0jaWYgQ1BVKFg4Nl82NCkgfHwgQ1BVKEFSTSkKKyNp
ZiBDUFUoWDg2XzY0KSB8fCBDUFUoQVJNKSB8fCBDUFUoTUlQUykKICAgICAgICAgbW92ZShUcnVz
dGVkSW1tUHRyKGJ1ZmZlciksIEdQUkluZm86OmFyZ3VtZW50R1BSMik7CiAgICAgICAgIG1vdmUo
VHJ1c3RlZEltbVB0cihhcmd1bWVudCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CiAgICAgICAg
IG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAppbmRleCA4YWRk
ZTA1Li4wNzBlYTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ND
YWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxw
ZXJzLmgKQEAgLTU3Niw2ICs1NzYsMzkgQEAgcHVibGljOgogICAgICAgICBwb2tlKEdQUkluZm86
Om5vbkFyZ0dQUjApOwogICAgIH0KICNlbmRpZiAvLyBDUFUoQVJNX0hBUkRGUCkKKyNlbGlmIENQ
VShNSVBTKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50cyhGUFJSZWcgYXJn
MSkKKyAgICB7CisgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJndW1lbnRGUFIw
KTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHMoRlBSUmVn
IGFyZzEsIEZQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgaWYgKGFyZzIgIT0gRlBSSW5mbzo6
YXJndW1lbnRGUFIwKSB7CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzEsIEZQUkluZm86OmFy
Z3VtZW50RlBSMCk7CisgICAgICAgICAgICBtb3ZlRG91YmxlKGFyZzIsIEZQUkluZm86OmFyZ3Vt
ZW50RlBSMSk7CisgICAgICAgIH0gZWxzZSBpZiAoYXJnMSAhPSBGUFJJbmZvOjphcmd1bWVudEZQ
UjEpIHsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMiwgRlBSSW5mbzo6YXJndW1lbnRGUFIx
KTsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBSSW5mbzo6YXJndW1lbnRGUFIwKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFN3YXAgYXJnMSwgYXJnMi4KKyAgICAg
ICAgICAgIHN3YXBEb3VibGUoRlBSSW5mbzo6YXJndW1lbnRGUFIwLCBGUFJJbmZvOjphcmd1bWVu
dEZQUjEpOworICAgICAgICB9CisgICAgfQorCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShGUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIpCisgICAgewor
ICAgICAgICBhc3NlbWJsZXIoKS52bW92KEdQUkluZm86OmFyZ3VtZW50R1BSMiwgR1BSSW5mbzo6
YXJndW1lbnRHUFIzLCBhcmcxKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAgcG9rZShhcmcyLCA0KTsKKyAg
ICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgRlBSUmVnIGFyZzMpCisgICAgeworICAgICAgICBz
ZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwgYXJnMik7CisgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgICAgIHBva2UoYXJn
MywgNCk7CisgICAgfQogI2Vsc2UKICNlcnJvciAiREZHIEpJVCBub3Qgc3VwcG9ydGVkIG9uIHRo
aXMgcGxhdGZvcm0uIgogI2VuZGlmCkBAIC04MDMsMTE5ICs4MzYsMTMwIEBAIHB1YmxpYzoKICAg
ICAvLyBUaGVzZSBtZXRob2RzIGFyZSBzdWl0YWJsZSBmb3IgYW55IGNhbGxpbmcgY29udmVudGlv
biB0aGF0IHByb3ZpZGVzIGZvcgogICAgIC8vIGV4YWN0bHkgNCBhcmd1bWVudCByZWdpc3RlcnMs
IGUuZy4gQVJNdjcuCiAjaWYgTlVNQkVSX09GX0FSR1VNRU5UX1JFR0lTVEVSUyA9PSA0CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBBcmd1bWVudD4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcG9r
ZUFyZ3VtZW50KEFyZ3VtZW50IGFyZywgaW50IGluZGV4ID0gMCkKKyAgICB7CisjaWYgQ1BVKE1J
UFMpCisgICAgICAgIHBva2UoYXJnLCBpbmRleCArIDQpOworI2Vsc2UKKyAgICAgICAgcG9rZShh
cmcsIGluZGV4KTsKKyNlbmRpZgorICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcg
YXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBw
b2tlQXJndW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShh
cmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFy
ZzMsIFRydXN0ZWRJbW0zMiBhcmc0KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAg
ICAgcG9rZUFyZ3VtZW50KGFyZzQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgVHJ1c3RlZEltbVB0ciBhcmcy
LCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFy
ZzQpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVk
SW1tUHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUp
CiAgICAgewotICAgICAgICBwb2tlKGFyZzUsIDEpOwotICAgICAgICBwb2tlKGFyZzQpOworICAg
ICAgICBwb2tlQXJndW1lbnQoYXJnNSwgMSk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc0KTsK
ICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwog
ICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgVHJ1c3RlZElt
bTMyIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlQXJndW1l
bnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgR1BSUmVn
IGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAg
cG9rZUFyZ3VtZW50KGFyZzQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBh
cmczLCBUcnVzdGVkSW1tUHRyIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFyZzQpOworICAg
ICAgICBwb2tlQXJndW1lbnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNT
dGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMiwgR1BS
UmVnIGFyZzMsIEdQUlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKICAgICB7Ci0gICAgICAgIHBva2Uo
YXJnNSwgMSk7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc1
LCAxKTsKKyAgICAgICAgcG9rZUFyZ3VtZW50KGFyZzQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwg
R1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCkKICAgICB7Ci0gICAgICAgIHBv
a2UoYXJnNCk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbVB0ciBhcmc0KQogICAgIHsK
LSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgcG9rZUFyZ3VtZW50KGFyZzQpOwogICAgICAg
ICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQog
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVz
dGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1t
UHRyIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlQXJndW1l
bnQoYXJnNCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcy
LCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNX
aXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMy
IGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAg
cG9rZUFyZ3VtZW50KGFyZzQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJ
bW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCiAgICAgewotICAgICAgICBwb2tl
KGFyZzUsIDEpOwotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJn
NSwgMSk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0dXBBcmd1bWVu
dHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJl
ZyBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQsIFRydXN0ZWRJbW0zMiBhcmc1
KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCAxKTsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAg
ICAgICAgcG9rZUFyZ3VtZW50KGFyZzUsIDEpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNCk7
CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsK
ICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgR1BSUmVnIGFyZzMsIEdQUlJlZyBh
cmc0LCBUcnVzdGVkSW1tUHRyIGFyZzUpCiAgICAgewotICAgICAgICBwb2tlKGFyZzUsIDEpOwot
ICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNSwgMSk7CisgICAg
ICAgIHBva2VBcmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcy
LCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQsIFRydXN0ZWRJbW0zMiBhcmc1KQogICAg
IHsKLSAgICAgICAgcG9rZShhcmc1LCAxKTsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAg
cG9rZUFyZ3VtZW50KGFyZzUsIDEpOworICAgICAgICBwb2tlQXJndW1lbnQoYXJnNCk7CiAgICAg
ICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9
CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRy
dXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVkSW1tMzIgYXJnMiwgVHJ1c3RlZEltbTMyIGFyZzMsIEdQ
UlJlZyBhcmc0LCBHUFJSZWcgYXJnNSkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNSwgMSk7Ci0g
ICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc1LCAxKTsKKyAgICAg
ICAgcG9rZUFyZ3VtZW50KGFyZzQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3Rh
dGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSwgR1BSUmVnIGFyZzIs
IEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUpCiAgICAgewotICAgICAgICBw
b2tlKGFyZzUsIDEpOwotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlQXJndW1lbnQo
YXJnNSwgMSk7CisgICAgICAgIHBva2VBcmd1bWVudChhcmc0KTsKICAgICAgICAgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaAppbmRleCAxN2FhYTdkLi5lMThlYzA2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaApAQCAtMTY0LDYgKzE2NCw3NCBAQCBwdWJs
aWM6CiAKICNlbmRpZgogCisjaWYgQ1BVKE1JUFMpCisKK2NsYXNzIEZQUkluZm8geworcHVibGlj
OgorICAgIHR5cGVkZWYgRlBSUmVnIFJlZ2lzdGVyVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgbnVtYmVyT2ZSZWdpc3RlcnMgPSA2OworCisgICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVy
cy4KKyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDAgPSBNSVBTUmVnaXN0ZXJzOjpmMDsK
KyAgICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDEgPSBNSVBTUmVnaXN0ZXJzOjpmNDsKKyAg
ICBzdGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDIgPSBNSVBTUmVnaXN0ZXJzOjpmNjsKKyAgICBz
dGF0aWMgY29uc3QgRlBSUmVnIGZwUmVnVDMgPSBNSVBTUmVnaXN0ZXJzOjpmODsKKyAgICBzdGF0
aWMgY29uc3QgRlBSUmVnIGZwUmVnVDQgPSBNSVBTUmVnaXN0ZXJzOjpmMTA7CisgICAgc3RhdGlj
IGNvbnN0IEZQUlJlZyBmcFJlZ1Q1ID0gTUlQU1JlZ2lzdGVyczo6ZjE4OworCisgICAgc3RhdGlj
IGNvbnN0IEZQUlJlZyByZXR1cm5WYWx1ZUZQUiA9IE1JUFNSZWdpc3RlcnM6OmYwOworCisgICAg
c3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjAgPSBNSVBTUmVnaXN0ZXJzOjpmMTI7Cisg
ICAgc3RhdGljIGNvbnN0IEZQUlJlZyBhcmd1bWVudEZQUjEgPSBNSVBTUmVnaXN0ZXJzOjpmMTQ7
CisKKyAgICBzdGF0aWMgRlBSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCisgICAgewor
ICAgICAgICBzdGF0aWMgY29uc3QgRlBSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdp
c3RlcnNdID0geworICAgICAgICAgICAgZnBSZWdUMCwgZnBSZWdUMSwgZnBSZWdUMiwgZnBSZWdU
MywgZnBSZWdUNCwgZnBSZWdUNSB9OworCisgICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9m
UmVnaXN0ZXJzKTsKKyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOworICAg
IH0KKworICAgIHN0YXRpYyB1bnNpZ25lZCB0b0luZGV4KEZQUlJlZyByZWcpCisgICAgeworICAg
ICAgICBBU1NFUlQocmVnICE9IEludmFsaWRGUFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwg
MjApOworICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3RlclsyMF0g
PSB7CisgICAgICAgICAgICAwLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZElu
ZGV4LAorICAgICAgICAgICAgMSwgSW52YWxpZEluZGV4LCAyLCBJbnZhbGlkSW5kZXgsCisgICAg
ICAgICAgICAzLCBJbnZhbGlkSW5kZXgsIDQsIEludmFsaWRJbmRleCwKKyAgICAgICAgICAgIElu
dmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwKKyAg
ICAgICAgICAgIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCA1LCBJbnZhbGlkSW5kZXgsCisg
ICAgICAgIH07CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGluZGV4Rm9yUmVnaXN0ZXJbcmVn
XTsKKyAgICAgICAgQVNTRVJUKHJlc3VsdCAhPSBJbnZhbGlkSW5kZXgpOworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoRlBS
UmVnIHJlZykKKyAgICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7Cisg
ICAgICAgIEFTU0VSVChyZWcgPCAzMik7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1l
Rm9yUmVnaXN0ZXJbMzJdID0geworICAgICAgICAgICAgImYwIiwgImYxIiwgImYyIiwgImYzIiwK
KyAgICAgICAgICAgICJmNCIsICJmNSIsICJmNiIsICJmNyIsCisgICAgICAgICAgICAiZjgiLCAi
ZjkiLCAiZjEwIiwgImYxMSIsCisgICAgICAgICAgICAiZjEyIiwgImYxMyIsICJmMTQiLCAiZjE1
IgorICAgICAgICAgICAgImYxNiIsICJmMTciLCAiZjE4IiwgImYxOSIKKyAgICAgICAgICAgICJm
MjAiLCAiZjIxIiwgImYyMiIsICJmMjMiCisgICAgICAgICAgICAiZjI0IiwgImYyNSIsICJmMjYi
LCAiZjI3IgorICAgICAgICAgICAgImYyOCIsICJmMjkiLCAiZjMwIiwgImYzMSIKKyAgICAgICAg
fTsKKyAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOworICAgIH0KK3ByaXZhdGU6
CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW52YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsK
K307CisKKyNlbmRpZgorCiB0eXBlZGVmIFJlZ2lzdGVyQmFuazxGUFJJbmZvPjo6aXRlcmF0b3Ig
ZnByX2l0ZXJhdG9yOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR1BSSW5mby5oCmluZGV4IDNkMDc1NTYuLmFhNjM0Y2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCkBAIC00NjEsNiArNDYxLDczIEBAIHByaXZhdGU6
CiAKICNlbmRpZgogCisjaWYgQ1BVKE1JUFMpCisjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9S
RUdJU1RFUlMgNAorCitjbGFzcyBHUFJJbmZvIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEdQUlJl
ZyBSZWdpc3RlclR5cGU7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0
ZXJzID0gNjsKKworICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0
IEdQUlJlZyByZWdUMCA9IE1JUFNSZWdpc3RlcnM6OnYwOworICAgIHN0YXRpYyBjb25zdCBHUFJS
ZWcgcmVnVDEgPSBNSVBTUmVnaXN0ZXJzOjp2MTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJl
Z1QyID0gTUlQU1JlZ2lzdGVyczo6dDQ7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMyA9
IE1JUFNSZWdpc3RlcnM6OnQ1OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDQgPSBNSVBT
UmVnaXN0ZXJzOjp0NjsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q1ID0gTUlQU1JlZ2lz
dGVyczo6dDc7CisgICAgLy8gVGhlc2UgcmVnaXN0ZXJzIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQu
CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IHJlZ1QwOwor
ICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIyID0gcmVnVDE7Cisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6
OnMwOworICAgIC8vIFRoZXNlIGNvbnN0YW50cyBwcm92aWRlIHRoZSBuYW1lcyBmb3IgdGhlIGdl
bmVyYWwgcHVycG9zZSBhcmd1bWVudCAmIHJldHVybiB2YWx1ZSByZWdpc3RlcnMuCisgICAgc3Rh
dGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjAgPSBNSVBTUmVnaXN0ZXJzOjphMDsKKyAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIGFyZ3VtZW50R1BSMSA9IE1JUFNSZWdpc3RlcnM6OmExOworICAg
IHN0YXRpYyBjb25zdCBHUFJSZWcgYXJndW1lbnRHUFIyID0gTUlQU1JlZ2lzdGVyczo6YTI7Cisg
ICAgc3RhdGljIGNvbnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBNSVBTUmVnaXN0ZXJzOjphMzsK
KyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjAgPSByZWdUMjsKKyAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIG5vbkFyZ0dQUjEgPSByZWdUMzsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IG5vbkFyZ0dQUjIgPSByZWdUNDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVl
R1BSID0gcmVnVDA7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSBy
ZWdUMTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9
IHJlZ1Q1OworCisgICAgc3RhdGljIEdQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAg
ICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNd
ID0geyByZWdUMCwgcmVnVDEsIHJlZ1QyLCByZWdUMywgcmVnVDQsIHJlZ1Q1IH07CisgICAgICAg
IHJldHVybiByZWdpc3RlckZvckluZGV4W2luZGV4XTsKKyAgICB9CisKKyAgICBzdGF0aWMgdW5z
aWduZWQgdG9JbmRleChHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJ
bnZhbGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDE2KTsKKyAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGluZGV4Rm9yUmVnaXN0ZXJbMTZdID0geyBJbnZhbGlkSW5kZXgsIElu
dmFsaWRJbmRleCwgMCwgMSwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRl
eCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4
LCBJbnZhbGlkSW5kZXgsIDIsIDMsIDQsIDUgfTsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0g
aW5kZXhGb3JSZWdpc3RlcltyZWddOworICAgICAgICBBU1NFUlQocmVzdWx0ICE9IEludmFsaWRJ
bmRleCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0
IGNoYXIqIGRlYnVnTmFtZShHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAh
PSBJbnZhbGlkR1BSUmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDE2KTsKKyAgICAgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIG5hbWVGb3JSZWdpc3RlclsxNl0gPSB7CisgICAgICAgICAgICAiemVy
byIsICJhdCIsICJ2MCIsICJ2MSIsCisgICAgICAgICAgICAiYTAiLCAiYTEiLCAiYTIiLCAiYTMi
LAorICAgICAgICAgICAgInQwIiwgInQxIiwgInQyIiwgInQzIiwKKyAgICAgICAgICAgICJ0NCIs
ICJ0NSIsICJ0NiIsICJ0NyIKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdp
c3RlcltyZWddOworICAgIH0KK3ByaXZhdGU6CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
SW52YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsKK307CisKKyNlbmRpZgorCiB0eXBlZGVmIFJlZ2lz
dGVyQmFuazxHUFJJbmZvPjo6aXRlcmF0b3IgZ3ByX2l0ZXJhdG9yOwogCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKaW5kZXggMDNiNzI1ZC4uZDQ0MjUwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTI0NCw3ICsxMjQ0LDcgQEAgcHVibGljOgog
CiAvLyBFbmNvZGVkSlNWYWx1ZSBpbiBKU1ZBTFVFMzJfNjQgaXMgYSA2NC1iaXQgaW50ZWdlci4g
V2hlbiBiZWluZyBjb21waWxlZCBpbiBBUk0gRUFCSSwgaXQgbXVzdCBiZSBhbGlnbmVkIGV2ZW4t
bnVtYmVyZWQgcmVnaXN0ZXIgKHIwLCByMiBvciBbc3BdKS4KIC8vIFRvIGF2b2lkIGFzc2VtYmxp
ZXMgZnJvbSB1c2luZyB3cm9uZyByZWdpc3RlcnMsIGxldCdzIG9jY3VweSByMSBvciByMyB3aXRo
IGEgZHVtbXkgYXJndW1lbnQgd2hlbiBuZWNlc3NhcnkuCi0jaWYgQ09NUElMRVJfU1VQUE9SVFMo
RUFCSSkgJiYgQ1BVKEFSTSkKKyNpZiAoQ09NUElMRVJfU1VQUE9SVFMoRUFCSSkgJiYgQ1BVKEFS
TSkpIHx8IENQVShNSVBTKQogI2RlZmluZSBFQUJJXzMyQklUX0RVTU1ZX0FSRyAgICAgIFRydXN0
ZWRJbW0zMigwKSwKICNlbHNlCiAjZGVmaW5lIEVBQklfMzJCSVRfRFVNTVlfQVJHCkBAIC0xNjk0
LDcgKzE2OTQsNyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAgICAgCi0jaWYgIWRlZmluZWQo
TkRFQlVHKSAmJiAhQ1BVKEFSTSkKKyNpZiAhZGVmaW5lZChOREVCVUcpICYmICFDUFUoQVJNKSAm
JiAhQ1BVKE1JUFMpCiAgICAgdm9pZCBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCkKICAgICB7CiAg
ICAgICAgIC8vIFdlJ3JlIGFib3V0IHRvIGNhbGwgb3V0IHRvIGEgIm5hdGl2ZSIgaGVscGVyIGZ1
bmN0aW9uLiBUaGUgaGVscGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pTSW50ZXJmYWNlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNl
SklULmgKaW5kZXggN2ZkZWFmMC4uNDhhZDZiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSlNJbnRlcmZhY2VKSVQuaApAQCAtMTI1LDYgKzEyNSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSBN
SVBTUmVnaXN0ZXJzOjp2MDsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgZmlyc3RB
cmd1bWVudFJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6YTA7CiAgICAgICAgIAorI2lmIEVOQUJM
RShWQUxVRV9QUk9GSUxFUikKKyAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgYnVja2V0
Q291bnRlclJlZ2lzdGVyID0gTUlQU1JlZ2lzdGVyczo6czM7CisjZW5kaWYKKwogICAgICAgICAv
LyByZWdUMCBtdXN0IGJlIHYwIGZvciByZXR1cm5pbmcgYSAzMi1iaXQgdmFsdWUuCiAgICAgICAg
IHN0YXRpYyBjb25zdCBSZWdpc3RlcklEIHJlZ1QwID0gTUlQU1JlZ2lzdGVyczo6djA7CiAgICAg
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAppbmRl
eCA1ZDQ3YWI5Li5jMDJmMzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuaApAQCAtMTQxLDE0ICsxNDEsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHNpemVf
dCBhbGxvY2F0aW9uU2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkgeyByZXR1cm4gc2l6ZW9mKHNpemVf
dCkgKyBidWZmZXJTaXplOyB9CisgICAgICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUo
c2l6ZV90IGJ1ZmZlclNpemUpIHsgcmV0dXJuIHNpemVvZihTY3JhdGNoQnVmZmVyKSArIGJ1ZmZl
clNpemU7IH0KICAgICAgICAgdm9pZCBzZXRBY3RpdmVMZW5ndGgoc2l6ZV90IGFjdGl2ZUxlbmd0
aCkgeyBtX2FjdGl2ZUxlbmd0aCA9IGFjdGl2ZUxlbmd0aDsgfQogICAgICAgICBzaXplX3QgYWN0
aXZlTGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVMZW5ndGg7IH07CiAgICAgICAgIHNp
emVfdCogYWN0aXZlTGVuZ3RoUHRyKCkgeyByZXR1cm4gJm1fYWN0aXZlTGVuZ3RoOyB9OwogICAg
ICAgICB2b2lkKiBkYXRhQnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogICAgICAgICBz
aXplX3QgbV9hY3RpdmVMZW5ndGg7CisjaWYgQ1BVKE1JUFMpICYmIChkZWZpbmVkIFdURl9NSVBT
X0FSQ0hfUkVWICYmIFdURl9NSVBTX0FSQ0hfUkVWID09IDIpCisgICAgICAgIHZvaWQqIG1fYnVm
ZmVyWzBdIF9fYXR0cmlidXRlX18oKGFsaWduZWQoOCkpKTsKKyNlbHNlCiAgICAgICAgIHZvaWQq
IG1fYnVmZmVyWzBdOworI2VuZGlmCiAgICAgfTsKICNpZiBDT01QSUxFUihNU1ZDKQogI3ByYWdt
YSB3YXJuaW5nKHBvcCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNl
L1dURi9DaGFuZ2VMb2cKaW5kZXggMGEzOWNmMS4uN2Y2NTVmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxMy0wMi0xOCAgQmFsYXpzIEtpbHZhZHkgIDxraWx2YWR5YkBob21lamlubmkuY29tPgor
CisgICAgICAgIE1JUFMgREZHIGltcGxlbWVudGF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgREZHIGltcGxlbWVudGF0aW9uIGZvciBNSVBTLgor
CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisKIDIwMTMtMDItMTggIExhc3psbyBHb21ib3Mg
IDxsLmdvbWJvc0BzYW1zdW5nLmNvbT4KIAogICAgICAgICBNb3ZlIEVOQUJMRSBtYWNyb3MgZm9y
IFdlYkNvcmUgb3V0IGZyb20gUGxhdGZvcm0uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
UGxhdGZvcm0uaCBiL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggMTY5ODI0Ny4uMmQ5
MDM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybS5oCkBAIC04MTgsNiArODE4LDEwIEBACiAjaWYgQ1BVKEFSTV9UUkFE
SVRJT05BTCkKICNkZWZpbmUgRU5BQkxFX0RGR19KSVQgMQogI2VuZGlmCisvKiBFbmFibGUgdGhl
IERGRyBKSVQgb24gTUlQUy4gKi8KKyNpZiBDUFUoTUlQUykKKyNkZWZpbmUgRU5BQkxFX0RGR19K
SVQgMQorI2VuZGlmCiAjZW5kaWYKIAogLyogSWYgdGhlIGppdCBpcyBub3QgYXZhaWxhYmxlLCBl
bmFibGUgdGhlIExMSW50IEMgTG9vcDogKi8K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188879</attachid>
            <date>2013-02-18 07:12:42 -0800</date>
            <delta_ts>2013-02-18 11:27:04 -0800</delta_ts>
            <desc>DFG for MIPS - arg. offset with macro</desc>
            <filename>dfg-m.diff</filename>
            <type>text/plain</type>
            <size>52683</size>
            <attacher name="Balazs Kilvady">kilvadyb</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGY4NDIyODUuLjhlNTgzM2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkzIEBACisyMDEzLTAyLTE4ICBCYWxhenMgS2lsdmFk
eSAgPGtpbHZhZHliQGhvbWVqaW5uaS5jb20+CisKKyAgICAgICAgTUlQUyBERkcgaW1wbGVtZW50
YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDEzMjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBE
RkcgaW1wbGVtZW50YXRpb24gZm9yIE1JUFMuCisKKyAgICAgICAgKiBhc3NlbWJsZXIvTUlQU0Fz
c2VtYmxlci5oOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpNSVBTQXNzZW1ibGVyKToK
KyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6c2xsdik6CisgICAgICAgIChKU0M6Ok1JUFNB
c3NlbWJsZXI6Om1vdmQpOgorICAgICAgICAoTUlQU0Fzc2VtYmxlcik6CisgICAgICAgIChKU0M6
Ok1JUFNBc3NlbWJsZXI6Om5lZ2QpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJl
bEZvcldhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpsYWJlbCk6Cisg
ICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6OnZtb3YpOgorICAgICAgICAoSlNDOjpNSVBTQXNz
ZW1ibGVyOjpsaW5rRGlyZWN0SnVtcCk6CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6Om1h
eEp1bXBSZXBsYWNlbWVudFNpemUpOgorICAgICAgICAoSlNDOjpNSVBTQXNzZW1ibGVyOjpyZXZl
cnRKdW1wVG9Nb3ZlKToKKyAgICAgICAgKEpTQzo6TUlQU0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhK
dW1wKToKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKE1h
Y3JvQXNzZW1ibGVyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnBva2UpOgorICAg
ICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAgICAgKEpTQzo6TWFj
cm9Bc3NlbWJsZXJNSVBTOjphZGQzMik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlck1JUFMpOgor
ICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmFuZDMyKToKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXJNSVBTOjpsc2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1i
bGVyTUlQUzo6bXVsMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om9yMzIp
OgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnJzaGlmdDMyKToKKyAgICAgICAg
KEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjp1cnNoaWZ0MzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OnN1YjMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
Ojp4b3IzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6c3RvcmUzMik6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6anVtcCk6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoQWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OmJyYW5jaE11bDMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBT
OjpicmFuY2hTdWIzMik6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNo
TmVnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmNhbGwpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmxvYWREb3VibGUpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6Om1vdmVEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2Vt
Ymxlck1JUFM6OnN3YXBEb3VibGUpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6
OnN1YkRvdWJsZSk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6bXVsRG91Ymxl
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpkaXZEb3VibGUpOgorICAgICAg
ICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om5lZ2F0ZURvdWJsZSk6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRXF1YWwpOgorICAgICAgICAoSlNDOjpNYWNyb0Fz
c2VtYmxlck1JUFM6OmJyYW5jaE5vdEVxdWFsKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJs
ZXJNSVBTOjpicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIpOgorICAgICAgICAoSlNDOjpNYWNy
b0Fzc2VtYmxlck1JUFM6OmJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIpOgorICAgICAgICAo
SlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnRydW5jYXRlRG91YmxlVG9JbnQzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6dHJ1bmNhdGVEb3VibGVUb1VpbnQzMik6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlTm9uWmVybyk6CisgICAg
ICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoRG91YmxlWmVyb09yTmFOKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjppbnZlcnQpOgorICAgICAgICAoSlNDOjpN
YWNyb0Fzc2VtYmxlck1JUFM6OnJlcGxhY2VXaXRoSnVtcCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyTUlQUzo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSk6CisgICAgICAgICogZGZnL0RG
R0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAoQXNzZW1ibHlIZWxwZXJzKToKKyAgICAgICAg
KEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OnByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2Fs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpyZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybik6CisgICAgICAgIChKU0M6OkRGRzo6QXNzZW1ibHlIZWxwZXJzOjpk
ZWJ1Z0NhbGwpOgorICAgICAgICAqIGRmZy9ERkdDQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEND
YWxsSGVscGVycyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3Vt
ZW50cyk6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUpOgorICAgICAgICAqIGRmZy9ERkdGUFJJbmZvLmg6CisgICAgICAgIChERkcp
OgorICAgICAgICAoRlBSSW5mbyk6CisgICAgICAgIChKU0M6OkRGRzo6RlBSSW5mbzo6dG9SZWdp
c3Rlcik6CisgICAgICAgIChKU0M6OkRGRzo6RlBSSW5mbzo6dG9JbmRleCk6CisgICAgICAgIChK
U0M6OkRGRzo6RlBSSW5mbzo6ZGVidWdOYW1lKToKKyAgICAgICAgKiBkZmcvREZHR1BSSW5mby5o
OgorICAgICAgICAoREZHKToKKyAgICAgICAgKEdQUkluZm8pOgorICAgICAgICAoSlNDOjpERkc6
OkdQUkluZm86OnRvUmVnaXN0ZXIpOgorICAgICAgICAoSlNDOjpERkc6OkdQUkluZm86OnRvSW5k
ZXgpOgorICAgICAgICAoSlNDOjpERkc6OkdQUkluZm86OmRlYnVnTmFtZSk6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6CisgICAg
ICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAgIChKU0ludGVyZmFjZUpJVCk6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpTQzo6U2NyYXRjaEJ1
ZmZlcjo6YWxsb2NhdGlvblNpemUpOgorICAgICAgICAoU2NyYXRjaEJ1ZmZlcik6CisKIDIwMTMt
MDItMTggIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFVucmV2aWV3ZWQgc3BlY3VsYXRpdmUgYnVpbGQgZml4IGZvciBBcHBsZSBXaW4gYm90cy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKaW5kZXgg
MDI2Zjg3ZS4uN2Y1NTNiYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NSVBTQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NSVBTQXNzZW1ibGVyLmgKQEAgLTE1Miw2ICsxNTIsOCBAQCBwdWJsaWM6CiAgICAgdHlwZWRl
ZiBTZWdtZW50ZWRWZWN0b3I8QXNzZW1ibGVyTGFiZWwsIDY0PiBKdW1wczsKIAogICAgIE1JUFNB
c3NlbWJsZXIoKQorICAgICAgICA6IG1faW5kZXhPZkxhc3RXYXRjaHBvaW50KElOVF9NSU4pCisg
ICAgICAgICwgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQoSU5UX01JTikKICAgICB7CiAg
ICAgfQogCkBAIC0zMjUsNyArMzI3LDcgQEAgcHVibGljOgogICAgICAgICBlbWl0SW5zdCgweDAw
MDAwMDAwIHwgKHJkIDw8IE9QX1NIX1JEKSB8IChydCA8PCBPUF9TSF9SVCkgfCAoKHNoYW10ICYg
MHgxZikgPDwgT1BfU0hfU0hBTVQpKTsKICAgICB9CiAKLSAgICB2b2lkIHNsbHYoUmVnaXN0ZXJJ
RCByZCwgUmVnaXN0ZXJJRCBydCwgaW50IHJzKQorICAgIHZvaWQgc2xsdihSZWdpc3RlcklEIHJk
LCBSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJzKQogICAgIHsKICAgICAgICAgZW1pdEluc3Qo
MHgwMDAwMDAwNCB8IChyZCA8PCBPUF9TSF9SRCkgfCAocnQgPDwgT1BfU0hfUlQpIHwgKHJzIDw8
IE9QX1NIX1JTKSk7CiAgICAgfQpAQCAtNTI3LDYgKzUyOSwxNiBAQCBwdWJsaWM6CiAgICAgICAg
IGVtaXRJbnN0KDB4NDYyMDAwMDQgfCAoZmQgPDwgT1BfU0hfRkQpIHwgKGZzIDw8IE9QX1NIX0ZT
KSk7CiAgICAgfQogCisgICAgdm9pZCBtb3ZkKEZQUmVnaXN0ZXJJRCBmZCwgRlBSZWdpc3RlcklE
IGZzKQorICAgIHsKKyAgICAgICAgZW1pdEluc3QoMHg0NjIwMDAwNiB8IChmZCA8PCBPUF9TSF9G
RCkgfCAoZnMgPDwgT1BfU0hfRlMpKTsKKyAgICB9CisKKyAgICB2b2lkIG5lZ2QoRlBSZWdpc3Rl
cklEIGZkLCBGUFJlZ2lzdGVySUQgZnMpCisgICAgeworICAgICAgICBlbWl0SW5zdCgweDQ2MjAw
MDA3IHwgKGZkIDw8IE9QX1NIX0ZEKSB8IChmcyA8PCBPUF9TSF9GUykpOworICAgIH0KKwogICAg
IHZvaWQgdHJ1bmN3ZChGUFJlZ2lzdGVySUQgZmQsIEZQUmVnaXN0ZXJJRCBmcykKICAgICB7CiAg
ICAgICAgIGVtaXRJbnN0KDB4NDYyMDAwMGQgfCAoZmQgPDwgT1BfU0hfRkQpIHwgKGZzIDw8IE9Q
X1NIX0ZTKSk7CkBAIC02MTksOSArNjMxLDI0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1f
YnVmZmVyLmxhYmVsKCk7CiAgICAgfQogCisgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWxGb3JXYXRj
aHBvaW50KCkKKyAgICB7CisgICAgICAgIEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IG1fYnVmZmVy
LmxhYmVsKCk7CisgICAgICAgIGlmIChzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdC5tX29mZnNldCkg
IT0gbV9pbmRleE9mTGFzdFdhdGNocG9pbnQpCisgICAgICAgICAgICByZXN1bHQgPSBsYWJlbCgp
OworICAgICAgICBtX2luZGV4T2ZMYXN0V2F0Y2hwb2ludCA9IHJlc3VsdC5tX29mZnNldDsKKyAg
ICAgICAgbV9pbmRleE9mVGFpbE9mTGFzdFdhdGNocG9pbnQgPSByZXN1bHQubV9vZmZzZXQgKyBt
YXhKdW1wUmVwbGFjZW1lbnRTaXplKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
CiAgICAgQXNzZW1ibGVyTGFiZWwgbGFiZWwoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fYnVm
ZmVyLmxhYmVsKCk7CisgICAgICAgIEFzc2VtYmxlckxhYmVsIHJlc3VsdCA9IG1fYnVmZmVyLmxh
YmVsKCk7CisgICAgICAgIHdoaWxlIChVTkxJS0VMWShzdGF0aWNfY2FzdDxpbnQ+KHJlc3VsdC5t
X29mZnNldCkgPCBtX2luZGV4T2ZUYWlsT2ZMYXN0V2F0Y2hwb2ludCkpIHsKKyAgICAgICAgICAg
IG5vcCgpOworICAgICAgICAgICAgcmVzdWx0ID0gbV9idWZmZXIubGFiZWwoKTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAogICAgIEFzc2VtYmxlckxhYmVsIGFs
aWduKGludCBhbGlnbm1lbnQpCkBAIC02NjQsMTQgKzY5MSwyNCBAQCBwdWJsaWM6CiAgICAgLy8g
QXNzZW1ibHkgaGVscGVycyBmb3IgbW92aW5nIGRhdGEgYmV0d2VlbiBmcCBhbmQgcmVnaXN0ZXJz
LgogICAgIHZvaWQgdm1vdihSZWdpc3RlcklEIHJkMSwgUmVnaXN0ZXJJRCByZDIsIEZQUmVnaXN0
ZXJJRCBybikKICAgICB7CisjaWYgV1RGX01JUFNfSVNBX1JFVigyKSAmJiBXVEZfTUlQU19GUDY0
CisgICAgICAgIG1mYzEocmQxLCBybik7CisgICAgICAgIG1maGMxKHJkMiwgcm4pOworI2Vsc2UK
ICAgICAgICAgbWZjMShyZDEsIHJuKTsKICAgICAgICAgbWZjMShyZDIsIEZQUmVnaXN0ZXJJRChy
biArIDEpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHZvaWQgdm1vdihGUFJlZ2lzdGVySUQgcmQs
IFJlZ2lzdGVySUQgcm4xLCBSZWdpc3RlcklEIHJuMikKICAgICB7CisjaWYgV1RGX01JUFNfSVNB
X1JFVigyKSAmJiBXVEZfTUlQU19GUDY0CisgICAgICAgIG10YzEocm4xLCByZCk7CisgICAgICAg
IG10aGMxKHJuMiwgcmQpOworI2Vsc2UKICAgICAgICAgbXRjMShybjEsIHJkKTsKICAgICAgICAg
bXRjMShybjIsIEZQUmVnaXN0ZXJJRChyZCArIDEpKTsKKyNlbmRpZgogICAgIH0KIAogICAgIHN0
YXRpYyB1bnNpZ25lZCBnZXRDYWxsUmV0dXJuT2Zmc2V0KEFzc2VtYmxlckxhYmVsIGNhbGwpCkBA
IC02ODgsNiArNzI1LDM1IEBAIHB1YmxpYzoKICAgICAvLyB3cml0YWJsZSByZWdpb24gb2YgbWVt
b3J5OyB0byBtb2RpZnkgdGhlIGNvZGUgaW4gYW4gZXhlY3V0ZS1vbmx5IGV4ZWN1YWJsZQogICAg
IC8vIHBvb2wgdGhlICdyZXBhdGNoJyBhbmQgJ3JlbGluaycgbWV0aG9kcyBzaG91bGQgYmUgdXNl
ZC4KIAorICAgIHN0YXRpYyBzaXplX3QgbGlua0RpcmVjdEp1bXAodm9pZCogY29kZSwgdm9pZCog
dG8pCisgICAgeworICAgICAgICBNSVBTV29yZCogaW5zbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8TUlQ
U1dvcmQqPihyZWludGVycHJldF9jYXN0PGludHB0cl90Pihjb2RlKSk7CisgICAgICAgIHNpemVf
dCBvcHMgPSAwOworICAgICAgICBpbnQzMl90IHNsb3RBZGRyID0gcmVpbnRlcnByZXRfY2FzdDxp
bnQ+KGluc24pICsgNDsKKyAgICAgICAgaW50MzJfdCB0b0FkZHIgPSByZWludGVycHJldF9jYXN0
PGludD4odG8pOworCisgICAgICAgIGlmICgoc2xvdEFkZHIgJiAweGYwMDAwMDAwKSAhPSAodG9B
ZGRyICYgMHhmMDAwMDAwMCkpIHsKKyAgICAgICAgICAgIC8vIGx1aQorICAgICAgICAgICAgKmlu
c24gPSAweDNjMDAwMDAwIHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JUKSB8ICgodG9B
ZGRyID4+IDE2KSAmIDB4ZmZmZik7CisgICAgICAgICAgICArK2luc247CisgICAgICAgICAgICAv
LyBvcmkKKyAgICAgICAgICAgICppbnNuID0gMHgzNDAwMDAwMCB8IChNSVBTUmVnaXN0ZXJzOjp0
OSA8PCBPUF9TSF9SVCkgfCAoTUlQU1JlZ2lzdGVyczo6dDkgPDwgT1BfU0hfUlMpIHwgKHRvQWRk
ciAmIDB4ZmZmZik7CisgICAgICAgICAgICArK2luc247CisgICAgICAgICAgICAvLyBqcgorICAg
ICAgICAgICAgKmluc24gPSAweDAwMDAwMDA4IHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NI
X1JTKTsKKyAgICAgICAgICAgICsraW5zbjsKKyAgICAgICAgICAgIG9wcyA9IDQgKiBzaXplb2Yo
TUlQU1dvcmQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gagorICAgICAgICAg
ICAgKmluc24gPSAweDA4MDAwMDAwIHwgKCh0b0FkZHIgJiAweDBmZmZmZmZmKSA+PiAyKTsKKyAg
ICAgICAgICAgICsraW5zbjsKKyAgICAgICAgICAgIG9wcyA9IDIgKiBzaXplb2YoTUlQU1dvcmQp
OworICAgICAgICB9CisgICAgICAgIC8vIG5vcAorICAgICAgICAqaW5zbiA9IDB4MDAwMDAwMDA7
CisgICAgICAgIHJldHVybiBvcHM7CisgICAgfQorCiAgICAgdm9pZCBsaW5rSnVtcChBc3NlbWJs
ZXJMYWJlbCBmcm9tLCBBc3NlbWJsZXJMYWJlbCB0bykKICAgICB7CiAgICAgICAgIEFTU0VSVCh0
by5pc1NldCgpKTsKQEAgLTgyNSwyOSArODkxLDM2IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIH0K
IAotICAgIHN0YXRpYyB2b2lkIHJldmVydEp1bXBUb01vdmUodm9pZCogaW5zdHJ1Y3Rpb25TdGFy
dCwgUmVnaXN0ZXJJRCBydCwgaW50IGltbSkKKyAgICBzdGF0aWMgcHRyZGlmZl90IG1heEp1bXBS
ZXBsYWNlbWVudFNpemUoKQogICAgIHsKLSAgICAgICAgTUlQU1dvcmQqIGluc24gPSBzdGF0aWNf
Y2FzdDxNSVBTV29yZCo+KGluc3RydWN0aW9uU3RhcnQpICsgMTsKLSAgICAgICAgQVNTRVJUKCgq
aW5zbiAmIDB4ZmMwMDAwMDApID09IDB4MzQwMDAwMDApOwotICAgICAgICAqaW5zbiA9ICgqaW5z
biAmIDB4ZmMxZjAwMDApIHwgKGltbSAmIDB4ZmZmZik7Ci0gICAgICAgIGNhY2hlRmx1c2goaW5z
biwgc2l6ZW9mKE1JUFNXb3JkKSk7CisgICAgICAgIHJldHVybiBzaXplb2YoTUlQU1dvcmQpICog
NDsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aEp1bXAodm9pZCogaW5zdHJ1
Y3Rpb25TdGFydCwgdm9pZCogdG8pCisgICAgc3RhdGljIHZvaWQgcmV2ZXJ0SnVtcFRvTW92ZSh2
b2lkKiBpbnN0cnVjdGlvblN0YXJ0LCBSZWdpc3RlcklEIHJ0LCBpbnQgaW1tKQogICAgIHsKLSAg
ICAgICAgTUlQU1dvcmQqIGluc3RydWN0aW9uID0gcmVpbnRlcnByZXRfY2FzdDxNSVBTV29yZCo+
KGluc3RydWN0aW9uU3RhcnQpOwotICAgICAgICBpbnRwdHJfdCBqdW1wVG8gPSByZWludGVycHJl
dF9jYXN0PGludHB0cl90Pih0byk7CisgICAgICAgIE1JUFNXb3JkKiBpbnNuID0gc3RhdGljX2Nh
c3Q8TUlQU1dvcmQqPihpbnN0cnVjdGlvblN0YXJ0KTsKKyAgICAgICAgc2l6ZV90IGNvZGVTaXpl
ID0gMiAqIHNpemVvZihNSVBTV29yZCk7CiAKICAgICAgICAgLy8gbHVpCi0gICAgICAgIGluc3Ry
dWN0aW9uWzBdID0gMHgzYzAwMDAwMCB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8PCBPUF9TSF9SVCkg
fCAoKGp1bXBUbyA+PiAxNikgJiAweGZmZmYpOworICAgICAgICAqaW5zbiA9IDB4M2MwMDAwMDAg
fCAocnQgPDwgT1BfU0hfUlQpIHwgKChpbW0gPj4gMTYpICYgMHhmZmZmKTsKKyAgICAgICAgKytp
bnNuOwogICAgICAgICAvLyBvcmkKLSAgICAgICAgaW5zdHJ1Y3Rpb25bMV0gPSAweDM0MDAwMDAw
IHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NIX1JUKSB8IChNSVBTUmVnaXN0ZXJzOjp0OSA8
PCBPUF9TSF9SUykgfCAoanVtcFRvICYgMHhmZmZmKTsKLSAgICAgICAgLy8ganIKLSAgICAgICAg
aW5zdHJ1Y3Rpb25bMl0gPSAweDAwMDAwMDA4IHwgKE1JUFNSZWdpc3RlcnM6OnQ5IDw8IE9QX1NI
X1JTKTsKLSAgICAgICAgLy8gbm9wCi0gICAgICAgIGluc3RydWN0aW9uWzNdID0gMHgwOworICAg
ICAgICAqaW5zbiA9IDB4MzQwMDAwMDAgfCAocnQgPDwgT1BfU0hfUlMpIHwgKHJ0IDw8IE9QX1NI
X1JUKSB8IChpbW0gJiAweGZmZmYpOworICAgICAgICArK2luc247CisgICAgICAgIC8vIGlmIGpy
ICR0OQorICAgICAgICBpZiAoKmluc24gPT0gMHgwMzIwMDAwOCkgeworICAgICAgICAgICAgKmlu
c24gPSAweDAwMDAwMDAwOworICAgICAgICAgICAgY29kZVNpemUgKz0gc2l6ZW9mKE1JUFNXb3Jk
KTsKKyAgICAgICAgfQorICAgICAgICBjYWNoZUZsdXNoKGluc24sIGNvZGVTaXplKTsKKyAgICB9
CiAKLSAgICAgICAgY2FjaGVGbHVzaChpbnN0cnVjdGlvbiwgc2l6ZW9mKE1JUFNXb3JkKSAqIDQp
OworICAgIHN0YXRpYyB2b2lkIHJlcGxhY2VXaXRoSnVtcCh2b2lkKiBpbnN0cnVjdGlvblN0YXJ0
LCB2b2lkKiB0bykKKyAgICB7CisgICAgICAgIEFTU0VSVCghKGJpdHdpc2VfY2FzdDx1aW50cHRy
X3Q+KGluc3RydWN0aW9uU3RhcnQpICYgMykpOworICAgICAgICBBU1NFUlQoIShiaXR3aXNlX2Nh
c3Q8dWludHB0cl90Pih0bykgJiAzKSk7CisgICAgICAgIHNpemVfdCBvcHMgPSBsaW5rRGlyZWN0
SnVtcChpbnN0cnVjdGlvblN0YXJ0LCB0byk7CisgICAgICAgIGNhY2hlRmx1c2goaW5zdHJ1Y3Rp
b25TdGFydCwgb3BzKTsKICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCByZXBsYWNlV2l0aExvYWQo
dm9pZCogaW5zdHJ1Y3Rpb25TdGFydCkKQEAgLTEwMjMsNiArMTA5Niw4IEBAIHByaXZhdGU6CiAK
ICAgICBBc3NlbWJsZXJCdWZmZXIgbV9idWZmZXI7CiAgICAgSnVtcHMgbV9qdW1wczsKKyAgICBp
bnQgbV9pbmRleE9mTGFzdFdhdGNocG9pbnQ7CisgICAgaW50IG1faW5kZXhPZlRhaWxPZkxhc3RX
YXRjaHBvaW50OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgKaW5kZXggN2M1ZTVlOC4uMjI4ZDhh
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2Vt
Ymxlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXIuaApAQCAtMjAwLDYgKzIwMCwxMyBAQCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAgICAgCisj
aWYgQ1BVKE1JUFMpCisgICAgdm9pZCBwb2tlKEZQUmVnaXN0ZXJJRCBzcmMsIGludCBpbmRleCA9
IDApCisgICAgeworICAgICAgICBBU1NFUlQoIShpbmRleCAmIDEpKTsKKyAgICAgICAgc3RvcmVE
b3VibGUoc3JjLCBhZGRyZXNzRm9yUG9rZShpbmRleCkpOworICAgIH0KKyNlbmRpZgogCiAgICAg
Ly8gQmFja3dhcmRzIGJhbmNoZXMsIHRoZXNlIGFyZSBjdXJyZW50bHkgYWxsIGltcGxlbWVudGVk
IHVzaW5nIGV4aXN0aW5nIGZvcndhcmRzIGJyYW5jaCBtZWNoYW5pc21zLgogICAgIHZvaWQgYnJh
bmNoUHRyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIFRydXN0ZWRJ
bW1QdHIgaW1tLCBMYWJlbCB0YXJnZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAppbmRleCA0M2FkNDM0Li40ZjE0OTYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
TUlQUy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJNSVBTLmgKQEAgLTExNCw2ICsxMTQsMTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxl
ci5hZGR1KGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9pZCBhZGQzMihSZWdpc3Rl
cklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmFkZHUoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgYWRk
MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgYWRk
MzIoaW1tLCBkZXN0LCBkZXN0KTsKQEAgLTI2Nyw2ICsyNzIsMTEgQEAgcHVibGljOgogICAgICAg
ICBtX2Fzc2VtYmxlci5hbmRJbnNuKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCisgICAgdm9p
ZCBhbmQzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBvcDIsIFJlZ2lzdGVySUQgZGVzdCkK
KyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLmFuZEluc24oZGVzdCwgb3AxLCBvcDIpOworICAg
IH0KKwogICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKICAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSAmJiAhbV9maXhlZFdpZHRoKQpAQCAtMjgz
LDkgKzI5MywxNiBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIGxzaGlm
dDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB2b2lkIGFuZDMyKFRy
dXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewot
ICAgICAgICBtX2Fzc2VtYmxlci5zbGwoZGVzdCwgZGVzdCwgaW1tLm1fdmFsdWUpOworICAgICAg
ICBpZiAoIWltbS5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCisgICAgICAgICAgICBtb3ZlKE1J
UFNSZWdpc3RlcnM6Onplcm8sIGRlc3QpOworICAgICAgICBlbHNlIGlmIChpbW0ubV92YWx1ZSA+
IDAgJiYgaW1tLm1fdmFsdWUgPCA2NTUzNSAmJiAhbV9maXhlZFdpZHRoKQorICAgICAgICAgICAg
bV9hc3NlbWJsZXIuYW5kaShkZXN0LCBzcmMsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmFuZEluc24oZGVzdCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICB9
CiAgICAgfQogCiAgICAgdm9pZCBsc2hpZnQzMihSZWdpc3RlcklEIHNoaWZ0QW1vdW50LCBSZWdp
c3RlcklEIGRlc3QpCkBAIC0yOTMsMTEgKzMxMCwzMyBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNz
ZW1ibGVyLnNsbHYoZGVzdCwgZGVzdCwgc2hpZnRBbW91bnQpOwogICAgIH0KIAorICAgIHZvaWQg
bHNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnNsbHYoZGVzdCwgc3JjLCBzaGlm
dEFtb3VudCk7CisgICAgfQorCisgICAgdm9pZCBsc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVy
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc2xsdihkZXN0LCBkZXN0LCBpbW1UZW1wUmVnaXN0ZXIp
OworICAgIH0KKworICAgIHZvaWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0z
MiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1w
UmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5zbGx2KGRlc3QsIHNyYywgaW1tVGVtcFJl
Z2lzdGVyKTsKKyAgICB9CisKICAgICB2b2lkIG11bDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tdWwoZGVzdCwgZGVzdCwgc3Jj
KTsKICAgICB9CiAKKyAgICB2b2lkIG11bDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9w
MiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIubXVsKGRlc3Qs
IG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIG11bDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBpZiAoIWltbS5t
X3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCkBAIC0zNDgsNiArMzg3LDI0IEBAIHB1YmxpYzoKICAg
ICAgICAgbV9hc3NlbWJsZXIub3JJbnNuKGRlc3QsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIpOwog
ICAgIH0KIAorICAgIHZvaWQgb3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKCFpbW0ubV92YWx1ZSAmJiAhbV9m
aXhlZFdpZHRoKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChpbW0ubV92YWx1
ZSA+IDAgJiYgaW1tLm1fdmFsdWUgPCA2NTUzNSAmJiAhbV9maXhlZFdpZHRoKSB7CisgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5vcmkoZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgICAgbGkgICAgICBk
YXRhVGVtcCwgaW1tCisgICAgICAgICAgICBvciAgICAgIGRlc3QsIHNyYywgZGF0YVRlbXAKKyAg
ICAgICAgKi8KKyAgICAgICAgbW92ZShpbW0sIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBt
X2Fzc2VtYmxlci5vckluc24oZGVzdCwgc3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisK
ICAgICB2b2lkIG9yMzIoUmVnaXN0ZXJJRCBzcmMsIEFic29sdXRlQWRkcmVzcyBkZXN0KQogICAg
IHsKICAgICAgICAgbG9hZDMyKGRlc3QubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwpAQCAtMzYw
LDYgKzQxNywxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fYXNzZW1ibGVyLnNyYXYoZGVzdCwgZGVz
dCwgc2hpZnRBbW91bnQpOwogICAgIH0KIAorICAgIHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgc2hpZnRBbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLnNyYXYoZGVzdCwgc3JjLCBzaGlmdEFtb3VudCk7CisgICAgfQorCiAg
ICAgdm9pZCByc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewogICAgICAgICBtX2Fzc2VtYmxlci5zcmEoZGVzdCwgZGVzdCwgaW1tLm1fdmFsdWUpOwpAQCAt
Mzc1LDE2ICs0MzcsMzEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5zcmx2KGRlc3Qs
IGRlc3QsIHNoaWZ0QW1vdW50KTsKICAgICB9CiAKKyAgICB2b2lkIHVyc2hpZnQzMihSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBzaGlmdEFtb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgbV9hc3NlbWJsZXIuc3JsdihkZXN0LCBzcmMsIHNoaWZ0QW1vdW50KTsKKyAgICB9
CisKICAgICB2b2lkIHVyc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5zcmwoZGVzdCwgZGVzdCwgaW1tLm1fdmFsdWUp
OwogICAgIH0KIAorICAgIHZvaWQgdXJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1t
MzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5zcmwo
ZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7CisgICAgfQorCiAgICAgdm9pZCBzdWIzMihSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuc3Vi
dShkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgc3ViMzIoUmVnaXN0ZXJJRCBv
cDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fz
c2VtYmxlci5zdWJ1KGRlc3QsIG9wMSwgb3AyKTsKKyAgICB9CisKICAgICB2b2lkIHN1YjMyKFRy
dXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChpbW0u
bV92YWx1ZSA+PSAtMzI3NjcgJiYgaW1tLm1fdmFsdWUgPD0gMzI3NjgKQEAgLTQ5NSw2ICs1NzIs
MTEgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIGRlc3QsIHNy
Yyk7CiAgICAgfQogCisgICAgdm9pZCB4b3IzMihSZWdpc3RlcklEIG9wMSwgUmVnaXN0ZXJJRCBv
cDIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24o
ZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0x
KSB7CkBAIC01MTAsNiArNTkyLDIxIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIueG9y
SW5zbihkZXN0LCBkZXN0LCBpbW1UZW1wUmVnaXN0ZXIpOwogICAgIH0KIAorICAgIHZvaWQgeG9y
MzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAg
ICB7CisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkgeworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIubm9yKGRlc3QsIHNyYywgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgICAgbGkgIGltbVRlbXAs
IGltbQorICAgICAgICAgICAgeG9yIGRlc3QsIGRlc3QsIGltbVRlbXAKKyAgICAgICAgKi8KKyAg
ICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLnhv
ckluc24oZGVzdCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgIH0KKwogICAgIHZvaWQgc3Fy
dERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAg
ICAgbV9hc3NlbWJsZXIuc3FydGQoZHN0LCBzcmMpOwpAQCAtOTg5LDYgKzEwODYsNDQgQEAgcHVi
bGljOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCBzdG9yZTMyKFRydXN0ZWRJbW0zMiBp
bW0sIEJhc2VJbmRleCBhZGRyZXNzKQorICAgIHsKKyAgICAgICAgaWYgKGFkZHJlc3Mub2Zmc2V0
ID49IC0zMjc2OCAmJiBhZGRyZXNzLm9mZnNldCA8PSAzMjc2NyAmJiAhbV9maXhlZFdpZHRoKSB7
CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgIHNsbCAgICAgYWRkclRlbXAsIGFkZHJl
c3MuaW5kZXgsIGFkZHJlc3Muc2NhbGUKKyAgICAgICAgICAgICAgICBhZGR1ICAgIGFkZHJUZW1w
LCBhZGRyVGVtcCwgYWRkcmVzcy5iYXNlCisgICAgICAgICAgICAgICAgc3cgICAgICBzcmMsIGFk
ZHJlc3Mub2Zmc2V0KGFkZHJUZW1wKQorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnNsbChhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLmluZGV4LCBhZGRyZXNzLnNjYWxl
KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoYWRkclRlbXBSZWdpc3RlciwgYWRkclRl
bXBSZWdpc3RlciwgYWRkcmVzcy5iYXNlKTsKKyAgICAgICAgICAgIGlmICghaW1tLm1fdmFsdWUp
CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3coTUlQU1JlZ2lzdGVyczo6emVybywgYWRk
clRlbXBSZWdpc3RlciwgYWRkcmVzcy5vZmZzZXQpOworICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAg
bV9hc3NlbWJsZXIuc3coaW1tVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNz
Lm9mZnNldCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAv
KgorICAgICAgICAgICAgICAgIHNsbCAgICAgYWRkclRlbXAsIGFkZHJlc3MuaW5kZXgsIGFkZHJl
c3Muc2NhbGUKKyAgICAgICAgICAgICAgICBhZGR1ICAgIGFkZHJUZW1wLCBhZGRyVGVtcCwgYWRk
cmVzcy5iYXNlCisgICAgICAgICAgICAgICAgbHVpICAgICBpbW1UZW1wLCAoYWRkcmVzcy5vZmZz
ZXQgKyAweDgwMDApID4+IDE2CisgICAgICAgICAgICAgICAgYWRkdSAgICBhZGRyVGVtcCwgYWRk
clRlbXAsIGltbVRlbXAKKyAgICAgICAgICAgICAgICBzdyAgICAgIHNyYywgKGFkZHJlc3Mub2Zm
c2V0ICYgMHhmZmZmKShhdCkKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5zbGwoYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7Cisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVn
aXN0ZXIsIGFkZHJlc3MuYmFzZSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sdWkoaW1tVGVt
cFJlZ2lzdGVyLCAoYWRkcmVzcy5vZmZzZXQgKyAweDgwMDApID4+IDE2KTsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmFkZHUoYWRkclRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgaW1t
VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGlmICghaW1tLm1fdmFsdWUgJiYgIW1fZml4ZWRX
aWR0aCkKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdyhNSVBTUmVnaXN0ZXJzOjp6ZXJv
LCBhZGRyVGVtcFJlZ2lzdGVyLCBhZGRyZXNzLm9mZnNldCk7CisgICAgICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci5zdyhpbW1UZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFk
ZHJlc3Mub2Zmc2V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworCiAgICAg
dm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCBjb25zdCB2b2lkKiBhZGRyZXNzKQogICAgIHsK
ICAgICAgICAgLyoKQEAgLTEzMzYsNiArMTQ3MSwxNSBAQCBwdWJsaWM6CiAgICAgICAgIG1fZml4
ZWRXaWR0aCA9IGZhbHNlOwogICAgIH0KIAorICAgIHZvaWQganVtcChBYnNvbHV0ZUFkZHJlc3Mg
YWRkcmVzcykKKyAgICB7CisgICAgICAgIG1fZml4ZWRXaWR0aCA9IHRydWU7CisgICAgICAgIGxv
YWQzMihhZGRyZXNzLm1fcHRyLCBNSVBTUmVnaXN0ZXJzOjp0OSk7CisgICAgICAgIG1fYXNzZW1i
bGVyLmpyKE1JUFNSZWdpc3RlcnM6OnQ5KTsKKyAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7Cisg
ICAgICAgIG1fZml4ZWRXaWR0aCA9IGZhbHNlOworICAgIH0KKwogICAgIHZvaWQgbW92ZURvdWJs
ZVRvSW50cyhGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QxLCBSZWdpc3RlcklEIGRl
c3QyKQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIudm1vdihkZXN0MSwgZGVzdDIsIHNyYyk7
CkBAIC0xNDA0LDYgKzE1NDgsNTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcCgpOwog
ICAgIH0KIAorICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25k
ID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKKyAgICAgICAgaWYgKGNvbmQgPT0gT3Zl
cmZsb3cpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgbW92ZSAgICBkYXRhVGVt
cCwgb3AxCisgICAgICAgICAgICAgICAgeG9yICAgICBjbXBUZW1wLCBkYXRhVGVtcCwgb3AyCisg
ICAgICAgICAgICAgICAgYmx0eiAgICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIGRpZmYgc2ln
biBiaXQgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBhZGR1ICAgIGRlc3QsIGRhdGFU
ZW1wLCBvcDIKKyAgICAgICAgICAgICAgICB4b3IgICAgIGNtcFRlbXAsIGRlc3QsIGRhdGFUZW1w
CisgICAgICAgICAgICAgICAgYmdleiAgICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIHNhbWUg
c2lnbiBiaWcgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAg
ICAgICBiICAgICAgIE92ZXJmbG93CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAg
ICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAg
ICAgICAgICAgbm9wCisgICAgICAgICAgICBOb19vdmVyZmxvdzoKKyAgICAgICAgICAgICovCisg
ICAgICAgICAgICBtb3ZlKG9wMSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fz
c2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwgb3AyKTsK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxMCk7CisgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIsIG9wMik7Cisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGVzdCwgZGF0
YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdp
c3RlciwgNyk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAgIHJl
dHVybiBqdW1wKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7Cisg
ICAgICAgICAgICBhZGQzMihvcDEsIG9wMiwgZGVzdCk7CisgICAgICAgICAgICAvLyBDaGVjayBp
ZiBkZXN0IGlzIG5lZ2F0aXZlLgorICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0KGNtcFRlbXBS
ZWdpc3RlciwgZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICByZXR1cm4g
YnJhbmNoTm90RXF1YWwoY21wVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBaZXJvKSB7CisgICAgICAgICAgICBhZGQzMihv
cDEsIG9wMiwgZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoRXF1YWwoZGVzdCwgTUlQ
U1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gTm9uWmVy
bykgeworICAgICAgICAgICAgYWRkMzIob3AxLCBvcDIsIGRlc3QpOworICAgICAgICAgICAgcmV0
dXJuIGJyYW5jaE5vdEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9
CisgICAgICAgIEFTU0VSVCgwKTsKKyAgICAgICAgcmV0dXJuIEp1bXAoKTsKKyAgICB9CisKICAg
ICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lz
dGVyKTsKQEAgLTE0MTcsNiArMTYwOCwxMTEgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYnJh
bmNoQWRkMzIoY29uZCwgaW1tVGVtcFJlZ2lzdGVyLCBkZXN0KTsKICAgICB9CiAKKyAgICBKdW1w
IGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBBYnNv
bHV0ZUFkZHJlc3MgZGVzdCkKKyAgICB7CisgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxv
dykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25a
ZXJvKSk7CisgICAgICAgIGlmIChjb25kID09IE92ZXJmbG93KSB7CisgICAgICAgICAgICAvKgor
ICAgICAgICAgICAgICAgIG1vdmUgICAgZGF0YVRlbXAsIGRlc3QKKyAgICAgICAgICAgICAgICB4
b3JpICAgIGNtcFRlbXAsIGRhdGFUZW1wLCBpbW0KKyAgICAgICAgICAgICAgICBibHR6ICAgIGNt
cFRlbXAsIE5vX292ZXJmbG93ICAgICMgZGlmZiBzaWduIGJpdCAtPiBubyBvdmVyZmxvdworICAg
ICAgICAgICAgICAgIGFkZGl1ICAgZGF0YVRlbXAsIGRhdGFUZW1wLCBpbW0KKyAgICAgICAgICAg
ICAgICBtb3ZlICAgIGRlc3QsIGRhdGFUZW1wCisgICAgICAgICAgICAgICAgeG9yaSAgICBjbXBU
ZW1wLCBkYXRhVGVtcCwgaW1tCisgICAgICAgICAgICAgICAgYmdleiAgICBjbXBUZW1wLCBOb19v
dmVyZmxvdyAgICAjIHNhbWUgc2lnbiBiaWcgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAg
ICBub3AKKyAgICAgICAgICAgICAgICBiICAgICAgIE92ZXJmbG93CisgICAgICAgICAgICAgICAg
bm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAg
ICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICBOb19vdmVyZmxvdzoK
KyAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPj0gLTMyNzY4ICYm
IGltbS5tX3ZhbHVlICA8PSAzMjc2NyAmJiAhbV9maXhlZFdpZHRoKSB7CisgICAgICAgICAgICAg
ICAgbG9hZDMyKGRlc3QubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnhvcmkoY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW0u
bV92YWx1ZSk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmx0eihjbXBUZW1wUmVnaXN0
ZXIsIDEwKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRpdShkYXRhVGVtcFJlZ2lz
dGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW0ubV92YWx1ZSk7CisgICAgICAgICAgICAgICAgc3Rv
cmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0Lm1fcHRyKTsKKyAgICAgICAgICAgICAgICBtX2Fz
c2VtYmxlci54b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1fdmFs
dWUpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCA3
KTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgbG9hZDMyKGRlc3QubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIp
OworICAgICAgICAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lz
dGVyLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHoo
Y21wVGVtcFJlZ2lzdGVyLCAxMCk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkaXUo
ZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAg
ICAgICAgICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QubV9wdHIpOworICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmkoY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJl
Z2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJn
ZXooY21wVGVtcFJlZ2lzdGVyLCA3KTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3Ao
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBqdW1wKCk7CisgICAgICAgIH0K
KyAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIGxvYWQzMihkZXN0
Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgYWRkMzIoaW1tVGVtcFJlZ2lzdGVy
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBk
ZXN0Lm1fcHRyKTsKKyAgICAgICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7CisgICAgICAgICAgICAv
LyBDaGVjayBpZiBkZXN0IGlzIG5lZ2F0aXZlLgorICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0
KGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7
CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwoY21wVGVtcFJlZ2lzdGVyLCBNSVBT
UmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBaZXJvKQor
ICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKGRhdGFUZW1wUmVnaXN0ZXIsIE1JUFNSZWdp
c3RlcnM6Onplcm8pOworICAgICAgICBpZiAoY29uZCA9PSBOb25aZXJvKQorICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaE5vdEVxdWFsKGRhdGFUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onpl
cm8pOworICAgICAgICBBU1NFUlQoMCk7CisgICAgICAgIHJldHVybiBKdW1wKCk7CisgICAgfQor
CisgICAgSnVtcCBicmFuY2hNdWwzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBz
cmMxLCBSZWdpc3RlcklEIHNyYzIsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFT
U0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBa
ZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CisgICAgICAgIGlmIChjb25kID09IE92ZXJmbG93
KSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgIG11bHQgICAgc3JjLCBkZXN0Cisg
ICAgICAgICAgICAgICAgbWZoaSAgICBkYXRhVGVtcAorICAgICAgICAgICAgICAgIG1mbG8gICAg
ZGVzdAorICAgICAgICAgICAgICAgIHNyYSAgICAgYWRkclRlbXAsIGRlc3QsIDMxCisgICAgICAg
ICAgICAgICAgYmVxICAgICBkYXRhVGVtcCwgYWRkclRlbXAsIE5vX292ZXJmbG93ICMgYWxsIHNp
Z24gYml0cyAoYml0IDYzIHRvIGJpdCAzMSkgYXJlIHRoZSBzYW1lIC0+IG5vIG92ZXJmbG93Cisg
ICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgYiAgICAgICBPdmVyZmxvdworICAg
ICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5v
cAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAg
Tm9fb3ZlcmZsb3c6CisgICAgICAgICAgICAqLworICAgICAgICAgICAgbV9hc3NlbWJsZXIubXVs
dChzcmMxLCBzcmMyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1maGkoZGF0YVRlbXBSZWdp
c3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5tZmxvKGRlc3QpOworICAgICAgICAgICAg
bV9hc3NlbWJsZXIuc3JhKGFkZHJUZW1wUmVnaXN0ZXIsIGRlc3QsIDMxKTsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmJlcShkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCA3KTsK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGp1bXAo
KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKKyAgICAgICAgICAg
IG11bDMyKHNyYzEsIHNyYzIsIGRlc3QpOworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBp
cyBuZWdhdGl2ZS4KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIs
IGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5v
dEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGNvbmQgPT0gWmVybykgeworICAgICAgICAgICAgbXVsMzIoc3JjMSwgc3Jj
MiwgZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoRXF1YWwoZGVzdCwgTUlQU1JlZ2lz
dGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykgewor
ICAgICAgICAgICAgbXVsMzIoc3JjMSwgc3JjMiwgZGVzdCk7CisgICAgICAgICAgICByZXR1cm4g
YnJhbmNoTm90RXF1YWwoZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAg
ICAgICAgQVNTRVJUKDApOworICAgICAgICByZXR1cm4gSnVtcCgpOworICAgIH0KKwogICAgIEp1
bXAgYnJhbmNoTXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8
IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykp
OwpAQCAtMTQ2NSw4ICsxNzYxLDcgQEAgcHVibGljOgogICAgIEp1bXAgYnJhbmNoTXVsMzIoUmVz
dWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsK
LSAgICAgICAgbW92ZShzcmMsIGRlc3QpOwotICAgICAgICByZXR1cm4gYnJhbmNoTXVsMzIoY29u
ZCwgaW1tVGVtcFJlZ2lzdGVyLCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMyKGNv
bmQsIGltbVRlbXBSZWdpc3Rlciwgc3JjLCBkZXN0KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5j
aFN1YjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBk
ZXN0KQpAQCAtMTUyNSw4ICsxODIwLDYwIEBAIHB1YmxpYzoKICAgICBKdW1wIGJyYW5jaFN1YjMy
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rl
cik7Ci0gICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaFN1YjMy
KGNvbmQsIGltbVRlbXBSZWdpc3RlciwgZGVzdCk7CisgICAgICAgIHJldHVybiBicmFuY2hTdWIz
Mihjb25kLCBzcmMsIGltbVRlbXBSZWdpc3RlciwgZGVzdCk7CisgICAgfQorCisgICAgSnVtcCBi
cmFuY2hTdWIzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIFJlZ2lzdGVy
SUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBBU1NFUlQoKGNvbmQgPT0g
T3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQg
PT0gTm9uWmVybykpOworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgeworICAgICAgICAg
ICAgLyoKKyAgICAgICAgICAgICAgICBtb3ZlICAgIGRhdGFUZW1wLCBvcDEKKyAgICAgICAgICAg
ICAgICB4b3IgICAgIGNtcFRlbXAsIGRhdGFUZW1wLCBvcDIKKyAgICAgICAgICAgICAgICBiZ2V6
ICAgIGNtcFRlbXAsIE5vX292ZXJmbG93ICAgICMgc2FtZSBzaWduIGJpdCAtPiBubyBvdmVyZmxv
dworICAgICAgICAgICAgICAgIHN1YnUgICAgZGVzdCwgZGF0YVRlbXAsIG9wMgorICAgICAgICAg
ICAgICAgIHhvciAgICAgY21wVGVtcCwgZGVzdCwgZGF0YVRlbXAKKyAgICAgICAgICAgICAgICBi
Z2V6ICAgIGNtcFRlbXAsIE5vX292ZXJmbG93ICAgICMgc2FtZSBzaWduIGJpdCAtPiBubyBvdmVy
ZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIGIgICAgICAgT3ZlcmZs
b3cKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAg
ICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAg
ICAgICAgIE5vX292ZXJmbG93OgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1vdmUob3Ax
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oY21w
VGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBvcDIpOworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDEwKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVy
LnN1YnUoZGVzdCwgZGF0YVRlbXBSZWdpc3Rlciwgb3AyKTsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnhvckluc24oY21wVGVtcFJlZ2lzdGVyLCBkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCA3KTsKKyAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGp1bXAoKTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKKyAgICAgICAgICAgIHN1YjMyKG9w
MSwgb3AyLCBkZXN0KTsKKyAgICAgICAgICAgIC8vIENoZWNrIGlmIGRlc3QgaXMgbmVnYXRpdmUu
CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHQoY21wVGVtcFJlZ2lzdGVyLCBkZXN0LCBNSVBT
UmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChjbXBU
ZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIGlm
IChjb25kID09IFplcm8pIHsKKyAgICAgICAgICAgIHN1YjMyKG9wMSwgb3AyLCBkZXN0KTsKKyAg
ICAgICAgICAgIHJldHVybiBicmFuY2hFcXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBOb25aZXJvKSB7CisgICAgICAgICAgICBz
dWIzMihvcDEsIG9wMiwgZGVzdCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwo
ZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKDAp
OworICAgICAgICByZXR1cm4gSnVtcCgpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoTmVnMzIo
UmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjRGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLmxpKGRhdGFUZW1wUmVnaXN0ZXIsIC0xKTsKKyAgICAgICAgcmV0dXJuIGJy
YW5jaE11bDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHNyY0Rlc3QpOwogICAgIH0KIAogICAg
IEp1bXAgYnJhbmNoT3IzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKQEAgLTE1NzgsNyArMTkyNSw4IEBAIHB1YmxpYzoKIAogICAgIENhbGwg
Y2FsbChSZWdpc3RlcklEIHRhcmdldCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmphbHIo
dGFyZ2V0KTsKKyAgICAgICAgbW92ZSh0YXJnZXQsIE1JUFNSZWdpc3RlcnM6OnQ5KTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuamFscihNSVBTUmVnaXN0ZXJzOjp0OSk7CiAgICAgICAgIG1fYXNzZW1i
bGVyLm5vcCgpOwogICAgICAgICByZXR1cm4gQ2FsbChtX2Fzc2VtYmxlci5sYWJlbCgpLCBDYWxs
OjpOb25lKTsKICAgICB9CkBAIC0xODIyLDcgKzIxNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICAgICAgbHVpICAgICBpbW1UZW1wLCAoYWRkcmVzcy5vZmZzZXQgKyAweDgwMDApID4+IDE2CiAg
ICAgICAgICAgICAgICAgYWRkdSAgICBhZGRyVGVtcCwgYWRkclRlbXAsIGltbVRlbXAKICAgICAg
ICAgICAgICAgICBsd2MxICAgIGRlc3QsIChhZGRyZXNzLm9mZnNldCAmIDB4ZmZmZikoYXQpCi0g
ICAgICAgICAgICAgICAgbHdjMSAgICBkZXN0KzQsIChhZGRyZXNzLm9mZnNldCAmIDB4ZmZmZiAr
IDQpKGF0KQorICAgICAgICAgICAgICAgIGx3YzEgICAgZGVzdCsxLCAoYWRkcmVzcy5vZmZzZXQg
JiAweGZmZmYgKyA0KShhdCkKICAgICAgICAgICAgICovCiAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5zbGwoYWRkclRlbXBSZWdpc3RlciwgYWRkcmVzcy5pbmRleCwgYWRkcmVzcy5zY2FsZSk7CiAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGFkZHJUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVn
aXN0ZXIsIGFkZHJlc3MuYmFzZSk7CkBAIC0yMDA5LDYgKzIzNTcsMTkgQEAgcHVibGljOgogI2Vu
ZGlmCiAgICAgfQogCisgICAgdm9pZCBtb3ZlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVn
aXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgaWYgKHNyYyAhPSBkZXN0IHx8IG1fZml4ZWRX
aWR0aCkKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmQoZGVzdCwgc3JjKTsKKyAgICB9CisK
KyAgICB2b2lkIHN3YXBEb3VibGUoRlBSZWdpc3RlcklEIGZyMSwgRlBSZWdpc3RlcklEIGZyMikK
KyAgICB7CisgICAgICAgIG1vdmVEb3VibGUoZnIxLCBmcFRlbXBSZWdpc3Rlcik7CisgICAgICAg
IG1vdmVEb3VibGUoZnIyLCBmcjEpOworICAgICAgICBtb3ZlRG91YmxlKGZwVGVtcFJlZ2lzdGVy
LCBmcjIpOworICAgIH0KKwogICAgIHZvaWQgYWRkRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQ
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIuYWRkZChkZXN0LCBk
ZXN0LCBzcmMpOwpAQCAtMjAzNiw2ICsyMzk3LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9hc3Nl
bWJsZXIuc3ViZChkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZvaWQgc3ViRG91Ymxl
KEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQor
ICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViZChkZXN0LCBvcDEsIG9wMik7CisgICAgfQor
CiAgICAgdm9pZCBzdWJEb3VibGUoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKICAgICAgICAgbG9hZERvdWJsZShzcmMsIGZwVGVtcFJlZ2lzdGVyKTsKQEAgLTIwNTMsMTEg
KzI0MTksMzIgQEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5tdWxkKGRlc3QsIGRlc3Qs
IGZwVGVtcFJlZ2lzdGVyKTsKICAgICB9CiAKKyAgICB2b2lkIG11bERvdWJsZShGUFJlZ2lzdGVy
SUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLm11bGQoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKwogICAgIHZvaWQg
ZGl2RG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAg
ICAgICAgbV9hc3NlbWJsZXIuZGl2ZChkZXN0LCBkZXN0LCBzcmMpOwogICAgIH0KIAorICAgIHZv
aWQgZGl2RG91YmxlKEZQUmVnaXN0ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0
ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgbV9hc3NlbWJsZXIuZGl2ZChkZXN0LCBvcDEsIG9w
Mik7CisgICAgfQorCisgICAgdm9pZCBkaXZEb3VibGUoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgbG9hZERvdWJsZShzcmMsIGZwVGVtcFJlZ2lzdGVyKTsK
KyAgICAgICAgbV9hc3NlbWJsZXIuZGl2ZChkZXN0LCBkZXN0LCBmcFRlbXBSZWdpc3Rlcik7Cisg
ICAgfQorCisgICAgdm9pZCBuZWdhdGVEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3Rl
cklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5uZWdkKGRlc3QsIHNyYyk7Cisg
ICAgfQorCiAgICAgdm9pZCBjb252ZXJ0SW50MzJUb0RvdWJsZShSZWdpc3RlcklEIHNyYywgRlBS
ZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKHNyYywgZnBU
ZW1wUmVnaXN0ZXIpOwpAQCAtMjExNyw2ICsyNTA0LDggQEAgcHVibGljOgogCiAgICAgSnVtcCBi
cmFuY2hFcXVhbChSZWdpc3RlcklEIHJzLCBSZWdpc3RlcklEIHJ0KQogICAgIHsKKyAgICAgICAg
bV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwogICAgICAgICBt
X2Fzc2VtYmxlci5hcHBlbmRKdW1wKCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmJlcShycywgcnQs
IDApOwogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKQEAgLTIxMjYsNiArMjUxNSw4IEBAIHB1
YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoTm90RXF1YWwoUmVnaXN0ZXJJRCBycywgUmVnaXN0ZXJJ
RCBydCkKICAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICBtX2Fzc2Vt
Ymxlci5ub3AoKTsKICAgICAgICAgbV9hc3NlbWJsZXIuYXBwZW5kSnVtcCgpOwogICAgICAgICBt
X2Fzc2VtYmxlci5ibmUocnMsIHJ0LCAwKTsKICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CkBA
IC0yMTkyLDExICsyNTgzLDMzIEBAIHB1YmxpYzoKICAgICAvLyBJZiB0aGUgcmVzdWx0IGlzIG5v
dCByZXByZXNlbnRhYmxlIGFzIGEgMzIgYml0IHZhbHVlLCBicmFuY2guCiAgICAgLy8gTWF5IGFs
c28gYnJhbmNoIGZvciBzb21lIHZhbHVlcyB0aGF0IGFyZSByZXByZXNlbnRhYmxlIGluIDMyIGJp
dHMKICAgICAvLyAoc3BlY2lmaWNhbGx5LCBpbiB0aGlzIGNhc2UsIElOVF9NQVggMHg3ZmZmZmZm
ZikuCi0gICAgSnVtcCBicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIGVudW0gQnJhbmNoVHJ1bmNhdGVUeXBlIHsgQnJhbmNo
SWZUcnVuY2F0ZUZhaWxlZCwgQnJhbmNoSWZUcnVuY2F0ZVN1Y2Nlc3NmdWwgfTsKKyAgICBKdW1w
IGJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QsIEJyYW5jaFRydW5jYXRlVHlwZSBicmFuY2hUeXBlID0gQnJhbmNoSWZUcnVuY2F0ZUZh
aWxlZCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnRydW5jd2QoZnBUZW1wUmVnaXN0ZXIs
IHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1mYzEoZGVzdCwgZnBUZW1wUmVnaXN0ZXIpOwor
ICAgICAgICByZXR1cm4gYnJhbmNoMzIoYnJhbmNoVHlwZSA9PSBCcmFuY2hJZlRydW5jYXRlRmFp
bGVkID8gRXF1YWwgOiBOb3RFcXVhbCwgZGVzdCwgVHJ1c3RlZEltbTMyKDB4N2ZmZmZmZmYpKTsK
KyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFRydW5jYXRlRG91YmxlVG9VaW50MzIoRlBSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBCcmFuY2hUcnVuY2F0ZVR5cGUgYnJhbmNoVHlwZSA9
IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci50cnVu
Y3dkKGZwVGVtcFJlZ2lzdGVyLCBzcmMpOworICAgICAgICBtX2Fzc2VtYmxlci5tZmMxKGRlc3Qs
IGZwVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGJyYW5jaFR5cGUgPT0g
QnJhbmNoSWZUcnVuY2F0ZUZhaWxlZCA/IEVxdWFsIDogTm90RXF1YWwsIGRlc3QsIFRydXN0ZWRJ
bW0zMigwKSk7CisgICAgfQorCisgICAgLy8gUmVzdWx0IGlzIHVuZGVmaW5lZCBpZiB0aGUgdmFs
dWUgaXMgb3V0c2lkZSBvZiB0aGUgaW50ZWdlciByYW5nZS4KKyAgICB2b2lkIHRydW5jYXRlRG91
YmxlVG9JbnQzMihGUFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAg
ICAgICBtX2Fzc2VtYmxlci50cnVuY3dkKGZwVGVtcFJlZ2lzdGVyLCBzcmMpOworICAgICAgICBt
X2Fzc2VtYmxlci5tZmMxKGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICAvLyBS
ZXN1bHQgaXMgdW5kZWZpbmVkIGlmIHNyYyA+IDJeMzEKKyAgICB2b2lkIHRydW5jYXRlRG91Ymxl
VG9VaW50MzIoRlBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAg
ICAgbV9hc3NlbWJsZXIudHJ1bmN3ZChmcFRlbXBSZWdpc3Rlciwgc3JjKTsKICAgICAgICAgbV9h
c3NlbWJsZXIubWZjMShkZXN0LCBmcFRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBicmFu
Y2gzMihFcXVhbCwgZGVzdCwgVHJ1c3RlZEltbTMyKDB4N2ZmZmZmZmYpKTsKICAgICB9CiAKICAg
ICAvLyBDb252ZXJ0ICdzcmMnIHRvIGFuIGludGVnZXIsIGFuZCBwbGFjZXMgdGhlIHJlc3VsdGlu
ZyAnZGVzdCcuCkBAIC0yMjE4LDI4ICsyNjMxLDQzIEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJh
bmNoRG91YmxlTm9uWmVybyhGUFJlZ2lzdGVySUQgcmVnLCBGUFJlZ2lzdGVySUQgc2NyYXRjaCkK
ICAgICB7Ci0jaWYgV1RGX01JUFNfSVNBX1JFVigyKSAmJiBXVEZfTUlQU19GUDY0Ci0gICAgICAg
IG1fYXNzZW1ibGVyLm10YzEoTUlQU1JlZ2lzdGVyczo6emVybywgc2NyYXRjaCk7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLm10aGMxKE1JUFNSZWdpc3RlcnM6Onplcm8sIHNjcmF0Y2gpOwotI2Vsc2UK
LSAgICAgICAgbV9hc3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzY3JhdGNoKTsK
LSAgICAgICAgbV9hc3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBGUFJlZ2lzdGVy
SUQoc2NyYXRjaCArIDEpKTsKLSNlbmRpZgorICAgICAgICBtX2Fzc2VtYmxlci52bW92KHNjcmF0
Y2gsIE1JUFNSZWdpc3RlcnM6Onplcm8sIE1JUFNSZWdpc3RlcnM6Onplcm8pOwogICAgICAgICBy
ZXR1cm4gYnJhbmNoRG91YmxlKERvdWJsZU5vdEVxdWFsLCByZWcsIHNjcmF0Y2gpOwogICAgIH0K
IAogICAgIEp1bXAgYnJhbmNoRG91YmxlWmVyb09yTmFOKEZQUmVnaXN0ZXJJRCByZWcsIEZQUmVn
aXN0ZXJJRCBzY3JhdGNoKQogICAgIHsKLSNpZiBXVEZfTUlQU19JU0FfUkVWKDIpICYmIFdURl9N
SVBTX0ZQNjQKLSAgICAgICAgbV9hc3NlbWJsZXIubXRjMShNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBz
Y3JhdGNoKTsKLSAgICAgICAgbV9hc3NlbWJsZXIubXRoYzEoTUlQU1JlZ2lzdGVyczo6emVybywg
c2NyYXRjaCk7Ci0jZWxzZQotICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6
Onplcm8sIHNjcmF0Y2gpOwotICAgICAgICBtX2Fzc2VtYmxlci5tdGMxKE1JUFNSZWdpc3RlcnM6
Onplcm8sIEZQUmVnaXN0ZXJJRChzY3JhdGNoICsgMSkpOwotI2VuZGlmCisgICAgICAgIG1fYXNz
ZW1ibGVyLnZtb3Yoc2NyYXRjaCwgTUlQU1JlZ2lzdGVyczo6emVybywgTUlQU1JlZ2lzdGVyczo6
emVybyk7CiAgICAgICAgIHJldHVybiBicmFuY2hEb3VibGUoRG91YmxlRXF1YWxPclVub3JkZXJl
ZCwgcmVnLCBzY3JhdGNoKTsKICAgICB9CiAKKyAgICAvLyBJbnZlcnQgYSByZWxhdGlvbmFsIGNv
bmRpdGlvbiwgZS5nLiA9PSBiZWNvbWVzICE9LCA8IGJlY29tZXMgPj0sIGV0Yy4KKyAgICBzdGF0
aWMgUmVsYXRpb25hbENvbmRpdGlvbiBpbnZlcnQoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kKQor
ICAgIHsKKyAgICAgICAgUmVsYXRpb25hbENvbmRpdGlvbiByOworICAgICAgICBpZiAoY29uZCA9
PSBFcXVhbCkKKyAgICAgICAgICAgIHIgPSBOb3RFcXVhbDsKKyAgICAgICAgZWxzZSBpZiAoY29u
ZCA9PSBOb3RFcXVhbCkKKyAgICAgICAgICAgIHIgPSBFcXVhbDsKKyAgICAgICAgZWxzZSBpZiAo
Y29uZCA9PSBBYm92ZSkKKyAgICAgICAgICAgIHIgPSBCZWxvd09yRXF1YWw7CisgICAgICAgIGVs
c2UgaWYgKGNvbmQgPT0gQWJvdmVPckVxdWFsKQorICAgICAgICAgICAgciA9IEJlbG93OworICAg
ICAgICBlbHNlIGlmIChjb25kID09IEJlbG93KQorICAgICAgICAgICAgciA9IEFib3ZlT3JFcXVh
bDsKKyAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBCZWxvd09yRXF1YWwpCisgICAgICAgICAgICBy
ID0gQWJvdmU7CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gR3JlYXRlclRoYW4pCisgICAgICAg
ICAgICByID0gTGVzc1RoYW5PckVxdWFsOworICAgICAgICBlbHNlIGlmIChjb25kID09IEdyZWF0
ZXJUaGFuT3JFcXVhbCkKKyAgICAgICAgICAgIHIgPSBMZXNzVGhhbjsKKyAgICAgICAgZWxzZSBp
ZiAoY29uZCA9PSBMZXNzVGhhbikKKyAgICAgICAgICAgIHIgPSBHcmVhdGVyVGhhbk9yRXF1YWw7
CisgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gTGVzc1RoYW5PckVxdWFsKQorICAgICAgICAgICAg
ciA9IEdyZWF0ZXJUaGFuOworICAgICAgICByZXR1cm4gcjsKKyAgICB9CisKICAgICB2b2lkIG5v
cCgpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKQEAgLTIyNTIsMTIgKzI2ODAs
MTIgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgcmVwbGFjZVdpdGhKdW1wKENvZGVMb2Nh
dGlvbkxhYmVsIGluc3RydWN0aW9uU3RhcnQsIENvZGVMb2NhdGlvbkxhYmVsIGRlc3RpbmF0aW9u
KQogICAgIHsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
TUlQU0Fzc2VtYmxlcjo6cmVwbGFjZVdpdGhKdW1wKGluc3RydWN0aW9uU3RhcnQuZGF0YUxvY2F0
aW9uKCksIGRlc3RpbmF0aW9uLmRhdGFMb2NhdGlvbigpKTsKICAgICB9CiAgICAgCiAgICAgc3Rh
dGljIHB0cmRpZmZfdCBtYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkKICAgICB7Ci0gICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIE1JUFNBc3NlbWJsZXI6Om1heEp1
bXBSZXBsYWNlbWVudFNpemUoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaAppbmRleCBmYTBmNWUw
Li41NzNkOGRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2Vt
Ymx5SGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlI
ZWxwZXJzLmgKQEAgLTkzLDYgKzkzLDIzIEBAIHB1YmxpYzoKICAgICB9CiAjZW5kaWYKIAorI2lm
IENQVShNSVBTKQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBwcmVzZXJ2ZVJldHVybkFkZHJlc3NB
ZnRlckNhbGwoUmVnaXN0ZXJJRCByZWcpCisgICAgeworICAgICAgICBtb3ZlKHJldHVybkFkZHJl
c3NSZWdpc3RlciwgcmVnKTsKKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgcmVzdG9y
ZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oUmVnaXN0ZXJJRCByZWcpCisgICAgeworICAgICAg
ICBtb3ZlKHJlZywgcmV0dXJuQWRkcmVzc1JlZ2lzdGVyKTsKKyAgICB9CisKKyAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oQWRkcmVzcyBhZGRy
ZXNzKQorICAgIHsKKyAgICAgICAgbG9hZFB0cihhZGRyZXNzLCByZXR1cm5BZGRyZXNzUmVnaXN0
ZXIpOworICAgIH0KKyNlbmRpZgorCiAgICAgdm9pZCBlbWl0R2V0RnJvbUNhbGxGcmFtZUhlYWRl
clB0cihKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSwgR1BSUmVnIHRvKQogICAg
IHsKICAgICAgICAgbG9hZFB0cihBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBl
bnRyeSAqIHNpemVvZihSZWdpc3RlcikpLCB0byk7CkBAIC0xOTMsNyArMjEwLDcgQEAgcHVibGlj
OgogICAgICAgICBtb3ZlKFRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlci0+YWN0aXZlTGVuZ3Ro
UHRyKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIo
c2NyYXRjaFNpemUpLCBHUFJJbmZvOjpyZWdUMCk7CiAKLSNpZiBDUFUoWDg2XzY0KSB8fCBDUFUo
QVJNKQorI2lmIENQVShYODZfNjQpIHx8IENQVShBUk0pIHx8IENQVShNSVBTKQogICAgICAgICBt
b3ZlKFRydXN0ZWRJbW1QdHIoYnVmZmVyKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsKICAgICAg
ICAgbW92ZShUcnVzdGVkSW1tUHRyKGFyZ3VtZW50KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsK
ICAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxI
ZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NDYWxsSGVscGVycy5oCmlu
ZGV4IDhhZGRlMDUuLjNkOTlmNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ0NhbGxIZWxwZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
Q2FsbEhlbHBlcnMuaApAQCAtNTc2LDYgKzU3NiwzOSBAQCBwdWJsaWM6CiAgICAgICAgIHBva2Uo
R1BSSW5mbzo6bm9uQXJnR1BSMCk7CiAgICAgfQogI2VuZGlmIC8vIENQVShBUk1fSEFSREZQKQor
I2VsaWYgQ1BVKE1JUFMpCisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzKEZQ
UlJlZyBhcmcxKQorICAgIHsKKyAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1
bWVudEZQUjApOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50
cyhGUFJSZWcgYXJnMSwgRlBSUmVnIGFyZzIpCisgICAgeworICAgICAgICBpZiAoYXJnMiAhPSBG
UFJJbmZvOjphcmd1bWVudEZQUjApIHsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMSwgRlBS
SW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICAgICAgICAgIG1vdmVEb3VibGUoYXJnMiwgRlBSSW5m
bzo6YXJndW1lbnRGUFIxKTsKKyAgICAgICAgfSBlbHNlIGlmIChhcmcxICE9IEZQUkluZm86OmFy
Z3VtZW50RlBSMSkgeworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcyLCBGUFJJbmZvOjphcmd1
bWVudEZQUjEpOworICAgICAgICAgICAgbW92ZURvdWJsZShhcmcxLCBGUFJJbmZvOjphcmd1bWVu
dEZQUjApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gU3dhcCBhcmcxLCBhcmcy
LgorICAgICAgICAgICAgc3dhcERvdWJsZShGUFJJbmZvOjphcmd1bWVudEZQUjAsIEZQUkluZm86
OmFyZ3VtZW50RlBSMSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEZQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikK
KyAgICB7CisgICAgICAgIGFzc2VtYmxlcigpLnZtb3YoR1BSSW5mbzo6YXJndW1lbnRHUFIyLCBH
UFJJbmZvOjphcmd1bWVudEdQUjMsIGFyZzEpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgICAgICBwb2tlKGFyZzIs
IDQpOworICAgIH0KKworICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBGUFJSZWcgYXJnMykKKyAgICB7Cisg
ICAgICAgIHNldHVwU3R1YkFyZ3VtZW50cyhhcmcxLCBhcmcyKTsKKyAgICAgICAgbW92ZShHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICAgICAg
cG9rZShhcmczLCA0KTsKKyAgICB9CiAjZWxzZQogI2Vycm9yICJERkcgSklUIG5vdCBzdXBwb3J0
ZWQgb24gdGhpcyBwbGF0Zm9ybS4iCiAjZW5kaWYKQEAgLTgwMywxMTkgKzgzNiwxMjYgQEAgcHVi
bGljOgogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIHN1aXRhYmxlIGZvciBhbnkgY2FsbGluZyBj
b252ZW50aW9uIHRoYXQgcHJvdmlkZXMgZm9yCiAgICAgLy8gZXhhY3RseSA0IGFyZ3VtZW50IHJl
Z2lzdGVycywgZS5nLiBBUk12Ny4KICNpZiBOVU1CRVJfT0ZfQVJHVU1FTlRfUkVHSVNURVJTID09
IDQKKworI2lmIENQVShNSVBTKQorI2RlZmluZSBQT0tFX0FSR1VNRU5UX09GRlNFVCA0CisjZWxz
ZQorI2RlZmluZSBQT0tFX0FSR1VNRU5UX09GRlNFVCAwCisjZW5kaWYKKwogICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQUlJl
ZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFy
ZzQpOworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAgICAg
c2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAog
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVn
IGFyZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQpCiAgICAg
ewotICAgICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRf
T0ZGU0VUKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIs
IGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIFRydXN0ZWRJbW1QdHIgYXJnMiwgVHJ1c3RlZEltbTMy
IGFyZzMsIEdQUlJlZyBhcmc0KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAg
cG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09GRlNFVCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBhcmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBUcnVzdGVk
SW1tUHRyIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgR1BSUmVnIGFyZzUp
CiAgICAgewotICAgICAgICBwb2tlKGFyZzUsIDEpOwotICAgICAgICBwb2tlKGFyZzQpOworICAg
ICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7CisgICAgICAgIHBva2Uo
YXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhF
eGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIs
IFRydXN0ZWRJbW0zMiBhcmczLCBUcnVzdGVkSW1tMzIgYXJnNCkKICAgICB7Ci0gICAgICAgIHBv
a2UoYXJnNCk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwogICAg
ICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAg
fQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShU
cnVzdGVkSW1tMzIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcg
YXJnNCkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2UoYXJnNCwgUE9L
RV9BUkdVTUVOVF9PRkZTRVQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUo
YXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBh
cmczLCBUcnVzdGVkSW1tUHRyIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFyZzQpOworICAg
ICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAgICAgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoR1BSUmVnIGFyZzEsIEdQ
UlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQogICAgIHsK
LSAgICAgICAgcG9rZShhcmc1LCAxKTsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgcG9r
ZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOworICAgICAgICBwb2tlKGFyZzQsIFBP
S0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFyZzEsIEdQUlJlZyBhcmcyLCBH
UFJSZWcgYXJnMywgR1BSUmVnIGFyZzQpCiAgICAgewotICAgICAgICBwb2tlKGFyZzQpOworICAg
ICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAgICAgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbVB0ciBhcmc0KQogICAgIHsK
LSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAgICAgcG9rZShhcmc0LCBQT0tFX0FSR1VNRU5UX09G
RlNFVCk7CiAgICAgICAgIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBh
cmczKTsKICAgICB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMiwgVHJ1c3RlZEltbTMyIGFy
ZzMsIFRydXN0ZWRJbW1QdHIgYXJnNCkKICAgICB7Ci0gICAgICAgIHBva2UoYXJnNCk7CisgICAg
ICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwogICAgICAgICBzZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJn
MSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCkKICAgICB7Ci0g
ICAgICAgIHBva2UoYXJnNCk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZT
RVQpOwogICAgICAgICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJn
Myk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShHUFJSZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJS
ZWcgYXJnNCwgR1BSUmVnIGFyZzUpCiAgICAgewotICAgICAgICBwb2tlKGFyZzUsIDEpOwotICAg
ICAgICBwb2tlKGFyZzQpOworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VU
ICsgMSk7CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwogICAgICAg
ICBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQog
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIsIFRydXN0ZWRJbW0zMiBhcmczLCBHUFJSZWcgYXJnNCwgVHJ1
c3RlZEltbTMyIGFyZzUpCiAgICAgewotICAgICAgICBwb2tlKGFyZzUsIDEpOwotICAgICAgICBw
b2tlKGFyZzQpOworICAgICAgICBwb2tlKGFyZzUsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUICsgMSk7
CisgICAgICAgIHBva2UoYXJnNCwgUE9LRV9BUkdVTUVOVF9PRkZTRVQpOwogICAgICAgICBzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgYXJnMyk7CiAgICAgfQogCiAgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1t
MzIgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczLCBHUFJSZWcgYXJnNCwgVHJ1c3RlZElt
bVB0ciBhcmc1KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCAxKTsKLSAgICAgICAgcG9rZShh
cmc0KTsKKyAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOworICAg
ICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAgICAgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgVHJ1c3RlZEltbTMyIGFyZzQsIFRydXN0ZWRJ
bW0zMiBhcmc1KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCAxKTsKLSAgICAgICAgcG9rZShh
cmc0KTsKKyAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOworICAg
ICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAgICAgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFy
ZzEsIFRydXN0ZWRJbW0zMiBhcmcyLCBUcnVzdGVkSW1tMzIgYXJnMywgR1BSUmVnIGFyZzQsIEdQ
UlJlZyBhcmc1KQogICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCAxKTsKLSAgICAgICAgcG9rZShh
cmc0KTsKKyAgICAgICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOworICAg
ICAgICBwb2tlKGFyZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAgICAgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIAogICAgIEFMV0FZ
U19JTkxJTkUgdm9pZCBzZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbTMyIGFy
ZzEsIEdQUlJlZyBhcmcyLCBHUFJSZWcgYXJnMywgR1BSUmVnIGFyZzQsIEdQUlJlZyBhcmc1KQog
ICAgIHsKLSAgICAgICAgcG9rZShhcmc1LCAxKTsKLSAgICAgICAgcG9rZShhcmc0KTsKKyAgICAg
ICAgcG9rZShhcmc1LCBQT0tFX0FSR1VNRU5UX09GRlNFVCArIDEpOworICAgICAgICBwb2tlKGFy
ZzQsIFBPS0VfQVJHVU1FTlRfT0ZGU0VUKTsKICAgICAgICAgc2V0dXBBcmd1bWVudHNXaXRoRXhl
Y1N0YXRlKGFyZzEsIGFyZzIsIGFyZzMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZQUkluZm8uaAppbmRleCAxN2FhYTdkLi5lMThlYzA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZQUkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZQUkluZm8uaApAQCAtMTY0LDYgKzE2NCw3NCBAQCBwdWJsaWM6CiAKICNlbmRp
ZgogCisjaWYgQ1BVKE1JUFMpCisKK2NsYXNzIEZQUkluZm8geworcHVibGljOgorICAgIHR5cGVk
ZWYgRlBSUmVnIFJlZ2lzdGVyVHlwZTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVy
T2ZSZWdpc3RlcnMgPSA2OworCisgICAgLy8gVGVtcG9yYXJ5IHJlZ2lzdGVycy4KKyAgICBzdGF0
aWMgY29uc3QgRlBSUmVnIGZwUmVnVDAgPSBNSVBTUmVnaXN0ZXJzOjpmMDsKKyAgICBzdGF0aWMg
Y29uc3QgRlBSUmVnIGZwUmVnVDEgPSBNSVBTUmVnaXN0ZXJzOjpmNDsKKyAgICBzdGF0aWMgY29u
c3QgRlBSUmVnIGZwUmVnVDIgPSBNSVBTUmVnaXN0ZXJzOjpmNjsKKyAgICBzdGF0aWMgY29uc3Qg
RlBSUmVnIGZwUmVnVDMgPSBNSVBTUmVnaXN0ZXJzOjpmODsKKyAgICBzdGF0aWMgY29uc3QgRlBS
UmVnIGZwUmVnVDQgPSBNSVBTUmVnaXN0ZXJzOjpmMTA7CisgICAgc3RhdGljIGNvbnN0IEZQUlJl
ZyBmcFJlZ1Q1ID0gTUlQU1JlZ2lzdGVyczo6ZjE4OworCisgICAgc3RhdGljIGNvbnN0IEZQUlJl
ZyByZXR1cm5WYWx1ZUZQUiA9IE1JUFNSZWdpc3RlcnM6OmYwOworCisgICAgc3RhdGljIGNvbnN0
IEZQUlJlZyBhcmd1bWVudEZQUjAgPSBNSVBTUmVnaXN0ZXJzOjpmMTI7CisgICAgc3RhdGljIGNv
bnN0IEZQUlJlZyBhcmd1bWVudEZQUjEgPSBNSVBTUmVnaXN0ZXJzOjpmMTQ7CisKKyAgICBzdGF0
aWMgRlBSUmVnIHRvUmVnaXN0ZXIodW5zaWduZWQgaW5kZXgpCisgICAgeworICAgICAgICBzdGF0
aWMgY29uc3QgRlBSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0gewor
ICAgICAgICAgICAgZnBSZWdUMCwgZnBSZWdUMSwgZnBSZWdUMiwgZnBSZWdUMywgZnBSZWdUNCwg
ZnBSZWdUNSB9OworCisgICAgICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mUmVnaXN0ZXJzKTsK
KyAgICAgICAgcmV0dXJuIHJlZ2lzdGVyRm9ySW5kZXhbaW5kZXhdOworICAgIH0KKworICAgIHN0
YXRpYyB1bnNpZ25lZCB0b0luZGV4KEZQUlJlZyByZWcpCisgICAgeworICAgICAgICBBU1NFUlQo
cmVnICE9IEludmFsaWRGUFJSZWcpOworICAgICAgICBBU1NFUlQocmVnIDwgMjApOworICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW5kZXhGb3JSZWdpc3RlclsyMF0gPSB7CisgICAgICAg
ICAgICAwLCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LAorICAgICAg
ICAgICAgMSwgSW52YWxpZEluZGV4LCAyLCBJbnZhbGlkSW5kZXgsCisgICAgICAgICAgICAzLCBJ
bnZhbGlkSW5kZXgsIDQsIEludmFsaWRJbmRleCwKKyAgICAgICAgICAgIEludmFsaWRJbmRleCwg
SW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwKKyAgICAgICAgICAgIElu
dmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCA1LCBJbnZhbGlkSW5kZXgsCisgICAgICAgIH07Cisg
ICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IGluZGV4Rm9yUmVnaXN0ZXJbcmVnXTsKKyAgICAgICAg
QVNTRVJUKHJlc3VsdCAhPSBJbnZhbGlkSW5kZXgpOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoRlBSUmVnIHJlZykKKyAg
ICB7CisgICAgICAgIEFTU0VSVChyZWcgIT0gSW52YWxpZEZQUlJlZyk7CisgICAgICAgIEFTU0VS
VChyZWcgPCAzMik7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBuYW1lRm9yUmVnaXN0ZXJb
MzJdID0geworICAgICAgICAgICAgImYwIiwgImYxIiwgImYyIiwgImYzIiwKKyAgICAgICAgICAg
ICJmNCIsICJmNSIsICJmNiIsICJmNyIsCisgICAgICAgICAgICAiZjgiLCAiZjkiLCAiZjEwIiwg
ImYxMSIsCisgICAgICAgICAgICAiZjEyIiwgImYxMyIsICJmMTQiLCAiZjE1IgorICAgICAgICAg
ICAgImYxNiIsICJmMTciLCAiZjE4IiwgImYxOSIKKyAgICAgICAgICAgICJmMjAiLCAiZjIxIiwg
ImYyMiIsICJmMjMiCisgICAgICAgICAgICAiZjI0IiwgImYyNSIsICJmMjYiLCAiZjI3IgorICAg
ICAgICAgICAgImYyOCIsICJmMjkiLCAiZjMwIiwgImYzMSIKKyAgICAgICAgfTsKKyAgICAgICAg
cmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOworICAgIH0KK3ByaXZhdGU6CisKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgSW52YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsKK307CisKKyNlbmRp
ZgorCiB0eXBlZGVmIFJlZ2lzdGVyQmFuazxGUFJJbmZvPjo6aXRlcmF0b3IgZnByX2l0ZXJhdG9y
OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R1BSSW5mby5oCmluZGV4IDNkMDc1NTYuLmFhNjM0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR1BSSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR1BSSW5mby5oCkBAIC00NjEsNiArNDYxLDczIEBAIHByaXZhdGU6CiAKICNlbmRpZgog
CisjaWYgQ1BVKE1JUFMpCisjZGVmaW5lIE5VTUJFUl9PRl9BUkdVTUVOVF9SRUdJU1RFUlMgNAor
CitjbGFzcyBHUFJJbmZvIHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEdQUlJlZyBSZWdpc3RlclR5
cGU7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mUmVnaXN0ZXJzID0gNjsKKwor
ICAgIC8vIFRlbXBvcmFyeSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdU
MCA9IE1JUFNSZWdpc3RlcnM6OnYwOworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDEgPSBN
SVBTUmVnaXN0ZXJzOjp2MTsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1QyID0gTUlQU1Jl
Z2lzdGVyczo6dDQ7CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZWdUMyA9IE1JUFNSZWdpc3Rl
cnM6OnQ1OworICAgIHN0YXRpYyBjb25zdCBHUFJSZWcgcmVnVDQgPSBNSVBTUmVnaXN0ZXJzOjp0
NjsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJlZ1Q1ID0gTUlQU1JlZ2lzdGVyczo6dDc7Cisg
ICAgLy8gVGhlc2UgcmVnaXN0ZXJzIG1hdGNoIHRoZSBiYXNlbGluZSBKSVQuCisgICAgc3RhdGlj
IGNvbnN0IEdQUlJlZyBjYWNoZWRSZXN1bHRSZWdpc3RlciA9IHJlZ1QwOworICAgIHN0YXRpYyBj
b25zdCBHUFJSZWcgY2FjaGVkUmVzdWx0UmVnaXN0ZXIyID0gcmVnVDE7CisgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyBjYWxsRnJhbWVSZWdpc3RlciA9IE1JUFNSZWdpc3RlcnM6OnMwOworICAgIC8v
IFRoZXNlIGNvbnN0YW50cyBwcm92aWRlIHRoZSBuYW1lcyBmb3IgdGhlIGdlbmVyYWwgcHVycG9z
ZSBhcmd1bWVudCAmIHJldHVybiB2YWx1ZSByZWdpc3RlcnMuCisgICAgc3RhdGljIGNvbnN0IEdQ
UlJlZyBhcmd1bWVudEdQUjAgPSBNSVBTUmVnaXN0ZXJzOjphMDsKKyAgICBzdGF0aWMgY29uc3Qg
R1BSUmVnIGFyZ3VtZW50R1BSMSA9IE1JUFNSZWdpc3RlcnM6OmExOworICAgIHN0YXRpYyBjb25z
dCBHUFJSZWcgYXJndW1lbnRHUFIyID0gTUlQU1JlZ2lzdGVyczo6YTI7CisgICAgc3RhdGljIGNv
bnN0IEdQUlJlZyBhcmd1bWVudEdQUjMgPSBNSVBTUmVnaXN0ZXJzOjphMzsKKyAgICBzdGF0aWMg
Y29uc3QgR1BSUmVnIG5vbkFyZ0dQUjAgPSByZWdUMjsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVn
IG5vbkFyZ0dQUjEgPSByZWdUMzsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIG5vbkFyZ0dQUjIg
PSByZWdUNDsKKyAgICBzdGF0aWMgY29uc3QgR1BSUmVnIHJldHVyblZhbHVlR1BSID0gcmVnVDA7
CisgICAgc3RhdGljIGNvbnN0IEdQUlJlZyByZXR1cm5WYWx1ZUdQUjIgPSByZWdUMTsKKyAgICBz
dGF0aWMgY29uc3QgR1BSUmVnIG5vblByZXNlcnZlZE5vblJldHVybkdQUiA9IHJlZ1Q1OworCisg
ICAgc3RhdGljIEdQUlJlZyB0b1JlZ2lzdGVyKHVuc2lnbmVkIGluZGV4KQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZSZWdpc3RlcnMpOworICAgICAgICBzdGF0aWMgY29u
c3QgR1BSUmVnIHJlZ2lzdGVyRm9ySW5kZXhbbnVtYmVyT2ZSZWdpc3RlcnNdID0geyByZWdUMCwg
cmVnVDEsIHJlZ1QyLCByZWdUMywgcmVnVDQsIHJlZ1Q1IH07CisgICAgICAgIHJldHVybiByZWdp
c3RlckZvckluZGV4W2luZGV4XTsKKyAgICB9CisKKyAgICBzdGF0aWMgdW5zaWduZWQgdG9JbmRl
eChHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVn
KTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDE2KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIGluZGV4Rm9yUmVnaXN0ZXJbMTZdID0geyBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwg
MCwgMSwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZElu
ZGV4LCBJbnZhbGlkSW5kZXgsIEludmFsaWRJbmRleCwgSW52YWxpZEluZGV4LCBJbnZhbGlkSW5k
ZXgsIDIsIDMsIDQsIDUgfTsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gaW5kZXhGb3JSZWdp
c3RlcltyZWddOworICAgICAgICBBU1NFUlQocmVzdWx0ICE9IEludmFsaWRJbmRleCk7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVn
TmFtZShHUFJSZWcgcmVnKQorICAgIHsKKyAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BS
UmVnKTsKKyAgICAgICAgQVNTRVJUKHJlZyA8IDE2KTsKKyAgICAgICAgc3RhdGljIGNvbnN0IGNo
YXIqIG5hbWVGb3JSZWdpc3RlclsxNl0gPSB7CisgICAgICAgICAgICAiemVybyIsICJhdCIsICJ2
MCIsICJ2MSIsCisgICAgICAgICAgICAiYTAiLCAiYTEiLCAiYTIiLCAiYTMiLAorICAgICAgICAg
ICAgInQwIiwgInQxIiwgInQyIiwgInQzIiwKKyAgICAgICAgICAgICJ0NCIsICJ0NSIsICJ0NiIs
ICJ0NyIKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOwor
ICAgIH0KK3ByaXZhdGU6CisKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW52YWxpZEluZGV4
ID0gMHhmZmZmZmZmZjsKK307CisKKyNlbmRpZgorCiB0eXBlZGVmIFJlZ2lzdGVyQmFuazxHUFJJ
bmZvPjo6aXRlcmF0b3IgZ3ByX2l0ZXJhdG9yOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZH
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXgg
MDNiNzI1ZC4uZDQ0MjUwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaApAQCAtMTI0NCw3ICsxMjQ0LDcgQEAgcHVibGljOgogCiAvLyBFbmNvZGVk
SlNWYWx1ZSBpbiBKU1ZBTFVFMzJfNjQgaXMgYSA2NC1iaXQgaW50ZWdlci4gV2hlbiBiZWluZyBj
b21waWxlZCBpbiBBUk0gRUFCSSwgaXQgbXVzdCBiZSBhbGlnbmVkIGV2ZW4tbnVtYmVyZWQgcmVn
aXN0ZXIgKHIwLCByMiBvciBbc3BdKS4KIC8vIFRvIGF2b2lkIGFzc2VtYmxpZXMgZnJvbSB1c2lu
ZyB3cm9uZyByZWdpc3RlcnMsIGxldCdzIG9jY3VweSByMSBvciByMyB3aXRoIGEgZHVtbXkgYXJn
dW1lbnQgd2hlbiBuZWNlc3NhcnkuCi0jaWYgQ09NUElMRVJfU1VQUE9SVFMoRUFCSSkgJiYgQ1BV
KEFSTSkKKyNpZiAoQ09NUElMRVJfU1VQUE9SVFMoRUFCSSkgJiYgQ1BVKEFSTSkpIHx8IENQVShN
SVBTKQogI2RlZmluZSBFQUJJXzMyQklUX0RVTU1ZX0FSRyAgICAgIFRydXN0ZWRJbW0zMigwKSwK
ICNlbHNlCiAjZGVmaW5lIEVBQklfMzJCSVRfRFVNTVlfQVJHCkBAIC0xNjk0LDcgKzE2OTQsNyBA
QCBwdWJsaWM6CiAgICAgfQogI2VuZGlmCiAgICAgCi0jaWYgIWRlZmluZWQoTkRFQlVHKSAmJiAh
Q1BVKEFSTSkKKyNpZiAhZGVmaW5lZChOREVCVUcpICYmICFDUFUoQVJNKSAmJiAhQ1BVKE1JUFMp
CiAgICAgdm9pZCBwcmVwYXJlRm9yRXh0ZXJuYWxDYWxsKCkKICAgICB7CiAgICAgICAgIC8vIFdl
J3JlIGFib3V0IHRvIGNhbGwgb3V0IHRvIGEgIm5hdGl2ZSIgaGVscGVyIGZ1bmN0aW9uLiBUaGUg
aGVscGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNl
SklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKaW5kZXgg
N2ZkZWFmMC4uNDhhZDZiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
U0ludGVyZmFjZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZh
Y2VKSVQuaApAQCAtMTI1LDYgKzEyNSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3Rh
dGljIGNvbnN0IFJlZ2lzdGVySUQgY2FjaGVkUmVzdWx0UmVnaXN0ZXIgPSBNSVBTUmVnaXN0ZXJz
Ojp2MDsKICAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgZmlyc3RBcmd1bWVudFJlZ2lz
dGVyID0gTUlQU1JlZ2lzdGVyczo6YTA7CiAgICAgICAgIAorI2lmIEVOQUJMRShWQUxVRV9QUk9G
SUxFUikKKyAgICAgICAgc3RhdGljIGNvbnN0IFJlZ2lzdGVySUQgYnVja2V0Q291bnRlclJlZ2lz
dGVyID0gTUlQU1JlZ2lzdGVyczo6czM7CisjZW5kaWYKKwogICAgICAgICAvLyByZWdUMCBtdXN0
IGJlIHYwIGZvciByZXR1cm5pbmcgYSAzMi1iaXQgdmFsdWUuCiAgICAgICAgIHN0YXRpYyBjb25z
dCBSZWdpc3RlcklEIHJlZ1QwID0gTUlQU1JlZ2lzdGVyczo6djA7CiAgICAgICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAppbmRleCA1ZDQ3YWI5Li5j
MDJmMzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
aApAQCAtMTQxLDE0ICsxNDEsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICB9CiAKLSAgICAgICAgc3RhdGljIHNpemVfdCBhbGxvY2F0aW9u
U2l6ZShzaXplX3QgYnVmZmVyU2l6ZSkgeyByZXR1cm4gc2l6ZW9mKHNpemVfdCkgKyBidWZmZXJT
aXplOyB9CisgICAgICAgIHN0YXRpYyBzaXplX3QgYWxsb2NhdGlvblNpemUoc2l6ZV90IGJ1ZmZl
clNpemUpIHsgcmV0dXJuIHNpemVvZihTY3JhdGNoQnVmZmVyKSArIGJ1ZmZlclNpemU7IH0KICAg
ICAgICAgdm9pZCBzZXRBY3RpdmVMZW5ndGgoc2l6ZV90IGFjdGl2ZUxlbmd0aCkgeyBtX2FjdGl2
ZUxlbmd0aCA9IGFjdGl2ZUxlbmd0aDsgfQogICAgICAgICBzaXplX3QgYWN0aXZlTGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gbV9hY3RpdmVMZW5ndGg7IH07CiAgICAgICAgIHNpemVfdCogYWN0aXZl
TGVuZ3RoUHRyKCkgeyByZXR1cm4gJm1fYWN0aXZlTGVuZ3RoOyB9OwogICAgICAgICB2b2lkKiBk
YXRhQnVmZmVyKCkgeyByZXR1cm4gbV9idWZmZXI7IH0KIAogICAgICAgICBzaXplX3QgbV9hY3Rp
dmVMZW5ndGg7CisjaWYgQ1BVKE1JUFMpICYmIChkZWZpbmVkIFdURl9NSVBTX0FSQ0hfUkVWICYm
IFdURl9NSVBTX0FSQ0hfUkVWID09IDIpCisgICAgICAgIHZvaWQqIG1fYnVmZmVyWzBdIF9fYXR0
cmlidXRlX18oKGFsaWduZWQoOCkpKTsKKyNlbHNlCiAgICAgICAgIHZvaWQqIG1fYnVmZmVyWzBd
OworI2VuZGlmCiAgICAgfTsKICNpZiBDT01QSUxFUihNU1ZDKQogI3ByYWdtYSB3YXJuaW5nKHBv
cCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKaW5kZXggMGEzOWNmMS4uN2Y2NTVmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMy0wMi0x
OCAgQmFsYXpzIEtpbHZhZHkgIDxraWx2YWR5YkBob21lamlubmkuY29tPgorCisgICAgICAgIE1J
UFMgREZHIGltcGxlbWVudGF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTAxMzI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgREZHIGltcGxlbWVudGF0aW9uIGZvciBNSVBTLgorCisgICAgICAgICog
d3RmL1BsYXRmb3JtLmg6CisKIDIwMTMtMDItMTggIExhc3psbyBHb21ib3MgIDxsLmdvbWJvc0Bz
YW1zdW5nLmNvbT4KIAogICAgICAgICBNb3ZlIEVOQUJMRSBtYWNyb3MgZm9yIFdlYkNvcmUgb3V0
IGZyb20gUGxhdGZvcm0uaApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaCBi
L1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtLmgKaW5kZXggMTY5ODI0Ny4uMmQ5MDM1OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9QbGF0
Zm9ybS5oCkBAIC04MTgsNiArODE4LDEwIEBACiAjaWYgQ1BVKEFSTV9UUkFESVRJT05BTCkKICNk
ZWZpbmUgRU5BQkxFX0RGR19KSVQgMQogI2VuZGlmCisvKiBFbmFibGUgdGhlIERGRyBKSVQgb24g
TUlQUy4gKi8KKyNpZiBDUFUoTUlQUykKKyNkZWZpbmUgRU5BQkxFX0RGR19KSVQgMQorI2VuZGlm
CiAjZW5kaWYKIAogLyogSWYgdGhlIGppdCBpcyBub3QgYXZhaWxhYmxlLCBlbmFibGUgdGhlIExM
SW50IEMgTG9vcDogKi8K
</data>

          </attachment>
      

    </bug>

</bugzilla>