<?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>98733</bug_id>
          
          <creation_ts>2012-10-09 02:30:51 -0700</creation_ts>
          <short_desc>[WK2] Add CustomFilterOperation serialization in ArgumentCoder.</short_desc>
          <delta_ts>2012-10-18 16:44:00 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>98990</blocked>
    
    <blocked>99775</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Dongseong Hwang">dongseong.hwang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abecsi</cc>
    
    <cc>andersca</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>eric</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>menard</cc>
    
    <cc>noam</cc>
    
    <cc>ossy</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>737588</commentid>
    <comment_count>0</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-09 02:30:51 -0700</bug_when>
    <thetext>Add ArgumentCoders for CustomFilterOperation and all dependent classes.
Coordinated graphics will use this css shaders serialization when it enables CSS Shaders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737596</commentid>
    <comment_count>1</comment_count>
      <attachid>167718</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-09 02:47:43 -0700</bug_when>
    <thetext>Created attachment 167718
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737602</commentid>
    <comment_count>2</comment_count>
      <attachid>167718</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-09 03:00:28 -0700</bug_when>
    <thetext>Comment on attachment 167718
Patch

Attachment 167718 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14218639</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737612</commentid>
    <comment_count>3</comment_count>
      <attachid>167722</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-09 03:32:20 -0700</bug_when>
    <thetext>Created attachment 167722
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737649</commentid>
    <comment_count>4</comment_count>
      <attachid>167722</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-10-09 04:21:55 -0700</bug_when>
    <thetext>Comment on attachment 167722
Patch

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

&gt; Source/WebCore/GNUmakefile.list.am:4362
&gt; +	Source/WebCore/platform/graphics/filters/StillCustomFilterProgram.h \

How about we call it WebCustomFilterProgram, and put it in WebKit2/Shared?

&gt; Source/WebCore/rendering/style/StyleCustomFilterProgram.h:60
&gt; +    virtual bool isStyleCustomFilterProgram() const OVERRIDE { return true; }
&gt; +

Do you over have a StillCustomFilterProgram and a StyleCustomFilterProgram in the same process?
I don&apos;t think these comparisons are necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738187</commentid>
    <comment_count>5</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-09 14:31:43 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; How about we call it WebCustomFilterProgram, and put it in WebKit2/Shared?

Thanks for suggestions. I actually did not know where is the best place. :)
 
&gt; Do you over have a StillCustomFilterProgram and a StyleCustomFilterProgram in the same process?
&gt; I don&apos;t think these comparisons are necessary.

No, always lay in separate processes.
Absolutely!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738223</commentid>
    <comment_count>6</comment_count>
      <attachid>167854</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-09 14:59:22 -0700</bug_when>
    <thetext>Created attachment 167854
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738313</commentid>
    <comment_count>7</comment_count>
      <attachid>167854</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-10-09 16:29:45 -0700</bug_when>
    <thetext>Comment on attachment 167854
Patch

I don&apos;t think we want to allow sending arbitrary shader strings from the web process to the UI process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738348</commentid>
    <comment_count>8</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-10-09 17:14:57 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 167854 [details])
&gt; I don&apos;t think we want to allow sending arbitrary shader strings from the web process to the UI process.

We want to allow this for coordinated graphics (Qt/EFL).
Any opposition to doing this if it&apos;s guarded with USE(COORDINATED_GRAPHICS)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738418</commentid>
    <comment_count>9</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-10-09 18:38:37 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (From update of attachment 167854 [details] [details])
&gt; &gt; I don&apos;t think we want to allow sending arbitrary shader strings from the web process to the UI process.
&gt; 
&gt; We want to allow this for coordinated graphics (Qt/EFL).
&gt; Any opposition to doing this if it&apos;s guarded with USE(COORDINATED_GRAPHICS)?

Though in any case we would want to validate the shader first, and then serialize the CustomFilterValidatedProgram.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738486</commentid>
    <comment_count>10</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-09 21:01:52 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; (From update of attachment 167854 [details] [details] [details])
&gt; &gt; &gt; I don&apos;t think we want to allow sending arbitrary shader strings from the web process to the UI process.
&gt; &gt; 
&gt; &gt; We want to allow this for coordinated graphics (Qt/EFL).
&gt; &gt; Any opposition to doing this if it&apos;s guarded with USE(COORDINATED_GRAPHICS)?
CSS_FILTERS and CSS_SHADERS guard are already in the USE(COORDINATED_GRAPHICS).

&gt; 
&gt; Though in any case we would want to validate the shader first, and then serialize the CustomFilterValidatedProgram.

Thank Anders and Noam for very valid concerns.

The most critical requirement is that UI TexMap never execute author&apos;s arbitrary shaders.

I think there are two solutions:
1. As Noam mentioned, validate the shader first, and then serialize the CustomFilterValidatedProgram.
2. Serialize CustomFilterProgram, and validate the shader using CustomFilterValidatedProgram.

I prefer the second solution, because :
1. Texmap will receive CustomFilterOperation that has CustomFilterProgram as a member variable.
2. We can validate arbitrary shaders using ANGLE validator with the SH_CSS_SHADERS_SPEC flag like CustomFilterValidatedProgram does.
3. Texmap can reuse many custom filter classes without huge refactoring.

I support the third reason.
createCustomFilterEffect() in FilterEffectRenderer makes CustomFilterValidatedProgram and FECustomFilter from CustomFilterOperation. FECustomFilter plays a all role to render css shaders.
I think TexMap reuse FECustomFilter to render css shaders because TexMap can have CustomFilterProgram though we need to refactor FECustomFilter little. In conclusion, if we choose the second solution, we can enable css shaders in TexMap reusing existing custom filter classes.

If you don&apos;t mind, I want to enable css shaders in TexMap soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738490</commentid>
    <comment_count>11</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-10-09 21:12:37 -0700</bug_when>
    <thetext>Thank you for the explanation!
How about we guard all this with USE(COORDINATED_GRAPHICS), and move it out of WebCoreArgumentCoders.[h|cpp] tp WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.[h|cpp],

This way there would be no confusion about what this is used for.
Andersca, any issues with this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738544</commentid>
    <comment_count>12</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-09 22:07:38 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Thank you for the explanation!
&gt; How about we guard all this with USE(COORDINATED_GRAPHICS), and move it out of WebCoreArgumentCoders.[h|cpp] tp WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.[h|cpp],

It&apos;s good idea. I can do this in this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738785</commentid>
    <comment_count>13</comment_count>
      <attachid>167967</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-10 03:24:57 -0700</bug_when>
    <thetext>Created attachment 167967
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740621</commentid>
    <comment_count>14</comment_count>
      <attachid>167967</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-10-11 22:14:58 -0700</bug_when>
    <thetext>Comment on attachment 167967
Patch

Please rename StillCustomFilterProgram to WebCustomFilterProgram.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741408</commentid>
    <comment_count>15</comment_count>
      <attachid>168539</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-12 21:44:46 -0700</bug_when>
    <thetext>Created attachment 168539
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741411</commentid>
    <comment_count>16</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-12 21:54:16 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 167967 [details])
&gt; Please rename StillCustomFilterProgram to WebCustomFilterProgram.

Done.

I filed Bug 98990 to enable CSS Shaders in TexMap. If you don&apos;t mind, I want to enable css shaders in TexMap. I&apos;m afraid that I filed that bug by myself thought your team or you may be working on now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741444</commentid>
    <comment_count>17</comment_count>
      <attachid>168539</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-10-13 00:40:04 -0700</bug_when>
    <thetext>Comment on attachment 168539
Patch

Please use CoordinatedGraphicsArgumentCoders and not CoordinatedArgumentCoders (only noticed that now)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741445</commentid>
    <comment_count>18</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-10-13 00:43:33 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #14)
&gt; &gt; (From update of attachment 167967 [details] [details])
&gt; &gt; Please rename StillCustomFilterProgram to WebCustomFilterProgram.
&gt; 
&gt; Done.
&gt; 
&gt; I filed Bug 98990 to enable CSS Shaders in TexMap. If you don&apos;t mind, I want to enable css shaders in TexMap. I&apos;m afraid that I filed that bug by myself thought your team or you may be working on now.

Nobody is currently working on it. If you get it running it would be awesome!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741618</commentid>
    <comment_count>19</comment_count>
      <attachid>168595</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-14 15:44:09 -0700</bug_when>
    <thetext>Created attachment 168595
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741621</commentid>
    <comment_count>20</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-14 15:49:44 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Nobody is currently working on it. If you get it running it would be awesome!

Thanks! I&apos;m very glad that I can contribute useful patches to TexMap soon.

(In reply to comment #17)
&gt; (From update of attachment 168539 [details])
&gt; Please use CoordinatedGraphicsArgumentCoders and not CoordinatedArgumentCoders (only noticed that now)

Oops. I&apos;m sorry for causing this redundant iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741660</commentid>
    <comment_count>21</comment_count>
      <attachid>168595</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-10-14 18:48:18 -0700</bug_when>
    <thetext>Comment on attachment 168595
Patch

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

Great!
Please fix nit-picks before committing...

&gt; Source/WebKit2/ChangeLog:10
&gt; +        Coordinated Graphics will use this css shaders serialization when it enables CSS
&gt; +        Shaders.

Please remove these lines.

&gt; Source/WebKit2/ChangeLog:30
&gt; +            WebCustomFilterProgram is made from serialized data of
&gt; +            StyleCustomFilterProgram in UI Process. UI Process uses this class
&gt; +            instead of StyleCustomFilterProgram because UI Process can not get a
&gt; +            custom filter program via network.

Just say &quot;WebCustomFilterProgram is made to serialize the data of a StyleCustomFilterProgram to the UI process.&quot;

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:29
&gt; +#if USE(COORDINATED_GRAPHICS)

Put this line after the main include

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:150
&gt; +                encoder-&gt;encode(parameters[i]-&gt;name());
&gt; +                encoder-&gt;encodeEnum(parameters[i]-&gt;parameterType());

Please save parameters[i] in a local variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741662</commentid>
    <comment_count>22</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-10-14 18:49:25 -0700</bug_when>
    <thetext>
&gt; Oops. I&apos;m sorry for causing this redundant iteration.
Thank you for helping with developing this feature! It&apos;s highly appreciated. Iterations are absolutely welcome as long as you&apos;re open to feedback :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741711</commentid>
    <comment_count>23</comment_count>
      <attachid>168595</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-14 21:02:45 -0700</bug_when>
    <thetext>Comment on attachment 168595
Patch

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

&gt;&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:29
&gt;&gt; +#if USE(COORDINATED_GRAPHICS)
&gt; 
&gt; Put this line after the main include

Do I mean like following code? I don&apos;t understand fully what do you say.
#include &quot;config.h&quot;
#include &quot;CoordinatedGraphicsArgumentCoders.h&quot;
#if USE(COORDINATED_GRAPHICS)


These code are similar to GraphicsContext3D.
#include &quot;config.h&quot;

#if USE(3D_GRAPHICS)

#include &quot;GraphicsContext3D.h&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741712</commentid>
    <comment_count>24</comment_count>
      <attachid>168619</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-14 21:06:21 -0700</bug_when>
    <thetext>Created attachment 168619
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741713</commentid>
    <comment_count>25</comment_count>
      <attachid>168595</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-14 21:07:43 -0700</bug_when>
    <thetext>Comment on attachment 168595
Patch

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

&gt;&gt; Source/WebKit2/ChangeLog:10
&gt;&gt; +        Shaders.
&gt; 
&gt; Please remove these lines.

Done.

&gt;&gt; Source/WebKit2/ChangeLog:30
&gt;&gt; +            custom filter program via network.
&gt; 
&gt; Just say &quot;WebCustomFilterProgram is made to serialize the data of a StyleCustomFilterProgram to the UI process.&quot;

Done. Thanks for rephrasing

&gt;&gt;&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:29
&gt;&gt;&gt; +#if USE(COORDINATED_GRAPHICS)
&gt;&gt; 
&gt;&gt; Put this line after the main include
&gt; 
&gt; Do I mean like following code? I don&apos;t understand fully what do you say.
&gt; #include &quot;config.h&quot;
&gt; #include &quot;CoordinatedGraphicsArgumentCoders.h&quot;
&gt; #if USE(COORDINATED_GRAPHICS)
&gt; 
&gt; 
&gt; These code are similar to GraphicsContext3D.
&gt; #include &quot;config.h&quot;
&gt; 
&gt; #if USE(3D_GRAPHICS)
&gt; 
&gt; #include &quot;GraphicsContext3D.h&quot;

Done as I understood. Check please.

&gt;&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:150
&gt;&gt; +                encoder-&gt;encodeEnum(parameters[i]-&gt;parameterType());
&gt; 
&gt; Please save parameters[i] in a local variable.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741714</commentid>
    <comment_count>26</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-14 21:09:33 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; Thank you for helping with developing this feature! It&apos;s highly appreciated. Iterations are absolutely welcome as long as you&apos;re open to feedback :)

Thank you! and I think I&apos;m open :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741716</commentid>
    <comment_count>27</comment_count>
      <attachid>168619</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-10-14 21:18:27 -0700</bug_when>
    <thetext>Comment on attachment 168619
Patch

Looks good, but patch doesn&apos;t apply on EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741718</commentid>
    <comment_count>28</comment_count>
      <attachid>168619</attachid>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-10-14 21:20:32 -0700</bug_when>
    <thetext>Comment on attachment 168619
Patch

Looks fine, but patch doesn&apos;t apply...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741743</commentid>
    <comment_count>29</comment_count>
      <attachid>168625</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-14 22:22:13 -0700</bug_when>
    <thetext>Created attachment 168625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741744</commentid>
    <comment_count>30</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-14 22:23:11 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 168619 [details])
&gt; Looks fine, but patch doesn&apos;t apply...

I don&apos;t know what&apos;s happen. I post the patch again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741916</commentid>
    <comment_count>31</comment_count>
      <attachid>168668</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-15 03:42:16 -0700</bug_when>
    <thetext>Created attachment 168668
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741918</commentid>
    <comment_count>32</comment_count>
      <attachid>168625</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-15 03:44:00 -0700</bug_when>
    <thetext>Comment on attachment 168625
Patch

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

&gt; Source/WebKit2/Shared/CoordinatedGraphics/WebCustomFilterProgram.h:61
&gt; +        , m_fragmentShaderString(m_fragmentShaderString)

There is typo to initialize m_fragmentShaderString from m_fragmentShaderString.
It is why I posted new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741919</commentid>
    <comment_count>33</comment_count>
      <attachid>168670</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-15 03:47:27 -0700</bug_when>
    <thetext>Created attachment 168670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745124</commentid>
    <comment_count>34</comment_count>
      <attachid>169382</attachid>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-18 03:20:57 -0700</bug_when>
    <thetext>Created attachment 169382
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745125</commentid>
    <comment_count>35</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-18 03:22:20 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; Created an attachment (id=169382) [details]
&gt; Patch

Rebase upstream.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745218</commentid>
    <comment_count>36</comment_count>
      <attachid>169382</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-18 06:38:28 -0700</bug_when>
    <thetext>Comment on attachment 169382
Patch

Clearing flags on attachment: 169382

Committed r131741: &lt;http://trac.webkit.org/changeset/131741&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745219</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-18 06:38:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745334</commentid>
    <comment_count>38</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-18 09:53:13 -0700</bug_when>
    <thetext>(In reply to comment #36)
&gt; (From update of attachment 169382 [details])
&gt; Clearing flags on attachment: 169382
&gt; 
&gt; Committed r131741: &lt;http://trac.webkit.org/changeset/131741&gt;

It broke the Qt --minimal build:

/ramdisk/qt-linux-release-minimal/build/Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:66: error: &apos;WebKit&apos; is not a namespace-name
/ramdisk/qt-linux-release-minimal/build/Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:66: error: expected namespace-name before &apos;;&apos; token

Could you fix it, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745436</commentid>
    <comment_count>39</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-18 11:44:48 -0700</bug_when>
    <thetext>after commenting the using namespace line, I got one more error:
/home/oszi/WebKit/Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:260: error: &apos;WebCustomFilterProgram&apos; has not been declared</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745658</commentid>
    <comment_count>40</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-18 15:46:28 -0700</bug_when>
    <thetext>(In reply to comment #39)
&gt; after commenting the using namespace line, I got one more error:
&gt; /home/oszi/WebKit/Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:260: error: &apos;WebCustomFilterProgram&apos; has not been declared

I&apos;m sorry. I&apos;ll fix ASAP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745734</commentid>
    <comment_count>41</comment_count>
    <who name="Dongseong Hwang">dongseong.hwang</who>
    <bug_when>2012-10-18 16:44:00 -0700</bug_when>
    <thetext>(In reply to comment #38)
&gt; Could you fix it, please?

Thanks for reporting! I filed a Bug 99775 and posted a patch.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167718</attachid>
            <date>2012-10-09 02:47:43 -0700</date>
            <delta_ts>2012-10-09 03:32:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98733-20121009184628.patch</filename>
            <type>text/plain</type>
            <size>27500</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWZiMGM1Mjc2ZjVlYmVl
YjE5YzVlZjU2N2E2Nzk3YjJkYTg5NDU2ZS4uN2IwZjlhNjllMGJiNTZhMmI4Y2JjOTA4YjhkYmI4
ZjljZTNjMWVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTEwLTA5ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtXSzJdIEFk
ZCBDdXN0b21GaWx0ZXJPcGVyYXRpb24gc2VyaWFsaXphdGlvbiBpbiBBcmd1bWVudENvZGVyLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg3MzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdGlsbEN1c3Rv
bUZpbHRlclByb2dyYW0gaXMgYSBzbmFwc2hvdCBvZiBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0u
IFVJCisgICAgICAgIFByb2Nlc3MgdXNlcyB0aGlzIGNsYXNzIGluc3RlYWQgb2YgU3R5bGVDdXN0
b21GaWx0ZXJQcm9ncmFtIGJlY2F1c2UgVUkKKyAgICAgICAgUHJvY2VzcyBjYW4gbm90IGdldCBh
IGN1c3RvbSBmaWx0ZXIgcHJvZ3JhbSB2aWEgbmV0d29yay4KKworICAgICAgICBObyBuZXcgdGVz
dHMsIGNvZGUgcGF0aCBpcyBub3QgYWN0aXZhdGVkIHlldC4KKworICAgICAgICAqIFRhcmdldC5w
cmk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVy
YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck9wZXJhdGlvbjo6cGFyYW1l
dGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQ
cm9ncmFtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9TdGlsbEN1c3Rv
bUZpbHRlclByb2dyYW0uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFN0
aWxsQ3VzdG9tRmlsdGVyUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpTdGlsbEN1c3RvbUZp
bHRlclByb2dyYW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGlsbEN1c3RvbUZpbHRl
clByb2dyYW06OlN0aWxsQ3VzdG9tRmlsdGVyUHJvZ3JhbSk6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVDdXN0b21GaWx0ZXJQcm9ncmFtOjpvcGVyYXRvcj09KToKKwogMjAxMi0xMC0wNSAgSHVhbmcg
RG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBbUXRdIE1ha2Ug
SW1hZ2VCdWZmZXJRdCB1c2UgcHJlbXVsdGlwbGllZCBjb252ZXJ0aW5nIGZ1bmN0aW9ucyBpbiBD
b2xvci5oIGluc3RlYWQgb2YgaXRzIG93biBtZWNoYW5pc20uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTMxYTM0
ZGI4M2UwZTA0MmU3OGNhZTQ1MTExZmY5ZGQwZDc0ZThmMS4uN2UxY2I2NDlhNTNkMjBmMjRlYzE2
MzMxMTQ5MjZiMzVmZmJhNmFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTEw
LTA5ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAg
IFtXSzJdIEFkZCBDdXN0b21GaWx0ZXJPcGVyYXRpb24gc2VyaWFsaXphdGlvbiBpbiBBcmd1bWVu
dENvZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTg3MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgQXJndW1lbnRDb2RlcnMgZm9yIEN1c3RvbUZpbHRlck9wZXJhdGlvbiBhbmQgYWxsIGRlcGVu
ZGVudCBjbGFzc2VzLgorICAgICAgICBDb29yZGluYXRlZCBncmFwaGljcyB3aWxsIHVzZSB0aGlz
IGNzcyBzaGFkZXJzIHNlcmlhbGl6YXRpb24gd2hlbiBpdCBlbmFibGVzIENTUworICAgICAgICBT
aGFkZXJzLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6Cisg
ICAgICAgIChDb3JlSVBDOjo6OmVuY29kZSk6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29kZSk6
CisgICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmg6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0xMC0wNSAgU3VkYXJzYW5hIE5hZ2lu
ZW5pICA8c3VkYXJzYW5hLm5hZ2luZW5pQGludGVsLmNvbT4KIAogICAgICAgICBbV0syXVtXVFJd
IFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdGVzdFJ1bm5lci5zZXRTZXJpYWxpemVIVFRQTG9hZHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDFlOTdiNTdhNzMyNWZlZTA1NWU2M2Yw
ZDA1MDVkYjIyOWY1MjIyMTMuLjkyMWJjNjc2ODViOWE5YzZjYmRlNDUzZTk3ODU3NmI3ZWRiMjVh
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDM1OSw2ICs0MzU5LDcgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUFscGhhLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL1N0aWxsQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdodFNvdXJjZS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3BvdExpZ2h0U291cmNl
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL05FT05I
ZWxwZXJzLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggMDc4YjY5YWEyNzM0NDYwMDA0NGI5MDJjY2E1NWQz
MWY3ZWVmMTI1NS4uYjg1NzEzZDNhOTY5OTg0ZmEwZDNhNGU3OGNjMGM4YzdhZTlmMDhjZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCkBAIC0yMDkyLDYgKzIwOTIsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0xpZ2h0U291cmNlLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvU291cmNlQWxwaGEuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9T
b3VyY2VHcmFwaGljLmggXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3RpbGxDdXN0
b21GaWx0ZXJQcm9ncmFtLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL05F
T05IZWxwZXJzLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL0ZFQmxlbmRO
RU9OLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL0ZFQ29tcG9zaXRlQXJp
dGhtZXRpY05FT04uaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaAppbmRleCA3ODhi
M2YwMTYyNmIzZjRhZjA1MjBkZDhjNmYyNWFmNDRhMjU0MGEzLi4wZDY0ZDIzNjgyNzc4NjQ1M2Qz
ZWFjN2E0NmQ3MDVlOTQ0ZjIxM2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgK
QEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIAogICAgIEN1c3RvbUZpbHRlclByb2dyYW0q
IHByb2dyYW0oKSBjb25zdCB7IHJldHVybiBtX3Byb2dyYW0uZ2V0KCk7IH0KICAgICAKLSAgICBj
b25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBwYXJhbWV0ZXJzKCkgeyByZXR1cm4gbV9w
YXJhbWV0ZXJzOyB9CisgICAgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgcGFyYW1l
dGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQogICAgIAogICAgIHVuc2lnbmVk
IG1lc2hSb3dzKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoUm93czsgfQogICAgIHVuc2lnbmVkIG1l
c2hDb2x1bW5zKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoQ29sdW1uczsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9n
cmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlclByb2dyYW0uaAppbmRleCBlZjE5ZGZiODMwMmJjYzQ4YTNmNmFhNTEyNWQzN2I4YTI2OWJk
ZDM3Li5kNzY4MzRhZTI0YjQ4NjBmYWFmZmYzNjNhOTRjOTAxZDA1YTUwOTg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBy
b2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlclByb2dyYW0uaApAQCAtNTksNiArNTksOSBAQCBwdWJsaWM6CiAgICAgCiAgICAg
Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8gcHJvZ3JhbUluZm8oKSBjb25zdDsKIAorICAgIHZpcnR1
YWwgYm9vbCBpc1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIGlzU3RpbGxDdXN0b21GaWx0ZXJQcm9ncmFtKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKwogICAgIC8vIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSBoYXMg
dGhlIG9ubHkgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBmb2xsb3dpbmcgbWV0aG9kLiBUaGF0IG1l
YW5zLCBpdCBjYXN0cyB0byBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0KICAgICAvLyB3aXRob3V0
aCBjaGVja2luZyB0aGUgdHlwZS4gSWYgeW91IGFkZCBhbm90aGVyIGltcGxlbWVudGF0aW9uLCBh
bHNvIGFkZCBhIG1lY2hhbmlzbSB0byBjaGVjayBmb3IgdGhlIGNvcnJlY3QgdHlwZS4KICAgICB2
aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtJikgY29uc3Qg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9TdGlsbEN1c3RvbUZpbHRlclByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvU3RpbGxDdXN0b21GaWx0ZXJQcm9ncmFtLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzRi
ZWQxMjg4ZDM0M2Y1NTg4MTUxZTY1NTA3NzQ2OTUxYzljMzkxYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3RpbGxDdXN0b21GaWx0
ZXJQcm9ncmFtLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBD
b21wYW55IDEwMCwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFN0aWxsQ3VzdG9tRmlsdGVyUHJvZ3JhbV9oCisjZGVmaW5lIFN0aWxsQ3VzdG9tRmlsdGVy
UHJvZ3JhbV9oCisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisjaW5jbHVkZSAiQ3VzdG9tRmls
dGVyUHJvZ3JhbS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFN0aWxsQ3VzdG9t
RmlsdGVyUHJvZ3JhbSA6IHB1YmxpYyBDdXN0b21GaWx0ZXJQcm9ncmFtIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdGlsbEN1c3RvbUZpbHRlclByb2dyYW0+IGNyZWF0ZShTdHJp
bmcgdmVydGV4U2hhZGVyU3RyaW5nLCBTdHJpbmcgbV9mcmFnbWVudFNoYWRlclN0cmluZywgQ3Vz
dG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIG1peFNldHRpbmdzKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTdGlsbEN1c3RvbUZpbHRlclByb2dyYW0odmVydGV4U2hhZGVy
U3RyaW5nLCBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nLCBtaXhTZXR0aW5ncykpOworICAgIH0KKwor
ICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTdGlsbEN1c3RvbUZpbHRlclByb2dyYW0oKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiB0cnVlOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtJiBvKSBjb25zdCBPVkVSUklERQorICAgIHsKKyAgICAg
ICAgaWYgKCFvLmlzU3RpbGxDdXN0b21GaWx0ZXJQcm9ncmFtKCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGNvbnN0IFN0aWxsQ3VzdG9tRmlsdGVyUHJvZ3JhbSogb3RoZXIg
PSBzdGF0aWNfY2FzdDxjb25zdCBTdGlsbEN1c3RvbUZpbHRlclByb2dyYW0qPigmbyk7CisgICAg
ICAgIHJldHVybiBtaXhTZXR0aW5ncygpID09IG90aGVyLT5taXhTZXR0aW5ncygpICYmIG1fdmVy
dGV4U2hhZGVyU3RyaW5nID09IG90aGVyLT52ZXJ0ZXhTaGFkZXJTdHJpbmcoKSAmJiBtX2ZyYWdt
ZW50U2hhZGVyU3RyaW5nID09IG90aGVyLT5mcmFnbWVudFNoYWRlclN0cmluZygpOworICAgIH0K
KworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgU3RyaW5nIHZlcnRleFNoYWRlclN0cmluZygpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdmVydGV4U2hhZGVyU3RyaW5nOyB9CisgICAgdmlydHVh
bCBTdHJpbmcgZnJhZ21lbnRTaGFkZXJTdHJpbmcoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBt
X2ZyYWdtZW50U2hhZGVyU3RyaW5nOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEhhdmVDbGll
bnRzKCkgT1ZFUlJJREUgeyBub3RpZnlDbGllbnRzKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVtb3ZlTGFzdENsaWVudCgpIE9WRVJSSURFIHsgfQorCitwcml2YXRlOgorICAgIFN0aWxsQ3Vz
dG9tRmlsdGVyUHJvZ3JhbShTdHJpbmcgdmVydGV4U2hhZGVyU3RyaW5nLCBTdHJpbmcgZnJhZ21l
bnRTaGFkZXIsIEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyBtaXhTZXR0aW5ncykKKyAg
ICAgICAgOiBDdXN0b21GaWx0ZXJQcm9ncmFtKG1peFNldHRpbmdzKQorICAgICAgICAsIG1fdmVy
dGV4U2hhZGVyU3RyaW5nKHZlcnRleFNoYWRlclN0cmluZykKKyAgICAgICAgLCBtX2ZyYWdtZW50
U2hhZGVyU3RyaW5nKG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcpCisgICAgeworICAgIH0KKworICAg
IFN0cmluZyBtX3ZlcnRleFNoYWRlclN0cmluZzsKKyAgICBTdHJpbmcgbV9mcmFnbWVudFNoYWRl
clN0cmluZzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShDU1NfU0hBREVSUykKKworI2VuZGlmIC8vIFN0aWxsQ3VzdG9tRmlsdGVyUHJvZ3JhbV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0
ZXJQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21G
aWx0ZXJQcm9ncmFtLmgKaW5kZXggMWNiZTAxZDM1ZjA2NzNkMjJhMmUwZGNiN2QxOGJlMTMwMmFi
MmZkNS4uNjA1N2QxYjg3MTQ3Y2EzYmUwYWI2NWE0MjUzZjIwZGI2NjVkY2Y0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3Jh
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRl
clByb2dyYW0uaApAQCAtNTYsNiArNTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGcmFnbWVu
dFNoYWRlcihQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiBzaGFkZXIpIHsgbV9mcmFnbWVudFNoYWRl
ciA9IHNoYWRlcjsgfQogICAgIFN0eWxlU2hhZGVyKiBmcmFnbWVudFNoYWRlcigpIGNvbnN0IHsg
cmV0dXJuIG1fZnJhZ21lbnRTaGFkZXIuZ2V0KCk7IH0KICAgICAKKyAgICB2aXJ0dWFsIGJvb2wg
aXNTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVl
OyB9CisKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJ0ZXhTaGFkZXJTdHJpbmcoKSBjb25zdAogICAg
IHsKICAgICAgICAgQVNTRVJUKGlzTG9hZGVkKCkpOwpAQCAtMTIwLDcgKzEyMiw4IEBAIHB1Ymxp
YzoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQ
cm9ncmFtJiBvKSBjb25zdCAKICAgICB7Ci0gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgY2FzdCBp
cyB1Z2x5LCBidXQgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtIGlzIHRoZSBzaW5nbGUgaW1wbGVt
ZW50YXRpb24gb2YgQ3VzdG9tRmlsdGVyUHJvZ3JhbS4KKyAgICAgICAgaWYgKCFvLmlzU3R5bGVD
dXN0b21GaWx0ZXJQcm9ncmFtKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IGNvbnN0IFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSogb3RoZXIgPSBzdGF0aWNfY2FzdDxjb25z
dCBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0qPigmbyk7CiAgICAgICAgIHJldHVybiBjYWNoZWRW
ZXJ0ZXhTaGFkZXIoKSA9PSBvdGhlci0+Y2FjaGVkVmVydGV4U2hhZGVyKCkgJiYgY2FjaGVkRnJh
Z21lbnRTaGFkZXIoKSA9PSBvdGhlci0+Y2FjaGVkRnJhZ21lbnRTaGFkZXIoKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4
IGNiZjYyNDkyNjg5NjdhOTk0OGU5NGYxNjc2NDY2Yjc2ZDE3YmIyNTEuLjE5NGEzMzY1OTRmM2Qw
ODU1NjdhNTMxMmU0MzRjYTI4MGZjOWNhODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC01NSw2ICs1NSwyMyBAQAogI2lmIEVOQUJM
RShDU1NfRklMVEVSUykKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbHRlck9wZXJhdGlvbnMuaD4KICNl
bmRpZgorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorI2luY2x1ZGUgPFdlYkNvcmUvQ3VzdG9t
RmlsdGVyQXJyYXlQYXJhbWV0ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0N1c3RvbUZpbHRlck51
bWJlclBhcmFtZXRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DdXN0b21GaWx0ZXJQcm9ncmFtLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9DdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0lkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NYXRy
aXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWF0cml4VHJhbnNm
b3JtT3BlcmF0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9w
ZXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvU2tld1RyYW5zZm9ybU9wZXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3Rp
bGxDdXN0b21GaWx0ZXJQcm9ncmFtLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UcmFuc2xhdGVUcmFu
c2Zvcm1PcGVyYXRpb24uaD4KKyNlbmRpZgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwpAQCAtNzIyLDYgKzczOSw1NyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Rmls
dGVyT3BlcmF0aW9ucz46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsCiAgICAgICAg
ICAgICBBcmd1bWVudENvZGVyPENvbG9yPjo6ZW5jb2RlKGVuY29kZXIsIHNoYWRvdy0+Y29sb3Io
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorI2lmIEVOQUJMRShDU1NfU0hBREVS
UykKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNVU1RPTTogeworICAgICAgICAgICAg
Y29uc3QgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKiBjdXN0b21PcGVyYXRpb24gPSBzdGF0aWNfY2Fz
dDxjb25zdCBDdXN0b21GaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIpOworCisgICAgICAgICAgICBB
U1NFUlQoY3VzdG9tT3BlcmF0aW9uLT5wcm9ncmFtKCkpOworICAgICAgICAgICAgUmVmUHRyPEN1
c3RvbUZpbHRlclByb2dyYW0+IHByb2dyYW0gPSBjdXN0b21PcGVyYXRpb24tPnByb2dyYW0oKTsK
KyAgICAgICAgICAgIEFTU0VSVChwcm9ncmFtLT5pc0xvYWRlZCgpKTsKKyAgICAgICAgICAgIEN1
c3RvbUZpbHRlclByb2dyYW1JbmZvIHByb2dyYW1JbmZvID0gcHJvZ3JhbS0+cHJvZ3JhbUluZm8o
KTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShwcm9ncmFtSW5mby52ZXJ0ZXhTaGFkZXJT
dHJpbmcoKSk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUocHJvZ3JhbUluZm8uZnJhZ21l
bnRTaGFkZXJTdHJpbmcoKSk7CisgICAgICAgICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0
dGluZ3MgbWl4U2V0dGluZ3MgPSBwcm9ncmFtSW5mby5taXhTZXR0aW5ncygpOworICAgICAgICAg
ICAgZW5jb2Rlci0+ZW5jb2RlKG1peFNldHRpbmdzLmVuYWJsZWQpOworICAgICAgICAgICAgZW5j
b2Rlci0+ZW5jb2RlRW51bShtaXhTZXR0aW5ncy5ibGVuZE1vZGUpOworICAgICAgICAgICAgZW5j
b2Rlci0+ZW5jb2RlRW51bShtaXhTZXR0aW5ncy5jb21wb3NpdGVPcGVyYXRvcik7CisKKyAgICAg
ICAgICAgIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QgcGFyYW1ldGVycyA9IGN1c3RvbU9wZXJh
dGlvbi0+cGFyYW1ldGVycygpOworICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlVUludDY0KHBh
cmFtZXRlcnMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFy
YW1ldGVycy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShw
YXJhbWV0ZXJzW2ldLT5uYW1lKCkpOworICAgICAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUVu
dW0ocGFyYW1ldGVyc1tpXS0+cGFyYW1ldGVyVHlwZSgpKTsKKworICAgICAgICAgICAgICAgIHN3
aXRjaCAocGFyYW1ldGVyc1tpXS0+cGFyYW1ldGVyVHlwZSgpKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6OkFSUkFZOiB7CisgICAgICAgICAgICAgICAgICAg
IEN1c3RvbUZpbHRlckFycmF5UGFyYW1ldGVyKiBhcnJheVBhcmFtZXRlciA9IHN0YXRpY19jYXN0
PEN1c3RvbUZpbHRlckFycmF5UGFyYW1ldGVyKj4ocGFyYW1ldGVyc1tpXS5nZXQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGVuY29kZXItPmVuY29kZVVJbnQ2NChhcnJheVBhcmFtZXRlci0+c2l6
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBhcnJheVBh
cmFtZXRlci0+c2l6ZSgpOyArK2opCisgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVyLT5l
bmNvZGUoYXJyYXlQYXJhbWV0ZXItPnZhbHVlQXQoaikpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBDdXN0b21GaWx0
ZXJQYXJhbWV0ZXI6Ok5VTUJFUjogeworICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWx0ZXJO
dW1iZXJQYXJhbWV0ZXIqIG51Ym1lclBhcmFtZXRlciA9IHN0YXRpY19jYXN0PEN1c3RvbUZpbHRl
ck51bWJlclBhcmFtZXRlcio+KHBhcmFtZXRlcnNbaV0uZ2V0KCkpOworICAgICAgICAgICAgICAg
ICAgICBlbmNvZGVyLT5lbmNvZGVVSW50NjQobnVibWVyUGFyYW1ldGVyLT5zaXplKCkpOworICAg
ICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG51Ym1lclBhcmFtZXRlci0+
c2l6ZSgpOyArK2opCisgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUobnVi
bWVyUGFyYW1ldGVyLT52YWx1ZUF0KGopKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmlsdGVyUGFyYW1l
dGVyOjpUUkFOU0ZPUk06IHsKKyAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmlsdGVyVHJhbnNm
b3JtUGFyYW1ldGVyKiB0cmFuc2Zvcm1QYXJhbWV0ZXIgPSBzdGF0aWNfY2FzdDxDdXN0b21GaWx0
ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIqPihwYXJhbWV0ZXJzW2ldLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1PcGVyYXRpb25zPjo6ZW5jb2RlKGVuY29k
ZXIsIHRyYW5zZm9ybVBhcmFtZXRlci0+b3BlcmF0aW9ucygpKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKGN1c3RvbU9wZXJhdGlvbi0+bWVz
aFJvd3MoKSk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUoY3VzdG9tT3BlcmF0aW9uLT5t
ZXNoQ29sdW1ucygpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUVudW0oY3VzdG9tT3Bl
cmF0aW9uLT5tZXNoQm94VHlwZSgpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUVudW0o
Y3VzdG9tT3BlcmF0aW9uLT5tZXNoVHlwZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisjZW5kaWYKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC03ODMsNiArODUxLDk0IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0
ZXJPcGVyYXRpb25zPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwKICAgICAgICAg
ICAgIGZpbHRlciA9IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShsb2NhdGlvbiwg
c3RkRGV2aWF0aW9uLCBjb2xvciwgdHlwZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OkNVU1RPTTogeworICAgICAgICAgICAgU3RyaW5nIHZlcnRleFNoYWRlclN0cmluZzsKKyAgICAg
ICAgICAgIFN0cmluZyBmcmFnbWVudFNoYWRlclN0cmluZzsKKyAgICAgICAgICAgIEN1c3RvbUZp
bHRlclByb2dyYW1NaXhTZXR0aW5ncyBtaXhTZXR0aW5nczsKKyAgICAgICAgICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlKHZlcnRleFNoYWRlclN0cmluZykpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZnJhZ21lbnRTaGFkZXJT
dHJpbmcpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKG1peFNldHRpbmdzLmVuYWJsZWQpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShtaXhTZXR0
aW5ncy5ibGVuZE1vZGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShtaXhTZXR0aW5ncy5jb21wb3NpdGVPcGVyYXRv
cikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgUmVmUHRyPEN1
c3RvbUZpbHRlclByb2dyYW0+IHByb2dyYW0gPSBTdGlsbEN1c3RvbUZpbHRlclByb2dyYW06OmNy
ZWF0ZSh2ZXJ0ZXhTaGFkZXJTdHJpbmcsIGZyYWdtZW50U2hhZGVyU3RyaW5nLCBtaXhTZXR0aW5n
cyk7CisKKyAgICAgICAgICAgIHNpemVfdCBwYXJhbWV0ZXJzU2l6ZTsKKyAgICAgICAgICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlVUludDY0KHBhcmFtZXRlcnNTaXplKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3Qg
cGFyYW1ldGVycyhwYXJhbWV0ZXJzU2l6ZSk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHBhcmFtZXRlcnNTaXplOyArK2kpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbmFt
ZTsKKyAgICAgICAgICAgICAgICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6OlBhcmFtZXRlclR5cGUg
cGFyYW1ldGVyVHlwZTsKKyAgICAgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShuYW1l
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlRW51bShwYXJhbWV0ZXJUeXBlKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgc3dpdGNoIChwYXJhbWV0ZXJUeXBl
KSB7CisgICAgICAgICAgICAgICAgY2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6OkFSUkFZOiB7
CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJBcnJheVBhcmFtZXRlcj4g
YXJyYXlQYXJhbWV0ZXIgPSBDdXN0b21GaWx0ZXJBcnJheVBhcmFtZXRlcjo6Y3JlYXRlKG5hbWUp
OworICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChhcnJheVBhcmFtZXRlcik7
CisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBhcnJheVBhcmFtZXRlclNpemU7CisgICAgICAg
ICAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDY0KGFycmF5UGFyYW1ldGVyU2l6
ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAg
ICAgICAgIGRvdWJsZSBhcnJheVBhcmFtZXRlclZhbHVlOworICAgICAgICAgICAgICAgICAgICBm
b3IgKHNpemVfdCBqID0gMDsgaiA8IGFycmF5UGFyYW1ldGVyU2l6ZTsgKytqKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShhcnJheVBhcmFtZXRlclZhbHVl
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgICAgICBhcnJheVBhcmFtZXRlci0+YWRkVmFsdWUoYXJyYXlQYXJhbWV0ZXJWYWx1
ZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmlsdGVyUGFyYW1l
dGVyOjpOVU1CRVI6IHsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEN1c3RvbUZpbHRlck51
bWJlclBhcmFtZXRlcj4gbnVtYmVyUGFyYW1ldGVyID0gQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1l
dGVyOjpjcmVhdGUobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5k
KG51bWJlclBhcmFtZXRlcik7CisgICAgICAgICAgICAgICAgICAgIHNpemVfdCBudW1iZXJQYXJh
bWV0ZXJTaXplOworICAgICAgICAgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJbnQ2
NChudW1iZXJQYXJhbWV0ZXJTaXplKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIG51bWJlclBhcmFtZXRlclZhbHVlOwor
ICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG51bWJlclBhcmFtZXRl
clNpemU7ICsraikgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNv
ZGUobnVtYmVyUGFyYW1ldGVyVmFsdWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlclBhcmFtZXRlci0+YWRk
VmFsdWUobnVtYmVyUGFyYW1ldGVyVmFsdWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBjYXNlIEN1c3RvbUZpbHRlclBhcmFtZXRlcjo6VFJBTlNGT1JNOiB7CisgICAgICAgICAgICAg
ICAgICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXI+IHRyYW5zZm9ybVBh
cmFtZXRlciA9IEN1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlcjo6Y3JlYXRlKG5hbWUpOwor
ICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZCh0cmFuc2Zvcm1QYXJhbWV0ZXIp
OworICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnM7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1PcGVyYXRpb25z
Pjo6ZGVjb2RlKGRlY29kZXIsIG9wZXJhdGlvbnMpKQorICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1QYXJhbWV0ZXItPnNl
dE9wZXJhdGlvbnMob3BlcmF0aW9ucyk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHVuc2lnbmVkIG1lc2hSb3dzOworICAgICAgICAgICAgdW5zaWduZWQgbWVzaENvbHVt
bnM7CisgICAgICAgICAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hCb3hUeXBlIG1lc2hC
b3hUeXBlOworICAgICAgICAgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlwZSBtZXNo
VHlwZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG1lc2hSb3dzKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29k
ZShtZXNoQ29sdW1ucykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVFbnVtKG1lc2hCb3hUeXBlKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0obWVz
aFR5cGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgZmls
dGVyID0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUocHJvZ3JhbSwgcGFyYW1ldGVycywg
bWVzaFJvd3MsIG1lc2hDb2x1bW5zLCBtZXNoQm94VHlwZSwgbWVzaFR5cGUpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTc5NSw2ICs5NTEsMTY4IEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2Rlciog
ZGVjb2RlciwKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQordm9pZCBBcmd1
bWVudENvZGVyPFRyYW5zZm9ybU9wZXJhdGlvbnM+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBl
bmNvZGVyLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB0cmFuc2Zvcm1PcGVyYXRpb25zKQor
eworICAgIGVuY29kZXItPmVuY29kZVVJbnQ2NCh0cmFuc2Zvcm1PcGVyYXRpb25zLnNpemUoKSk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2Zvcm1PcGVyYXRpb25zLnNpemUoKTsg
KytpKSB7CisgICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogb3BlcmF0aW9uID0gdHJh
bnNmb3JtT3BlcmF0aW9ucy5hdChpKTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlRW51bShvcGVy
YXRpb24tPmdldE9wZXJhdGlvblR5cGUoKSk7CisKKyAgICAgICAgc3dpdGNoIChvcGVyYXRpb24t
PmdldE9wZXJhdGlvblR5cGUoKSkgeworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6
U0NBTEVfWDoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1k6CisgICAg
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRToKKyAgICAgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OlNDQUxFX1o6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpT
Q0FMRV8zRDoKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxjb25zdCBT
Y2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPngoKSk7CisgICAgICAgICAgICBl
bmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24q
PihvcGVyYXRpb24pLT55KCkpOworICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19j
YXN0PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+eigpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNM
QVRFX1g6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWToKKyAg
ICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURToKKyAgICAgICAgY2FzZSBU
cmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9aOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9w
ZXJhdGlvbjo6VFJBTlNMQVRFXzNEOgorICAgICAgICAgICAgQXJndW1lbnRDb2RlcjxMZW5ndGg+
OjplbmNvZGUoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRlVHJhbnNmb3JtT3Bl
cmF0aW9uKj4ob3BlcmF0aW9uKS0+eCgpKTsKKyAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8TGVu
Z3RoPjo6ZW5jb2RlKGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPnkoKSk7CisgICAgICAgICAgICBBcmd1bWVudENvZGVy
PExlbmd0aD46OmVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVUcmFu
c2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT56KCkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEU6CisgICAgICAgIGNhc2UgVHJh
bnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWDoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246OlJPVEFURV9ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNE
OgorICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGNvbnN0IFJvdGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPngoKSk7CisgICAgICAgICAgICBlbmNvZGVy
LT5lbmNvZGUoc3RhdGljX2Nhc3Q8Y29uc3QgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3Bl
cmF0aW9uKS0+eSgpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxj
b25zdCBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT56KCkpOworICAgICAg
ICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGNvbnN0IFJvdGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbio+KG9wZXJhdGlvbiktPmFuZ2xlKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXX1g6CisgICAgICAgIGNhc2UgVHJhbnNm
b3JtT3BlcmF0aW9uOjpTS0VXX1k6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpT
S0VXOgorICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGNvbnN0IFNrZXdU
cmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT5hbmdsZVgoKSk7CisgICAgICAgICAgICBl
bmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8Y29uc3QgU2tld1RyYW5zZm9ybU9wZXJhdGlvbio+
KG9wZXJhdGlvbiktPmFuZ2xlWSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFRyYW5zZm9ybU9wZXJhdGlvbjo6TUFUUklYOgorICAgICAgICAgICAgQXJndW1lbnRDb2RlcjxU
cmFuc2Zvcm1hdGlvbk1hdHJpeD46OmVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxjb25zdCBN
YXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT5tYXRyaXgoKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWF8zRDoK
KyAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+OjplbmNvZGUo
ZW5jb2Rlciwgc3RhdGljX2Nhc3Q8Y29uc3QgTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24qPihv
cGVyYXRpb24pLT5tYXRyaXgoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBU
cmFuc2Zvcm1PcGVyYXRpb246OlBFUlNQRUNUSVZFOgorICAgICAgICAgICAgQXJndW1lbnRDb2Rl
cjxMZW5ndGg+OjplbmNvZGUoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8Y29uc3QgUGVyc3BlY3RpdmVU
cmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT5wZXJzcGVjdGl2ZSgpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6SURFTlRJVFk6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok5PTkU6
CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgfQorfQorCitib29sIEFyZ3VtZW50Q29kZXI8VHJhbnNmb3JtT3BlcmF0
aW9ucz46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFRyYW5zZm9ybU9wZXJhdGlv
bnMmIHRyYW5zZm9ybU9wZXJhdGlvbnMpCit7CisgICAgc2l6ZV90IG9wZXJhdGlvbnNTaXplOwor
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDY0KG9wZXJhdGlvbnNTaXplKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvcGVyYXRpb25zU2l6
ZTsgKytpKSB7CisgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSBvcGVy
YXRpb25UeXBlOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0ob3BlcmF0aW9uVHlw
ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgc3dpdGNoIChvcGVyYXRp
b25UeXBlKSB7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9YOgorICAg
ICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWToKKyAgICAgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246OlNDQUxFOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6
U0NBTEVfWjoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFXzNEOiB7Cisg
ICAgICAgICAgICBkb3VibGUgeCwgeSwgejsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlKHgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKHkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHopKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVu
ZChTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHgsIHksIHosIG9wZXJhdGlvblR5cGUp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpUUkFOU0xBVEVfWDoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlRSQU5TTEFURV9ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRF
OgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1o6CisgICAgICAg
IGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfM0Q6IHsKKyAgICAgICAgICAgIExl
bmd0aCB4LCB5LCB6OworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVyPExlbmd0aD46OmRl
Y29kZShkZWNvZGVyLCB4KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZGVjb2RlKGRlY29kZXIsIHkpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2Rl
cjxMZW5ndGg+OjpkZWNvZGUoZGVjb2RlciwgeikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5k
KFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHgsIHksIHosIG9wZXJhdGlvblR5
cGUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVHJhbnNm
b3JtT3BlcmF0aW9uOjpST1RBVEU6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpS
T1RBVEVfWDoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9ZOgorICAg
ICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEOiB7CisgICAgICAgICAgICBk
b3VibGUgeCwgeSwgeiwgYW5nbGU7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh4
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29k
ZXItPmRlY29kZSh5KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICBpZiAoIWRlY29kZXItPmRlY29kZSh6KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShhbmdsZSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVyYXRp
b25zKCkuYXBwZW5kKFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHgsIHksIHosIGFu
Z2xlLCBvcGVyYXRpb25UeXBlKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19YOgorICAgICAgICBjYXNlIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6U0tFV19ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6
U0tFVzogeworICAgICAgICAgICAgZG91YmxlIGFuZ2xlWCwgYW5nbGVZOworICAgICAgICAgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUoYW5nbGVYKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShhbmdsZVkpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMub3Bl
cmF0aW9ucygpLmFwcGVuZChTa2V3VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoYW5nbGVYLCBh
bmdsZVksIG9wZXJhdGlvblR5cGUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVg6IHsKKyAgICAgICAgICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKKyAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2Rl
cjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShkZWNvZGVyLCBtYXRyaXgpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMu
b3BlcmF0aW9ucygpLmFwcGVuZChNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShtYXRy
aXgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVHJhbnNm
b3JtT3BlcmF0aW9uOjpNQVRSSVhfM0Q6IHsKKyAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IG1hdHJpeDsKKyAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlv
bk1hdHJpeD46OmRlY29kZShkZWNvZGVyLCBtYXRyaXgpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFw
cGVuZChNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKG1hdHJpeCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlBFUlNQRUNUSVZFOiB7CisgICAgICAgICAgICBMZW5ndGggcGVyc3BlY3RpdmU7CisgICAgICAg
ICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZGVjb2RlKGRlY29kZXIsIHBlcnNwZWN0
aXZlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB0cmFuc2Zv
cm1PcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVy
YXRpb246OmNyZWF0ZShwZXJzcGVjdGl2ZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OklERU5USVRZOgorICAgICAgICAg
ICAgdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKElkZW50aXR5VHJhbnNm
b3JtT3BlcmF0aW9uOjpjcmVhdGUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok5PTkU6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0
cnVlOworfQorI2VuZGlmCisKICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmggYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKaW5kZXggYjA4ZjEx
OGY5N2I4MDE1NzY5OGE3MjE4ZTZkNjk3ZjMxNWJmMDdhMi4uZjM3ZmQzZGRjN2IxNmRjYWM1NDky
N2ZmZjA4NmYxOTA2ZTE3NDQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaApAQCAtNzksNiArNzksMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgIGNsYXNzIEZpbHRlck9wZXJhdGlvbnM7CiB9CiAjZW5kaWYKKworI2lmIEVOQUJMRShDU1Nf
U0hBREVSUykKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBUcmFuc2Zvcm1PcGVyYXRp
b25zOworfQorI2VuZGlmCiAjZW5kaWYKIAogbmFtZXNwYWNlIENvcmVJUEMgewpAQCAtMjUxLDYg
KzI1NywxMyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZpbHRl
ck9wZXJhdGlvbnM+IHsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwg
V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYpOwogfTsKICNlbmRpZgorCisjaWYgRU5BQkxFKENT
U19TSEFERVJTKQordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpUcmFu
c2Zvcm1PcGVyYXRpb25zPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2Rl
ciosIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybU9wZXJhdGlvbnMmKTsKKyAgICBzdGF0aWMgYm9v
bCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6VHJhbnNmb3JtT3BlcmF0aW9ucyYp
OworfTsKKyNlbmRpZgogI2VuZGlmCiAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167722</attachid>
            <date>2012-10-09 03:32:20 -0700</date>
            <delta_ts>2012-10-09 14:59:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98733-20121009193105.patch</filename>
            <type>text/plain</type>
            <size>27508</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWZiMGM1Mjc2ZjVlYmVl
YjE5YzVlZjU2N2E2Nzk3YjJkYTg5NDU2ZS4uN2IwZjlhNjllMGJiNTZhMmI4Y2JjOTA4YjhkYmI4
ZjljZTNjMWVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTEwLTA5ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtXSzJdIEFk
ZCBDdXN0b21GaWx0ZXJPcGVyYXRpb24gc2VyaWFsaXphdGlvbiBpbiBBcmd1bWVudENvZGVyLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg3MzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdGlsbEN1c3Rv
bUZpbHRlclByb2dyYW0gaXMgYSBzbmFwc2hvdCBvZiBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0u
IFVJCisgICAgICAgIFByb2Nlc3MgdXNlcyB0aGlzIGNsYXNzIGluc3RlYWQgb2YgU3R5bGVDdXN0
b21GaWx0ZXJQcm9ncmFtIGJlY2F1c2UgVUkKKyAgICAgICAgUHJvY2VzcyBjYW4gbm90IGdldCBh
IGN1c3RvbSBmaWx0ZXIgcHJvZ3JhbSB2aWEgbmV0d29yay4KKworICAgICAgICBObyBuZXcgdGVz
dHMsIGNvZGUgcGF0aCBpcyBub3QgYWN0aXZhdGVkIHlldC4KKworICAgICAgICAqIFRhcmdldC5w
cmk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVy
YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlck9wZXJhdGlvbjo6cGFyYW1l
dGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQ
cm9ncmFtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9TdGlsbEN1c3Rv
bUZpbHRlclByb2dyYW0uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFN0
aWxsQ3VzdG9tRmlsdGVyUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpTdGlsbEN1c3RvbUZp
bHRlclByb2dyYW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdGlsbEN1c3RvbUZpbHRl
clByb2dyYW06OlN0aWxsQ3VzdG9tRmlsdGVyUHJvZ3JhbSk6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVDdXN0b21GaWx0ZXJQcm9ncmFtOjpvcGVyYXRvcj09KToKKwogMjAxMi0xMC0wNSAgSHVhbmcg
RG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBbUXRdIE1ha2Ug
SW1hZ2VCdWZmZXJRdCB1c2UgcHJlbXVsdGlwbGllZCBjb252ZXJ0aW5nIGZ1bmN0aW9ucyBpbiBD
b2xvci5oIGluc3RlYWQgb2YgaXRzIG93biBtZWNoYW5pc20uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTMxYTM0
ZGI4M2UwZTA0MmU3OGNhZTQ1MTExZmY5ZGQwZDc0ZThmMS4uN2UxY2I2NDlhNTNkMjBmMjRlYzE2
MzMxMTQ5MjZiMzVmZmJhNmFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTEw
LTA5ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAg
IFtXSzJdIEFkZCBDdXN0b21GaWx0ZXJPcGVyYXRpb24gc2VyaWFsaXphdGlvbiBpbiBBcmd1bWVu
dENvZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTg3MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgQXJndW1lbnRDb2RlcnMgZm9yIEN1c3RvbUZpbHRlck9wZXJhdGlvbiBhbmQgYWxsIGRlcGVu
ZGVudCBjbGFzc2VzLgorICAgICAgICBDb29yZGluYXRlZCBncmFwaGljcyB3aWxsIHVzZSB0aGlz
IGNzcyBzaGFkZXJzIHNlcmlhbGl6YXRpb24gd2hlbiBpdCBlbmFibGVzIENTUworICAgICAgICBT
aGFkZXJzLgorCisgICAgICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6Cisg
ICAgICAgIChDb3JlSVBDOjo6OmVuY29kZSk6CisgICAgICAgIChDb3JlSVBDOjo6OmRlY29kZSk6
CisgICAgICAgIChDb3JlSVBDKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmg6CisgICAgICAgIChXZWJDb3JlKToKKwogMjAxMi0xMC0wNSAgU3VkYXJzYW5hIE5hZ2lu
ZW5pICA8c3VkYXJzYW5hLm5hZ2luZW5pQGludGVsLmNvbT4KIAogICAgICAgICBbV0syXVtXVFJd
IFdlYktpdFRlc3RSdW5uZXIgbmVlZHMgdGVzdFJ1bm5lci5zZXRTZXJpYWxpemVIVFRQTG9hZHMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDFlOTdiNTdhNzMyNWZlZTA1NWU2M2Yw
ZDA1MDVkYjIyOWY1MjIyMTMuLjkyMWJjNjc2ODViOWE5YzZjYmRlNDUzZTk3ODU3NmI3ZWRiMjVh
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDM1OSw2ICs0MzU5LDcgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL1NvdXJjZUFscGhhLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvU291cmNlR3JhcGhpYy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL1N0aWxsQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdodFNvdXJjZS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3BvdExpZ2h0U291cmNl
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL05FT05I
ZWxwZXJzLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJj
ZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggMDc4YjY5YWEyNzM0NDYwMDA0NGI5MDJjY2E1NWQz
MWY3ZWVmMTI1NS4uYjg1NzEzZDNhOTY5OTg0ZmEwZDNhNGU3OGNjMGM4YzdhZTlmMDhjZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCkBAIC0yMDkyLDYgKzIwOTIsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0xpZ2h0U291cmNlLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvU291cmNlQWxwaGEuaCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9T
b3VyY2VHcmFwaGljLmggXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3RpbGxDdXN0
b21GaWx0ZXJQcm9ncmFtLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL05F
T05IZWxwZXJzLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL0ZFQmxlbmRO
RU9OLmggXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvYXJtL0ZFQ29tcG9zaXRlQXJp
dGhtZXRpY05FT04uaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaAppbmRleCA3ODhi
M2YwMTYyNmIzZjRhZjA1MjBkZDhjNmYyNWFmNDRhMjU0MGEzLi4wZDY0ZDIzNjgyNzc4NjQ1M2Qz
ZWFjN2E0NmQ3MDVlOTQ0ZjIxM2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgK
QEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIAogICAgIEN1c3RvbUZpbHRlclByb2dyYW0q
IHByb2dyYW0oKSBjb25zdCB7IHJldHVybiBtX3Byb2dyYW0uZ2V0KCk7IH0KICAgICAKLSAgICBj
b25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBwYXJhbWV0ZXJzKCkgeyByZXR1cm4gbV9w
YXJhbWV0ZXJzOyB9CisgICAgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgcGFyYW1l
dGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQogICAgIAogICAgIHVuc2lnbmVk
IG1lc2hSb3dzKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoUm93czsgfQogICAgIHVuc2lnbmVkIG1l
c2hDb2x1bW5zKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoQ29sdW1uczsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9n
cmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlclByb2dyYW0uaAppbmRleCBlZjE5ZGZiODMwMmJjYzQ4YTNmNmFhNTEyNWQzN2I4YTI2OWJk
ZDM3Li5kNzY4MzRhZTI0YjQ4NjBmYWFmZmYzNjNhOTRjOTAxZDA1YTUwOTg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBy
b2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlclByb2dyYW0uaApAQCAtNTksNiArNTksOSBAQCBwdWJsaWM6CiAgICAgCiAgICAg
Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8gcHJvZ3JhbUluZm8oKSBjb25zdDsKIAorICAgIHZpcnR1
YWwgYm9vbCBpc1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBib29sIGlzU3RpbGxDdXN0b21GaWx0ZXJQcm9ncmFtKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KKwogICAgIC8vIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSBoYXMg
dGhlIG9ubHkgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBmb2xsb3dpbmcgbWV0aG9kLiBUaGF0IG1l
YW5zLCBpdCBjYXN0cyB0byBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0KICAgICAvLyB3aXRob3V0
aCBjaGVja2luZyB0aGUgdHlwZS4gSWYgeW91IGFkZCBhbm90aGVyIGltcGxlbWVudGF0aW9uLCBh
bHNvIGFkZCBhIG1lY2hhbmlzbSB0byBjaGVjayBmb3IgdGhlIGNvcnJlY3QgdHlwZS4KICAgICB2
aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtJikgY29uc3Qg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9TdGlsbEN1c3RvbUZpbHRlclByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvU3RpbGxDdXN0b21GaWx0ZXJQcm9ncmFtLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzRi
ZWQxMjg4ZDM0M2Y1NTg4MTUxZTY1NTA3NzQ2OTUxYzljMzkxYQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3RpbGxDdXN0b21GaWx0
ZXJQcm9ncmFtLmgKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBD
b21wYW55IDEwMCwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscworICogICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVIg4oCcQVMgSVPigJ0gQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VCBIT0xERVIgQkUKKyAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwKKyAqIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IKKyAqIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRgorICogVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFN0aWxsQ3VzdG9tRmlsdGVyUHJvZ3JhbV9oCisjZGVmaW5lIFN0aWxsQ3VzdG9tRmlsdGVy
UHJvZ3JhbV9oCisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisjaW5jbHVkZSAiQ3VzdG9tRmls
dGVyUHJvZ3JhbS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFN0aWxsQ3VzdG9t
RmlsdGVyUHJvZ3JhbSA6IHB1YmxpYyBDdXN0b21GaWx0ZXJQcm9ncmFtIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdGlsbEN1c3RvbUZpbHRlclByb2dyYW0+IGNyZWF0ZShTdHJp
bmcgdmVydGV4U2hhZGVyU3RyaW5nLCBTdHJpbmcgbV9mcmFnbWVudFNoYWRlclN0cmluZywgQ3Vz
dG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIG1peFNldHRpbmdzKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBTdGlsbEN1c3RvbUZpbHRlclByb2dyYW0odmVydGV4U2hhZGVy
U3RyaW5nLCBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nLCBtaXhTZXR0aW5ncykpOworICAgIH0KKwor
ICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNTdGlsbEN1c3RvbUZpbHRlclByb2dyYW0oKSBjb25zdCBP
VkVSUklERSB7IHJldHVybiB0cnVlOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtJiBvKSBjb25zdCBPVkVSUklERQorICAgIHsKKyAgICAg
ICAgaWYgKCFvLmlzU3RpbGxDdXN0b21GaWx0ZXJQcm9ncmFtKCkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGNvbnN0IFN0aWxsQ3VzdG9tRmlsdGVyUHJvZ3JhbSogb3RoZXIg
PSBzdGF0aWNfY2FzdDxjb25zdCBTdGlsbEN1c3RvbUZpbHRlclByb2dyYW0qPigmbyk7CisgICAg
ICAgIHJldHVybiBtaXhTZXR0aW5ncygpID09IG90aGVyLT5taXhTZXR0aW5ncygpICYmIG1fdmVy
dGV4U2hhZGVyU3RyaW5nID09IG90aGVyLT52ZXJ0ZXhTaGFkZXJTdHJpbmcoKSAmJiBtX2ZyYWdt
ZW50U2hhZGVyU3RyaW5nID09IG90aGVyLT5mcmFnbWVudFNoYWRlclN0cmluZygpOworICAgIH0K
KworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgU3RyaW5nIHZlcnRleFNoYWRlclN0cmluZygpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdmVydGV4U2hhZGVyU3RyaW5nOyB9CisgICAgdmlydHVh
bCBTdHJpbmcgZnJhZ21lbnRTaGFkZXJTdHJpbmcoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBt
X2ZyYWdtZW50U2hhZGVyU3RyaW5nOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEhhdmVDbGll
bnRzKCkgT1ZFUlJJREUgeyBub3RpZnlDbGllbnRzKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVtb3ZlTGFzdENsaWVudCgpIE9WRVJSSURFIHsgfQorCitwcml2YXRlOgorICAgIFN0aWxsQ3Vz
dG9tRmlsdGVyUHJvZ3JhbShTdHJpbmcgdmVydGV4U2hhZGVyU3RyaW5nLCBTdHJpbmcgZnJhZ21l
bnRTaGFkZXIsIEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyBtaXhTZXR0aW5ncykKKyAg
ICAgICAgOiBDdXN0b21GaWx0ZXJQcm9ncmFtKG1peFNldHRpbmdzKQorICAgICAgICAsIG1fdmVy
dGV4U2hhZGVyU3RyaW5nKHZlcnRleFNoYWRlclN0cmluZykKKyAgICAgICAgLCBtX2ZyYWdtZW50
U2hhZGVyU3RyaW5nKG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcpCisgICAgeworICAgIH0KKworICAg
IFN0cmluZyBtX3ZlcnRleFNoYWRlclN0cmluZzsKKyAgICBTdHJpbmcgbV9mcmFnbWVudFNoYWRl
clN0cmluZzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJM
RShDU1NfU0hBREVSUykKKworI2VuZGlmIC8vIFN0aWxsQ3VzdG9tRmlsdGVyUHJvZ3JhbV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0
ZXJQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21G
aWx0ZXJQcm9ncmFtLmgKaW5kZXggMWNiZTAxZDM1ZjA2NzNkMjJhMmUwZGNiN2QxOGJlMTMwMmFi
MmZkNS4uNjA1N2QxYjg3MTQ3Y2EzYmUwYWI2NWE0MjUzZjIwZGI2NjVkY2Y0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3Jh
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRl
clByb2dyYW0uaApAQCAtNTYsNiArNTYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRGcmFnbWVu
dFNoYWRlcihQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiBzaGFkZXIpIHsgbV9mcmFnbWVudFNoYWRl
ciA9IHNoYWRlcjsgfQogICAgIFN0eWxlU2hhZGVyKiBmcmFnbWVudFNoYWRlcigpIGNvbnN0IHsg
cmV0dXJuIG1fZnJhZ21lbnRTaGFkZXIuZ2V0KCk7IH0KICAgICAKKyAgICB2aXJ0dWFsIGJvb2wg
aXNTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0cnVl
OyB9CisKICAgICB2aXJ0dWFsIFN0cmluZyB2ZXJ0ZXhTaGFkZXJTdHJpbmcoKSBjb25zdAogICAg
IHsKICAgICAgICAgQVNTRVJUKGlzTG9hZGVkKCkpOwpAQCAtMTIwLDcgKzEyMiw4IEBAIHB1Ymxp
YzoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQ
cm9ncmFtJiBvKSBjb25zdCAKICAgICB7Ci0gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgY2FzdCBp
cyB1Z2x5LCBidXQgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtIGlzIHRoZSBzaW5nbGUgaW1wbGVt
ZW50YXRpb24gb2YgQ3VzdG9tRmlsdGVyUHJvZ3JhbS4KKyAgICAgICAgaWYgKCFvLmlzU3R5bGVD
dXN0b21GaWx0ZXJQcm9ncmFtKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IGNvbnN0IFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSogb3RoZXIgPSBzdGF0aWNfY2FzdDxjb25z
dCBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0qPigmbyk7CiAgICAgICAgIHJldHVybiBjYWNoZWRW
ZXJ0ZXhTaGFkZXIoKSA9PSBvdGhlci0+Y2FjaGVkVmVydGV4U2hhZGVyKCkgJiYgY2FjaGVkRnJh
Z21lbnRTaGFkZXIoKSA9PSBvdGhlci0+Y2FjaGVkRnJhZ21lbnRTaGFkZXIoKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4
IGNiZjYyNDkyNjg5NjdhOTk0OGU5NGYxNjc2NDY2Yjc2ZDE3YmIyNTEuLmQyN2U1YTA2ZTY5NjM0
Mjk0OGRjY2UwNDEzODE0MTAzYmM0ZDk3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC01NSw2ICs1NSwyMyBAQAogI2lmIEVOQUJM
RShDU1NfRklMVEVSUykKICNpbmNsdWRlIDxXZWJDb3JlL0ZpbHRlck9wZXJhdGlvbnMuaD4KICNl
bmRpZgorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorI2luY2x1ZGUgPFdlYkNvcmUvQ3VzdG9t
RmlsdGVyQXJyYXlQYXJhbWV0ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0N1c3RvbUZpbHRlck51
bWJlclBhcmFtZXRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DdXN0b21GaWx0ZXJQcm9ncmFtLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9DdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0lkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9NYXRy
aXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWF0cml4VHJhbnNm
b3JtT3BlcmF0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QZXJzcGVjdGl2ZVRyYW5zZm9ybU9w
ZXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TY2FsZVRyYW5zZm9ybU9wZXJhdGlvbi5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvU2tld1RyYW5zZm9ybU9wZXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU3Rp
bGxDdXN0b21GaWx0ZXJQcm9ncmFtLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UcmFuc2xhdGVUcmFu
c2Zvcm1PcGVyYXRpb24uaD4KKyNlbmRpZgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwpAQCAtNzIyLDYgKzczOSw1NyBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Rmls
dGVyT3BlcmF0aW9ucz46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsCiAgICAgICAg
ICAgICBBcmd1bWVudENvZGVyPENvbG9yPjo6ZW5jb2RlKGVuY29kZXIsIHNoYWRvdy0+Y29sb3Io
KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorI2lmIEVOQUJMRShDU1NfU0hBREVS
UykKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNVU1RPTTogeworICAgICAgICAgICAg
Y29uc3QgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKiBjdXN0b21PcGVyYXRpb24gPSBzdGF0aWNfY2Fz
dDxjb25zdCBDdXN0b21GaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIpOworCisgICAgICAgICAgICBB
U1NFUlQoY3VzdG9tT3BlcmF0aW9uLT5wcm9ncmFtKCkpOworICAgICAgICAgICAgUmVmUHRyPEN1
c3RvbUZpbHRlclByb2dyYW0+IHByb2dyYW0gPSBjdXN0b21PcGVyYXRpb24tPnByb2dyYW0oKTsK
KyAgICAgICAgICAgIEFTU0VSVChwcm9ncmFtLT5pc0xvYWRlZCgpKTsKKyAgICAgICAgICAgIEN1
c3RvbUZpbHRlclByb2dyYW1JbmZvIHByb2dyYW1JbmZvID0gcHJvZ3JhbS0+cHJvZ3JhbUluZm8o
KTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShwcm9ncmFtSW5mby52ZXJ0ZXhTaGFkZXJT
dHJpbmcoKSk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUocHJvZ3JhbUluZm8uZnJhZ21l
bnRTaGFkZXJTdHJpbmcoKSk7CisgICAgICAgICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0
dGluZ3MgbWl4U2V0dGluZ3MgPSBwcm9ncmFtSW5mby5taXhTZXR0aW5ncygpOworICAgICAgICAg
ICAgZW5jb2Rlci0+ZW5jb2RlKG1peFNldHRpbmdzLmVuYWJsZWQpOworICAgICAgICAgICAgZW5j
b2Rlci0+ZW5jb2RlRW51bShtaXhTZXR0aW5ncy5ibGVuZE1vZGUpOworICAgICAgICAgICAgZW5j
b2Rlci0+ZW5jb2RlRW51bShtaXhTZXR0aW5ncy5jb21wb3NpdGVPcGVyYXRvcik7CisKKyAgICAg
ICAgICAgIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QgcGFyYW1ldGVycyA9IGN1c3RvbU9wZXJh
dGlvbi0+cGFyYW1ldGVycygpOworICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKHBh
cmFtZXRlcnMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGFy
YW1ldGVycy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShw
YXJhbWV0ZXJzW2ldLT5uYW1lKCkpOworICAgICAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUVu
dW0ocGFyYW1ldGVyc1tpXS0+cGFyYW1ldGVyVHlwZSgpKTsKKworICAgICAgICAgICAgICAgIHN3
aXRjaCAocGFyYW1ldGVyc1tpXS0+cGFyYW1ldGVyVHlwZSgpKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6OkFSUkFZOiB7CisgICAgICAgICAgICAgICAgICAg
IEN1c3RvbUZpbHRlckFycmF5UGFyYW1ldGVyKiBhcnJheVBhcmFtZXRlciA9IHN0YXRpY19jYXN0
PEN1c3RvbUZpbHRlckFycmF5UGFyYW1ldGVyKj4ocGFyYW1ldGVyc1tpXS5nZXQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGVuY29kZXItPmVuY29kZVVJbnQzMihhcnJheVBhcmFtZXRlci0+c2l6
ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBhcnJheVBh
cmFtZXRlci0+c2l6ZSgpOyArK2opCisgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVyLT5l
bmNvZGUoYXJyYXlQYXJhbWV0ZXItPnZhbHVlQXQoaikpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBDdXN0b21GaWx0
ZXJQYXJhbWV0ZXI6Ok5VTUJFUjogeworICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWx0ZXJO
dW1iZXJQYXJhbWV0ZXIqIG51Ym1lclBhcmFtZXRlciA9IHN0YXRpY19jYXN0PEN1c3RvbUZpbHRl
ck51bWJlclBhcmFtZXRlcio+KHBhcmFtZXRlcnNbaV0uZ2V0KCkpOworICAgICAgICAgICAgICAg
ICAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIobnVibWVyUGFyYW1ldGVyLT5zaXplKCkpOworICAg
ICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG51Ym1lclBhcmFtZXRlci0+
c2l6ZSgpOyArK2opCisgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUobnVi
bWVyUGFyYW1ldGVyLT52YWx1ZUF0KGopKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmlsdGVyUGFyYW1l
dGVyOjpUUkFOU0ZPUk06IHsKKyAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmlsdGVyVHJhbnNm
b3JtUGFyYW1ldGVyKiB0cmFuc2Zvcm1QYXJhbWV0ZXIgPSBzdGF0aWNfY2FzdDxDdXN0b21GaWx0
ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIqPihwYXJhbWV0ZXJzW2ldLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1PcGVyYXRpb25zPjo6ZW5jb2RlKGVuY29k
ZXIsIHRyYW5zZm9ybVBhcmFtZXRlci0+b3BlcmF0aW9ucygpKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKGN1c3RvbU9wZXJhdGlvbi0+bWVz
aFJvd3MoKSk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUoY3VzdG9tT3BlcmF0aW9uLT5t
ZXNoQ29sdW1ucygpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUVudW0oY3VzdG9tT3Bl
cmF0aW9uLT5tZXNoQm94VHlwZSgpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUVudW0o
Y3VzdG9tT3BlcmF0aW9uLT5tZXNoVHlwZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisjZW5kaWYKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC03ODMsNiArODUxLDk0IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0
ZXJPcGVyYXRpb25zPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwKICAgICAgICAg
ICAgIGZpbHRlciA9IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShsb2NhdGlvbiwg
c3RkRGV2aWF0aW9uLCBjb2xvciwgdHlwZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OkNVU1RPTTogeworICAgICAgICAgICAgU3RyaW5nIHZlcnRleFNoYWRlclN0cmluZzsKKyAgICAg
ICAgICAgIFN0cmluZyBmcmFnbWVudFNoYWRlclN0cmluZzsKKyAgICAgICAgICAgIEN1c3RvbUZp
bHRlclByb2dyYW1NaXhTZXR0aW5ncyBtaXhTZXR0aW5nczsKKyAgICAgICAgICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlKHZlcnRleFNoYWRlclN0cmluZykpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZnJhZ21lbnRTaGFkZXJT
dHJpbmcpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKG1peFNldHRpbmdzLmVuYWJsZWQpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShtaXhTZXR0
aW5ncy5ibGVuZE1vZGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShtaXhTZXR0aW5ncy5jb21wb3NpdGVPcGVyYXRv
cikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgUmVmUHRyPEN1
c3RvbUZpbHRlclByb2dyYW0+IHByb2dyYW0gPSBTdGlsbEN1c3RvbUZpbHRlclByb2dyYW06OmNy
ZWF0ZSh2ZXJ0ZXhTaGFkZXJTdHJpbmcsIGZyYWdtZW50U2hhZGVyU3RyaW5nLCBtaXhTZXR0aW5n
cyk7CisKKyAgICAgICAgICAgIHVpbnQzMl90IHBhcmFtZXRlcnNTaXplOworICAgICAgICAgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIocGFyYW1ldGVyc1NpemUpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlz
dCBwYXJhbWV0ZXJzKHBhcmFtZXRlcnNTaXplKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcGFyYW1ldGVyc1NpemU7ICsraSkgeworICAgICAgICAgICAgICAgIFN0cmluZyBu
YW1lOworICAgICAgICAgICAgICAgIEN1c3RvbUZpbHRlclBhcmFtZXRlcjo6UGFyYW1ldGVyVHlw
ZSBwYXJhbWV0ZXJUeXBlOworICAgICAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG5h
bWUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGVFbnVtKHBhcmFtZXRlclR5cGUpKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHBhcmFtZXRlclR5
cGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEN1c3RvbUZpbHRlclBhcmFtZXRlcjo6QVJSQVk6
IHsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEN1c3RvbUZpbHRlckFycmF5UGFyYW1ldGVy
PiBhcnJheVBhcmFtZXRlciA9IEN1c3RvbUZpbHRlckFycmF5UGFyYW1ldGVyOjpjcmVhdGUobmFt
ZSk7CisgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKGFycmF5UGFyYW1ldGVy
KTsKKyAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYXJyYXlQYXJhbWV0ZXJTaXplOworICAg
ICAgICAgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJbnQzMihhcnJheVBhcmFtZXRl
clNpemUpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgICAgICBkb3VibGUgYXJyYXlQYXJhbWV0ZXJWYWx1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBhcnJheVBhcmFtZXRlclNpemU7ICsraikgeworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoYXJyYXlQYXJhbWV0ZXJW
YWx1ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgICAgICAgICAgICAgYXJyYXlQYXJhbWV0ZXItPmFkZFZhbHVlKGFycmF5UGFyYW1ldGVy
VmFsdWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEN1c3RvbUZpbHRlclBh
cmFtZXRlcjo6TlVNQkVSOiB7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxDdXN0b21GaWx0
ZXJOdW1iZXJQYXJhbWV0ZXI+IG51bWJlclBhcmFtZXRlciA9IEN1c3RvbUZpbHRlck51bWJlclBh
cmFtZXRlcjo6Y3JlYXRlKG5hbWUpOworICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFw
cGVuZChudW1iZXJQYXJhbWV0ZXIpOworICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBudW1i
ZXJQYXJhbWV0ZXJTaXplOworICAgICAgICAgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29k
ZVVJbnQzMihudW1iZXJQYXJhbWV0ZXJTaXplKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIG51bWJlclBhcmFtZXRlclZh
bHVlOworICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG51bWJlclBh
cmFtZXRlclNpemU7ICsraikgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUobnVtYmVyUGFyYW1ldGVyVmFsdWUpKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlclBhcmFtZXRl
ci0+YWRkVmFsdWUobnVtYmVyUGFyYW1ldGVyVmFsdWUpOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBjYXNlIEN1c3RvbUZpbHRlclBhcmFtZXRlcjo6VFJBTlNGT1JNOiB7CisgICAgICAg
ICAgICAgICAgICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXI+IHRyYW5z
Zm9ybVBhcmFtZXRlciA9IEN1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlcjo6Y3JlYXRlKG5h
bWUpOworICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZCh0cmFuc2Zvcm1QYXJh
bWV0ZXIpOworICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlv
bnM7CisgICAgICAgICAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1PcGVy
YXRpb25zPjo6ZGVjb2RlKGRlY29kZXIsIG9wZXJhdGlvbnMpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1QYXJhbWV0
ZXItPnNldE9wZXJhdGlvbnMob3BlcmF0aW9ucyk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHVuc2lnbmVkIG1lc2hSb3dzOworICAgICAgICAgICAgdW5zaWduZWQgbWVz
aENvbHVtbnM7CisgICAgICAgICAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hCb3hUeXBl
IG1lc2hCb3hUeXBlOworICAgICAgICAgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlw
ZSBtZXNoVHlwZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG1lc2hSb3dzKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXIt
PmRlY29kZShtZXNoQ29sdW1ucykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVFbnVtKG1lc2hCb3hUeXBlKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVu
dW0obWVzaFR5cGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAg
ICAgZmlsdGVyID0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUocHJvZ3JhbSwgcGFyYW1l
dGVycywgbWVzaFJvd3MsIG1lc2hDb2x1bW5zLCBtZXNoQm94VHlwZSwgbWVzaFR5cGUpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTc5NSw2ICs5NTEsMTY4IEBAIGJvb2wgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPjo6ZGVjb2RlKEFyZ3VtZW50RGVj
b2RlciogZGVjb2RlciwKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQordm9p
ZCBBcmd1bWVudENvZGVyPFRyYW5zZm9ybU9wZXJhdGlvbnM+OjplbmNvZGUoQXJndW1lbnRFbmNv
ZGVyKiBlbmNvZGVyLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB0cmFuc2Zvcm1PcGVyYXRp
b25zKQoreworICAgIGVuY29kZXItPmVuY29kZVVJbnQzMih0cmFuc2Zvcm1PcGVyYXRpb25zLnNp
emUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2Zvcm1PcGVyYXRpb25zLnNp
emUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogb3BlcmF0aW9u
ID0gdHJhbnNmb3JtT3BlcmF0aW9ucy5hdChpKTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlRW51
bShvcGVyYXRpb24tPmdldE9wZXJhdGlvblR5cGUoKSk7CisKKyAgICAgICAgc3dpdGNoIChvcGVy
YXRpb24tPmdldE9wZXJhdGlvblR5cGUoKSkgeworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6U0NBTEVfWDoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1k6
CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRToKKyAgICAgICAgY2FzZSBU
cmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1o6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0
aW9uOjpTQ0FMRV8zRDoKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxj
b25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPngoKSk7CisgICAgICAg
ICAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVy
YXRpb24qPihvcGVyYXRpb24pLT55KCkpOworICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0
YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+eigp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6
VFJBTlNMQVRFX1g6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVf
WToKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURToKKyAgICAgICAg
Y2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9aOgorICAgICAgICBjYXNlIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFXzNEOgorICAgICAgICAgICAgQXJndW1lbnRDb2RlcjxM
ZW5ndGg+OjplbmNvZGUoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRlVHJhbnNm
b3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+eCgpKTsKKyAgICAgICAgICAgIEFyZ3VtZW50Q29k
ZXI8TGVuZ3RoPjo6ZW5jb2RlKGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPnkoKSk7CisgICAgICAgICAgICBBcmd1bWVu
dENvZGVyPExlbmd0aD46OmVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xh
dGVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT56KCkpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEU6CisgICAgICAgIGNh
c2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWDoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1P
cGVyYXRpb246OlJPVEFURV9ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9U
QVRFXzNEOgorICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGNvbnN0IFJv
dGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPngoKSk7CisgICAgICAgICAgICBl
bmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8Y29uc3QgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9u
Kj4ob3BlcmF0aW9uKS0+eSgpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNf
Y2FzdDxjb25zdCBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT56KCkpOwor
ICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGNvbnN0IFJvdGF0ZVRyYW5z
Zm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPmFuZ2xlKCkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXX1g6CisgICAgICAgIGNhc2Ug
VHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXX1k6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0
aW9uOjpTS0VXOgorICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGNvbnN0
IFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT5hbmdsZVgoKSk7CisgICAgICAg
ICAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8Y29uc3QgU2tld1RyYW5zZm9ybU9wZXJh
dGlvbio+KG9wZXJhdGlvbiktPmFuZ2xlWSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6TUFUUklYOgorICAgICAgICAgICAgQXJndW1lbnRD
b2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxj
b25zdCBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT5tYXRyaXgoKSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJ
WF8zRDoKKyAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+Ojpl
bmNvZGUoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8Y29uc3QgTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRp
b24qPihvcGVyYXRpb24pLT5tYXRyaXgoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlBFUlNQRUNUSVZFOgorICAgICAgICAgICAgQXJndW1l
bnRDb2RlcjxMZW5ndGg+OjplbmNvZGUoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8Y29uc3QgUGVyc3Bl
Y3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT5wZXJzcGVjdGl2ZSgpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6SURFTlRJ
VFk6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
Ok5PTkU6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgfQorfQorCitib29sIEFyZ3VtZW50Q29kZXI8VHJhbnNmb3Jt
T3BlcmF0aW9ucz46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFRyYW5zZm9ybU9w
ZXJhdGlvbnMmIHRyYW5zZm9ybU9wZXJhdGlvbnMpCit7CisgICAgdWludDMyX3Qgb3BlcmF0aW9u
c1NpemU7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIob3BlcmF0aW9uc1NpemUpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9wZXJh
dGlvbnNTaXplOyArK2kpIHsKKyAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25U
eXBlIG9wZXJhdGlvblR5cGU7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShvcGVy
YXRpb25UeXBlKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBzd2l0Y2gg
KG9wZXJhdGlvblR5cGUpIHsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxF
X1g6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9ZOgorICAgICAgICBj
YXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEU6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpTQ0FMRV9aOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVf
M0Q6IHsKKyAgICAgICAgICAgIGRvdWJsZSB4LCB5LCB6OworICAgICAgICAgICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGUoeCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoeSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoeikpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVyYXRpb25z
KCkuYXBwZW5kKFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoeCwgeSwgeiwgb3BlcmF0
aW9uVHlwZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBU
cmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9YOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9w
ZXJhdGlvbjo6VFJBTlNMQVRFX1k6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpU
UkFOU0xBVEU6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWjoK
KyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV8zRDogeworICAgICAg
ICAgICAgTGVuZ3RoIHgsIHksIHo7CisgICAgICAgICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8TGVu
Z3RoPjo6ZGVjb2RlKGRlY29kZXIsIHgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2RlcjxMZW5ndGg+OjpkZWNvZGUoZGVjb2Rlciwg
eSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFBcmd1
bWVudENvZGVyPExlbmd0aD46OmRlY29kZShkZWNvZGVyLCB6KSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB0cmFuc2Zvcm1PcGVyYXRpb25zLm9wZXJhdGlvbnMo
KS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoeCwgeSwgeiwgb3Bl
cmF0aW9uVHlwZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURToKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVy
YXRpb246OlJPVEFURV9YOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRF
X1k6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfM0Q6IHsKKyAgICAg
ICAgICAgIGRvdWJsZSB4LCB5LCB6LCBhbmdsZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+
ZGVjb2RlKHgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKHkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHopKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGFuZ2xlKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB0cmFuc2Zvcm1PcGVyYXRpb25z
Lm9wZXJhdGlvbnMoKS5hcHBlbmQoUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoeCwg
eSwgeiwgYW5nbGUsIG9wZXJhdGlvblR5cGUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXX1g6CisgICAgICAgIGNh
c2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXX1k6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpTS0VXOiB7CisgICAgICAgICAgICBkb3VibGUgYW5nbGVYLCBhbmdsZVk7CisgICAg
ICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShhbmdsZVgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGFuZ2xlWSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdHJhbnNmb3JtT3BlcmF0
aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFNrZXdUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShh
bmdsZVgsIGFuZ2xlWSwgb3BlcmF0aW9uVHlwZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWDogeworICAgICAg
ICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4OworICAgICAgICAgICAgaWYgKCFBcmd1
bWVudENvZGVyPFRyYW5zZm9ybWF0aW9uTWF0cml4Pjo6ZGVjb2RlKGRlY29kZXIsIG1hdHJpeCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdHJhbnNmb3JtT3Bl
cmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbjo6Y3Jl
YXRlKG1hdHJpeCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWF8zRDogeworICAgICAgICAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggbWF0cml4OworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVyPFRyYW5z
Zm9ybWF0aW9uTWF0cml4Pjo6ZGVjb2RlKGRlY29kZXIsIG1hdHJpeCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVyYXRp
b25zKCkuYXBwZW5kKE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUobWF0cml4KSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFRyYW5zZm9ybU9w
ZXJhdGlvbjo6UEVSU1BFQ1RJVkU6IHsKKyAgICAgICAgICAgIExlbmd0aCBwZXJzcGVjdGl2ZTsK
KyAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2RlcjxMZW5ndGg+OjpkZWNvZGUoZGVjb2Rlciwg
cGVyc3BlY3RpdmUpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IHRyYW5zZm9ybU9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChQZXJzcGVjdGl2ZVRyYW5z
Zm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHBlcnNwZWN0aXZlKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6SURFTlRJVFk6Cisg
ICAgICAgICAgICB0cmFuc2Zvcm1PcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoSWRlbnRp
dHlUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Tk9ORToKKyAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAg
cmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIENvcmVJ
UEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRl
eCBiMDhmMTE4Zjk3YjgwMTU3Njk4YTcyMThlNmQ2OTdmMzE1YmYwN2EyLi5mMzdmZDNkZGM3YjE2
ZGNhYzU0OTI3ZmZmMDg2ZjE5MDZlMTc0NDU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC03OSw2ICs3OSwxMiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKIH0KICNlbmRpZgorCisjaWYgRU5B
QkxFKENTU19TSEFERVJTKQorbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIFRyYW5zZm9y
bU9wZXJhdGlvbnM7Cit9CisjZW5kaWYKICNlbmRpZgogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CkBA
IC0yNTEsNiArMjU3LDEzIEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6RmlsdGVyT3BlcmF0aW9ucz4gewogICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERl
Y29kZXIqLCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zJik7CiB9OwogI2VuZGlmCisKKyNpZiBF
TkFCTEUoQ1NTX1NIQURFUlMpCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OlRyYW5zZm9ybU9wZXJhdGlvbnM+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1l
bnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtT3BlcmF0aW9ucyYpOworICAgIHN0
YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpUcmFuc2Zvcm1PcGVy
YXRpb25zJik7Cit9OworI2VuZGlmCiAjZW5kaWYKIAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167854</attachid>
            <date>2012-10-09 14:59:22 -0700</date>
            <delta_ts>2012-10-10 03:24:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98733-20121010065805.patch</filename>
            <type>text/plain</type>
            <size>25100</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNTc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWZiMGM1Mjc2ZjVlYmVl
YjE5YzVlZjU2N2E2Nzk3YjJkYTg5NDU2ZS4uZDIwMjY5YjdjM2EzNDRmYmU1MDEyMWY3NmRhOGI2
ZGRhMmFmZGE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTEwLTA5ICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtXSzJdIEFk
ZCBDdXN0b21GaWx0ZXJPcGVyYXRpb24gc2VyaWFsaXphdGlvbiBpbiBBcmd1bWVudENvZGVyLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg3MzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uOjpwYXJhbWV0ZXJzKCkgdG8gY29uc3QgZnVuY3Rpb24sIGJlY2F1
c2UKKyAgICAgICAgdGhpcyBtZXRob2QgaXMgYSBnZXR0ZXIgYW5kIGEgY29uc3QgaW5zdGFuY2Ug
bmVlZHMgdG8gY2FsbCB0aGlzIG1ldGhvZC4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVz
ZSB0aGVyZSBpcyBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpwYXJhbWV0ZXJzKToKKwogMjAxMi0xMC0wNSAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBbUXRdIE1h
a2UgSW1hZ2VCdWZmZXJRdCB1c2UgcHJlbXVsdGlwbGllZCBjb252ZXJ0aW5nIGZ1bmN0aW9ucyBp
biBDb2xvci5oIGluc3RlYWQgb2YgaXRzIG93biBtZWNoYW5pc20uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTMx
YTM0ZGI4M2UwZTA0MmU3OGNhZTQ1MTExZmY5ZGQwZDc0ZThmMS4uMjg0ZTRlNWFiMTQ5MjY3OTk3
ZWQ1NDgzOWQ1NDI1YWE5Y2FhN2ZjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEy
LTEwLTA5ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAg
ICAgIFtXSzJdIEFkZCBDdXN0b21GaWx0ZXJPcGVyYXRpb24gc2VyaWFsaXphdGlvbiBpbiBBcmd1
bWVudENvZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTg3MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgQXJndW1lbnRDb2RlcnMgZm9yIEN1c3RvbUZpbHRlck9wZXJhdGlvbiBhbmQgYWxsIGRl
cGVuZGVudCBjbGFzc2VzLgorICAgICAgICBDb29yZGluYXRlZCBncmFwaGljcyB3aWxsIHVzZSB0
aGlzIGNzcyBzaGFkZXJzIHNlcmlhbGl6YXRpb24gd2hlbiBpdCBlbmFibGVzIENTUworICAgICAg
ICBTaGFkZXJzLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY29kZSBwYXRoIGlzIG5vdCBhY3Rp
dmF0ZWQgeWV0LgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBT
aGFyZWQvU3RpbGxDdXN0b21GaWx0ZXJQcm9ncmFtLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKFN0aWxsQ3VzdG9tRmlsdGVyUHJvZ3JhbSk6CisgICAgICAgIFN0aWxsQ3Vz
dG9tRmlsdGVyUHJvZ3JhbSBpcyBhIHN0aWxsIGltYWdlIG9mIFN0eWxlQ3VzdG9tRmlsdGVyUHJv
Z3JhbS4gVUkKKyAgICAgICAgUHJvY2VzcyB1c2VzIHRoaXMgY2xhc3MgaW5zdGVhZCBvZiBTdHls
ZUN1c3RvbUZpbHRlclByb2dyYW0gYmVjYXVzZSBVSQorICAgICAgICBQcm9jZXNzIGNhbiBub3Qg
Z2V0IGEgY3VzdG9tIGZpbHRlciBwcm9ncmFtIHZpYSBuZXR3b3JrLgorICAgICAgICAoV2ViS2l0
OjpTdGlsbEN1c3RvbUZpbHRlclByb2dyYW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlN0
aWxsQ3VzdG9tRmlsdGVyUHJvZ3JhbTo6U3RpbGxDdXN0b21GaWx0ZXJQcm9ncmFtKToKKyAgICAg
ICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKENvcmVJUEM6
Ojo6ZW5jb2RlKToKKyAgICAgICAgKENvcmVJUEM6Ojo6ZGVjb2RlKToKKyAgICAgICAgKENvcmVJ
UEMpOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIFRhcmdldC5wcmk6CisKIDIwMTItMTAtMDUgIFN1ZGFyc2Fu
YSBOYWdpbmVuaSAgPHN1ZGFyc2FuYS5uYWdpbmVuaUBpbnRlbC5jb20+CiAKICAgICAgICAgW1dL
Ml1bV1RSXSBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRlc3RSdW5uZXIuc2V0U2VyaWFsaXplSFRU
UExvYWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaAppbmRleCA3ODhiM2YwMTYyNmIz
ZjRhZjA1MjBkZDhjNmYyNWFmNDRhMjU0MGEzLi4wZDY0ZDIzNjgyNzc4NjQ1M2QzZWFjN2E0NmQ3
MDVlOTQ0ZjIxM2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTY5LDcg
KzY5LDcgQEAgcHVibGljOgogICAgIAogICAgIEN1c3RvbUZpbHRlclByb2dyYW0qIHByb2dyYW0o
KSBjb25zdCB7IHJldHVybiBtX3Byb2dyYW0uZ2V0KCk7IH0KICAgICAKLSAgICBjb25zdCBDdXN0
b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBwYXJhbWV0ZXJzKCkgeyByZXR1cm4gbV9wYXJhbWV0ZXJz
OyB9CisgICAgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgcGFyYW1ldGVycygpIGNv
bnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQogICAgIAogICAgIHVuc2lnbmVkIG1lc2hSb3dz
KCkgY29uc3QgeyByZXR1cm4gbV9tZXNoUm93czsgfQogICAgIHVuc2lnbmVkIG1lc2hDb2x1bW5z
KCkgY29uc3QgeyByZXR1cm4gbV9tZXNoQ29sdW1uczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmxp
c3QuYW0KaW5kZXggMjU0MzIwMzBmZTQ2NjQzZWFmMjg2MzBhMmM2MzI1OWU2ODM5NGQ0Mi4uN2Yx
YjllODUyM2E1NWU2NjgyZjNiZDdkMmRjMmVhZjVmYjY0ZjhjOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtl
ZmlsZS5saXN0LmFtCkBAIC00MzIsNiArNDMyLDcgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Vzc2lvblN0YXRlLmggXAogCVNvdXJjZS9XZWJLaXQyL1No
YXJlZC9TdGF0aXN0aWNzRGF0YS5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TdGF0aXN0
aWNzRGF0YS5oIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU3RpbGxDdXN0b21GaWx0ZXJQcm9n
cmFtLmggXAogCVNvdXJjZS9XZWJLaXQyL1NoYXJlZC9TdHJpbmdQYWlyVmVjdG9yLmggXAogCVNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9zb3VwL1BsYXRmb3JtQ2VydGlmaWNhdGVJbmZvLmNwcCBcCiAJ
U291cmNlL1dlYktpdDIvU2hhcmVkL3NvdXAvUGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8uaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU3RpbGxDdXN0b21GaWx0ZXJQcm9ncmFt
LmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU3RpbGxDdXN0b21GaWx0ZXJQcm9ncmFtLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNDJkZjk1YWU3NzA4ZmEyZThhMDZlNDQ0ZWRlOGZjOTc3YzczYTdlYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TdGlsbEN1c3RvbUZpbHRlclByb2dy
YW0uaApAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkg
MTAwLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZQorICogICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAqICAgIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZworICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzCisgKiAgICBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UiDigJxBUyBJU+KAnSBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERF
UiBCRQorICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLAorICogT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorICog
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GCisgKiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3Rp
bGxDdXN0b21GaWx0ZXJQcm9ncmFtX2gKKyNkZWZpbmUgU3RpbGxDdXN0b21GaWx0ZXJQcm9ncmFt
X2gKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyNpbmNsdWRlIDxXZWJDb3JlL0N1c3RvbUZp
bHRlclByb2dyYW0uaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFN0aWxsQ3VzdG9t
RmlsdGVyUHJvZ3JhbSA6IHB1YmxpYyBXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdGlsbEN1c3RvbUZpbHRlclByb2dyYW0+IGNy
ZWF0ZShTdHJpbmcgdmVydGV4U2hhZGVyU3RyaW5nLCBTdHJpbmcgbV9mcmFnbWVudFNoYWRlclN0
cmluZywgV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIG1peFNldHRpbmdz
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdGlsbEN1c3RvbUZpbHRlclBy
b2dyYW0odmVydGV4U2hhZGVyU3RyaW5nLCBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nLCBtaXhTZXR0
aW5ncykpOworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IEN1c3RvbUZpbHRlclByb2dyYW0mIG8pIGNvbnN0IE9WRVJSSURFCisgICAgeworICAgICAgICAv
LyBUaGUgZm9sbG93aW5nIGNhc3QgaXMgdWdseSwgYnV0IFN0aWxsQ3VzdG9tRmlsdGVyUHJvZ3Jh
bSBpcyB0aGUgc2luZ2xlIGltcGxlbWVudGF0aW9uIG9mIEN1c3RvbUZpbHRlclByb2dyYW0gb24g
VUkgUHJvY2Vzcy4KKyAgICAgICAgY29uc3QgU3RpbGxDdXN0b21GaWx0ZXJQcm9ncmFtKiBvdGhl
ciA9IHN0YXRpY19jYXN0PGNvbnN0IFN0aWxsQ3VzdG9tRmlsdGVyUHJvZ3JhbSo+KCZvKTsKKyAg
ICAgICAgcmV0dXJuIG1peFNldHRpbmdzKCkgPT0gb3RoZXItPm1peFNldHRpbmdzKCkgJiYgbV92
ZXJ0ZXhTaGFkZXJTdHJpbmcgPT0gb3RoZXItPnZlcnRleFNoYWRlclN0cmluZygpICYmIG1fZnJh
Z21lbnRTaGFkZXJTdHJpbmcgPT0gb3RoZXItPmZyYWdtZW50U2hhZGVyU3RyaW5nKCk7CisgICAg
fQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBTdHJpbmcgdmVydGV4U2hhZGVyU3RyaW5nKCkg
Y29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV92ZXJ0ZXhTaGFkZXJTdHJpbmc7IH0KKyAgICB2aXJ0
dWFsIFN0cmluZyBmcmFnbWVudFNoYWRlclN0cmluZygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IG1fZnJhZ21lbnRTaGFkZXJTdHJpbmc7IH0KKworICAgIHZpcnR1YWwgdm9pZCB3aWxsSGF2ZUNs
aWVudHMoKSBPVkVSUklERSB7IG5vdGlmeUNsaWVudHMoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBk
aWRSZW1vdmVMYXN0Q2xpZW50KCkgT1ZFUlJJREUgeyB9CisKK3ByaXZhdGU6CisgICAgU3RpbGxD
dXN0b21GaWx0ZXJQcm9ncmFtKFN0cmluZyB2ZXJ0ZXhTaGFkZXJTdHJpbmcsIFN0cmluZyBmcmFn
bWVudFNoYWRlciwgV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIG1peFNl
dHRpbmdzKQorICAgICAgICA6IFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW0obWl4U2V0dGlu
Z3MpCisgICAgICAgICwgbV92ZXJ0ZXhTaGFkZXJTdHJpbmcodmVydGV4U2hhZGVyU3RyaW5nKQor
ICAgICAgICAsIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcobV9mcmFnbWVudFNoYWRlclN0cmluZykK
KyAgICB7CisgICAgfQorCisgICAgU3RyaW5nIG1fdmVydGV4U2hhZGVyU3RyaW5nOworICAgIFN0
cmluZyBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1NIQURFUlMpCisKKyNlbmRpZiAvLyBTdGlsbEN1c3Rv
bUZpbHRlclByb2dyYW1faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmNwcAppbmRleCBjYmY2MjQ5MjY4OTY3YTk5NDhlOTRmMTY3NjQ2NmI3NmQxN2Ji
MjUxLi5lM2U4NmNmMWI3ZDdlMmNlZGJjZTY5Y2NhNTA3OGMzNTNlOWFjNjAxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNTUsNiAr
NTUsMjMgQEAKICNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCiAjaW5jbHVkZSA8V2ViQ29yZS9GaWx0
ZXJPcGVyYXRpb25zLmg+CiAjZW5kaWYKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyNpbmNs
dWRlICJTdGlsbEN1c3RvbUZpbHRlclByb2dyYW0uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0N1c3Rv
bUZpbHRlckFycmF5UGFyYW1ldGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DdXN0b21GaWx0ZXJO
dW1iZXJQYXJhbWV0ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0N1c3RvbUZpbHRlck9wZXJhdGlv
bi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9JZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWF0
cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01hdHJpeFRyYW5z
Zm9ybU9wZXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGVyc3BlY3RpdmVUcmFuc2Zvcm1P
cGVyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Ry
YW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oPgorI2VuZGlmCiAjZW5kaWYKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CkBAIC03MjIsNiArNzM5LDU3IEBAIHZvaWQgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rl
ciwKICAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8Q29sb3I+OjplbmNvZGUoZW5jb2Rlciwgc2hh
ZG93LT5jb2xvcigpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisjaWYgRU5BQkxF
KENTU19TSEFERVJTKQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q1VTVE9NOiB7Cisg
ICAgICAgICAgICBjb25zdCBDdXN0b21GaWx0ZXJPcGVyYXRpb24qIGN1c3RvbU9wZXJhdGlvbiA9
IHN0YXRpY19jYXN0PGNvbnN0IEN1c3RvbUZpbHRlck9wZXJhdGlvbio+KGZpbHRlcik7CisKKyAg
ICAgICAgICAgIEFTU0VSVChjdXN0b21PcGVyYXRpb24tPnByb2dyYW0oKSk7CisgICAgICAgICAg
ICBSZWZQdHI8Q3VzdG9tRmlsdGVyUHJvZ3JhbT4gcHJvZ3JhbSA9IGN1c3RvbU9wZXJhdGlvbi0+
cHJvZ3JhbSgpOworICAgICAgICAgICAgQVNTRVJUKHByb2dyYW0tPmlzTG9hZGVkKCkpOworICAg
ICAgICAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8gcHJvZ3JhbUluZm8gPSBwcm9ncmFtLT5w
cm9ncmFtSW5mbygpOworICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHByb2dyYW1JbmZvLnZl
cnRleFNoYWRlclN0cmluZygpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShwcm9ncmFt
SW5mby5mcmFnbWVudFNoYWRlclN0cmluZygpKTsKKyAgICAgICAgICAgIEN1c3RvbUZpbHRlclBy
b2dyYW1NaXhTZXR0aW5ncyBtaXhTZXR0aW5ncyA9IHByb2dyYW1JbmZvLm1peFNldHRpbmdzKCk7
CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUobWl4U2V0dGluZ3MuZW5hYmxlZCk7CisgICAg
ICAgICAgICBlbmNvZGVyLT5lbmNvZGVFbnVtKG1peFNldHRpbmdzLmJsZW5kTW9kZSk7CisgICAg
ICAgICAgICBlbmNvZGVyLT5lbmNvZGVFbnVtKG1peFNldHRpbmdzLmNvbXBvc2l0ZU9wZXJhdG9y
KTsKKworICAgICAgICAgICAgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCBwYXJhbWV0ZXJzID0g
Y3VzdG9tT3BlcmF0aW9uLT5wYXJhbWV0ZXJzKCk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNv
ZGVVSW50MzIocGFyYW1ldGVycy5zaXplKCkpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgZW5jb2Rl
ci0+ZW5jb2RlKHBhcmFtZXRlcnNbaV0tPm5hbWUoKSk7CisgICAgICAgICAgICAgICAgZW5jb2Rl
ci0+ZW5jb2RlRW51bShwYXJhbWV0ZXJzW2ldLT5wYXJhbWV0ZXJUeXBlKCkpOworCisgICAgICAg
ICAgICAgICAgc3dpdGNoIChwYXJhbWV0ZXJzW2ldLT5wYXJhbWV0ZXJUeXBlKCkpIHsKKyAgICAg
ICAgICAgICAgICBjYXNlIEN1c3RvbUZpbHRlclBhcmFtZXRlcjo6QVJSQVk6IHsKKyAgICAgICAg
ICAgICAgICAgICAgQ3VzdG9tRmlsdGVyQXJyYXlQYXJhbWV0ZXIqIGFycmF5UGFyYW1ldGVyID0g
c3RhdGljX2Nhc3Q8Q3VzdG9tRmlsdGVyQXJyYXlQYXJhbWV0ZXIqPihwYXJhbWV0ZXJzW2ldLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKGFycmF5UGFy
YW1ldGVyLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsg
aiA8IGFycmF5UGFyYW1ldGVyLT5zaXplKCk7ICsraikKKyAgICAgICAgICAgICAgICAgICAgICAg
IGVuY29kZXItPmVuY29kZShhcnJheVBhcmFtZXRlci0+dmFsdWVBdChqKSk7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNl
IEN1c3RvbUZpbHRlclBhcmFtZXRlcjo6TlVNQkVSOiB7CisgICAgICAgICAgICAgICAgICAgIEN1
c3RvbUZpbHRlck51bWJlclBhcmFtZXRlciogbnVibWVyUGFyYW1ldGVyID0gc3RhdGljX2Nhc3Q8
Q3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyKj4ocGFyYW1ldGVyc1tpXS5nZXQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIGVuY29kZXItPmVuY29kZVVJbnQzMihudWJtZXJQYXJhbWV0ZXItPnNp
emUoKSk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbnVibWVy
UGFyYW1ldGVyLT5zaXplKCk7ICsraikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZXIt
PmVuY29kZShudWJtZXJQYXJhbWV0ZXItPnZhbHVlQXQoaikpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBDdXN0b21G
aWx0ZXJQYXJhbWV0ZXI6OlRSQU5TRk9STTogeworICAgICAgICAgICAgICAgICAgICBDdXN0b21G
aWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIqIHRyYW5zZm9ybVBhcmFtZXRlciA9IHN0YXRpY19jYXN0
PEN1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlcio+KHBhcmFtZXRlcnNbaV0uZ2V0KCkpOwor
ICAgICAgICAgICAgICAgICAgICBBcmd1bWVudENvZGVyPFRyYW5zZm9ybU9wZXJhdGlvbnM+Ojpl
bmNvZGUoZW5jb2RlciwgdHJhbnNmb3JtUGFyYW1ldGVyLT5vcGVyYXRpb25zKCkpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUoY3VzdG9tT3Bl
cmF0aW9uLT5tZXNoUm93cygpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShjdXN0b21P
cGVyYXRpb24tPm1lc2hDb2x1bW5zKCkpOworICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlRW51
bShjdXN0b21PcGVyYXRpb24tPm1lc2hCb3hUeXBlKCkpOworICAgICAgICAgICAgZW5jb2Rlci0+
ZW5jb2RlRW51bShjdXN0b21PcGVyYXRpb24tPm1lc2hUeXBlKCkpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KQEAgLTc4Myw2ICs4NTEsOTQgQEAgYm9vbCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVy
LAogICAgICAgICAgICAgZmlsdGVyID0gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6Y3JlYXRl
KGxvY2F0aW9uLCBzdGREZXZpYXRpb24sIGNvbG9yLCB0eXBlKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgICAgICBjYXNlIEZpbHRl
ck9wZXJhdGlvbjo6Q1VTVE9NOiB7CisgICAgICAgICAgICBTdHJpbmcgdmVydGV4U2hhZGVyU3Ry
aW5nOworICAgICAgICAgICAgU3RyaW5nIGZyYWdtZW50U2hhZGVyU3RyaW5nOworICAgICAgICAg
ICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIG1peFNldHRpbmdzOworICAgICAgICAg
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUodmVydGV4U2hhZGVyU3RyaW5nKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShmcmFn
bWVudFNoYWRlclN0cmluZykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUobWl4U2V0dGluZ3MuZW5hYmxlZCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVF
bnVtKG1peFNldHRpbmdzLmJsZW5kTW9kZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVFbnVtKG1peFNldHRpbmdzLmNvbXBv
c2l0ZU9wZXJhdG9yKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICBSZWZQdHI8Q3VzdG9tRmlsdGVyUHJvZ3JhbT4gcHJvZ3JhbSA9IFN0aWxsQ3VzdG9tRmlsdGVy
UHJvZ3JhbTo6Y3JlYXRlKHZlcnRleFNoYWRlclN0cmluZywgZnJhZ21lbnRTaGFkZXJTdHJpbmcs
IG1peFNldHRpbmdzKTsKKworICAgICAgICAgICAgdWludDMyX3QgcGFyYW1ldGVyc1NpemU7Cisg
ICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJbnQzMihwYXJhbWV0ZXJzU2l6ZSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBDdXN0b21GaWx0ZXJQ
YXJhbWV0ZXJMaXN0IHBhcmFtZXRlcnMocGFyYW1ldGVyc1NpemUpOworICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzU2l6ZTsgKytpKSB7CisgICAgICAgICAgICAg
ICAgU3RyaW5nIG5hbWU7CisgICAgICAgICAgICAgICAgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyOjpQ
YXJhbWV0ZXJUeXBlIHBhcmFtZXRlclR5cGU7CisgICAgICAgICAgICAgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUobmFtZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0ocGFyYW1ldGVyVHlwZSkpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAgIHN3aXRjaCAo
cGFyYW1ldGVyVHlwZSkgeworICAgICAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmlsdGVyUGFyYW1l
dGVyOjpBUlJBWTogeworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyQXJy
YXlQYXJhbWV0ZXI+IGFycmF5UGFyYW1ldGVyID0gQ3VzdG9tRmlsdGVyQXJyYXlQYXJhbWV0ZXI6
OmNyZWF0ZShuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoYXJy
YXlQYXJhbWV0ZXIpOworICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBhcnJheVBhcmFtZXRl
clNpemU7CisgICAgICAgICAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKGFy
cmF5UGFyYW1ldGVyU2l6ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBhcnJheVBhcmFtZXRlclZhbHVlOworICAgICAg
ICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGFycmF5UGFyYW1ldGVyU2l6ZTsg
KytqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShhcnJh
eVBhcmFtZXRlclZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgICAgICAgICBhcnJheVBhcmFtZXRlci0+YWRkVmFsdWUoYXJy
YXlQYXJhbWV0ZXJWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgQ3Vz
dG9tRmlsdGVyUGFyYW1ldGVyOjpOVU1CRVI6IHsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRy
PEN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlcj4gbnVtYmVyUGFyYW1ldGVyID0gQ3VzdG9tRmls
dGVyTnVtYmVyUGFyYW1ldGVyOjpjcmVhdGUobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHBh
cmFtZXRlcnMuYXBwZW5kKG51bWJlclBhcmFtZXRlcik7CisgICAgICAgICAgICAgICAgICAgIHVp
bnQzMl90IG51bWJlclBhcmFtZXRlclNpemU7CisgICAgICAgICAgICAgICAgICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlVUludDMyKG51bWJlclBhcmFtZXRlclNpemUpKQorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICBkb3VibGUgbnVtYmVy
UGFyYW1ldGVyVmFsdWU7CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBq
IDwgbnVtYmVyUGFyYW1ldGVyU2l6ZTsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIWRlY29kZXItPmRlY29kZShudW1iZXJQYXJhbWV0ZXJWYWx1ZSkpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgbnVt
YmVyUGFyYW1ldGVyLT5hZGRWYWx1ZShudW1iZXJQYXJhbWV0ZXJWYWx1ZSk7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyOjpUUkFOU0ZPUk06
IHsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEN1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFt
ZXRlcj4gdHJhbnNmb3JtUGFyYW1ldGVyID0gQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVy
OjpjcmVhdGUobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKHRy
YW5zZm9ybVBhcmFtZXRlcik7CisgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlv
bnMgb3BlcmF0aW9uczsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVyPFRy
YW5zZm9ybU9wZXJhdGlvbnM+OjpkZWNvZGUoZGVjb2Rlciwgb3BlcmF0aW9ucykpCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHRyYW5z
Zm9ybVBhcmFtZXRlci0+c2V0T3BlcmF0aW9ucyhvcGVyYXRpb25zKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdW5zaWduZWQgbWVzaFJvd3M7CisgICAgICAgICAgICB1
bnNpZ25lZCBtZXNoQ29sdW1uczsKKyAgICAgICAgICAgIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6
TWVzaEJveFR5cGUgbWVzaEJveFR5cGU7CisgICAgICAgICAgICBDdXN0b21GaWx0ZXJPcGVyYXRp
b246Ok1lc2hUeXBlIG1lc2hUeXBlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
bWVzaFJvd3MpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKG1lc2hDb2x1bW5zKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0obWVzaEJveFR5cGUp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlRW51bShtZXNoVHlwZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgICAgICAgICBmaWx0ZXIgPSBDdXN0b21GaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShwcm9n
cmFtLCBwYXJhbWV0ZXJzLCBtZXNoUm93cywgbWVzaENvbHVtbnMsIG1lc2hCb3hUeXBlLCBtZXNo
VHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIGRl
ZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtNzk1LDYgKzk1MSwxNjgg
QEAgYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+OjpkZWNvZGUo
QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLAogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ1NTX1NI
QURFUlMpCit2b2lkIEFyZ3VtZW50Q29kZXI8VHJhbnNmb3JtT3BlcmF0aW9ucz46OmVuY29kZShB
cmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHRyYW5z
Zm9ybU9wZXJhdGlvbnMpCit7CisgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKHRyYW5zZm9ybU9w
ZXJhdGlvbnMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYW5zZm9ybU9w
ZXJhdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9u
KiBvcGVyYXRpb24gPSB0cmFuc2Zvcm1PcGVyYXRpb25zLmF0KGkpOworICAgICAgICBlbmNvZGVy
LT5lbmNvZGVFbnVtKG9wZXJhdGlvbi0+Z2V0T3BlcmF0aW9uVHlwZSgpKTsKKworICAgICAgICBz
d2l0Y2ggKG9wZXJhdGlvbi0+Z2V0T3BlcmF0aW9uVHlwZSgpKSB7CisgICAgICAgIGNhc2UgVHJh
bnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9YOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlv
bjo6U0NBTEVfWToKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFOgorICAg
ICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWjoKKyAgICAgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246OlNDQUxFXzNEOgorICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0
YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+eCgp
KTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRy
YW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPnkoKSk7CisgICAgICAgICAgICBlbmNvZGVy
LT5lbmNvZGUoc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVy
YXRpb24pLT56KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpUUkFOU0xBVEVfWDoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlRSQU5TTEFURV9ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRF
OgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1o6CisgICAgICAg
IGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfM0Q6CisgICAgICAgICAgICBBcmd1
bWVudENvZGVyPExlbmd0aD46OmVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxjb25zdCBUcmFu
c2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT54KCkpOworICAgICAgICAgICAg
QXJndW1lbnRDb2RlcjxMZW5ndGg+OjplbmNvZGUoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8Y29uc3Qg
VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+eSgpKTsKKyAgICAgICAg
ICAgIEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZW5jb2RlKGVuY29kZXIsIHN0YXRpY19jYXN0PGNv
bnN0IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPnooKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURToK
KyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9YOgorICAgICAgICBjYXNl
IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1k6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpST1RBVEVfM0Q6CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nh
c3Q8Y29uc3QgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+eCgpKTsKKyAg
ICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxjb25zdCBSb3RhdGVUcmFuc2Zv
cm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT55KCkpOworICAgICAgICAgICAgZW5jb2Rlci0+ZW5j
b2RlKHN0YXRpY19jYXN0PGNvbnN0IFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlv
biktPnooKSk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8Y29uc3Qg
Um90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+YW5nbGUoKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVdfWDoKKyAg
ICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVdfWToKKyAgICAgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246OlNLRVc6CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgU2tld1RyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPmFuZ2xlWCgp
KTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxjb25zdCBTa2V3VHJh
bnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+YW5nbGVZKCkpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVg6CisgICAgICAgICAg
ICBBcmd1bWVudENvZGVyPFRyYW5zZm9ybWF0aW9uTWF0cml4Pjo6ZW5jb2RlKGVuY29kZXIsIHN0
YXRpY19jYXN0PGNvbnN0IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPm1h
dHJpeCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6TUFUUklYXzNEOgorICAgICAgICAgICAgQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlv
bk1hdHJpeD46OmVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxjb25zdCBNYXRyaXgzRFRyYW5z
Zm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPm1hdHJpeCgpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6UEVSU1BFQ1RJVkU6CisgICAgICAg
ICAgICBBcmd1bWVudENvZGVyPExlbmd0aD46OmVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxj
b25zdCBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPnBlcnNwZWN0
aXZlKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0
aW9uOjpJREVOVElUWToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6Tk9ORToKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgQXJndW1lbnRDb2Rl
cjxUcmFuc2Zvcm1PcGVyYXRpb25zPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2Rlciwg
VHJhbnNmb3JtT3BlcmF0aW9ucyYgdHJhbnNmb3JtT3BlcmF0aW9ucykKK3sKKyAgICB1aW50MzJf
dCBvcGVyYXRpb25zU2l6ZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJbnQzMihvcGVyYXRp
b25zU2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgb3BlcmF0aW9uc1NpemU7ICsraSkgeworICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb246
Ok9wZXJhdGlvblR5cGUgb3BlcmF0aW9uVHlwZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNv
ZGVFbnVtKG9wZXJhdGlvblR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgIHN3aXRjaCAob3BlcmF0aW9uVHlwZSkgeworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6U0NBTEVfWDoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1k6
CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRToKKyAgICAgICAgY2FzZSBU
cmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1o6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0
aW9uOjpTQ0FMRV8zRDogeworICAgICAgICAgICAgZG91YmxlIHgsIHksIHo7CisgICAgICAgICAg
ICBpZiAoIWRlY29kZXItPmRlY29kZSh4KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh5KSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh6KSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB0cmFuc2Zvcm1PcGVyYXRpb25z
Lm9wZXJhdGlvbnMoKS5hcHBlbmQoU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSh4LCB5
LCB6LCBvcGVyYXRpb25UeXBlKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1g6CisgICAgICAgIGNhc2Ug
VHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWToKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1P
cGVyYXRpb246OlRSQU5TTEFURToKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRS
QU5TTEFURV9aOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFXzNE
OiB7CisgICAgICAgICAgICBMZW5ndGggeCwgeSwgejsKKyAgICAgICAgICAgIGlmICghQXJndW1l
bnRDb2RlcjxMZW5ndGg+OjpkZWNvZGUoZGVjb2RlciwgeCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVyPExlbmd0aD46OmRlY29k
ZShkZWNvZGVyLCB5KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICBpZiAoIUFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZGVjb2RlKGRlY29kZXIsIHopKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMu
b3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSh4
LCB5LCB6LCBvcGVyYXRpb25UeXBlKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFOgorICAgICAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1g6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0
aW9uOjpST1RBVEVfWToKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV8z
RDogeworICAgICAgICAgICAgZG91YmxlIHgsIHksIHosIGFuZ2xlOworICAgICAgICAgICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGUoeCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoeSkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoeikpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoYW5n
bGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5zZm9y
bU9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb246
OmNyZWF0ZSh4LCB5LCB6LCBhbmdsZSwgb3BlcmF0aW9uVHlwZSkpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVdfWDoK
KyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVdfWToKKyAgICAgICAgY2FzZSBU
cmFuc2Zvcm1PcGVyYXRpb246OlNLRVc6IHsKKyAgICAgICAgICAgIGRvdWJsZSBhbmdsZVgsIGFu
Z2xlWTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGFuZ2xlWCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
YW5nbGVZKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB0cmFu
c2Zvcm1PcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoU2tld1RyYW5zZm9ybU9wZXJhdGlv
bjo6Y3JlYXRlKGFuZ2xlWCwgYW5nbGVZLCBvcGVyYXRpb25UeXBlKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6TUFUUklY
OiB7CisgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXg7CisgICAgICAgICAg
ICBpZiAoIUFyZ3VtZW50Q29kZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+OjpkZWNvZGUoZGVjb2Rl
ciwgbWF0cml4KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB0
cmFuc2Zvcm1PcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoTWF0cml4VHJhbnNmb3JtT3Bl
cmF0aW9uOjpjcmVhdGUobWF0cml4KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6TUFUUklYXzNEOiB7CisgICAgICAgICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXg7CisgICAgICAgICAgICBpZiAoIUFyZ3VtZW50
Q29kZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+OjpkZWNvZGUoZGVjb2RlciwgbWF0cml4KSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB0cmFuc2Zvcm1PcGVyYXRp
b25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0
ZShtYXRyaXgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
VHJhbnNmb3JtT3BlcmF0aW9uOjpQRVJTUEVDVElWRTogeworICAgICAgICAgICAgTGVuZ3RoIHBl
cnNwZWN0aXZlOworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVyPExlbmd0aD46OmRlY29k
ZShkZWNvZGVyLCBwZXJzcGVjdGl2ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFBlcnNw
ZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUocGVyc3BlY3RpdmUpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpJ
REVOVElUWToKKyAgICAgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFw
cGVuZChJZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpOT05FOgorICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCiAjZW5kaWYKIAogfSAvLyBuYW1l
c3BhY2UgQ29yZUlQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5oCmluZGV4IGIwOGYxMThmOTdiODAxNTc2OThhNzIxOGU2ZDY5N2YzMTViZjA3YTIuLmYz
N2ZkM2RkYzdiMTZkY2FjNTQ5MjdmZmYwODZmMTkwNmUxNzQ0NTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTc5LDYgKzc5LDEyIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBGaWx0ZXJPcGVyYXRpb25zOwogfQogI2VuZGlm
CisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xh
c3MgVHJhbnNmb3JtT3BlcmF0aW9uczsKK30KKyNlbmRpZgogI2VuZGlmCiAKIG5hbWVzcGFjZSBD
b3JlSVBDIHsKQEAgLTI1MSw2ICsyNTcsMTMgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPiB7CiAgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmKTsKIH07CiAjZW5k
aWYKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50
Q29kZXI8V2ViQ29yZTo6VHJhbnNmb3JtT3BlcmF0aW9ucz4geworICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShBcmd1bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1PcGVyYXRpb25z
Jik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OlRy
YW5zZm9ybU9wZXJhdGlvbnMmKTsKK307CisjZW5kaWYKICNlbmRpZgogCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmlu
ZGV4IDRmMzkzMDc1M2NhZmMxOGMwMDA3YWQ3Y2ExYmY0ODhlZTYxNGI5MzYuLjAxMjI2YmVkYzkz
ZWFlZmY5NzhiZTQ3ZGI5YTI0ZGZmNWRmODQ2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAtOTMsNiArOTMs
NyBAQCBIRUFERVJTICs9IFwKICAgICBTaGFyZWQvU2VjdXJpdHlPcmlnaW5EYXRhLmggXAogICAg
IFNoYXJlZC9TZXNzaW9uU3RhdGUuaCBcCiAgICAgU2hhcmVkL1N0YXRpc3RpY3NEYXRhLmggXAor
ICAgIFNoYXJlZC9TdGlsbEN1c3RvbUZpbHRlclByb2dyYW0uaCBcCiAgICAgU2hhcmVkL1N0cmlu
Z1BhaXJWZWN0b3IuaCBcCiAgICAgU2hhcmVkL1N1cmZhY2VVcGRhdGVJbmZvLmggXAogICAgIFNo
YXJlZC9VcGRhdGVJbmZvLmggXAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167967</attachid>
            <date>2012-10-10 03:24:57 -0700</date>
            <delta_ts>2012-10-12 21:44:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98733-20121010192354.patch</filename>
            <type>text/plain</type>
            <size>44796</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwODE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzUxYzdmNmRmMzJjNjZl
NzNkZDc3YzdlZTZjOTUyNzNhNjNjYWM1Ni4uOTg3NTgyNGZlYzE2NzdjYjYyODcwN2ZlZjhiZjg5
ODEzNTAzZGFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIwIEBACiAyMDEyLTEwLTEwICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIFtXSzJdIEFk
ZCBDdXN0b21GaWx0ZXJPcGVyYXRpb24gc2VyaWFsaXphdGlvbiBpbiBBcmd1bWVudENvZGVyLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg3MzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uOjpwYXJhbWV0ZXJzKCkgdG8gY29uc3QgZnVuY3Rpb24sIGJlY2F1
c2UKKyAgICAgICAgdGhpcyBtZXRob2QgaXMgYSBnZXR0ZXIgYW5kIGEgY29uc3QgaW5zdGFuY2Ug
bmVlZHMgdG8gY2FsbCB0aGlzIG1ldGhvZC4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVz
ZSB0aGVyZSBpcyBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpwYXJhbWV0ZXJzKToKKworMjAxMi0xMC0xMCAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKwogICAgICAgICBbQ1NTIFNo
YWRlcnNdIEltcGxlbWVudCBvdmVybGF5LCBjb2xvci1kb2RnZSwgY29sb3ItYnVybiwgaGFyZC1s
aWdodCwgc29mdC1saWdodCBibGVuZCBtb2Rlcy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NTA0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhOTY0MjcxZjU4Nzhk
ZmExODFkYmNiZTFlYzg1YTE1NjAwMzUyNTJiLi5iZDFlNDczMmRiZGE1OGRlMmVhZTk0YTQwZWQ0
NzFkOTc2YzE0N2Q2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTItMTAtMTAgIEh1
YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgW1dLMl0g
QWRkIEN1c3RvbUZpbHRlck9wZXJhdGlvbiBzZXJpYWxpemF0aW9uIGluIEFyZ3VtZW50Q29kZXIu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODczMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBcmd1
bWVudENvZGVycyBmb3IgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uIGFuZCBhbGwgZGVwZW5kZW50IGNs
YXNzZXMuCisgICAgICAgIENvb3JkaW5hdGVkIGdyYXBoaWNzIHdpbGwgdXNlIHRoaXMgY3NzIHNo
YWRlcnMgc2VyaWFsaXphdGlvbiB3aGVuIGl0IGVuYWJsZXMgQ1NTCisgICAgICAgIFNoYWRlcnMu
CisgICAgICAgIEluIEFkZGl0aW9uLCBhZGQgQ29vcmRpbmF0ZWRBcmd1bWVudENvZGVycyBpbnRv
IHdoaWNoIGFsbCBBcmd1bWVudENvZGVycyBmb3IKKyAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhp
Y3MgYXJlIG1vdmVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgY29kZSBwYXRoIGlzIG5vdCBh
Y3RpdmF0ZWQgeWV0LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRBcmd1bWVudENvZGVycy5jcHA6IEFk
ZGVkLgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgIChDb3JlSVBDOjo6OmVuY29kZSk6Cisg
ICAgICAgIChDb3JlSVBDOjo6OmRlY29kZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRBcmd1bWVudENvZGVycy5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvU3RpbGxDdXN0b21GaWx0ZXJQcm9ncmFtLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFN0aWxsQ3VzdG9tRmlsdGVyUHJvZ3JhbSk6CisgICAgICAgIFN0aWxs
Q3VzdG9tRmlsdGVyUHJvZ3JhbSBpcyBhIHN0aWxsIGltYWdlIG9mIFN0eWxlQ3VzdG9tRmlsdGVy
UHJvZ3JhbS4gVUkKKyAgICAgICAgUHJvY2VzcyB1c2VzIHRoaXMgY2xhc3MgaW5zdGVhZCBvZiBT
dHlsZUN1c3RvbUZpbHRlclByb2dyYW0gYmVjYXVzZSBVSQorICAgICAgICBQcm9jZXNzIGNhbiBu
b3QgZ2V0IGEgY3VzdG9tIGZpbHRlciBwcm9ncmFtIHZpYSBuZXR3b3JrLgorICAgICAgICAoV2Vi
S2l0OjpTdGlsbEN1c3RvbUZpbHRlclByb2dyYW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6
OlN0aWxsQ3VzdG9tRmlsdGVyUHJvZ3JhbTo6U3RpbGxDdXN0b21GaWx0ZXJQcm9ncmFtKToKKyAg
ICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcDoKKyAgICAgICAgKENvcmVJ
UEM6Ojo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmg6
CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5Lmg6CisgICAgICAgICogV2ViS2l0Mi5w
cmk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlQ29vcmRpbmF0b3IuY3BwOgorCiAyMDEyLTEwLTA5ICBKb24gTGVlICA8am9ubGVlQGFw
cGxlLmNvbT4KIAogICAgICAgICBbV0syXSBIYXZlIHBsdWdpbnMgcmVuZGVyIG9mZnNjcmVlbiB0
byBjYXB0dXJlIHNuYXBzaG90CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaAppbmRleCA3
ODhiM2YwMTYyNmIzZjRhZjA1MjBkZDhjNmYyNWFmNDRhMjU0MGEzLi4wZDY0ZDIzNjgyNzc4NjQ1
M2QzZWFjN2E0NmQ3MDVlOTQ0ZjIxM2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
LmgKQEAgLTY5LDcgKzY5LDcgQEAgcHVibGljOgogICAgIAogICAgIEN1c3RvbUZpbHRlclByb2dy
YW0qIHByb2dyYW0oKSBjb25zdCB7IHJldHVybiBtX3Byb2dyYW0uZ2V0KCk7IH0KICAgICAKLSAg
ICBjb25zdCBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0JiBwYXJhbWV0ZXJzKCkgeyByZXR1cm4g
bV9wYXJhbWV0ZXJzOyB9CisgICAgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgcGFy
YW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQogICAgIAogICAgIHVuc2ln
bmVkIG1lc2hSb3dzKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoUm93czsgfQogICAgIHVuc2lnbmVk
IG1lc2hDb2x1bW5zKCkgY29uc3QgeyByZXR1cm4gbV9tZXNoQ29sdW1uczsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxp
c3RzLnR4dAppbmRleCBhOGQ3YmIzNzAzZGE0N2QyMDZhMzU0MmZlNGIyYjE1OGViOTMzMDRhLi5i
MGVmMTRmZDYzYjYyYmVkZTJlYjZiOTgyNTBlOWQ5NWQ1OTM1MDc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3Rz
LnR4dApAQCAtNiw2ICs2LDcgQEAgU0VUKFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAg
ICIke1dFQktJVDJfRElSfS9TaGFyZWQiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9BUEki
CiAgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9BUEkvYyIKKyAgICAiJHtXRUJLSVQyX0RJUn0v
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9D
b3JlSVBDU3VwcG9ydCIKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL1BsdWdpbnMiCiAgICAg
IiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlIgpAQCAtMjEyLDYgKzIxMyw4
IEBAIFNFVChXZWJLaXQyX1NPVVJDRVMKICAgICBTaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5j
cHAKICAgICBTaGFyZWQvQVBJL2MvV0tVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCiAKKyAgICBT
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEFyZ3VtZW50Q29kZXJzLmNwcAor
CiAgICAgU2hhcmVkL1BsdWdpbnMvTlBJZGVudGlmaWVyRGF0YS5jcHAKICAgICBTaGFyZWQvUGx1
Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5jcHAKICAgICBTaGFyZWQvUGx1Z2lucy9OUE9i
amVjdFByb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEFyZ3VtZW50Q29kZXJzLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5mZTBjYWQyY2Y1NTY5NzIwMjhkMWRkYzM4M2JlMjVmNjgyMDgxOGJjCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvQ29vcmRpbmF0ZWRBcmd1bWVudENvZGVycy5jcHAKQEAgLTAsMCArMSw1MDIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFy
eSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisj
aW5jbHVkZSAiQ29vcmRpbmF0ZWRBcmd1bWVudENvZGVycy5oIgorCisjaW5jbHVkZSAiV2ViQ29y
ZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BbmltYXRpb24uaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0NvbG9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFBvaW50M0QuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0ludFBvaW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MZW5ndGgu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CisKKyNpZiBFTkFC
TEUoQ1NTX0ZJTFRFUlMpCisjaW5jbHVkZSA8V2ViQ29yZS9GaWx0ZXJPcGVyYXRpb25zLmg+Cisj
ZW5kaWYKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyNpbmNsdWRlICJTdGlsbEN1c3RvbUZp
bHRlclByb2dyYW0uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0N1c3RvbUZpbHRlckFycmF5UGFyYW1l
dGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ3VzdG9tRmls
dGVyVHJhbnNmb3JtUGFyYW1ldGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JZGVudGl0eVRyYW5z
Zm9ybU9wZXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWF0cml4M0RUcmFuc2Zvcm1PcGVy
YXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1JvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NrZXdUcmFu
c2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RyYW5zbGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbi5oPgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIENvcmVJUEMgeworCit2b2lkIEFyZ3VtZW50Q29k
ZXI8RmxvYXRQb2ludDNEPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3Qg
RmxvYXRQb2ludDNEJiBmbG9hdFBvaW50M0QpCit7CisgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxG
bG9hdFBvaW50M0Q+OjplbmNvZGUoZW5jb2RlciwgZmxvYXRQb2ludDNEKTsKK30KKworYm9vbCBB
cmd1bWVudENvZGVyPEZsb2F0UG9pbnQzRD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29k
ZXIsIEZsb2F0UG9pbnQzRCYgZmxvYXRQb2ludDNEKQoreworICAgIHJldHVybiBTaW1wbGVBcmd1
bWVudENvZGVyPEZsb2F0UG9pbnQzRD46OmRlY29kZShkZWNvZGVyLCBmbG9hdFBvaW50M0QpOwor
fQorCit2b2lkIEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2Rlciog
ZW5jb2RlciwgY29uc3QgTGVuZ3RoJiBsZW5ndGgpCit7CisgICAgU2ltcGxlQXJndW1lbnRDb2Rl
cjxMZW5ndGg+OjplbmNvZGUoZW5jb2RlciwgbGVuZ3RoKTsKK30KKworYm9vbCBBcmd1bWVudENv
ZGVyPExlbmd0aD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIExlbmd0aCYgbGVu
Z3RoKQoreworICAgIHJldHVybiBTaW1wbGVBcmd1bWVudENvZGVyPExlbmd0aD46OmRlY29kZShk
ZWNvZGVyLCBsZW5ndGgpOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8VHJhbnNmb3JtYXRpb25N
YXRyaXg+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtYXRpb25NYXRyaXgpCit7CisgICAgU2ltcGxlQXJndW1lbnRD
b2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmVuY29kZShlbmNvZGVyLCB0cmFuc2Zvcm1hdGlv
bk1hdHJpeCk7Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46
OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm1hdGlvbk1hdHJpeCkKK3sKKyAgICByZXR1cm4gU2ltcGxlQXJndW1lbnRDb2RlcjxU
cmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShkZWNvZGVyLCB0cmFuc2Zvcm1hdGlvbk1hdHJp
eCk7Cit9CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCit2b2lkIEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6RmlsdGVyT3BlcmF0aW9ucz46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIs
IGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCit7CisgICAgZW5jb2Rl
ci0+ZW5jb2RlVUludDMyKGZpbHRlcnMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGZpbHRlcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9u
KiBmaWx0ZXIgPSBmaWx0ZXJzLmF0KGkpOworICAgICAgICBGaWx0ZXJPcGVyYXRpb246Ok9wZXJh
dGlvblR5cGUgdHlwZSA9IGZpbHRlci0+Z2V0T3BlcmF0aW9uVHlwZSgpOworICAgICAgICBlbmNv
ZGVyLT5lbmNvZGVFbnVtKHR5cGUpOworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRToKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246OlNFUElBOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6Cisg
ICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpIVUVfUk9UQVRFOgorICAgICAgICAgICAgZW5j
b2Rlci0+ZW5jb2RlRG91YmxlKHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0
ZXJPcGVyYXRpb24qPihmaWx0ZXIpLT5hbW91bnQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklOVkVSVDoKKyAgICAgICAgY2FzZSBGaWx0ZXJP
cGVyYXRpb246OkJSSUdIVE5FU1M6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05U
UkFTVDoKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJVFk6CisgICAgICAgICAg
ICBlbmNvZGVyLT5lbmNvZGVEb3VibGUoc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb21wb25lbnRU
cmFuc2ZlckZpbHRlck9wZXJhdGlvbio+KGZpbHRlciktPmFtb3VudCgpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxVUjoKKyAgICAgICAgICAg
IEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZW5jb2RlKGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0
IEJsdXJGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIpLT5zdGREZXZpYXRpb24oKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOiB7
CisgICAgICAgICAgICBjb25zdCBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKiBzaGFkb3cgPSBz
dGF0aWNfY2FzdDxjb25zdCBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyKTsKKyAg
ICAgICAgICAgIEFyZ3VtZW50Q29kZXI8SW50UG9pbnQ+OjplbmNvZGUoZW5jb2Rlciwgc2hhZG93
LT5sb2NhdGlvbigpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUludDMyKHNoYWRvdy0+
c3RkRGV2aWF0aW9uKCkpOworICAgICAgICAgICAgQXJndW1lbnRDb2RlcjxDb2xvcj46OmVuY29k
ZShlbmNvZGVyLCBzaGFkb3ctPmNvbG9yKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9u
OjpDVVNUT006IHsKKyAgICAgICAgICAgIGNvbnN0IEN1c3RvbUZpbHRlck9wZXJhdGlvbiogY3Vz
dG9tT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKj4o
ZmlsdGVyKTsKKworICAgICAgICAgICAgQVNTRVJUKGN1c3RvbU9wZXJhdGlvbi0+cHJvZ3JhbSgp
KTsKKyAgICAgICAgICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJQcm9ncmFtPiBwcm9ncmFtID0gY3Vz
dG9tT3BlcmF0aW9uLT5wcm9ncmFtKCk7CisgICAgICAgICAgICBBU1NFUlQocHJvZ3JhbS0+aXNM
b2FkZWQoKSk7CisgICAgICAgICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyBwcm9ncmFtSW5m
byA9IHByb2dyYW0tPnByb2dyYW1JbmZvKCk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUo
cHJvZ3JhbUluZm8udmVydGV4U2hhZGVyU3RyaW5nKCkpOworICAgICAgICAgICAgZW5jb2Rlci0+
ZW5jb2RlKHByb2dyYW1JbmZvLmZyYWdtZW50U2hhZGVyU3RyaW5nKCkpOworICAgICAgICAgICAg
Q3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIG1peFNldHRpbmdzID0gcHJvZ3JhbUluZm8u
bWl4U2V0dGluZ3MoKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShtaXhTZXR0aW5ncy5l
bmFibGVkKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUVudW0obWl4U2V0dGluZ3MuYmxl
bmRNb2RlKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUVudW0obWl4U2V0dGluZ3MuY29t
cG9zaXRlT3BlcmF0b3IpOworCisgICAgICAgICAgICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0
IHBhcmFtZXRlcnMgPSBjdXN0b21PcGVyYXRpb24tPnBhcmFtZXRlcnMoKTsKKyAgICAgICAgICAg
IGVuY29kZXItPmVuY29kZVVJbnQzMihwYXJhbWV0ZXJzLnNpemUoKSk7CisgICAgICAgICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAg
ICAgICAgICBlbmNvZGVyLT5lbmNvZGUocGFyYW1ldGVyc1tpXS0+bmFtZSgpKTsKKyAgICAgICAg
ICAgICAgICBlbmNvZGVyLT5lbmNvZGVFbnVtKHBhcmFtZXRlcnNbaV0tPnBhcmFtZXRlclR5cGUo
KSk7CisKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHBhcmFtZXRlcnNbaV0tPnBhcmFtZXRlclR5
cGUoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyOjpBUlJB
WTogeworICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWx0ZXJBcnJheVBhcmFtZXRlciogYXJy
YXlQYXJhbWV0ZXIgPSBzdGF0aWNfY2FzdDxDdXN0b21GaWx0ZXJBcnJheVBhcmFtZXRlcio+KHBh
cmFtZXRlcnNbaV0uZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVV
SW50MzIoYXJyYXlQYXJhbWV0ZXItPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGogPSAwOyBqIDwgYXJyYXlQYXJhbWV0ZXItPnNpemUoKTsgKytqKQorICAgICAgICAg
ICAgICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKGFycmF5UGFyYW1ldGVyLT52YWx1ZUF0KGop
KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGNhc2UgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyOjpOVU1CRVI6IHsKKyAgICAgICAg
ICAgICAgICAgICAgQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyKiBudWJtZXJQYXJhbWV0ZXIg
PSBzdGF0aWNfY2FzdDxDdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIqPihwYXJhbWV0ZXJzW2ld
LmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKG51Ym1l
clBhcmFtZXRlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9
IDA7IGogPCBudWJtZXJQYXJhbWV0ZXItPnNpemUoKTsgKytqKQorICAgICAgICAgICAgICAgICAg
ICAgICAgZW5jb2Rlci0+ZW5jb2RlKG51Ym1lclBhcmFtZXRlci0+dmFsdWVBdChqKSk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBjYXNlIEN1c3RvbUZpbHRlclBhcmFtZXRlcjo6VFJBTlNGT1JNOiB7CisgICAgICAgICAgICAg
ICAgICAgIEN1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlciogdHJhbnNmb3JtUGFyYW1ldGVy
ID0gc3RhdGljX2Nhc3Q8Q3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyKj4ocGFyYW1ldGVy
c1tpXS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8VHJhbnNmb3Jt
T3BlcmF0aW9ucz46OmVuY29kZShlbmNvZGVyLCB0cmFuc2Zvcm1QYXJhbWV0ZXItPm9wZXJhdGlv
bnMoKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGVuY29kZXItPmVu
Y29kZShjdXN0b21PcGVyYXRpb24tPm1lc2hSb3dzKCkpOworICAgICAgICAgICAgZW5jb2Rlci0+
ZW5jb2RlKGN1c3RvbU9wZXJhdGlvbi0+bWVzaENvbHVtbnMoKSk7CisgICAgICAgICAgICBlbmNv
ZGVyLT5lbmNvZGVFbnVtKGN1c3RvbU9wZXJhdGlvbi0+bWVzaEJveFR5cGUoKSk7CisgICAgICAg
ICAgICBlbmNvZGVyLT5lbmNvZGVFbnVtKGN1c3RvbU9wZXJhdGlvbi0+bWVzaFR5cGUoKSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKworYm9vbCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBk
ZWNvZGVyLCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQoreworICAgIHVpbnQz
Ml90IHNpemU7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIoc2l6ZSkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIFZlY3RvcjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiA+JiBv
cGVyYXRpb25zID0gZmlsdGVycy5vcGVyYXRpb25zKCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5
cGUgdHlwZTsKKyAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gZmlsdGVyOworICAgICAg
ICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0odHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpHUkFZU0NBTEU6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTRVBJQToKKyAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFOgorICAgICAgICBjYXNlIEZpbHRl
ck9wZXJhdGlvbjo6SFVFX1JPVEFURTogeworICAgICAgICAgICAgZG91YmxlIHZhbHVlOworICAg
ICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVEb3VibGUodmFsdWUpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGZpbHRlciA9IEJhc2ljQ29sb3JNYXRyaXhG
aWx0ZXJPcGVyYXRpb246OmNyZWF0ZSh2YWx1ZSwgdHlwZSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SU5WRVJUOgorICAgICAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzoKKyAgICAgICAgY2FzZSBGaWx0ZXJP
cGVyYXRpb246OkNPTlRSQVNUOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lU
WTogeworICAgICAgICAgICAgZG91YmxlIHZhbHVlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGVEb3VibGUodmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIGZpbHRlciA9IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246
OmNyZWF0ZSh2YWx1ZSwgdHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxVUjogeworICAgICAgICAgICAgTGVuZ3RoIGxl
bmd0aDsKKyAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2RlcjxMZW5ndGg+OjpkZWNvZGUoZGVj
b2RlciwgbGVuZ3RoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICBmaWx0ZXIgPSBCbHVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUobGVuZ3RoLCB0eXBlKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9u
OjpEUk9QX1NIQURPVzogeworICAgICAgICAgICAgSW50UG9pbnQgbG9jYXRpb247CisgICAgICAg
ICAgICBpbnQzMl90IHN0ZERldmlhdGlvbjsKKyAgICAgICAgICAgIENvbG9yIGNvbG9yOworICAg
ICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVyPEludFBvaW50Pjo6ZGVjb2RlKGRlY29kZXIsIGxv
Y2F0aW9uKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAo
IWRlY29kZXItPmRlY29kZUludDMyKHN0ZERldmlhdGlvbikpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVyPENvbG9yPjo6ZGVjb2Rl
KGRlY29kZXIsIGNvbG9yKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICBmaWx0ZXIgPSBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUobG9jYXRpb24s
IHN0ZERldmlhdGlvbiwgY29sb3IsIHR5cGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9u
OjpDVVNUT006IHsKKyAgICAgICAgICAgIFN0cmluZyB2ZXJ0ZXhTaGFkZXJTdHJpbmc7CisgICAg
ICAgICAgICBTdHJpbmcgZnJhZ21lbnRTaGFkZXJTdHJpbmc7CisgICAgICAgICAgICBDdXN0b21G
aWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MgbWl4U2V0dGluZ3M7CisgICAgICAgICAgICBpZiAoIWRl
Y29kZXItPmRlY29kZSh2ZXJ0ZXhTaGFkZXJTdHJpbmcpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGZyYWdtZW50U2hhZGVy
U3RyaW5nKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAo
IWRlY29kZXItPmRlY29kZShtaXhTZXR0aW5ncy5lbmFibGVkKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0obWl4U2V0
dGluZ3MuYmxlbmRNb2RlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0obWl4U2V0dGluZ3MuY29tcG9zaXRlT3BlcmF0
b3IpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIFJlZlB0cjxD
dXN0b21GaWx0ZXJQcm9ncmFtPiBwcm9ncmFtID0gU3RpbGxDdXN0b21GaWx0ZXJQcm9ncmFtOjpj
cmVhdGUodmVydGV4U2hhZGVyU3RyaW5nLCBmcmFnbWVudFNoYWRlclN0cmluZywgbWl4U2V0dGlu
Z3MpOworCisgICAgICAgICAgICB1aW50MzJfdCBwYXJhbWV0ZXJzU2l6ZTsKKyAgICAgICAgICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKHBhcmFtZXRlcnNTaXplKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIEN1c3RvbUZpbHRlclBhcmFtZXRlckxp
c3QgcGFyYW1ldGVycyhwYXJhbWV0ZXJzU2l6ZSk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHBhcmFtZXRlcnNTaXplOyArK2kpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcg
bmFtZTsKKyAgICAgICAgICAgICAgICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6OlBhcmFtZXRlclR5
cGUgcGFyYW1ldGVyVHlwZTsKKyAgICAgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShu
YW1lKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShwYXJhbWV0ZXJUeXBlKSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgc3dpdGNoIChwYXJhbWV0ZXJU
eXBlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6OkFSUkFZ
OiB7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJBcnJheVBhcmFtZXRl
cj4gYXJyYXlQYXJhbWV0ZXIgPSBDdXN0b21GaWx0ZXJBcnJheVBhcmFtZXRlcjo6Y3JlYXRlKG5h
bWUpOworICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChhcnJheVBhcmFtZXRl
cik7CisgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFycmF5UGFyYW1ldGVyU2l6ZTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIoYXJyYXlQYXJhbWV0
ZXJTaXplKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICAgICAgZG91YmxlIGFycmF5UGFyYW1ldGVyVmFsdWU7CisgICAgICAgICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgYXJyYXlQYXJhbWV0ZXJTaXplOyArK2opIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGFycmF5UGFyYW1ldGVy
VmFsdWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGFycmF5UGFyYW1ldGVyLT5hZGRWYWx1ZShhcnJheVBhcmFtZXRl
clZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBDdXN0b21GaWx0ZXJQ
YXJhbWV0ZXI6Ok5VTUJFUjogeworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8Q3VzdG9tRmls
dGVyTnVtYmVyUGFyYW1ldGVyPiBudW1iZXJQYXJhbWV0ZXIgPSBDdXN0b21GaWx0ZXJOdW1iZXJQ
YXJhbWV0ZXI6OmNyZWF0ZShuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5h
cHBlbmQobnVtYmVyUGFyYW1ldGVyKTsKKyAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbnVt
YmVyUGFyYW1ldGVyU2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNv
ZGVVSW50MzIobnVtYmVyUGFyYW1ldGVyU2l6ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBudW1iZXJQYXJhbWV0ZXJW
YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBudW1iZXJQ
YXJhbWV0ZXJTaXplOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlKG51bWJlclBhcmFtZXRlclZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJQYXJhbWV0
ZXItPmFkZFZhbHVlKG51bWJlclBhcmFtZXRlclZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgY2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6OlRSQU5TRk9STTogeworICAgICAg
ICAgICAgICAgICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyPiB0cmFu
c2Zvcm1QYXJhbWV0ZXIgPSBDdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXI6OmNyZWF0ZShu
YW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQodHJhbnNmb3JtUGFy
YW1ldGVyKTsKKyAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRp
b25zOworICAgICAgICAgICAgICAgICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8VHJhbnNmb3JtT3Bl
cmF0aW9ucz46OmRlY29kZShkZWNvZGVyLCBvcGVyYXRpb25zKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtUGFyYW1l
dGVyLT5zZXRPcGVyYXRpb25zKG9wZXJhdGlvbnMpOworICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
CisgICAgICAgICAgICB1bnNpZ25lZCBtZXNoUm93czsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1l
c2hDb2x1bW5zOworICAgICAgICAgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoQm94VHlw
ZSBtZXNoQm94VHlwZTsKKyAgICAgICAgICAgIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5
cGUgbWVzaFR5cGU7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShtZXNoUm93cykp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUobWVzaENvbHVtbnMpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShtZXNoQm94VHlwZSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVF
bnVtKG1lc2hUeXBlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
ICAgIGZpbHRlciA9IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKHByb2dyYW0sIHBhcmFt
ZXRlcnMsIG1lc2hSb3dzLCBtZXNoQ29sdW1ucywgbWVzaEJveFR5cGUsIG1lc2hUeXBlKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZpbHRlcikKKyAgICAg
ICAgICAgIG9wZXJhdGlvbnMuYXBwZW5kKGZpbHRlcik7CisgICAgfQorCisgICAgcmV0dXJuIHRy
dWU7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykKK3ZvaWQgQXJndW1lbnRD
b2RlcjxUcmFuc2Zvcm1PcGVyYXRpb25zPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rl
ciwgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgdHJhbnNmb3JtT3BlcmF0aW9ucykKK3sKKyAg
ICBlbmNvZGVyLT5lbmNvZGVVSW50MzIodHJhbnNmb3JtT3BlcmF0aW9ucy5zaXplKCkpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNmb3JtT3BlcmF0aW9ucy5zaXplKCk7ICsraSkg
eworICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIG9wZXJhdGlvbiA9IHRyYW5zZm9y
bU9wZXJhdGlvbnMuYXQoaSk7CisgICAgICAgIGVuY29kZXItPmVuY29kZUVudW0ob3BlcmF0aW9u
LT5nZXRPcGVyYXRpb25UeXBlKCkpOworCisgICAgICAgIHN3aXRjaCAob3BlcmF0aW9uLT5nZXRP
cGVyYXRpb25UeXBlKCkpIHsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxF
X1g6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9ZOgorICAgICAgICBj
YXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEU6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpTQ0FMRV9aOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVf
M0Q6CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVU
cmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT54KCkpOworICAgICAgICAgICAgZW5jb2Rl
ci0+ZW5jb2RlKHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3Bl
cmF0aW9uKS0+eSgpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxj
b25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPnooKSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9Y
OgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1k6CisgICAgICAg
IGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEU6CisgICAgICAgIGNhc2UgVHJhbnNm
b3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWjoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246OlRSQU5TTEFURV8zRDoKKyAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZW5j
b2RlKGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlv
bio+KG9wZXJhdGlvbiktPngoKSk7CisgICAgICAgICAgICBBcmd1bWVudENvZGVyPExlbmd0aD46
OmVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVy
YXRpb24qPihvcGVyYXRpb24pLT55KCkpOworICAgICAgICAgICAgQXJndW1lbnRDb2RlcjxMZW5n
dGg+OjplbmNvZGUoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRlVHJhbnNmb3Jt
T3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+eigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFOgorICAgICAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6Uk9UQVRFX1g6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpS
T1RBVEVfWToKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV8zRDoKKyAg
ICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxjb25zdCBSb3RhdGVUcmFuc2Zv
cm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT54KCkpOworICAgICAgICAgICAgZW5jb2Rlci0+ZW5j
b2RlKHN0YXRpY19jYXN0PGNvbnN0IFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlv
biktPnkoKSk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8Y29uc3Qg
Um90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+eigpKTsKKyAgICAgICAgICAg
IGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxjb25zdCBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRp
b24qPihvcGVyYXRpb24pLT5hbmdsZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19YOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9w
ZXJhdGlvbjo6U0tFV19ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFVzoK
KyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxjb25zdCBTa2V3VHJhbnNm
b3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+YW5nbGVYKCkpOworICAgICAgICAgICAgZW5jb2Rl
ci0+ZW5jb2RlKHN0YXRpY19jYXN0PGNvbnN0IFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVy
YXRpb24pLT5hbmdsZVkoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246Ok1BVFJJWDoKKyAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8VHJhbnNm
b3JtYXRpb25NYXRyaXg+OjplbmNvZGUoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8Y29uc3QgTWF0cml4
VHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+bWF0cml4KCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVhfM0Q6CisgICAg
ICAgICAgICBBcmd1bWVudENvZGVyPFRyYW5zZm9ybWF0aW9uTWF0cml4Pjo6ZW5jb2RlKGVuY29k
ZXIsIHN0YXRpY19jYXN0PGNvbnN0IE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0
aW9uKS0+bWF0cml4KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHJhbnNm
b3JtT3BlcmF0aW9uOjpQRVJTUEVDVElWRToKKyAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8TGVu
Z3RoPjo6ZW5jb2RlKGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0IFBlcnNwZWN0aXZlVHJhbnNm
b3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+cGVyc3BlY3RpdmUoKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OklERU5USVRZOgorICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpOT05FOgorICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQorICAgIH0KK30KKworYm9vbCBBcmd1bWVudENvZGVyPFRyYW5zZm9ybU9wZXJhdGlvbnM+
OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB0
cmFuc2Zvcm1PcGVyYXRpb25zKQoreworICAgIHVpbnQzMl90IG9wZXJhdGlvbnNTaXplOworICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKG9wZXJhdGlvbnNTaXplKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvcGVyYXRpb25zU2l6ZTsg
KytpKSB7CisgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSBvcGVyYXRp
b25UeXBlOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0ob3BlcmF0aW9uVHlwZSkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgc3dpdGNoIChvcGVyYXRpb25U
eXBlKSB7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9YOgorICAgICAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWToKKyAgICAgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OlNDQUxFOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NB
TEVfWjoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFXzNEOiB7CisgICAg
ICAgICAgICBkb3VibGUgeCwgeSwgejsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KHgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlKHkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHopKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChT
Y2FsZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHgsIHksIHosIG9wZXJhdGlvblR5cGUpKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpUUkFOU0xBVEVfWDoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRS
QU5TTEFURV9ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFOgor
ICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1o6CisgICAgICAgIGNh
c2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfM0Q6IHsKKyAgICAgICAgICAgIExlbmd0
aCB4LCB5LCB6OworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVyPExlbmd0aD46OmRlY29k
ZShkZWNvZGVyLCB4KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICBpZiAoIUFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZGVjb2RlKGRlY29kZXIsIHkpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2RlcjxM
ZW5ndGg+OjpkZWNvZGUoZGVjb2RlciwgeikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFRy
YW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHgsIHksIHosIG9wZXJhdGlvblR5cGUp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpST1RBVEU6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RB
VEVfWDoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9ZOgorICAgICAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEOiB7CisgICAgICAgICAgICBkb3Vi
bGUgeCwgeSwgeiwgYW5nbGU7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh4KSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXIt
PmRlY29kZSh5KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBp
ZiAoIWRlY29kZXItPmRlY29kZSh6KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShhbmdsZSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVyYXRpb25z
KCkuYXBwZW5kKFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHgsIHksIHosIGFuZ2xl
LCBvcGVyYXRpb25UeXBlKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19YOgorICAgICAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6U0tFV19ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tF
VzogeworICAgICAgICAgICAgZG91YmxlIGFuZ2xlWCwgYW5nbGVZOworICAgICAgICAgICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGUoYW5nbGVYKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShhbmdsZVkpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMub3BlcmF0
aW9ucygpLmFwcGVuZChTa2V3VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoYW5nbGVYLCBhbmds
ZVksIG9wZXJhdGlvblR5cGUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVg6IHsKKyAgICAgICAgICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKKyAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2RlcjxU
cmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShkZWNvZGVyLCBtYXRyaXgpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMub3Bl
cmF0aW9ucygpLmFwcGVuZChNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShtYXRyaXgp
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpNQVRSSVhfM0Q6IHsKKyAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IG1hdHJpeDsKKyAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlvbk1h
dHJpeD46OmRlY29kZShkZWNvZGVyLCBtYXRyaXgpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVu
ZChNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKG1hdHJpeCkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlBF
UlNQRUNUSVZFOiB7CisgICAgICAgICAgICBMZW5ndGggcGVyc3BlY3RpdmU7CisgICAgICAgICAg
ICBpZiAoIUFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZGVjb2RlKGRlY29kZXIsIHBlcnNwZWN0aXZl
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB0cmFuc2Zvcm1P
cGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRp
b246OmNyZWF0ZShwZXJzcGVjdGl2ZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OklERU5USVRZOgorICAgICAgICAgICAg
dHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKElkZW50aXR5VHJhbnNmb3Jt
T3BlcmF0aW9uOjpjcmVhdGUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBU
cmFuc2Zvcm1PcGVyYXRpb246Ok5PTkU6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVl
OworfQorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIENvcmVJUEMKKyNlbmRpZiAvLyBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEFyZ3VtZW50Q29kZXJzLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEFyZ3VtZW50Q29kZXJz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGFiMjMxNDQ3ZmYwNDZjMmNjYjM4NmE2MGIzZDk0NDI1ZWE3NjAyZgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkQXJndW1lbnRDb2RlcnMuaApAQCAtMCwwICsxLDg2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCwgSW5jLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIENvb3JkaW5hdGVkQXJndW1lbnRDb2RlcnNfaAorI2RlZmluZSBDb29y
ZGluYXRlZEFyZ3VtZW50Q29kZXJzX2gKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
KyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBGbG9hdFBvaW50M0Q7CitjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKK3N0cnVjdCBMZW5n
dGg7Cit9CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCituYW1lc3BhY2UgV2ViQ29yZSB7Citj
bGFzcyBGaWx0ZXJPcGVyYXRpb25zOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoQ1NTX1NIQURF
UlMpCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBUcmFuc2Zvcm1PcGVyYXRpb25zOworfQor
I2VuZGlmCisKK25hbWVzcGFjZSBDb3JlSVBDIHsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1l
bnRDb2RlcjxXZWJDb3JlOjpGbG9hdFBvaW50M0Q+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
QXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludDNEJik7CisgICAgc3Rh
dGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OkZsb2F0UG9pbnQzRCYp
OworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpMZW5ndGg+
IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29y
ZTo6TGVuZ3RoJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdl
YkNvcmU6Okxlbmd0aCYpOworfTsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShB
cmd1bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwor
ICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYpOworfTsKKworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKK3RlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz4geworICAg
IHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpGaWx0
ZXJPcGVyYXRpb25zJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2Rlcios
IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmKTsKK307CisjZW5kaWYKKworI2lmIEVOQUJMRShD
U1NfU0hBREVSUykKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VHJh
bnNmb3JtT3BlcmF0aW9ucz4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29k
ZXIqLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1PcGVyYXRpb25zJik7CisgICAgc3RhdGljIGJv
b2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OlRyYW5zZm9ybU9wZXJhdGlvbnMm
KTsKK307CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgQ29yZUlQQworI2VuZGlmIC8vIFVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKKworI2VuZGlmIC8vIENvb3JkaW5hdGVkQXJndW1lbnRDb2Rl
cnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvU3RpbGxDdXN0b21GaWx0ZXJQcm9ncmFtLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9TdGlsbEN1c3RvbUZpbHRlclByb2dyYW0uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
OGQ3OWM0MGE0N2I2NzYwNDBmM2FkMzkyYTJmODI5MDc5MzAzNjQzCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvU3RpbGxDdXN0b21G
aWx0ZXJQcm9ncmFtLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBDb21wYW55IDEwMCwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFN0aWxsQ3VzdG9tRmlsdGVyUHJvZ3JhbV9oCisjZGVmaW5lIFN0aWxsQ3VzdG9tRmlsdGVy
UHJvZ3JhbV9oCisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpICYmIEVOQUJMRShDU1Nf
U0hBREVSUykKKyNpbmNsdWRlIDxXZWJDb3JlL0N1c3RvbUZpbHRlclByb2dyYW0uaD4KKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFN0aWxsQ3VzdG9tRmlsdGVyUHJvZ3JhbSA6IHB1Ymxp
YyBXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdGlsbEN1c3RvbUZpbHRlclByb2dyYW0+IGNyZWF0ZShTdHJpbmcgdmVydGV4U2hh
ZGVyU3RyaW5nLCBTdHJpbmcgbV9mcmFnbWVudFNoYWRlclN0cmluZywgV2ViQ29yZTo6Q3VzdG9t
RmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIG1peFNldHRpbmdzKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBTdGlsbEN1c3RvbUZpbHRlclByb2dyYW0odmVydGV4U2hhZGVyU3Ry
aW5nLCBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nLCBtaXhTZXR0aW5ncykpOworICAgIH0KKworICAg
IHZpcnR1YWwgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0K
KworICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW0m
IG8pIGNvbnN0IE9WRVJSSURFCisgICAgeworICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGNhc3Qg
aXMgdWdseSwgYnV0IFN0aWxsQ3VzdG9tRmlsdGVyUHJvZ3JhbSBpcyB0aGUgc2luZ2xlIGltcGxl
bWVudGF0aW9uIG9mIEN1c3RvbUZpbHRlclByb2dyYW0gb24gVUkgUHJvY2Vzcy4KKyAgICAgICAg
Y29uc3QgU3RpbGxDdXN0b21GaWx0ZXJQcm9ncmFtKiBvdGhlciA9IHN0YXRpY19jYXN0PGNvbnN0
IFN0aWxsQ3VzdG9tRmlsdGVyUHJvZ3JhbSo+KCZvKTsKKyAgICAgICAgcmV0dXJuIG1peFNldHRp
bmdzKCkgPT0gb3RoZXItPm1peFNldHRpbmdzKCkgJiYgbV92ZXJ0ZXhTaGFkZXJTdHJpbmcgPT0g
b3RoZXItPnZlcnRleFNoYWRlclN0cmluZygpICYmIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcgPT0g
b3RoZXItPmZyYWdtZW50U2hhZGVyU3RyaW5nKCk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAg
dmlydHVhbCBTdHJpbmcgdmVydGV4U2hhZGVyU3RyaW5nKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1
cm4gbV92ZXJ0ZXhTaGFkZXJTdHJpbmc7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBmcmFnbWVudFNo
YWRlclN0cmluZygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fZnJhZ21lbnRTaGFkZXJTdHJp
bmc7IH0KKworICAgIHZpcnR1YWwgdm9pZCB3aWxsSGF2ZUNsaWVudHMoKSBPVkVSUklERSB7IG5v
dGlmeUNsaWVudHMoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVMYXN0Q2xpZW50KCkg
T1ZFUlJJREUgeyB9CisKK3ByaXZhdGU6CisgICAgU3RpbGxDdXN0b21GaWx0ZXJQcm9ncmFtKFN0
cmluZyB2ZXJ0ZXhTaGFkZXJTdHJpbmcsIFN0cmluZyBmcmFnbWVudFNoYWRlciwgV2ViQ29yZTo6
Q3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIG1peFNldHRpbmdzKQorICAgICAgICA6IFdl
YkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW0obWl4U2V0dGluZ3MpCisgICAgICAgICwgbV92ZXJ0
ZXhTaGFkZXJTdHJpbmcodmVydGV4U2hhZGVyU3RyaW5nKQorICAgICAgICAsIG1fZnJhZ21lbnRT
aGFkZXJTdHJpbmcobV9mcmFnbWVudFNoYWRlclN0cmluZykKKyAgICB7CisgICAgfQorCisgICAg
U3RyaW5nIG1fdmVydGV4U2hhZGVyU3RyaW5nOworICAgIFN0cmluZyBtX2ZyYWdtZW50U2hhZGVy
U3RyaW5nOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpICYmIEVOQUJMRShDU1NfU0hBREVSUykKKworI2VuZGlmIC8vIFN0
aWxsQ3VzdG9tRmlsdGVyUHJvZ3JhbV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGNiZjYyNDkyNjg5NjdhOTk0OGU5NGYxNjc2NDY2
Yjc2ZDE3YmIyNTEuLjRmNDZkODY5ZTY4ZmZmMDgzMDE5MzAzNDliZTVlNzAwMzc0ZTAwOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBA
IC00NiwxNyArNDYsNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93RmVhdHVyZXMuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCi0jaW5jbHVkZSA8V2ViQ29yZS9BbmltYXRpb24uaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0Zsb2F0UG9pbnQzRC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvTGVuZ3RoLmg+Ci0jaW5jbHVkZSA8
V2ViQ29yZS9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgotCi0jaWYgRU5BQkxFKENTU19GSUxURVJT
KQotI2luY2x1ZGUgPFdlYkNvcmUvRmlsdGVyT3BlcmF0aW9ucy5oPgotI2VuZGlmCi0jZW5kaWYK
LQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBA
IC02NTksMTQyICs2NDgsNCBAQCBib29sIEFyZ3VtZW50Q29kZXI8S1VSTD46OmRlY29kZShBcmd1
bWVudERlY29kZXIqIGRlY29kZXIsIEtVUkwmIHJlc3VsdCkKICAgICByZXN1bHQgPSBLVVJMKFdl
YkNvcmU6OlBhcnNlZFVSTFN0cmluZywgdXJsQXNTdHJpbmcpOwogICAgIHJldHVybiB0cnVlOwog
fQotCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotdm9pZCBBcmd1bWVudENvZGVyPEZs
b2F0UG9pbnQzRD46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IEZsb2F0
UG9pbnQzRCYgZmxvYXRQb2ludDNEKQotewotICAgIFNpbXBsZUFyZ3VtZW50Q29kZXI8RmxvYXRQ
b2ludDNEPjo6ZW5jb2RlKGVuY29kZXIsIGZsb2F0UG9pbnQzRCk7Ci19Ci0KLWJvb2wgQXJndW1l
bnRDb2RlcjxGbG9hdFBvaW50M0Q+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBG
bG9hdFBvaW50M0QmIGZsb2F0UG9pbnQzRCkKLXsKLSAgICByZXR1cm4gU2ltcGxlQXJndW1lbnRD
b2RlcjxGbG9hdFBvaW50M0Q+OjpkZWNvZGUoZGVjb2RlciwgZmxvYXRQb2ludDNEKTsKLX0KLQot
dm9pZCBBcmd1bWVudENvZGVyPExlbmd0aD46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29k
ZXIsIGNvbnN0IExlbmd0aCYgbGVuZ3RoKQotewotICAgIFNpbXBsZUFyZ3VtZW50Q29kZXI8TGVu
Z3RoPjo6ZW5jb2RlKGVuY29kZXIsIGxlbmd0aCk7Ci19Ci0KLWJvb2wgQXJndW1lbnRDb2RlcjxM
ZW5ndGg+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBMZW5ndGgmIGxlbmd0aCkK
LXsKLSAgICByZXR1cm4gU2ltcGxlQXJndW1lbnRDb2RlcjxMZW5ndGg+OjpkZWNvZGUoZGVjb2Rl
ciwgbGVuZ3RoKTsKLX0KLQotdm9pZCBBcmd1bWVudENvZGVyPFRyYW5zZm9ybWF0aW9uTWF0cml4
Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHRyYW5zZm9ybWF0aW9uTWF0cml4KQotewotICAgIFNpbXBsZUFyZ3VtZW50Q29kZXI8
VHJhbnNmb3JtYXRpb25NYXRyaXg+OjplbmNvZGUoZW5jb2RlciwgdHJhbnNmb3JtYXRpb25NYXRy
aXgpOwotfQotCi1ib29sIEFyZ3VtZW50Q29kZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+OjpkZWNv
ZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtYXRpb25NYXRyaXgpCi17Ci0gICAgcmV0dXJuIFNpbXBsZUFyZ3VtZW50Q29kZXI8VHJhbnNm
b3JtYXRpb25NYXRyaXg+OjpkZWNvZGUoZGVjb2RlciwgdHJhbnNmb3JtYXRpb25NYXRyaXgpOwot
fQotCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotdm9pZCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OkZpbHRlck9wZXJhdGlvbnM+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25z
dCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQotewotICAgIGVuY29kZXItPmVu
Y29kZVVJbnQzMihmaWx0ZXJzLnNpemUoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBm
aWx0ZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiogZmls
dGVyID0gZmlsdGVycy5hdChpKTsKLSAgICAgICAgRmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRpb25U
eXBlIHR5cGUgPSBmaWx0ZXItPmdldE9wZXJhdGlvblR5cGUoKTsKLSAgICAgICAgZW5jb2Rlci0+
ZW5jb2RlRW51bSh0eXBlKTsKLSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9u
OjpTRVBJQToKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFOgotICAgICAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURToKLSAgICAgICAgICAgIGVuY29kZXIt
PmVuY29kZURvdWJsZShzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3Bl
cmF0aW9uKj4oZmlsdGVyKS0+YW1vdW50KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpCUklHSFRORVNTOgotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q09OVFJBU1Q6
Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZOgotICAgICAgICAgICAgZW5j
b2Rlci0+ZW5jb2RlRG91YmxlKHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNm
ZXJGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIpLT5hbW91bnQoKSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6Ci0gICAgICAgICAgICBBcmd1
bWVudENvZGVyPExlbmd0aD46OmVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxjb25zdCBCbHVy
RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyKS0+c3RkRGV2aWF0aW9uKCkpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzogewotICAg
ICAgICAgICAgY29uc3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiogc2hhZG93ID0gc3RhdGlj
X2Nhc3Q8Y29uc3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbio+KGZpbHRlcik7Ci0gICAgICAg
ICAgICBBcmd1bWVudENvZGVyPEludFBvaW50Pjo6ZW5jb2RlKGVuY29kZXIsIHNoYWRvdy0+bG9j
YXRpb24oKSk7Ci0gICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVJbnQzMihzaGFkb3ctPnN0ZERl
dmlhdGlvbigpKTsKLSAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8Q29sb3I+OjplbmNvZGUoZW5j
b2Rlciwgc2hhZG93LT5jb2xvcigpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLX0K
LQotYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+OjpkZWNvZGUo
QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zJiBmaWx0
ZXJzKQotewotICAgIHVpbnQzMl90IHNpemU7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50
MzIoc2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFZlY3RvcjxSZWZQdHI8Rmls
dGVyT3BlcmF0aW9uPiA+JiBvcGVyYXRpb25zID0gZmlsdGVycy5vcGVyYXRpb25zKCk7Ci0KLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBGaWx0ZXJPcGVy
YXRpb246Ok9wZXJhdGlvblR5cGUgdHlwZTsKLSAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlv
bj4gZmlsdGVyOwotICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0odHlwZSkpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6Ci0gICAgICAgIGNhc2UgRmlsdGVyT3Bl
cmF0aW9uOjpTRVBJQToKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFOgot
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURTogewotICAgICAgICAgICAg
ZG91YmxlIHZhbHVlOwotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVEb3VibGUodmFs
dWUpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGZpbHRlciA9
IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSh2YWx1ZSwgdHlwZSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6SU5WRVJUOgotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzoKLSAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNPTlRSQVNUOgotICAgICAgICBjYXNlIEZpbHRl
ck9wZXJhdGlvbjo6T1BBQ0lUWTogewotICAgICAgICAgICAgZG91YmxlIHZhbHVlOwotICAgICAg
ICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVEb3VibGUodmFsdWUpKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGZpbHRlciA9IEJhc2ljQ29tcG9uZW50VHJhbnNm
ZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSh2YWx1ZSwgdHlwZSk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxVUjogewotICAg
ICAgICAgICAgTGVuZ3RoIGxlbmd0aDsKLSAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2RlcjxM
ZW5ndGg+OjpkZWNvZGUoZGVjb2RlciwgbGVuZ3RoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICBmaWx0ZXIgPSBCbHVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUo
bGVuZ3RoLCB0eXBlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzogewotICAgICAgICAgICAgSW50UG9pbnQg
bG9jYXRpb247Ci0gICAgICAgICAgICBpbnQzMl90IHN0ZERldmlhdGlvbjsKLSAgICAgICAgICAg
IENvbG9yIGNvbG9yOwotICAgICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVyPEludFBvaW50Pjo6
ZGVjb2RlKGRlY29kZXIsIGxvY2F0aW9uKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUludDMyKHN0ZERldmlhdGlvbikpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKCFBcmd1bWVudENv
ZGVyPENvbG9yPjo6ZGVjb2RlKGRlY29kZXIsIGNvbG9yKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICBmaWx0ZXIgPSBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9u
OjpjcmVhdGUobG9jYXRpb24sIHN0ZERldmlhdGlvbiwgY29sb3IsIHR5cGUpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGZpbHRlcikKLSAgICAgICAgICAgIG9wZXJhdGlv
bnMuYXBwZW5kKGZpbHRlcik7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0jZW5kaWYK
LQotI2VuZGlmCi0KIH0gLy8gbmFtZXNwYWNlIENvcmVJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBiMDhmMTE4Zjk3YjgwMTU3Njk4YTcy
MThlNmQ2OTdmMzE1YmYwN2EyLi4zMWE4ZWVmOGM1NDc4ODNmNjBlZjM3ODhlMzQzMTY4ZTJmNTFm
YThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5o
CkBAIC02NywyMCArNjcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB9CiAjZW5kaWYKIAotI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFz
cyBGbG9hdFBvaW50M0Q7Ci0gICAgY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7Ci0gICAgc3Ry
dWN0IExlbmd0aDsKLX0KLQotI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLSAgICBjbGFzcyBGaWx0ZXJPcGVyYXRpb25zOwotfQotI2VuZGlmCi0jZW5kaWYKLQog
bmFtZXNwYWNlIENvcmVJUEMgewogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OkFmZmluZVRyYW5zZm9ybT4gewpAQCAtMjI5LDMxICsyMTUsNiBAQCB0ZW1wbGF0ZTw+
IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OktVUkw+IHsKICAgICBzdGF0aWMgYm9vbCBk
ZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6S1VSTCYpOwogfTsKIAotI2lmIFVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6RmxvYXRQb2ludDNEPiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5j
b2RlciosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQzRCYpOwotICAgIHN0YXRpYyBib29sIGRl
Y29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpGbG9hdFBvaW50M0QmKTsKLX07Ci0KLXRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TGVuZ3RoPiB7Ci0gICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6Okxlbmd0aCYp
OwotICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpMZW5n
dGgmKTsKLX07Ci0KLXRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VHJh
bnNmb3JtYXRpb25NYXRyaXg+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNv
ZGVyKiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKLSAgICBzdGF0aWMg
Ym9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRy
aXgmKTsKLX07Ci0KLSNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi10ZW1wbGF0ZTw+IHN0cnVjdCBB
cmd1bWVudENvZGVyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+IHsKLSAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9u
cyYpOwotICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpG
aWx0ZXJPcGVyYXRpb25zJik7Ci19OwotI2VuZGlmCi0jZW5kaWYKLQotCiB9IC8vIG5hbWVzcGFj
ZSBDb3JlSVBDCiAKICNlbmRpZiAvLyBXZWJDb3JlQXJndW1lbnRDb2RlcnNfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkK
aW5kZXggNGYzOTMwNzUzY2FmYzE4YzAwMDdhZDdjYTFiZjQ4OGVlNjE0YjkzNi4uMDRkOTU2MWI2
OWFlYTc4NDZiMmM3Yzc1NWU2NmVmMTcwNjI1YmYxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0xMzAsNiAr
MTMwLDggQEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL1dlYlVSTFJlcXVlc3QuaCBcCiAgICAg
U2hhcmVkL1dlYlVSTFJlc3BvbnNlLmggXAogICAgIFNoYXJlZC9XZWJVc2VyQ29udGVudFVSTFBh
dHRlcm4uaCBcCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRBcmd1
bWVudENvZGVycy5oIFwKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9TdGlsbEN1c3Rv
bUZpbHRlclByb2dyYW0uaCBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW5Nb2R1bGUuaCBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuaCBc
CiAgICAgU2hhcmVkL1BsdWdpbnMvTlBJZGVudGlmaWVyRGF0YS5oIFwKQEAgLTQ4Niw2ICs0ODgs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBTaGFyZWQvV2ViVVJMUmVxdWVzdC5jcHAgXAogICAgIFNo
YXJlZC9XZWJVUkxSZXNwb25zZS5jcHAgXAogICAgIFNoYXJlZC9XZWJXaGVlbEV2ZW50LmNwcCBc
CisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRBcmd1bWVudENvZGVy
cy5jcHAgXAogICAgIFNoYXJlZC9xdC9Bcmd1bWVudENvZGVyc1F0LmNwcCBcCiAgICAgU2hhcmVk
L3F0L0xheWVyVHJlZUNvbnRleHRRdC5jcHAgXAogICAgIFNoYXJlZC9xdC9TaGFyZWFibGVCaXRt
YXBRdC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5o
CmluZGV4IDk0MzMzMGNlNTViYmYxM2FhMDhkYmFjMGVhMmQxY2MxYzc1MzYyNjYuLmU3MTYwMGMy
NGE0MjE3ZDJkNTk1NTZmNjJkOTMzYzMyMzI2YTEwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVDb29yZGluYXRvclByb3h5LmgKQEAgLTIzLDYgKzIzLDcgQEAKICNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCiAKICNpbmNsdWRlICJCYWNraW5nU3RvcmUuaCIKKyNpbmNsdWRl
ICJDb29yZGluYXRlZEFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94
eS5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlN1cmZhY2VVcGRhdGVJbmZvLmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnByaSBiL1NvdXJjZS9XZWJLaXQy
L1dlYktpdDIucHJpCmluZGV4IDUzNmI3NzliYWJiZmVlNzhhOGVkZTY2OWU3YmRhYjdhOGM4YzU4
NjYuLjgwY2IyZmI4ZTc5NWEyODBjNDk3OWViMmY5YWZiMzRhMzVmOTRmYzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIu
cHJpCkBAIC0xNiw2ICsxNiw3IEBAIElOQ0xVREVQQVRIICs9IFwKICAgICAkJFNPVVJDRV9ESVIv
UGxhdGZvcm0vcXQgXAogICAgICQkU09VUkNFX0RJUi9TaGFyZWQgXAogICAgICQkU09VUkNFX0RJ
Ui9TaGFyZWQvQVBJL2MgXAorICAgICQkU09VUkNFX0RJUi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcyBcCiAgICAgJCRTT1VSQ0VfRElSL1NoYXJlZC9Db3JlSVBDU3VwcG9ydCBcCiAgICAgJCRT
T1VSQ0VfRElSL1NoYXJlZC9QbHVnaW5zIFwKICAgICAkJFNPVVJDRV9ESVIvU2hhcmVkL1BsdWdp
bnMvTmV0c2NhcGUgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
Q29vcmRpbmF0b3IuY3BwCmluZGV4IDEyM2UyOWNiMGMyNDMyNzZhZGNkY2FjYTU0MDQ0MjkyY2Iw
ZmVlMGUuLjczZDMyZDU5MzRhZjY3MGEzYjFlMjZmN2U4ZGQxMTA2OTdlN2UyMjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKQEAg
LTI5LDYgKzI5LDcgQEAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAjaW5jbHVkZSAi
TGF5ZXJUcmVlQ29vcmRpbmF0b3IuaCIKIAorI2luY2x1ZGUgIkNvb3JkaW5hdGVkQXJndW1lbnRD
b2RlcnMuaCIKICNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRl
ICJEcmF3aW5nQXJlYUltcGwuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168539</attachid>
            <date>2012-10-12 21:44:46 -0700</date>
            <delta_ts>2012-10-14 15:44:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98733-20121013134340.patch</filename>
            <type>text/plain</type>
            <size>47602</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMjQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmVlNTU4NDk4MGFkMzk0
ZjVhNTg5ZGRkNTJhZWUyNmUwODcxMDU0Mi4uMDE0OTY1NzFkMjEyMzdhMTc2ZjA5NmEyNDM2NTM4
ZDA3YmRkZDNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTEwLTEyICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtXSzJdIEFk
ZCBDdXN0b21GaWx0ZXJPcGVyYXRpb24gc2VyaWFsaXphdGlvbiBpbiBBcmd1bWVudENvZGVyLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg3MzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uOjpwYXJhbWV0ZXJzKCkgdG8gY29uc3QgZnVuY3Rpb24sIGJlY2F1
c2UKKyAgICAgICAgdGhpcyBtZXRob2QgaXMgYSBnZXR0ZXIgYW5kIGEgY29uc3QgaW5zdGFuY2Ug
bmVlZHMgdG8gY2FsbCB0aGlzIG1ldGhvZC4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVz
ZSB0aGVyZSBpcyBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpwYXJhbWV0ZXJzKToKKwogMjAxMi0xMC0xMyAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBbQ1NTIFNo
YWRlcnNdIEltcGxlbWVudCBhbGwgY29tcG9zaXRlIG9wZXJhdG9ycyBleGNlcHQgZGVzdGluYXRp
b24gYW5kIGxpZ2h0ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGM2YzYzM2U1ZjAzOTMwNDVkYjI2ZWMxYWIw
ZjcyZDdhMmM1N2Q1My4uNmRmZTQ4ODRmMTZhN2U4NDFkNGYxMGU0YWVlZDYwN2I3YjRhNTcyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTEwLTEyICBIdWFuZyBEb25nc3VuZyAg
PGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtXSzJdIEFkZCBDdXN0b21GaWx0
ZXJPcGVyYXRpb24gc2VyaWFsaXphdGlvbiBpbiBBcmd1bWVudENvZGVyLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg3MzMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQXJndW1lbnRDb2RlcnMgZm9y
IEN1c3RvbUZpbHRlck9wZXJhdGlvbiBhbmQgYWxsIGRlcGVuZGVudCBjbGFzc2VzLgorICAgICAg
ICBDb29yZGluYXRlZCBncmFwaGljcyB3aWxsIHVzZSB0aGlzIGNzcyBzaGFkZXJzIHNlcmlhbGl6
YXRpb24gd2hlbiBpdCBlbmFibGVzIENTUworICAgICAgICBTaGFkZXJzLgorICAgICAgICBJbiBB
ZGRpdGlvbiwgYWRkIENvb3JkaW5hdGVkQXJndW1lbnRDb2RlcnMgaW50byB3aGljaCBhbGwgQXJn
dW1lbnRDb2RlcnMgZm9yCisgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzIGFyZSBtb3ZlZC4K
KworICAgICAgICBObyBuZXcgdGVzdHMsIGNvZGUgcGF0aCBpcyBub3QgYWN0aXZhdGVkIHlldC4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQXJndW1lbnRDb2RlcnMuY3BwOiBBZGRlZC4KKyAgICAgICAg
KENvcmVJUEMpOgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUpOgorICAgICAgICAoQ29yZUlQ
Qzo6OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkQXJndW1lbnRDb2RlcnMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKENvcmVJUEMpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkN1
c3RvbUZpbHRlclByb2dyYW0uaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbSk6CisgICAgICAgICAgICBXZWJDdXN0b21GaWx0ZXJQcm9n
cmFtIGlzIG1hZGUgZnJvbSBzZXJpYWxpemVkIGRhdGEgb2YKKyAgICAgICAgICAgIFN0eWxlQ3Vz
dG9tRmlsdGVyUHJvZ3JhbSBpbiBVSSBQcm9jZXNzLiBVSSBQcm9jZXNzIHVzZXMgdGhpcyBjbGFz
cworICAgICAgICAgICAgaW5zdGVhZCBvZiBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0gYmVjYXVz
ZSBVSSBQcm9jZXNzIGNhbiBub3QgZ2V0IGEKKyAgICAgICAgICAgIGN1c3RvbSBmaWx0ZXIgcHJv
Z3JhbSB2aWEgbmV0d29yay4KKyAgICAgICAgKFdlYktpdDo6V2ViQ3VzdG9tRmlsdGVyUHJvZ3Jh
bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbTo6V2Vi
Q3VzdG9tRmlsdGVyUHJvZ3JhbSk6CisgICAgICAgICogU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2Uu
Y3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwOgorICAgICAg
ICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaDoKKyAgICAgICAgKiBUYXJnZXQucHJp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3Jk
aW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQyLnByaToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHA6
CisKIDIwMTItMTAtMTIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIFNldHVwIGJhc2ljIE5ldHdvcmtQcm9jZXNzIG1lc3NhZ2luZyBhbmQgaW5pdGlhbGl6YXRp
b24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaAppbmRleCA3ODhiM2YwMTYyNmIzZjRh
ZjA1MjBkZDhjNmYyNWFmNDRhMjU0MGEzLi4wZDY0ZDIzNjgyNzc4NjQ1M2QzZWFjN2E0NmQ3MDVl
OTQ0ZjIxM2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTY5LDcgKzY5
LDcgQEAgcHVibGljOgogICAgIAogICAgIEN1c3RvbUZpbHRlclByb2dyYW0qIHByb2dyYW0oKSBj
b25zdCB7IHJldHVybiBtX3Byb2dyYW0uZ2V0KCk7IH0KICAgICAKLSAgICBjb25zdCBDdXN0b21G
aWx0ZXJQYXJhbWV0ZXJMaXN0JiBwYXJhbWV0ZXJzKCkgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9
CisgICAgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgcGFyYW1ldGVycygpIGNvbnN0
IHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQogICAgIAogICAgIHVuc2lnbmVkIG1lc2hSb3dzKCkg
Y29uc3QgeyByZXR1cm4gbV9tZXNoUm93czsgfQogICAgIHVuc2lnbmVkIG1lc2hDb2x1bW5zKCkg
Y29uc3QgeyByZXR1cm4gbV9tZXNoQ29sdW1uczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAppbmRleCAy
MGU3ZDM0ZGM4NjU4MTc1MzZlYzBhMTdlN2EyOTQzNzU3NTRmMjc4Li40NzNhMzlmODg3NmFlZjEw
NWNiNjg2Mjc5ZjY0ODhmNTUxNDFkMGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DTWFr
ZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAtNiw2ICs2
LDcgQEAgU0VUKFdlYktpdDJfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVDJfRElS
fS9TaGFyZWQiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9BUEkiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1NoYXJlZC9BUEkvYyIKKyAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9Db3JlSVBDU3VwcG9ydCIK
ICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkL1BsdWdpbnMiCiAgICAgIiR7V0VCS0lUMl9ESVJ9
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlIgpAQCAtMjEzLDYgKzIxNCw4IEBAIFNFVChXZWJLaXQy
X1NPVVJDRVMKICAgICBTaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5jcHAKICAgICBTaGFyZWQv
QVBJL2MvV0tVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCiAKKyAgICBTaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEFyZ3VtZW50Q29kZXJzLmNwcAorCiAgICAgU2hhcmVkL1Bs
dWdpbnMvTlBJZGVudGlmaWVyRGF0YS5jcHAKICAgICBTaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1l
c3NhZ2VSZWNlaXZlci5jcHAKICAgICBTaGFyZWQvUGx1Z2lucy9OUE9iamVjdFByb3h5LmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRBcmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEFyZ3VtZW50Q29kZXJzLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
ZTRlZDQ3ZTg2ZDE2MzJmODg0NTQ4MjNiMWMyMGZkNTNhMmJmMjVlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRB
cmd1bWVudENvZGVycy5jcHAKQEAgLTAsMCArMSw1MzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29w
eXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisjaW5jbHVkZSAiQ29vcmRp
bmF0ZWRBcmd1bWVudENvZGVycy5oIgorCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BbmltYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nv
bG9yLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFBvaW50M0QuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0ludFBvaW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MZW5ndGguaD4KKyNpbmNsdWRlIDxX
ZWJDb3JlL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMp
CisjaW5jbHVkZSA8V2ViQ29yZS9GaWx0ZXJPcGVyYXRpb25zLmg+CisjZW5kaWYKKworI2lmIEVO
QUJMRShDU1NfU0hBREVSUykKKyNpbmNsdWRlICJXZWJDdXN0b21GaWx0ZXJQcm9ncmFtLmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9DdXN0b21GaWx0ZXJBcnJheVBhcmFtZXRlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0N1c3RvbUZpbHRl
clByb2dyYW0uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0N1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFt
ZXRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24uaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL01hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9NYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1BlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Sb3Rh
dGVUcmFuc2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NjYWxlVHJhbnNmb3Jt
T3BlcmF0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Ta2V3VHJhbnNmb3JtT3BlcmF0aW9uLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9UcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaD4KKyNlbmRp
ZgorCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGlj
c1N1cmZhY2UuaD4KKyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CisKK25hbWVzcGFjZSBDb3JlSVBDIHsKKwordm9pZCBBcmd1bWVudENv
ZGVyPEZsb2F0UG9pbnQzRD46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0
IEZsb2F0UG9pbnQzRCYgZmxvYXRQb2ludDNEKQoreworICAgIFNpbXBsZUFyZ3VtZW50Q29kZXI8
RmxvYXRQb2ludDNEPjo6ZW5jb2RlKGVuY29kZXIsIGZsb2F0UG9pbnQzRCk7Cit9CisKK2Jvb2wg
QXJndW1lbnRDb2RlcjxGbG9hdFBvaW50M0Q+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNv
ZGVyLCBGbG9hdFBvaW50M0QmIGZsb2F0UG9pbnQzRCkKK3sKKyAgICByZXR1cm4gU2ltcGxlQXJn
dW1lbnRDb2RlcjxGbG9hdFBvaW50M0Q+OjpkZWNvZGUoZGVjb2RlciwgZmxvYXRQb2ludDNEKTsK
K30KKwordm9pZCBBcmd1bWVudENvZGVyPExlbmd0aD46OmVuY29kZShBcmd1bWVudEVuY29kZXIq
IGVuY29kZXIsIGNvbnN0IExlbmd0aCYgbGVuZ3RoKQoreworICAgIFNpbXBsZUFyZ3VtZW50Q29k
ZXI8TGVuZ3RoPjo6ZW5jb2RlKGVuY29kZXIsIGxlbmd0aCk7Cit9CisKK2Jvb2wgQXJndW1lbnRD
b2RlcjxMZW5ndGg+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBMZW5ndGgmIGxl
bmd0aCkKK3sKKyAgICByZXR1cm4gU2ltcGxlQXJndW1lbnRDb2RlcjxMZW5ndGg+OjpkZWNvZGUo
ZGVjb2RlciwgbGVuZ3RoKTsKK30KKwordm9pZCBBcmd1bWVudENvZGVyPFRyYW5zZm9ybWF0aW9u
TWF0cml4Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHRyYW5zZm9ybWF0aW9uTWF0cml4KQoreworICAgIFNpbXBsZUFyZ3VtZW50
Q29kZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+OjplbmNvZGUoZW5jb2RlciwgdHJhbnNmb3JtYXRp
b25NYXRyaXgpOworfQorCitib29sIEFyZ3VtZW50Q29kZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+
OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dHJhbnNmb3JtYXRpb25NYXRyaXgpCit7CisgICAgcmV0dXJuIFNpbXBsZUFyZ3VtZW50Q29kZXI8
VHJhbnNmb3JtYXRpb25NYXRyaXg+OjpkZWNvZGUoZGVjb2RlciwgdHJhbnNmb3JtYXRpb25NYXRy
aXgpOworfQorCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQordm9pZCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVy
LCBjb25zdCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQoreworICAgIGVuY29k
ZXItPmVuY29kZVVJbnQzMihmaWx0ZXJzLnNpemUoKSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBmaWx0ZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IEZpbHRlck9wZXJhdGlv
biogZmlsdGVyID0gZmlsdGVycy5hdChpKTsKKyAgICAgICAgRmlsdGVyT3BlcmF0aW9uOjpPcGVy
YXRpb25UeXBlIHR5cGUgPSBmaWx0ZXItPmdldE9wZXJhdGlvblR5cGUoKTsKKyAgICAgICAgZW5j
b2Rlci0+ZW5jb2RlRW51bSh0eXBlKTsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6CisgICAgICAgIGNhc2UgRmlsdGVyT3Bl
cmF0aW9uOjpTRVBJQToKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFOgor
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURToKKyAgICAgICAgICAgIGVu
Y29kZXItPmVuY29kZURvdWJsZShzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbG9yTWF0cml4Rmls
dGVyT3BlcmF0aW9uKj4oZmlsdGVyKS0+YW1vdW50KCkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6CisgICAgICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpCUklHSFRORVNTOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q09O
VFJBU1Q6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZOgorICAgICAgICAg
ICAgZW5jb2Rlci0+ZW5jb2RlRG91YmxlKHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29tcG9uZW50
VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIpLT5hbW91bnQoKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6CisgICAgICAgICAg
ICBBcmd1bWVudENvZGVyPExlbmd0aD46OmVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxjb25z
dCBCbHVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyKS0+c3RkRGV2aWF0aW9uKCkpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzog
eworICAgICAgICAgICAgY29uc3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiogc2hhZG93ID0g
c3RhdGljX2Nhc3Q8Y29uc3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbio+KGZpbHRlcik7Cisg
ICAgICAgICAgICBBcmd1bWVudENvZGVyPEludFBvaW50Pjo6ZW5jb2RlKGVuY29kZXIsIHNoYWRv
dy0+bG9jYXRpb24oKSk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVJbnQzMihzaGFkb3ct
PnN0ZERldmlhdGlvbigpKTsKKyAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8Q29sb3I+OjplbmNv
ZGUoZW5jb2Rlciwgc2hhZG93LT5jb2xvcigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6Q1VTVE9NOiB7CisgICAgICAgICAgICBjb25zdCBDdXN0b21GaWx0ZXJPcGVyYXRpb24qIGN1
c3RvbU9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PGNvbnN0IEN1c3RvbUZpbHRlck9wZXJhdGlvbio+
KGZpbHRlcik7CisKKyAgICAgICAgICAgIEFTU0VSVChjdXN0b21PcGVyYXRpb24tPnByb2dyYW0o
KSk7CisgICAgICAgICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyUHJvZ3JhbT4gcHJvZ3JhbSA9IGN1
c3RvbU9wZXJhdGlvbi0+cHJvZ3JhbSgpOworICAgICAgICAgICAgQVNTRVJUKHByb2dyYW0tPmlz
TG9hZGVkKCkpOworICAgICAgICAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8gcHJvZ3JhbUlu
Zm8gPSBwcm9ncmFtLT5wcm9ncmFtSW5mbygpOworICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2Rl
KHByb2dyYW1JbmZvLnZlcnRleFNoYWRlclN0cmluZygpKTsKKyAgICAgICAgICAgIGVuY29kZXIt
PmVuY29kZShwcm9ncmFtSW5mby5mcmFnbWVudFNoYWRlclN0cmluZygpKTsKKyAgICAgICAgICAg
IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyBtaXhTZXR0aW5ncyA9IHByb2dyYW1JbmZv
Lm1peFNldHRpbmdzKCk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUobWl4U2V0dGluZ3Mu
ZW5hYmxlZCk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVFbnVtKG1peFNldHRpbmdzLmJs
ZW5kTW9kZSk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVFbnVtKG1peFNldHRpbmdzLmNv
bXBvc2l0ZU9wZXJhdG9yKTsKKworICAgICAgICAgICAgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlz
dCBwYXJhbWV0ZXJzID0gY3VzdG9tT3BlcmF0aW9uLT5wYXJhbWV0ZXJzKCk7CisgICAgICAgICAg
ICBlbmNvZGVyLT5lbmNvZGVVSW50MzIocGFyYW1ldGVycy5zaXplKCkpOworICAgICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAg
ICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHBhcmFtZXRlcnNbaV0tPm5hbWUoKSk7CisgICAgICAg
ICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlRW51bShwYXJhbWV0ZXJzW2ldLT5wYXJhbWV0ZXJUeXBl
KCkpOworCisgICAgICAgICAgICAgICAgc3dpdGNoIChwYXJhbWV0ZXJzW2ldLT5wYXJhbWV0ZXJU
eXBlKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEN1c3RvbUZpbHRlclBhcmFtZXRlcjo6QVJS
QVk6IHsKKyAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmlsdGVyQXJyYXlQYXJhbWV0ZXIqIGFy
cmF5UGFyYW1ldGVyID0gc3RhdGljX2Nhc3Q8Q3VzdG9tRmlsdGVyQXJyYXlQYXJhbWV0ZXIqPihw
YXJhbWV0ZXJzW2ldLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2Rl
VUludDMyKGFycmF5UGFyYW1ldGVyLT5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBmb3Ig
KHNpemVfdCBqID0gMDsgaiA8IGFycmF5UGFyYW1ldGVyLT5zaXplKCk7ICsraikKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShhcnJheVBhcmFtZXRlci0+dmFsdWVBdChq
KSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBjYXNlIEN1c3RvbUZpbHRlclBhcmFtZXRlcjo6TlVNQkVSOiB7CisgICAgICAg
ICAgICAgICAgICAgIEN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlciogbnVibWVyUGFyYW1ldGVy
ID0gc3RhdGljX2Nhc3Q8Q3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyKj4ocGFyYW1ldGVyc1tp
XS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGVuY29kZXItPmVuY29kZVVJbnQzMihudWJt
ZXJQYXJhbWV0ZXItPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGog
PSAwOyBqIDwgbnVibWVyUGFyYW1ldGVyLT5zaXplKCk7ICsraikKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGVuY29kZXItPmVuY29kZShudWJtZXJQYXJhbWV0ZXItPnZhbHVlQXQoaikpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgY2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6OlRSQU5TRk9STTogeworICAgICAgICAgICAg
ICAgICAgICBDdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIqIHRyYW5zZm9ybVBhcmFtZXRl
ciA9IHN0YXRpY19jYXN0PEN1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlcio+KHBhcmFtZXRl
cnNbaV0uZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBBcmd1bWVudENvZGVyPFRyYW5zZm9y
bU9wZXJhdGlvbnM+OjplbmNvZGUoZW5jb2RlciwgdHJhbnNmb3JtUGFyYW1ldGVyLT5vcGVyYXRp
b25zKCkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlbmNvZGVyLT5l
bmNvZGUoY3VzdG9tT3BlcmF0aW9uLT5tZXNoUm93cygpKTsKKyAgICAgICAgICAgIGVuY29kZXIt
PmVuY29kZShjdXN0b21PcGVyYXRpb24tPm1lc2hDb2x1bW5zKCkpOworICAgICAgICAgICAgZW5j
b2Rlci0+ZW5jb2RlRW51bShjdXN0b21PcGVyYXRpb24tPm1lc2hCb3hUeXBlKCkpOworICAgICAg
ICAgICAgZW5jb2Rlci0+ZW5jb2RlRW51bShjdXN0b21PcGVyYXRpb24tPm1lc2hUeXBlKCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2Rlciog
ZGVjb2RlciwgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK3sKKyAgICB1aW50
MzJfdCBzaXplOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKHNpemUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gPiYg
b3BlcmF0aW9ucyA9IGZpbHRlcnMub3BlcmF0aW9ucygpOworCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgRmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRpb25U
eXBlIHR5cGU7CisgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZpbHRlcjsKKyAgICAg
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVFbnVtKHR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIEZpbHRlck9wZXJh
dGlvbjo6R1JBWVNDQUxFOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6Cisg
ICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTQVRVUkFURToKKyAgICAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6IHsKKyAgICAgICAgICAgIGRvdWJsZSB2YWx1ZTsKKyAg
ICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRG91YmxlKHZhbHVlKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBmaWx0ZXIgPSBCYXNpY0NvbG9yTWF0cml4
RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUodmFsdWUsIHR5cGUpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklOVkVSVDoKKyAgICAg
ICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6CisgICAgICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpDT05UUkFTVDoKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJ
VFk6IHsKKyAgICAgICAgICAgIGRvdWJsZSB2YWx1ZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlRG91YmxlKHZhbHVlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICBmaWx0ZXIgPSBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9u
OjpjcmVhdGUodmFsdWUsIHR5cGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6IHsKKyAgICAgICAgICAgIExlbmd0aCBs
ZW5ndGg7CisgICAgICAgICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZGVjb2RlKGRl
Y29kZXIsIGxlbmd0aCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgZmlsdGVyID0gQmx1ckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKGxlbmd0aCwgdHlwZSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6RFJPUF9TSEFET1c6IHsKKyAgICAgICAgICAgIEludFBvaW50IGxvY2F0aW9uOworICAgICAg
ICAgICAgaW50MzJfdCBzdGREZXZpYXRpb247CisgICAgICAgICAgICBDb2xvciBjb2xvcjsKKyAg
ICAgICAgICAgIGlmICghQXJndW1lbnRDb2RlcjxJbnRQb2ludD46OmRlY29kZShkZWNvZGVyLCBs
b2NhdGlvbikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGVJbnQzMihzdGREZXZpYXRpb24pKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2RlcjxDb2xvcj46OmRlY29k
ZShkZWNvZGVyLCBjb2xvcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgZmlsdGVyID0gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKGxvY2F0aW9u
LCBzdGREZXZpYXRpb24sIGNvbG9yLCB0eXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6Q1VTVE9NOiB7CisgICAgICAgICAgICBTdHJpbmcgdmVydGV4U2hhZGVyU3RyaW5nOworICAg
ICAgICAgICAgU3RyaW5nIGZyYWdtZW50U2hhZGVyU3RyaW5nOworICAgICAgICAgICAgQ3VzdG9t
RmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIG1peFNldHRpbmdzOworICAgICAgICAgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUodmVydGV4U2hhZGVyU3RyaW5nKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShmcmFnbWVudFNoYWRl
clN0cmluZykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGUobWl4U2V0dGluZ3MuZW5hYmxlZCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVFbnVtKG1peFNl
dHRpbmdzLmJsZW5kTW9kZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVFbnVtKG1peFNldHRpbmdzLmNvbXBvc2l0ZU9wZXJh
dG9yKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBSZWZQdHI8
Q3VzdG9tRmlsdGVyUHJvZ3JhbT4gcHJvZ3JhbSA9IFdlYkN1c3RvbUZpbHRlclByb2dyYW06OmNy
ZWF0ZSh2ZXJ0ZXhTaGFkZXJTdHJpbmcsIGZyYWdtZW50U2hhZGVyU3RyaW5nLCBtaXhTZXR0aW5n
cyk7CisKKyAgICAgICAgICAgIHVpbnQzMl90IHBhcmFtZXRlcnNTaXplOworICAgICAgICAgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIocGFyYW1ldGVyc1NpemUpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlz
dCBwYXJhbWV0ZXJzKHBhcmFtZXRlcnNTaXplKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcGFyYW1ldGVyc1NpemU7ICsraSkgeworICAgICAgICAgICAgICAgIFN0cmluZyBu
YW1lOworICAgICAgICAgICAgICAgIEN1c3RvbUZpbHRlclBhcmFtZXRlcjo6UGFyYW1ldGVyVHlw
ZSBwYXJhbWV0ZXJUeXBlOworICAgICAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG5h
bWUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGVFbnVtKHBhcmFtZXRlclR5cGUpKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHBhcmFtZXRlclR5
cGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEN1c3RvbUZpbHRlclBhcmFtZXRlcjo6QVJSQVk6
IHsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEN1c3RvbUZpbHRlckFycmF5UGFyYW1ldGVy
PiBhcnJheVBhcmFtZXRlciA9IEN1c3RvbUZpbHRlckFycmF5UGFyYW1ldGVyOjpjcmVhdGUobmFt
ZSk7CisgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKGFycmF5UGFyYW1ldGVy
KTsKKyAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYXJyYXlQYXJhbWV0ZXJTaXplOworICAg
ICAgICAgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJbnQzMihhcnJheVBhcmFtZXRl
clNpemUpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgICAgICBkb3VibGUgYXJyYXlQYXJhbWV0ZXJWYWx1ZTsKKyAgICAgICAgICAgICAgICAg
ICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBhcnJheVBhcmFtZXRlclNpemU7ICsraikgeworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoYXJyYXlQYXJhbWV0ZXJW
YWx1ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgICAgICAgICAgICAgYXJyYXlQYXJhbWV0ZXItPmFkZFZhbHVlKGFycmF5UGFyYW1ldGVy
VmFsdWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEN1c3RvbUZpbHRlclBh
cmFtZXRlcjo6TlVNQkVSOiB7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxDdXN0b21GaWx0
ZXJOdW1iZXJQYXJhbWV0ZXI+IG51bWJlclBhcmFtZXRlciA9IEN1c3RvbUZpbHRlck51bWJlclBh
cmFtZXRlcjo6Y3JlYXRlKG5hbWUpOworICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFw
cGVuZChudW1iZXJQYXJhbWV0ZXIpOworICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBudW1i
ZXJQYXJhbWV0ZXJTaXplOworICAgICAgICAgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29k
ZVVJbnQzMihudW1iZXJQYXJhbWV0ZXJTaXplKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIG51bWJlclBhcmFtZXRlclZh
bHVlOworICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG51bWJlclBh
cmFtZXRlclNpemU7ICsraikgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUobnVtYmVyUGFyYW1ldGVyVmFsdWUpKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlclBhcmFtZXRl
ci0+YWRkVmFsdWUobnVtYmVyUGFyYW1ldGVyVmFsdWUpOworICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBjYXNlIEN1c3RvbUZpbHRlclBhcmFtZXRlcjo6VFJBTlNGT1JNOiB7CisgICAgICAg
ICAgICAgICAgICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXI+IHRyYW5z
Zm9ybVBhcmFtZXRlciA9IEN1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlcjo6Y3JlYXRlKG5h
bWUpOworICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZCh0cmFuc2Zvcm1QYXJh
bWV0ZXIpOworICAgICAgICAgICAgICAgICAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlv
bnM7CisgICAgICAgICAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1PcGVy
YXRpb25zPjo6ZGVjb2RlKGRlY29kZXIsIG9wZXJhdGlvbnMpKQorICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1QYXJhbWV0
ZXItPnNldE9wZXJhdGlvbnMob3BlcmF0aW9ucyk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIHVuc2lnbmVkIG1lc2hSb3dzOworICAgICAgICAgICAgdW5zaWduZWQgbWVz
aENvbHVtbnM7CisgICAgICAgICAgICBDdXN0b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hCb3hUeXBl
IG1lc2hCb3hUeXBlOworICAgICAgICAgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoVHlw
ZSBtZXNoVHlwZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG1lc2hSb3dzKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXIt
PmRlY29kZShtZXNoQ29sdW1ucykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVFbnVtKG1lc2hCb3hUeXBlKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVu
dW0obWVzaFR5cGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAg
ICAgZmlsdGVyID0gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUocHJvZ3JhbSwgcGFyYW1l
dGVycywgbWVzaFJvd3MsIG1lc2hDb2x1bW5zLCBtZXNoQm94VHlwZSwgbWVzaFR5cGUpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZmlsdGVyKQorICAgICAg
ICAgICAgb3BlcmF0aW9ucy5hcHBlbmQoZmlsdGVyKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKyNlbmRpZgorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQordm9pZCBBcmd1bWVudENv
ZGVyPFRyYW5zZm9ybU9wZXJhdGlvbnM+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVy
LCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB0cmFuc2Zvcm1PcGVyYXRpb25zKQoreworICAg
IGVuY29kZXItPmVuY29kZVVJbnQzMih0cmFuc2Zvcm1PcGVyYXRpb25zLnNpemUoKSk7CisgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFuc2Zvcm1PcGVyYXRpb25zLnNpemUoKTsgKytpKSB7
CisgICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogb3BlcmF0aW9uID0gdHJhbnNmb3Jt
T3BlcmF0aW9ucy5hdChpKTsKKyAgICAgICAgZW5jb2Rlci0+ZW5jb2RlRW51bShvcGVyYXRpb24t
PmdldE9wZXJhdGlvblR5cGUoKSk7CisKKyAgICAgICAgc3dpdGNoIChvcGVyYXRpb24tPmdldE9w
ZXJhdGlvblR5cGUoKSkgeworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVf
WDoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1k6CisgICAgICAgIGNh
c2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRToKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVy
YXRpb246OlNDQUxFX1o6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV8z
RDoKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRy
YW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPngoKSk7CisgICAgICAgICAgICBlbmNvZGVy
LT5lbmNvZGUoc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVy
YXRpb24pLT55KCkpOworICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGNv
bnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+eigpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1g6
CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWToKKyAgICAgICAg
Y2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURToKKyAgICAgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OlRSQU5TTEFURV9aOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlv
bjo6VFJBTlNMQVRFXzNEOgorICAgICAgICAgICAgQXJndW1lbnRDb2RlcjxMZW5ndGg+OjplbmNv
ZGUoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9u
Kj4ob3BlcmF0aW9uKS0+eCgpKTsKKyAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6
ZW5jb2RlKGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbio+KG9wZXJhdGlvbiktPnkoKSk7CisgICAgICAgICAgICBBcmd1bWVudENvZGVyPExlbmd0
aD46OmVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1P
cGVyYXRpb24qPihvcGVyYXRpb24pLT56KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEU6CisgICAgICAgIGNhc2UgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpST1RBVEVfWDoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJP
VEFURV9ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEOgorICAg
ICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGNvbnN0IFJvdGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPngoKSk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNv
ZGUoc3RhdGljX2Nhc3Q8Y29uc3QgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9u
KS0+eSgpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxjb25zdCBS
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT56KCkpOworICAgICAgICAgICAg
ZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGNvbnN0IFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlv
bio+KG9wZXJhdGlvbiktPmFuZ2xlKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXX1g6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpTS0VXX1k6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXOgor
ICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGNvbnN0IFNrZXdUcmFuc2Zv
cm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT5hbmdsZVgoKSk7CisgICAgICAgICAgICBlbmNvZGVy
LT5lbmNvZGUoc3RhdGljX2Nhc3Q8Y29uc3QgU2tld1RyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJh
dGlvbiktPmFuZ2xlWSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6TUFUUklYOgorICAgICAgICAgICAgQXJndW1lbnRDb2RlcjxUcmFuc2Zv
cm1hdGlvbk1hdHJpeD46OmVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxjb25zdCBNYXRyaXhU
cmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT5tYXRyaXgoKSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWF8zRDoKKyAgICAg
ICAgICAgIEFyZ3VtZW50Q29kZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+OjplbmNvZGUoZW5jb2Rl
ciwgc3RhdGljX2Nhc3Q8Y29uc3QgTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRp
b24pLT5tYXRyaXgoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OlBFUlNQRUNUSVZFOgorICAgICAgICAgICAgQXJndW1lbnRDb2RlcjxMZW5n
dGg+OjplbmNvZGUoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8Y29uc3QgUGVyc3BlY3RpdmVUcmFuc2Zv
cm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT5wZXJzcGVjdGl2ZSgpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6SURFTlRJVFk6CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok5PTkU6CisgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgfQorfQorCitib29sIEFyZ3VtZW50Q29kZXI8VHJhbnNmb3JtT3BlcmF0aW9ucz46
OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFRyYW5zZm9ybU9wZXJhdGlvbnMmIHRy
YW5zZm9ybU9wZXJhdGlvbnMpCit7CisgICAgdWludDMyX3Qgb3BlcmF0aW9uc1NpemU7CisgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIob3BlcmF0aW9uc1NpemUpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9wZXJhdGlvbnNTaXplOyAr
K2kpIHsKKyAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIG9wZXJhdGlv
blR5cGU7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShvcGVyYXRpb25UeXBlKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBzd2l0Y2ggKG9wZXJhdGlvblR5
cGUpIHsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1g6CisgICAgICAg
IGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9ZOgorICAgICAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6U0NBTEU6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FM
RV9aOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfM0Q6IHsKKyAgICAg
ICAgICAgIGRvdWJsZSB4LCB5LCB6OworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
eCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGUoeSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoeikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFNj
YWxlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoeCwgeSwgeiwgb3BlcmF0aW9uVHlwZSkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVy
YXRpb246OlRSQU5TTEFURV9YOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJB
TlNMQVRFX1k6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEU6Cisg
ICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWjoKKyAgICAgICAgY2Fz
ZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV8zRDogeworICAgICAgICAgICAgTGVuZ3Ro
IHgsIHksIHo7CisgICAgICAgICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZGVjb2Rl
KGRlY29kZXIsIHgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IGlmICghQXJndW1lbnRDb2RlcjxMZW5ndGg+OjpkZWNvZGUoZGVjb2RlciwgeSkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVyPExl
bmd0aD46OmRlY29kZShkZWNvZGVyLCB6KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICB0cmFuc2Zvcm1PcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJh
bnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoeCwgeSwgeiwgb3BlcmF0aW9uVHlwZSkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1P
cGVyYXRpb246OlJPVEFURToKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFU
RV9YOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1k6CisgICAgICAg
IGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfM0Q6IHsKKyAgICAgICAgICAgIGRvdWJs
ZSB4LCB5LCB6LCBhbmdsZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+
ZGVjb2RlKHkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKHopKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGFuZ2xlKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB0cmFuc2Zvcm1PcGVyYXRpb25zLm9wZXJhdGlvbnMo
KS5hcHBlbmQoUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoeCwgeSwgeiwgYW5nbGUs
IG9wZXJhdGlvblR5cGUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXX1g6CisgICAgICAgIGNhc2UgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpTS0VXX1k6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VX
OiB7CisgICAgICAgICAgICBkb3VibGUgYW5nbGVYLCBhbmdsZVk7CisgICAgICAgICAgICBpZiAo
IWRlY29kZXItPmRlY29kZShhbmdsZVgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGFuZ2xlWSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVyYXRp
b25zKCkuYXBwZW5kKFNrZXdUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShhbmdsZVgsIGFuZ2xl
WSwgb3BlcmF0aW9uVHlwZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWDogeworICAgICAgICAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggbWF0cml4OworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVyPFRy
YW5zZm9ybWF0aW9uTWF0cml4Pjo6ZGVjb2RlKGRlY29kZXIsIG1hdHJpeCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVy
YXRpb25zKCkuYXBwZW5kKE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKG1hdHJpeCkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1P
cGVyYXRpb246Ok1BVFJJWF8zRDogeworICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
bWF0cml4OworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVyPFRyYW5zZm9ybWF0aW9uTWF0
cml4Pjo6ZGVjb2RlKGRlY29kZXIsIG1hdHJpeCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5k
KE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUobWF0cml4KSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6UEVS
U1BFQ1RJVkU6IHsKKyAgICAgICAgICAgIExlbmd0aCBwZXJzcGVjdGl2ZTsKKyAgICAgICAgICAg
IGlmICghQXJndW1lbnRDb2RlcjxMZW5ndGg+OjpkZWNvZGUoZGVjb2RlciwgcGVyc3BlY3RpdmUp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5zZm9ybU9w
ZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlv
bjo6Y3JlYXRlKHBlcnNwZWN0aXZlKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6SURFTlRJVFk6CisgICAgICAgICAgICB0
cmFuc2Zvcm1PcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoSWRlbnRpdHlUcmFuc2Zvcm1P
cGVyYXRpb246OmNyZWF0ZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6Tk9ORToKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7
Cit9CisjZW5kaWYKKworI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQordm9pZCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2Rl
ciogZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4mIHRva2VuKQor
eworI2lmIE9TKERBUldJTikKKyAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIodG9rZW4uZnJvbnRC
dWZmZXJIYW5kbGUpOworICAgIGVuY29kZXItPmVuY29kZVVJbnQzMih0b2tlbi5iYWNrQnVmZmVy
SGFuZGxlKTsKKyNlbmRpZgorI2lmIE9TKExJTlVYKQorICAgIGVuY29kZXItPmVuY29kZVVJbnQz
Mih0b2tlbi5mcm9udEJ1ZmZlckhhbmRsZSk7CisjZW5kaWYKK30KKworYm9vbCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2Rl
ciogZGVjb2RlciwgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4mIHRva2VuKQoreworI2lm
IE9TKERBUldJTikKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJbnQzMih0b2tlbi5mcm9udEJ1
ZmZlckhhbmRsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXItPmRl
Y29kZVVJbnQzMih0b2tlbi5iYWNrQnVmZmVySGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworI2VuZGlmCisjaWYgT1MoTElOVVgpCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIo
dG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCisj
ZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRBcmd1bWVudENvZGVy
cy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRBcmd1bWVudENvZGVycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUyOGU5YTE2MDZhZGZlMjc5M2JjNDI2NTVk
MzNjODViNWZkNzUxNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEFyZ3VtZW50Q29kZXJzLmgKQEAgLTAsMCAr
MSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQ29tcGFu
eSAxMDAsIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDb29yZGluYXRlZEFyZ3VtZW50Q29kZXJz
X2gKKyNkZWZpbmUgQ29vcmRpbmF0ZWRBcmd1bWVudENvZGVyc19oCisKKyNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworY2xhc3MgRmxvYXRQb2ludDNEOworY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRy
aXg7CitzdHJ1Y3QgTGVuZ3RoOworCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQorY2xhc3MgRmls
dGVyT3BlcmF0aW9uczsKKyNlbmRpZgorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorY2xhc3Mg
VHJhbnNmb3JtT3BlcmF0aW9uczsKKyNlbmRpZgorCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0Up
CitzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNlVG9rZW47CisjZW5kaWYKK30KKworbmFtZXNwYWNlIENv
cmVJUEMgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZsb2F0
UG9pbnQzRD4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50M0QmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1l
bnREZWNvZGVyKiwgV2ViQ29yZTo6RmxvYXRQb2ludDNEJik7Cit9OworCit0ZW1wbGF0ZTw+IHN0
cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Okxlbmd0aD4geworICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShBcmd1bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpMZW5ndGgmKTsKKyAgICBzdGF0
aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6TGVuZ3RoJik7Cit9Owor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0
IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisgICAgc3RhdGljIGJvb2wgZGVjb2Rl
KEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7Cit9Owor
CisjaWYgRU5BQkxFKENTU19GSUxURVJTKQordGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFy
Z3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmKTsKKyAgICBz
dGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6RmlsdGVyT3BlcmF0
aW9ucyYpOworfTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQordGVtcGxhdGU8
PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpUcmFuc2Zvcm1PcGVyYXRpb25zPiB7Cisg
ICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6OlRy
YW5zZm9ybU9wZXJhdGlvbnMmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNv
ZGVyKiwgV2ViQ29yZTo6VHJhbnNmb3JtT3BlcmF0aW9ucyYpOworfTsKKyNlbmRpZgorCisjaWYg
VVNFKEdSQVBISUNTX1NVUkZBQ0UpCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFy
Z3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuJik7Cisg
ICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OkdyYXBoaWNz
U3VyZmFjZVRva2VuJik7Cit9OworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIENvcmVJUEMKKyNl
bmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKKyNlbmRpZiAvLyBDb29yZGluYXRl
ZEFyZ3VtZW50Q29kZXJzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL1dlYkN1c3RvbUZpbHRlclByb2dyYW0uaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkN1c3RvbUZpbHRlclByb2dyYW0uaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jNzEyZjVjMDRlOTdkYmNjYmUzOWRiYTM2ODg3ODAwNGYzNzAzZWE4Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2Vi
Q3VzdG9tRmlsdGVyUHJvZ3JhbS5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQ29tcGFueSAxMDAsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJDdXN0b21GaWx0ZXJQcm9ncmFtX2gKKyNkZWZpbmUgV2ViQ3VzdG9tRmls
dGVyUHJvZ3JhbV9oCisKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpICYmIEVOQUJMRShD
U1NfU0hBREVSUykKKyNpbmNsdWRlIDxXZWJDb3JlL0N1c3RvbUZpbHRlclByb2dyYW0uaD4KKwor
bmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYkN1c3RvbUZpbHRlclByb2dyYW0gOiBwdWJs
aWMgV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8V2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbT4gY3JlYXRlKFN0cmluZyB2ZXJ0ZXhTaGFk
ZXJTdHJpbmcsIFN0cmluZyBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nLCBXZWJDb3JlOjpDdXN0b21G
aWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MgbWl4U2V0dGluZ3MpCisgICAgeworICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYkN1c3RvbUZpbHRlclByb2dyYW0odmVydGV4U2hhZGVyU3RyaW5n
LCBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nLCBtaXhTZXR0aW5ncykpOworICAgIH0KKworICAgIHZp
cnR1YWwgYm9vbCBpc0xvYWRlZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKwor
ICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW0mIG8p
IGNvbnN0IE9WRVJSSURFCisgICAgeworICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGNhc3QgaXMg
dWdseSwgYnV0IFdlYkN1c3RvbUZpbHRlclByb2dyYW0gaXMgdGhlIHNpbmdsZSBpbXBsZW1lbnRh
dGlvbiBvZiBDdXN0b21GaWx0ZXJQcm9ncmFtIG9uIFVJIFByb2Nlc3MuCisgICAgICAgIGNvbnN0
IFdlYkN1c3RvbUZpbHRlclByb2dyYW0qIG90aGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ3Vz
dG9tRmlsdGVyUHJvZ3JhbSo+KCZvKTsKKyAgICAgICAgcmV0dXJuIG1peFNldHRpbmdzKCkgPT0g
b3RoZXItPm1peFNldHRpbmdzKCkgJiYgbV92ZXJ0ZXhTaGFkZXJTdHJpbmcgPT0gb3RoZXItPnZl
cnRleFNoYWRlclN0cmluZygpICYmIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcgPT0gb3RoZXItPmZy
YWdtZW50U2hhZGVyU3RyaW5nKCk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBT
dHJpbmcgdmVydGV4U2hhZGVyU3RyaW5nKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV92ZXJ0
ZXhTaGFkZXJTdHJpbmc7IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBmcmFnbWVudFNoYWRlclN0cmlu
ZygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmc7IH0KKwor
ICAgIHZpcnR1YWwgdm9pZCB3aWxsSGF2ZUNsaWVudHMoKSBPVkVSUklERSB7IG5vdGlmeUNsaWVu
dHMoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVMYXN0Q2xpZW50KCkgT1ZFUlJJREUg
eyB9CisKK3ByaXZhdGU6CisgICAgV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbShTdHJpbmcgdmVydGV4
U2hhZGVyU3RyaW5nLCBTdHJpbmcgZnJhZ21lbnRTaGFkZXIsIFdlYkNvcmU6OkN1c3RvbUZpbHRl
clByb2dyYW1NaXhTZXR0aW5ncyBtaXhTZXR0aW5ncykKKyAgICAgICAgOiBXZWJDb3JlOjpDdXN0
b21GaWx0ZXJQcm9ncmFtKG1peFNldHRpbmdzKQorICAgICAgICAsIG1fdmVydGV4U2hhZGVyU3Ry
aW5nKHZlcnRleFNoYWRlclN0cmluZykKKyAgICAgICAgLCBtX2ZyYWdtZW50U2hhZGVyU3RyaW5n
KG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcpCisgICAgeworICAgIH0KKworICAgIFN0cmluZyBtX3Zl
cnRleFNoYWRlclN0cmluZzsKKyAgICBTdHJpbmcgbV9mcmFnbWVudFNoYWRlclN0cmluZzsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKSAmJiBFTkFCTEUoQ1NTX1NIQURFUlMpCisKKyNlbmRpZiAvLyBXZWJDdXN0b21GaWx0
ZXJQcm9ncmFtX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVT
dXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmNwcApp
bmRleCAxMzZiMDkzMTEzNGU0YTA4ODdmMzM4MDZjZmY2MGJmMGUyYmEzYWFkLi4xYWE5MDI2ZTVm
M2JlOGM4MmQzZmQ4Y2YxZjJiNzAxNjQ4MTliZDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1NoYXJlYWJsZVN1cmZhY2UuY3BwCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmln
LmgiCiAjaW5jbHVkZSAiU2hhcmVhYmxlU3VyZmFjZS5oIgogCisjaW5jbHVkZSAiQ29vcmRpbmF0
ZWRBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NT
dXJmYWNlVG9rZW4uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKaW5kZXggMDQxMjQ2NjdmOTU3NDY5MmU1ODczNTFiZmEyMGI3MmY4ZWJjYTM5
Yi4uOGFlNmM4NWE3ZTNkNzUxMmRmMDE5YjdiMmVhZTVhZmRkMWM3YTRkMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKQEAgLTQ5LDIwICs0
OSw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJlcy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLSNp
bmNsdWRlIDxXZWJDb3JlL0FuaW1hdGlvbi5oPgotI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRQb2lu
dDNELmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9MZW5ndGguaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Ry
YW5zZm9ybWF0aW9uTWF0cml4Lmg+Ci0KLSNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi0jaW5jbHVk
ZSA8V2ViQ29yZS9GaWx0ZXJPcGVyYXRpb25zLmg+Ci0jZW5kaWYKLSNpZiBVU0UoR1JBUEhJQ1Nf
U1VSRkFDRSkKLSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzU3VyZmFjZS5oPgotI2VuZGlmCi0j
ZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwogCkBAIC04NzIsMTcwICs4NTgsNCBAQCBib29sIEFyZ3VtZW50Q29kZXI8S1VSTD46OmRlY29k
ZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIEtVUkwmIHJlc3VsdCkKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLXZvaWQgQXJndW1lbnRDb2Rl
cjxGbG9hdFBvaW50M0Q+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBG
bG9hdFBvaW50M0QmIGZsb2F0UG9pbnQzRCkKLXsKLSAgICBTaW1wbGVBcmd1bWVudENvZGVyPEZs
b2F0UG9pbnQzRD46OmVuY29kZShlbmNvZGVyLCBmbG9hdFBvaW50M0QpOwotfQotCi1ib29sIEFy
Z3VtZW50Q29kZXI8RmxvYXRQb2ludDNEPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2Rl
ciwgRmxvYXRQb2ludDNEJiBmbG9hdFBvaW50M0QpCi17Ci0gICAgcmV0dXJuIFNpbXBsZUFyZ3Vt
ZW50Q29kZXI8RmxvYXRQb2ludDNEPjo6ZGVjb2RlKGRlY29kZXIsIGZsb2F0UG9pbnQzRCk7Ci19
Ci0KLXZvaWQgQXJndW1lbnRDb2RlcjxMZW5ndGg+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBl
bmNvZGVyLCBjb25zdCBMZW5ndGgmIGxlbmd0aCkKLXsKLSAgICBTaW1wbGVBcmd1bWVudENvZGVy
PExlbmd0aD46OmVuY29kZShlbmNvZGVyLCBsZW5ndGgpOwotfQotCi1ib29sIEFyZ3VtZW50Q29k
ZXI8TGVuZ3RoPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgTGVuZ3RoJiBsZW5n
dGgpCi17Ci0gICAgcmV0dXJuIFNpbXBsZUFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZGVjb2RlKGRl
Y29kZXIsIGxlbmd0aCk7Ci19Ci0KLXZvaWQgQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlvbk1h
dHJpeD46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm1hdGlvbk1hdHJpeCkKLXsKLSAgICBTaW1wbGVBcmd1bWVudENv
ZGVyPFRyYW5zZm9ybWF0aW9uTWF0cml4Pjo6ZW5jb2RlKGVuY29kZXIsIHRyYW5zZm9ybWF0aW9u
TWF0cml4KTsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPFRyYW5zZm9ybWF0aW9uTWF0cml4Pjo6
ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRy
YW5zZm9ybWF0aW9uTWF0cml4KQotewotICAgIHJldHVybiBTaW1wbGVBcmd1bWVudENvZGVyPFRy
YW5zZm9ybWF0aW9uTWF0cml4Pjo6ZGVjb2RlKGRlY29kZXIsIHRyYW5zZm9ybWF0aW9uTWF0cml4
KTsKLX0KLQotI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLXZvaWQgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpGaWx0ZXJPcGVyYXRpb25zPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rlciwg
Y29uc3QgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKLXsKLSAgICBlbmNvZGVy
LT5lbmNvZGVVSW50MzIoZmlsdGVycy5zaXplKCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgZmlsdGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBGaWx0ZXJPcGVyYXRpb24q
IGZpbHRlciA9IGZpbHRlcnMuYXQoaSk7Ci0gICAgICAgIEZpbHRlck9wZXJhdGlvbjo6T3BlcmF0
aW9uVHlwZSB0eXBlID0gZmlsdGVyLT5nZXRPcGVyYXRpb25UeXBlKCk7Ci0gICAgICAgIGVuY29k
ZXItPmVuY29kZUVudW0odHlwZSk7Ci0gICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBj
YXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFOgotICAgICAgICBjYXNlIEZpbHRlck9wZXJh
dGlvbjo6U0VQSUE6Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTQVRVUkFURToKLSAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6Ci0gICAgICAgICAgICBlbmNv
ZGVyLT5lbmNvZGVEb3VibGUoc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRl
ck9wZXJhdGlvbio+KGZpbHRlciktPmFtb3VudCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SU5WRVJUOgotICAgICAgICBjYXNlIEZpbHRlck9w
ZXJhdGlvbjo6QlJJR0hUTkVTUzoKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNPTlRS
QVNUOgotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWToKLSAgICAgICAgICAg
IGVuY29kZXItPmVuY29kZURvdWJsZShzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbXBvbmVudFRy
YW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyKS0+YW1vdW50KCkpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOgotICAgICAgICAgICAg
QXJndW1lbnRDb2RlcjxMZW5ndGg+OjplbmNvZGUoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8Y29uc3Qg
Qmx1ckZpbHRlck9wZXJhdGlvbio+KGZpbHRlciktPnN0ZERldmlhdGlvbigpKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6IHsK
LSAgICAgICAgICAgIGNvbnN0IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24qIHNoYWRvdyA9IHN0
YXRpY19jYXN0PGNvbnN0IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIpOwotICAg
ICAgICAgICAgQXJndW1lbnRDb2RlcjxJbnRQb2ludD46OmVuY29kZShlbmNvZGVyLCBzaGFkb3ct
PmxvY2F0aW9uKCkpOwotICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlSW50MzIoc2hhZG93LT5z
dGREZXZpYXRpb24oKSk7Ci0gICAgICAgICAgICBBcmd1bWVudENvZGVyPENvbG9yPjo6ZW5jb2Rl
KGVuY29kZXIsIHNoYWRvdy0+Y29sb3IoKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9
Ci19Ci0KLWJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPjo6ZGVj
b2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYg
ZmlsdGVycykKLXsKLSAgICB1aW50MzJfdCBzaXplOwotICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
VUludDMyKHNpemUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBWZWN0b3I8UmVmUHRy
PEZpbHRlck9wZXJhdGlvbj4gPiYgb3BlcmF0aW9ucyA9IGZpbHRlcnMub3BlcmF0aW9ucygpOwot
Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKLSAgICAgICAgRmlsdGVy
T3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHR5cGU7Ci0gICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVy
YXRpb24+IGZpbHRlcjsKLSAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVFbnVtKHR5cGUpKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHN3aXRjaCAodHlwZSkgewotICAg
ICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFOgotICAgICAgICBjYXNlIEZpbHRl
ck9wZXJhdGlvbjo6U0VQSUE6Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTQVRVUkFU
RToKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6IHsKLSAgICAgICAg
ICAgIGRvdWJsZSB2YWx1ZTsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRG91Ymxl
KHZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBmaWx0
ZXIgPSBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUodmFsdWUsIHR5cGUp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246OklOVkVSVDoKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6
Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDoKLSAgICAgICAgY2FzZSBG
aWx0ZXJPcGVyYXRpb246Ok9QQUNJVFk6IHsKLSAgICAgICAgICAgIGRvdWJsZSB2YWx1ZTsKLSAg
ICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRG91YmxlKHZhbHVlKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBmaWx0ZXIgPSBCYXNpY0NvbXBvbmVudFRy
YW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUodmFsdWUsIHR5cGUpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6IHsK
LSAgICAgICAgICAgIExlbmd0aCBsZW5ndGg7Ci0gICAgICAgICAgICBpZiAoIUFyZ3VtZW50Q29k
ZXI8TGVuZ3RoPjo6ZGVjb2RlKGRlY29kZXIsIGxlbmd0aCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgZmlsdGVyID0gQmx1ckZpbHRlck9wZXJhdGlvbjo6Y3Jl
YXRlKGxlbmd0aCwgdHlwZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6IHsKLSAgICAgICAgICAgIEludFBv
aW50IGxvY2F0aW9uOwotICAgICAgICAgICAgaW50MzJfdCBzdGREZXZpYXRpb247Ci0gICAgICAg
ICAgICBDb2xvciBjb2xvcjsKLSAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2RlcjxJbnRQb2lu
dD46OmRlY29kZShkZWNvZGVyLCBsb2NhdGlvbikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVJbnQzMihzdGREZXZpYXRpb24p
KQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGlmICghQXJndW1l
bnRDb2RlcjxDb2xvcj46OmRlY29kZShkZWNvZGVyLCBjb2xvcikpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgZmlsdGVyID0gRHJvcFNoYWRvd0ZpbHRlck9wZXJh
dGlvbjo6Y3JlYXRlKGxvY2F0aW9uLCBzdGREZXZpYXRpb24sIGNvbG9yLCB0eXBlKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChmaWx0ZXIpCi0gICAgICAgICAgICBvcGVy
YXRpb25zLmFwcGVuZChmaWx0ZXIpOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotI2Vu
ZGlmCi0KLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLXZvaWQgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbj46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29k
ZXIsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuJiB0b2tlbikKLXsKLSNpZiBP
UyhEQVJXSU4pCi0gICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKHRva2VuLmZyb250QnVmZmVySGFu
ZGxlKTsKLSAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIodG9rZW4uYmFja0J1ZmZlckhhbmRsZSk7
Ci0jZW5kaWYKLSNpZiBPUyhMSU5VWCkKLSAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIodG9rZW4u
ZnJvbnRCdWZmZXJIYW5kbGUpOwotI2VuZGlmCi19Ci0KLWJvb2wgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbj46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29k
ZXIsIFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuJiB0b2tlbikKLXsKLSNpZiBPUyhEQVJX
SU4pCi0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIodG9rZW4uZnJvbnRCdWZmZXJIYW5k
bGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50
MzIodG9rZW4uYmFja0J1ZmZlckhhbmRsZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSNlbmRp
ZgotI2lmIE9TKExJTlVYKQotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKHRva2VuLmZy
b250QnVmZmVySGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLSNlbmRpZgotCi0jZW5kaWYKLQogfSAvLyBuYW1lc3BhY2UgQ29yZUlQ
QwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCmluZGV4
IDM0MmM4ZmI3M2Y2YTZlNDQ0MjdhYmI2YzZlM2RjNjRjZGE1ZDE5MzIuLmI0ZGFmZTY3MTQ5NGU0
Mzg3ZjM5YzdlZmJmMGNjNjdhODE3Y2I3MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTY3LDI0ICs2Nyw2IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIH0KICNlbmRpZgogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotbmFtZXNw
YWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEZsb2F0UG9pbnQzRDsKLSAgICBjbGFzcyBUcmFuc2Zv
cm1hdGlvbk1hdHJpeDsKLSAgICBzdHJ1Y3QgTGVuZ3RoOwotCi0jaWYgVVNFKEdSQVBISUNTX1NV
UkZBQ0UpCi0gICAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVRva2VuOwotI2VuZGlmCi19Ci0KLSNp
ZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgRmls
dGVyT3BlcmF0aW9uczsKLX0KLSNlbmRpZgotI2VuZGlmCi0KIG5hbWVzcGFjZSBDb3JlSVBDIHsK
IAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpBZmZpbmVUcmFuc2Zv
cm0+IHsKQEAgLTI1OCwzOCArMjQwLDYgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpLVVJMPiB7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2Rl
ciosIFdlYkNvcmU6OktVUkwmKTsKIH07CiAKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZsb2F0UG9pbnQzRD4g
ewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50M0QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVy
KiwgV2ViQ29yZTo6RmxvYXRQb2ludDNEJik7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1
bWVudENvZGVyPFdlYkNvcmU6Okxlbmd0aD4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1
bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpMZW5ndGgmKTsKLSAgICBzdGF0aWMgYm9vbCBk
ZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6TGVuZ3RoJik7Ci19OwotCi10ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4PiB7
Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6
OlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50
RGVjb2RlciosIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7Ci19OwotCi0jaWYgRU5B
QkxFKENTU19GSUxURVJTKQotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpGaWx0ZXJPcGVyYXRpb25zPiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5j
b2RlciosIGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmKTsKLSAgICBzdGF0aWMgYm9v
bCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYpOwot
fTsKLSNlbmRpZgotCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi10ZW1wbGF0ZTw+IHN0cnVj
dCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuPiB7Ci0gICAgc3Rh
dGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNz
U3VyZmFjZVRva2VuJik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2Rlcios
IFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuJik7Ci19OwotI2VuZGlmCi0jZW5kaWYKLQot
CiB9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCiAKICNlbmRpZiAvLyBXZWJDb3JlQXJndW1lbnRDb2Rl
cnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJL
aXQyL1RhcmdldC5wcmkKaW5kZXggZTM2YzUyOGEzZmE2NmRjOGYwZWYxYjc3MjA4Y2ZhMjlkZDhh
NjM5Zi4uZjcxN2RlNGM2ZmM4M2I3NGU1MGQzMjI3ZTgzM2IzOGViYWUzYTEyOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQu
cHJpCkBAIC0xMzEsNiArMTMxLDggQEAgSEVBREVSUyArPSBcCiAgICAgU2hhcmVkL1dlYlVSTFJl
cXVlc3QuaCBcCiAgICAgU2hhcmVkL1dlYlVSTFJlc3BvbnNlLmggXAogICAgIFNoYXJlZC9XZWJV
c2VyQ29udGVudFVSTFBhdHRlcm4uaCBcCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRBcmd1bWVudENvZGVycy5oIFwKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9XZWJDdXN0b21GaWx0ZXJQcm9ncmFtLmggXAogICAgIFNoYXJlZC9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmggXAogICAgIFNoYXJlZC9QbHVnaW5zL05QUmVtb3Rl
T2JqZWN0TWFwLmggXAogICAgIFNoYXJlZC9QbHVnaW5zL05QSWRlbnRpZmllckRhdGEuaCBcCkBA
IC00ODgsNiArNDkwLDcgQEAgU09VUkNFUyArPSBcCiAgICAgU2hhcmVkL1dlYlVSTFJlcXVlc3Qu
Y3BwIFwKICAgICBTaGFyZWQvV2ViVVJMUmVzcG9uc2UuY3BwIFwKICAgICBTaGFyZWQvV2ViV2hl
ZWxFdmVudC5jcHAgXAorICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
QXJndW1lbnRDb2RlcnMuY3BwIFwKICAgICBTaGFyZWQvcXQvQXJndW1lbnRDb2RlcnNRdC5jcHAg
XAogICAgIFNoYXJlZC9xdC9MYXllclRyZWVDb250ZXh0UXQuY3BwIFwKICAgICBTaGFyZWQvcXQv
U2hhcmVhYmxlQml0bWFwUXQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3Jk
aW5hdG9yUHJveHkuaAppbmRleCBiMWVmNDAxYTQ0NTAyNWIyMmM2N2ZiNmQ1MGU3MDRmODVjYzg5
ZDZjLi4wMmJmOWIyZTQwMGE0OTMzMGZiMWRiYjYzOTliNzk1ZDFmZjc5NDhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVD
b29yZGluYXRvclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oCkBAIC0yMyw2ICsyMyw3IEBA
CiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogCiAjaW5jbHVkZSAiQmFja2luZ1N0b3Jl
LmgiCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRy
YXdpbmdBcmVhUHJveHkuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJTdXJmYWNl
VXBkYXRlSW5mby5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcmkgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnByaQppbmRleCA1MzZiNzc5YmFiYmZlZTc4YThlZGU2Njll
N2JkYWI3YThjOGM1ODY2Li44MGNiMmZiOGU3OTVhMjgwYzQ5NzllYjJmOWFmYjM0YTM1Zjk0ZmM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnByaQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnByaQpAQCAtMTYsNiArMTYsNyBAQCBJTkNMVURFUEFUSCArPSBcCiAgICAg
JCRTT1VSQ0VfRElSL1BsYXRmb3JtL3F0IFwKICAgICAkJFNPVVJDRV9ESVIvU2hhcmVkIFwKICAg
ICAkJFNPVVJDRV9ESVIvU2hhcmVkL0FQSS9jIFwKKyAgICAkJFNPVVJDRV9ESVIvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MgXAogICAgICQkU09VUkNFX0RJUi9TaGFyZWQvQ29yZUlQQ1N1cHBv
cnQgXAogICAgICQkU09VUkNFX0RJUi9TaGFyZWQvUGx1Z2lucyBcCiAgICAgJCRTT1VSQ0VfRElS
L1NoYXJlZC9QbHVnaW5zL05ldHNjYXBlIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9y
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcAppbmRleCA0MTZjZjAwZTAyM2NjYjFjZTQ3MGQz
OTc3M2YxMzU5ZTA3ODY4YmU4Li5kYmIzM2U1OWUxOWE4NzZlNzM4OWMxZWVmMzE5NWRmYjJkMGE3
NWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRp
bmF0b3IuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQogI2luY2x1ZGUgIkxheWVyVHJlZUNvb3JkaW5hdG9yLmgiCiAKKyNpbmNsdWRlICJDb29yZGlu
YXRlZEFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbXBsLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168595</attachid>
            <date>2012-10-14 15:44:09 -0700</date>
            <delta_ts>2012-10-14 21:08:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98733-20121015074254.patch</filename>
            <type>text/plain</type>
            <size>47830</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI3MThjM2VjMDViM2M4
YjI4ZGQ5YjBkMjczYTg0OWQ5YTA3YWEwMS4uMDkwZDA4YWM1MjUwMjg4Y2YyMGUwNWY3MTliZGQy
ZmM5YmVlMGJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIwIEBACiAyMDEyLTEwLTEyICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIFtXSzJdIEFk
ZCBDdXN0b21GaWx0ZXJPcGVyYXRpb24gc2VyaWFsaXphdGlvbiBpbiBBcmd1bWVudENvZGVyLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg3MzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uOjpwYXJhbWV0ZXJzKCkgdG8gY29uc3QgZnVuY3Rpb24sIGJlY2F1
c2UKKyAgICAgICAgdGhpcyBtZXRob2QgaXMgYSBnZXR0ZXIgYW5kIGEgY29uc3QgaW5zdGFuY2Ug
bmVlZHMgdG8gY2FsbCB0aGlzIG1ldGhvZC4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVz
ZSB0aGVyZSBpcyBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpwYXJhbWV0ZXJzKToKKworMjAxMi0xMC0xMiAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKwogICAgICAgICBbQ1NTIFNo
YWRlcnNdIEltcGxlbWVudCBvdmVybGF5LCBjb2xvci1kb2RnZSwgY29sb3ItYnVybiwgaGFyZC1s
aWdodCwgc29mdC1saWdodCBibGVuZCBtb2Rlcy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NTA0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlNDU0M2I3NDhjNDkw
N2MxNmFlNjhiNDQwOWM4NTZhNzhkMTE3OTI4Li5lNGY0ZmYyNzhmOTc3OGEwYWVkMzE5MmU0YjQ0
NTQ2YTdiMmE5NGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTItMTAtMTIgIEh1
YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgW1dLMl0g
QWRkIEN1c3RvbUZpbHRlck9wZXJhdGlvbiBzZXJpYWxpemF0aW9uIGluIEFyZ3VtZW50Q29kZXIu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODczMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBcmd1
bWVudENvZGVycyBmb3IgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uIGFuZCBhbGwgZGVwZW5kZW50IGNs
YXNzZXMuCisgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzIHdpbGwgdXNlIHRoaXMgY3NzIHNo
YWRlcnMgc2VyaWFsaXphdGlvbiB3aGVuIGl0IGVuYWJsZXMgQ1NTCisgICAgICAgIFNoYWRlcnMu
CisgICAgICAgIEluIEFkZGl0aW9uLCBhZGQgQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29k
ZXJzIGludG8gd2hpY2ggYWxsIEFyZ3VtZW50Q29kZXJzIGZvcgorICAgICAgICBDb29yZGluYXRl
ZCBHcmFwaGljcyBhcmUgbW92ZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb2RlIHBhdGgg
aXMgbm90IGFjdGl2YXRlZCB5ZXQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1l
bnRDb2RlcnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAoQ29yZUlQ
Qzo6OjplbmNvZGUpOgorICAgICAgICAoQ29yZUlQQzo6OjpkZWNvZGUpOgorICAgICAgICAqIFNo
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVy
cy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ29yZUlQQyk6CisgICAg
ICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbS5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDdXN0b21GaWx0ZXJQcm9n
cmFtKToKKyAgICAgICAgICAgIFdlYkN1c3RvbUZpbHRlclByb2dyYW0gaXMgbWFkZSBmcm9tIHNl
cmlhbGl6ZWQgZGF0YSBvZgorICAgICAgICAgICAgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtIGlu
IFVJIFByb2Nlc3MuIFVJIFByb2Nlc3MgdXNlcyB0aGlzIGNsYXNzCisgICAgICAgICAgICBpbnN0
ZWFkIG9mIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSBiZWNhdXNlIFVJIFByb2Nlc3MgY2FuIG5v
dCBnZXQgYQorICAgICAgICAgICAgY3VzdG9tIGZpbHRlciBwcm9ncmFtIHZpYSBuZXR3b3JrLgor
ICAgICAgICAoV2ViS2l0OjpXZWJDdXN0b21GaWx0ZXJQcm9ncmFtOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDdXN0b21GaWx0ZXJQcm9ncmFtOjpXZWJDdXN0b21GaWx0ZXJQcm9ncmFt
KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5jcHA6CisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oOgorICAg
ICAgICAqIFdlYktpdDIucHJpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcDoKKwogMjAxMi0xMC0xNCAgU2Ft
IFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1ha2UgVXNlclNjcmlwdCBhbmQg
VXNlclN0eWxlU2hlZXQgdmFsdWUgb2JqZWN0cyB0aGF0IGFyZSBjb3B5YWJsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJP
cGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggNzg4YjNmMDE2MjZiM2Y0YWYwNTIwZGQ4YzZmMjVh
ZjQ0YTI1NDBhMy4uMGQ2NGQyMzY4Mjc3ODY0NTNkM2VhYzdhNDZkNzA1ZTk0NGYyMTNlNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtKiBwcm9ncmFtKCkgY29uc3QgeyByZXR1cm4g
bV9wcm9ncmFtLmdldCgpOyB9CiAgICAgCi0gICAgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVy
TGlzdCYgcGFyYW1ldGVycygpIHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQorICAgIGNvbnN0IEN1
c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3Bh
cmFtZXRlcnM7IH0KICAgICAKICAgICB1bnNpZ25lZCBtZXNoUm93cygpIGNvbnN0IHsgcmV0dXJu
IG1fbWVzaFJvd3M7IH0KICAgICB1bnNpZ25lZCBtZXNoQ29sdW1ucygpIGNvbnN0IHsgcmV0dXJu
IG1fbWVzaENvbHVtbnM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggMjBlN2QzNGRjODY1ODE3
NTM2ZWMwYTE3ZTdhMjk0Mzc1NzU0ZjI3OC4uOGRjNmQyM2RhMmFlMjY1MmYzODkyM2Q5MzQ4MDY3
MWI4N2U1NTI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTYsNiArNiw3IEBAIFNFVChXZWJL
aXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkIgogICAg
ICIke1dFQktJVDJfRElSfS9TaGFyZWQvQVBJIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQv
QVBJL2MiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzIgog
ICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1NoYXJlZC9QbHVnaW5zIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvUGx1Z2lu
cy9OZXRzY2FwZSIKQEAgLTIxMyw2ICsyMTQsOCBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAg
U2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCiAgICAgU2hhcmVkL0FQSS9jL1dLVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmNwcAogCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcAorCiAgICAgU2hhcmVkL1BsdWdpbnMv
TlBJZGVudGlmaWVyRGF0YS5jcHAKICAgICBTaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VS
ZWNlaXZlci5jcHAKICAgICBTaGFyZWQvUGx1Z2lucy9OUE9iamVjdFByb3h5LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjhiM2JlYWVhYjZiMWRkYTA1NjkwM2QwYjk1ZTVmYjhjNDM4NGYyZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKQEAgLTAsMCArMSw1MzQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1Mp
CisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmgiCisKKyNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FuaW1hdGlv
bi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0
UG9pbnQzRC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9pbnQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0xlbmd0aC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXguaD4K
KworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbHRlck9wZXJh
dGlvbnMuaD4KKyNlbmRpZgorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorI2luY2x1ZGUgIldl
YkN1c3RvbUZpbHRlclByb2dyYW0uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0N1c3RvbUZpbHRlckFy
cmF5UGFyYW1ldGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DdXN0b21GaWx0ZXJOdW1iZXJQYXJh
bWV0ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
Q3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JZGVu
dGl0eVRyYW5zZm9ybU9wZXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWF0cml4M0RUcmFu
c2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01hdHJpeFRyYW5zZm9ybU9wZXJh
dGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24u
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RyYW5zbGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbi5oPgorI2VuZGlmCisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
KyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzU3VyZmFjZS5oPgorI2VuZGlmCisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIENv
cmVJUEMgeworCit2b2lkIEFyZ3VtZW50Q29kZXI8RmxvYXRQb2ludDNEPjo6ZW5jb2RlKEFyZ3Vt
ZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgRmxvYXRQb2ludDNEJiBmbG9hdFBvaW50M0QpCit7
CisgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxGbG9hdFBvaW50M0Q+OjplbmNvZGUoZW5jb2Rlciwg
ZmxvYXRQb2ludDNEKTsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPEZsb2F0UG9pbnQzRD46OmRl
Y29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIEZsb2F0UG9pbnQzRCYgZmxvYXRQb2ludDNE
KQoreworICAgIHJldHVybiBTaW1wbGVBcmd1bWVudENvZGVyPEZsb2F0UG9pbnQzRD46OmRlY29k
ZShkZWNvZGVyLCBmbG9hdFBvaW50M0QpOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8TGVuZ3Ro
Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgTGVuZ3RoJiBsZW5ndGgp
Cit7CisgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxMZW5ndGg+OjplbmNvZGUoZW5jb2RlciwgbGVu
Z3RoKTsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPExlbmd0aD46OmRlY29kZShBcmd1bWVudERl
Y29kZXIqIGRlY29kZXIsIExlbmd0aCYgbGVuZ3RoKQoreworICAgIHJldHVybiBTaW1wbGVBcmd1
bWVudENvZGVyPExlbmd0aD46OmRlY29kZShkZWNvZGVyLCBsZW5ndGgpOworfQorCit2b2lkIEFy
Z3VtZW50Q29kZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVy
KiBlbmNvZGVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtYXRpb25NYXRy
aXgpCit7CisgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmVu
Y29kZShlbmNvZGVyLCB0cmFuc2Zvcm1hdGlvbk1hdHJpeCk7Cit9CisKK2Jvb2wgQXJndW1lbnRD
b2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29k
ZXIsIFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1hdGlvbk1hdHJpeCkKK3sKKyAgICBy
ZXR1cm4gU2ltcGxlQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShk
ZWNvZGVyLCB0cmFuc2Zvcm1hdGlvbk1hdHJpeCk7Cit9CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRF
UlMpCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz46OmVuY29k
ZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlv
bnMmIGZpbHRlcnMpCit7CisgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKGZpbHRlcnMuc2l6ZSgp
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbHRlcnMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmaWx0ZXIgPSBmaWx0ZXJzLmF0KGkpOworICAg
ICAgICBGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHlwZSA9IGZpbHRlci0+Z2V0T3Bl
cmF0aW9uVHlwZSgpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGVFbnVtKHR5cGUpOworICAgICAg
ICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FM
RToKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOgorICAgICAgICBjYXNlIEZp
bHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpI
VUVfUk9UQVRFOgorICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlRG91YmxlKHN0YXRpY19jYXN0
PGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIpLT5hbW91bnQo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklO
VkVSVDoKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6CisgICAgICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDoKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246Ok9QQUNJVFk6CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVEb3VibGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbio+KGZpbHRl
ciktPmFtb3VudCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZpbHRlck9w
ZXJhdGlvbjo6QkxVUjoKKyAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZW5jb2Rl
KGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIp
LT5zdGREZXZpYXRpb24oKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOiB7CisgICAgICAgICAgICBjb25zdCBEcm9wU2hhZG93
RmlsdGVyT3BlcmF0aW9uKiBzaGFkb3cgPSBzdGF0aWNfY2FzdDxjb25zdCBEcm9wU2hhZG93Rmls
dGVyT3BlcmF0aW9uKj4oZmlsdGVyKTsKKyAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8SW50UG9p
bnQ+OjplbmNvZGUoZW5jb2Rlciwgc2hhZG93LT5sb2NhdGlvbigpKTsKKyAgICAgICAgICAgIGVu
Y29kZXItPmVuY29kZUludDMyKHNoYWRvdy0+c3RkRGV2aWF0aW9uKCkpOworICAgICAgICAgICAg
QXJndW1lbnRDb2RlcjxDb2xvcj46OmVuY29kZShlbmNvZGVyLCBzaGFkb3ctPmNvbG9yKCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisg
ICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDVVNUT006IHsKKyAgICAgICAgICAgIGNvbnN0
IEN1c3RvbUZpbHRlck9wZXJhdGlvbiogY3VzdG9tT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8Y29u
c3QgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyKTsKKworICAgICAgICAgICAgQVNTRVJU
KGN1c3RvbU9wZXJhdGlvbi0+cHJvZ3JhbSgpKTsKKyAgICAgICAgICAgIFJlZlB0cjxDdXN0b21G
aWx0ZXJQcm9ncmFtPiBwcm9ncmFtID0gY3VzdG9tT3BlcmF0aW9uLT5wcm9ncmFtKCk7CisgICAg
ICAgICAgICBBU1NFUlQocHJvZ3JhbS0+aXNMb2FkZWQoKSk7CisgICAgICAgICAgICBDdXN0b21G
aWx0ZXJQcm9ncmFtSW5mbyBwcm9ncmFtSW5mbyA9IHByb2dyYW0tPnByb2dyYW1JbmZvKCk7Cisg
ICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUocHJvZ3JhbUluZm8udmVydGV4U2hhZGVyU3RyaW5n
KCkpOworICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHByb2dyYW1JbmZvLmZyYWdtZW50U2hh
ZGVyU3RyaW5nKCkpOworICAgICAgICAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdz
IG1peFNldHRpbmdzID0gcHJvZ3JhbUluZm8ubWl4U2V0dGluZ3MoKTsKKyAgICAgICAgICAgIGVu
Y29kZXItPmVuY29kZShtaXhTZXR0aW5ncy5lbmFibGVkKTsKKyAgICAgICAgICAgIGVuY29kZXIt
PmVuY29kZUVudW0obWl4U2V0dGluZ3MuYmxlbmRNb2RlKTsKKyAgICAgICAgICAgIGVuY29kZXIt
PmVuY29kZUVudW0obWl4U2V0dGluZ3MuY29tcG9zaXRlT3BlcmF0b3IpOworCisgICAgICAgICAg
ICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0IHBhcmFtZXRlcnMgPSBjdXN0b21PcGVyYXRpb24t
PnBhcmFtZXRlcnMoKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZVVJbnQzMihwYXJhbWV0
ZXJzLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRl
cnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUocGFyYW1l
dGVyc1tpXS0+bmFtZSgpKTsKKyAgICAgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVFbnVtKHBh
cmFtZXRlcnNbaV0tPnBhcmFtZXRlclR5cGUoKSk7CisKKyAgICAgICAgICAgICAgICBzd2l0Y2gg
KHBhcmFtZXRlcnNbaV0tPnBhcmFtZXRlclR5cGUoKSkgeworICAgICAgICAgICAgICAgIGNhc2Ug
Q3VzdG9tRmlsdGVyUGFyYW1ldGVyOjpBUlJBWTogeworICAgICAgICAgICAgICAgICAgICBDdXN0
b21GaWx0ZXJBcnJheVBhcmFtZXRlciogYXJyYXlQYXJhbWV0ZXIgPSBzdGF0aWNfY2FzdDxDdXN0
b21GaWx0ZXJBcnJheVBhcmFtZXRlcio+KHBhcmFtZXRlcnNbaV0uZ2V0KCkpOworICAgICAgICAg
ICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIoYXJyYXlQYXJhbWV0ZXItPnNpemUoKSk7
CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgYXJyYXlQYXJhbWV0
ZXItPnNpemUoKTsgKytqKQorICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2Rl
KGFycmF5UGFyYW1ldGVyLT52YWx1ZUF0KGopKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmlsdGVyUGFy
YW1ldGVyOjpOVU1CRVI6IHsKKyAgICAgICAgICAgICAgICAgICAgQ3VzdG9tRmlsdGVyTnVtYmVy
UGFyYW1ldGVyKiBudWJtZXJQYXJhbWV0ZXIgPSBzdGF0aWNfY2FzdDxDdXN0b21GaWx0ZXJOdW1i
ZXJQYXJhbWV0ZXIqPihwYXJhbWV0ZXJzW2ldLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ZW5jb2Rlci0+ZW5jb2RlVUludDMyKG51Ym1lclBhcmFtZXRlci0+c2l6ZSgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBudWJtZXJQYXJhbWV0ZXItPnNpemUo
KTsgKytqKQorICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKG51Ym1lclBh
cmFtZXRlci0+dmFsdWVBdChqKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEN1c3RvbUZpbHRlclBhcmFtZXRlcjo6
VFJBTlNGT1JNOiB7CisgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpbHRlclRyYW5zZm9ybVBh
cmFtZXRlciogdHJhbnNmb3JtUGFyYW1ldGVyID0gc3RhdGljX2Nhc3Q8Q3VzdG9tRmlsdGVyVHJh
bnNmb3JtUGFyYW1ldGVyKj4ocGFyYW1ldGVyc1tpXS5nZXQoKSk7CisgICAgICAgICAgICAgICAg
ICAgIEFyZ3VtZW50Q29kZXI8VHJhbnNmb3JtT3BlcmF0aW9ucz46OmVuY29kZShlbmNvZGVyLCB0
cmFuc2Zvcm1QYXJhbWV0ZXItPm9wZXJhdGlvbnMoKSk7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShjdXN0b21PcGVyYXRpb24tPm1lc2hSb3dz
KCkpOworICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKGN1c3RvbU9wZXJhdGlvbi0+bWVzaENv
bHVtbnMoKSk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVFbnVtKGN1c3RvbU9wZXJhdGlv
bi0+bWVzaEJveFR5cGUoKSk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVFbnVtKGN1c3Rv
bU9wZXJhdGlvbi0+bWVzaFR5cGUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
I2VuZGlmCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgIH0KK30KKworYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+
OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRp
b25zJiBmaWx0ZXJzKQoreworICAgIHVpbnQzMl90IHNpemU7CisgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGVVSW50MzIoc2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFZlY3RvcjxS
ZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiA+JiBvcGVyYXRpb25zID0gZmlsdGVycy5vcGVyYXRpb25z
KCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBG
aWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHlwZTsKKyAgICAgICAgUmVmUHRyPEZpbHRl
ck9wZXJhdGlvbj4gZmlsdGVyOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0odHlw
ZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7
CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6CisgICAgICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpTRVBJQToKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNB
VFVSQVRFOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURTogeworICAg
ICAgICAgICAgZG91YmxlIHZhbHVlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVE
b3VibGUodmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IGZpbHRlciA9IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSh2YWx1ZSwg
dHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRl
ck9wZXJhdGlvbjo6SU5WRVJUOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJR0hU
TkVTUzoKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNPTlRSQVNUOgorICAgICAgICBj
YXNlIEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWTogeworICAgICAgICAgICAgZG91YmxlIHZhbHVl
OworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVEb3VibGUodmFsdWUpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGZpbHRlciA9IEJhc2ljQ29tcG9u
ZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSh2YWx1ZSwgdHlwZSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxV
UjogeworICAgICAgICAgICAgTGVuZ3RoIGxlbmd0aDsKKyAgICAgICAgICAgIGlmICghQXJndW1l
bnRDb2RlcjxMZW5ndGg+OjpkZWNvZGUoZGVjb2RlciwgbGVuZ3RoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBmaWx0ZXIgPSBCbHVyRmlsdGVyT3BlcmF0aW9u
OjpjcmVhdGUobGVuZ3RoLCB0eXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzogeworICAgICAgICAgICAg
SW50UG9pbnQgbG9jYXRpb247CisgICAgICAgICAgICBpbnQzMl90IHN0ZERldmlhdGlvbjsKKyAg
ICAgICAgICAgIENvbG9yIGNvbG9yOworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVyPElu
dFBvaW50Pjo6ZGVjb2RlKGRlY29kZXIsIGxvY2F0aW9uKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUludDMyKHN0ZERldmlh
dGlvbikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFB
cmd1bWVudENvZGVyPENvbG9yPjo6ZGVjb2RlKGRlY29kZXIsIGNvbG9yKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBmaWx0ZXIgPSBEcm9wU2hhZG93RmlsdGVy
T3BlcmF0aW9uOjpjcmVhdGUobG9jYXRpb24sIHN0ZERldmlhdGlvbiwgY29sb3IsIHR5cGUpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisg
ICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDVVNUT006IHsKKyAgICAgICAgICAgIFN0cmlu
ZyB2ZXJ0ZXhTaGFkZXJTdHJpbmc7CisgICAgICAgICAgICBTdHJpbmcgZnJhZ21lbnRTaGFkZXJT
dHJpbmc7CisgICAgICAgICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MgbWl4U2V0
dGluZ3M7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh2ZXJ0ZXhTaGFkZXJTdHJp
bmcpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlKGZyYWdtZW50U2hhZGVyU3RyaW5nKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShtaXhTZXR0aW5ncy5l
bmFibGVkKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAo
IWRlY29kZXItPmRlY29kZUVudW0obWl4U2V0dGluZ3MuYmxlbmRNb2RlKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0o
bWl4U2V0dGluZ3MuY29tcG9zaXRlT3BlcmF0b3IpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJQcm9ncmFtPiBwcm9ncmFtID0g
V2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbTo6Y3JlYXRlKHZlcnRleFNoYWRlclN0cmluZywgZnJhZ21l
bnRTaGFkZXJTdHJpbmcsIG1peFNldHRpbmdzKTsKKworICAgICAgICAgICAgdWludDMyX3QgcGFy
YW1ldGVyc1NpemU7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJbnQzMihwYXJh
bWV0ZXJzU2l6ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAg
ICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0IHBhcmFtZXRlcnMocGFyYW1ldGVyc1NpemUpOwor
ICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzU2l6ZTsgKytpKSB7
CisgICAgICAgICAgICAgICAgU3RyaW5nIG5hbWU7CisgICAgICAgICAgICAgICAgQ3VzdG9tRmls
dGVyUGFyYW1ldGVyOjpQYXJhbWV0ZXJUeXBlIHBhcmFtZXRlclR5cGU7CisgICAgICAgICAgICAg
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUobmFtZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0ocGFyYW1l
dGVyVHlwZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAg
ICAgICAgIHN3aXRjaCAocGFyYW1ldGVyVHlwZSkgeworICAgICAgICAgICAgICAgIGNhc2UgQ3Vz
dG9tRmlsdGVyUGFyYW1ldGVyOjpBUlJBWTogeworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8
Q3VzdG9tRmlsdGVyQXJyYXlQYXJhbWV0ZXI+IGFycmF5UGFyYW1ldGVyID0gQ3VzdG9tRmlsdGVy
QXJyYXlQYXJhbWV0ZXI6OmNyZWF0ZShuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1l
dGVycy5hcHBlbmQoYXJyYXlQYXJhbWV0ZXIpOworICAgICAgICAgICAgICAgICAgICB1aW50MzJf
dCBhcnJheVBhcmFtZXRlclNpemU7CisgICAgICAgICAgICAgICAgICAgIGlmICghZGVjb2Rlci0+
ZGVjb2RlVUludDMyKGFycmF5UGFyYW1ldGVyU2l6ZSkpCisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBhcnJheVBhcmFtZXRl
clZhbHVlOworICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGFycmF5
UGFyYW1ldGVyU2l6ZTsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShhcnJheVBhcmFtZXRlclZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBhcnJheVBhcmFtZXRl
ci0+YWRkVmFsdWUoYXJyYXlQYXJhbWV0ZXJWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIGNhc2UgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyOjpOVU1CRVI6IHsKKyAgICAgICAgICAg
ICAgICAgICAgUmVmUHRyPEN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlcj4gbnVtYmVyUGFyYW1l
dGVyID0gQ3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyOjpjcmVhdGUobmFtZSk7CisgICAgICAg
ICAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKG51bWJlclBhcmFtZXRlcik7CisgICAgICAg
ICAgICAgICAgICAgIHVpbnQzMl90IG51bWJlclBhcmFtZXRlclNpemU7CisgICAgICAgICAgICAg
ICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKG51bWJlclBhcmFtZXRlclNpemUpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAg
ICBkb3VibGUgbnVtYmVyUGFyYW1ldGVyVmFsdWU7CisgICAgICAgICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGogPSAwOyBqIDwgbnVtYmVyUGFyYW1ldGVyU2l6ZTsgKytqKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShudW1iZXJQYXJhbWV0ZXJWYWx1ZSkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
ICAgICAgICAgICAgbnVtYmVyUGFyYW1ldGVyLT5hZGRWYWx1ZShudW1iZXJQYXJhbWV0ZXJWYWx1
ZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmlsdGVyUGFyYW1l
dGVyOjpUUkFOU0ZPUk06IHsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEN1c3RvbUZpbHRl
clRyYW5zZm9ybVBhcmFtZXRlcj4gdHJhbnNmb3JtUGFyYW1ldGVyID0gQ3VzdG9tRmlsdGVyVHJh
bnNmb3JtUGFyYW1ldGVyOjpjcmVhdGUobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHBhcmFt
ZXRlcnMuYXBwZW5kKHRyYW5zZm9ybVBhcmFtZXRlcik7CisgICAgICAgICAgICAgICAgICAgIFRy
YW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFB
cmd1bWVudENvZGVyPFRyYW5zZm9ybU9wZXJhdGlvbnM+OjpkZWNvZGUoZGVjb2Rlciwgb3BlcmF0
aW9ucykpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgICAgICAgIHRyYW5zZm9ybVBhcmFtZXRlci0+c2V0T3BlcmF0aW9ucyhvcGVyYXRpb25zKTsK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdW5zaWduZWQgbWVzaFJvd3M7
CisgICAgICAgICAgICB1bnNpZ25lZCBtZXNoQ29sdW1uczsKKyAgICAgICAgICAgIEN1c3RvbUZp
bHRlck9wZXJhdGlvbjo6TWVzaEJveFR5cGUgbWVzaEJveFR5cGU7CisgICAgICAgICAgICBDdXN0
b21GaWx0ZXJPcGVyYXRpb246Ok1lc2hUeXBlIG1lc2hUeXBlOworICAgICAgICAgICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGUobWVzaFJvd3MpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG1lc2hDb2x1bW5zKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVu
dW0obWVzaEJveFR5cGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShtZXNoVHlwZSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBmaWx0ZXIgPSBDdXN0b21GaWx0ZXJPcGVyYXRp
b246OmNyZWF0ZShwcm9ncmFtLCBwYXJhbWV0ZXJzLCBtZXNoUm93cywgbWVzaENvbHVtbnMsIG1l
c2hCb3hUeXBlLCBtZXNoVHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorI2Vu
ZGlmCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisg
ICAgICAgIGlmIChmaWx0ZXIpCisgICAgICAgICAgICBvcGVyYXRpb25zLmFwcGVuZChmaWx0ZXIp
OworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoQ1NT
X1NIQURFUlMpCit2b2lkIEFyZ3VtZW50Q29kZXI8VHJhbnNmb3JtT3BlcmF0aW9ucz46OmVuY29k
ZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHRy
YW5zZm9ybU9wZXJhdGlvbnMpCit7CisgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKHRyYW5zZm9y
bU9wZXJhdGlvbnMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRyYW5zZm9y
bU9wZXJhdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgVHJhbnNmb3JtT3BlcmF0
aW9uKiBvcGVyYXRpb24gPSB0cmFuc2Zvcm1PcGVyYXRpb25zLmF0KGkpOworICAgICAgICBlbmNv
ZGVyLT5lbmNvZGVFbnVtKG9wZXJhdGlvbi0+Z2V0T3BlcmF0aW9uVHlwZSgpKTsKKworICAgICAg
ICBzd2l0Y2ggKG9wZXJhdGlvbi0+Z2V0T3BlcmF0aW9uVHlwZSgpKSB7CisgICAgICAgIGNhc2Ug
VHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9YOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6U0NBTEVfWToKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFOgor
ICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWjoKKyAgICAgICAgY2FzZSBU
cmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFXzNEOgorICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2Rl
KHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+
eCgpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxjb25zdCBTY2Fs
ZVRyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPnkoKSk7CisgICAgICAgICAgICBlbmNv
ZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPihv
cGVyYXRpb24pLT56KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHJhbnNm
b3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWDoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246OlRSQU5TTEFURV9ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNM
QVRFOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1o6CisgICAg
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfM0Q6CisgICAgICAgICAgICBB
cmd1bWVudENvZGVyPExlbmd0aD46OmVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxjb25zdCBU
cmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT54KCkpOworICAgICAgICAg
ICAgQXJndW1lbnRDb2RlcjxMZW5ndGg+OjplbmNvZGUoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8Y29u
c3QgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+eSgpKTsKKyAgICAg
ICAgICAgIEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZW5jb2RlKGVuY29kZXIsIHN0YXRpY19jYXN0
PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPnooKSk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFU
RToKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9YOgorICAgICAgICBj
YXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1k6CisgICAgICAgIGNhc2UgVHJhbnNmb3Jt
T3BlcmF0aW9uOjpST1RBVEVfM0Q6CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+eCgpKTsK
KyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxjb25zdCBSb3RhdGVUcmFu
c2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT55KCkpOworICAgICAgICAgICAgZW5jb2Rlci0+
ZW5jb2RlKHN0YXRpY19jYXN0PGNvbnN0IFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJh
dGlvbiktPnooKSk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8Y29u
c3QgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+YW5nbGUoKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVdfWDoK
KyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVdfWToKKyAgICAgICAgY2FzZSBU
cmFuc2Zvcm1PcGVyYXRpb246OlNLRVc6CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUoc3Rh
dGljX2Nhc3Q8Y29uc3QgU2tld1RyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPmFuZ2xl
WCgpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxjb25zdCBTa2V3
VHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+YW5nbGVZKCkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVg6CisgICAgICAg
ICAgICBBcmd1bWVudENvZGVyPFRyYW5zZm9ybWF0aW9uTWF0cml4Pjo6ZW5jb2RlKGVuY29kZXIs
IHN0YXRpY19jYXN0PGNvbnN0IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbikt
Pm1hdHJpeCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyYW5zZm9ybU9w
ZXJhdGlvbjo6TUFUUklYXzNEOgorICAgICAgICAgICAgQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1h
dGlvbk1hdHJpeD46OmVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxjb25zdCBNYXRyaXgzRFRy
YW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPm1hdHJpeCgpKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6UEVSU1BFQ1RJVkU6CisgICAg
ICAgICAgICBBcmd1bWVudENvZGVyPExlbmd0aD46OmVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2Fz
dDxjb25zdCBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPnBlcnNw
ZWN0aXZlKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpJREVOVElUWToKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6Tk9ORToKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgQXJndW1lbnRD
b2RlcjxUcmFuc2Zvcm1PcGVyYXRpb25zPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2Rl
ciwgVHJhbnNmb3JtT3BlcmF0aW9ucyYgdHJhbnNmb3JtT3BlcmF0aW9ucykKK3sKKyAgICB1aW50
MzJfdCBvcGVyYXRpb25zU2l6ZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJbnQzMihvcGVy
YXRpb25zU2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgb3BlcmF0aW9uc1NpemU7ICsraSkgeworICAgICAgICBUcmFuc2Zvcm1PcGVyYXRp
b246Ok9wZXJhdGlvblR5cGUgb3BlcmF0aW9uVHlwZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGVFbnVtKG9wZXJhdGlvblR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIHN3aXRjaCAob3BlcmF0aW9uVHlwZSkgeworICAgICAgICBjYXNlIFRyYW5zZm9ybU9w
ZXJhdGlvbjo6U0NBTEVfWDoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxF
X1k6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRToKKyAgICAgICAgY2Fz
ZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1o6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpTQ0FMRV8zRDogeworICAgICAgICAgICAgZG91YmxlIHgsIHksIHo7CisgICAgICAg
ICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh4KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh5KSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh6KSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB0cmFuc2Zvcm1PcGVyYXRp
b25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSh4
LCB5LCB6LCBvcGVyYXRpb25UeXBlKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1g6CisgICAgICAgIGNh
c2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWToKKyAgICAgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OlRSQU5TTEFURToKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlRSQU5TTEFURV9aOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRF
XzNEOiB7CisgICAgICAgICAgICBMZW5ndGggeCwgeSwgejsKKyAgICAgICAgICAgIGlmICghQXJn
dW1lbnRDb2RlcjxMZW5ndGg+OjpkZWNvZGUoZGVjb2RlciwgeCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVyPExlbmd0aD46OmRl
Y29kZShkZWNvZGVyLCB5KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZGVjb2RlKGRlY29kZXIsIHopKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlv
bnMub3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0
ZSh4LCB5LCB6LCBvcGVyYXRpb25UeXBlKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFOgorICAgICAgICBjYXNl
IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1g6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpST1RBVEVfWToKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFU
RV8zRDogeworICAgICAgICAgICAgZG91YmxlIHgsIHksIHosIGFuZ2xlOworICAgICAgICAgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGUoeCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoeSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoeikpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
YW5nbGUpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5z
Zm9ybU9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChSb3RhdGVUcmFuc2Zvcm1PcGVyYXRp
b246OmNyZWF0ZSh4LCB5LCB6LCBhbmdsZSwgb3BlcmF0aW9uVHlwZSkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVdf
WDoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVdfWToKKyAgICAgICAgY2Fz
ZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNLRVc6IHsKKyAgICAgICAgICAgIGRvdWJsZSBhbmdsZVgs
IGFuZ2xlWTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGFuZ2xlWCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNv
ZGUoYW5nbGVZKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB0
cmFuc2Zvcm1PcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoU2tld1RyYW5zZm9ybU9wZXJh
dGlvbjo6Y3JlYXRlKGFuZ2xlWCwgYW5nbGVZLCBvcGVyYXRpb25UeXBlKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6TUFU
UklYOiB7CisgICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXg7CisgICAgICAg
ICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+OjpkZWNvZGUoZGVj
b2RlciwgbWF0cml4KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICB0cmFuc2Zvcm1PcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoTWF0cml4VHJhbnNmb3Jt
T3BlcmF0aW9uOjpjcmVhdGUobWF0cml4KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6TUFUUklYXzNEOiB7CisgICAgICAg
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXg7CisgICAgICAgICAgICBpZiAoIUFyZ3Vt
ZW50Q29kZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+OjpkZWNvZGUoZGVjb2RlciwgbWF0cml4KSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB0cmFuc2Zvcm1PcGVy
YXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb246OmNy
ZWF0ZShtYXRyaXgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNh
c2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpQRVJTUEVDVElWRTogeworICAgICAgICAgICAgTGVuZ3Ro
IHBlcnNwZWN0aXZlOworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVyPExlbmd0aD46OmRl
Y29kZShkZWNvZGVyLCBwZXJzcGVjdGl2ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFBl
cnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUocGVyc3BlY3RpdmUpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpJREVOVElUWToKKyAgICAgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMub3BlcmF0aW9ucygp
LmFwcGVuZChJZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKCkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpOT05FOgorICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgorCisjaWYgVVNFKEdSQVBISUNT
X1NVUkZBQ0UpCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9r
ZW4+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpHcmFw
aGljc1N1cmZhY2VUb2tlbiYgdG9rZW4pCit7CisjaWYgT1MoREFSV0lOKQorICAgIGVuY29kZXIt
PmVuY29kZVVJbnQzMih0b2tlbi5mcm9udEJ1ZmZlckhhbmRsZSk7CisgICAgZW5jb2Rlci0+ZW5j
b2RlVUludDMyKHRva2VuLmJhY2tCdWZmZXJIYW5kbGUpOworI2VuZGlmCisjaWYgT1MoTElOVVgp
CisgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKHRva2VuLmZyb250QnVmZmVySGFuZGxlKTsKKyNl
bmRpZgorfQorCitib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9r
ZW4+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJDb3JlOjpHcmFwaGljc1N1
cmZhY2VUb2tlbiYgdG9rZW4pCit7CisjaWYgT1MoREFSV0lOKQorICAgIGlmICghZGVjb2Rlci0+
ZGVjb2RlVUludDMyKHRva2VuLmZyb250QnVmZmVySGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKHRva2VuLmJhY2tCdWZmZXJIYW5k
bGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyNpZiBPUyhMSU5VWCkKKyAgICBp
ZiAoIWRlY29kZXItPmRlY29kZVVJbnQzMih0b2tlbi5mcm9udEJ1ZmZlckhhbmRsZSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisK
K30gLy8gbmFtZXNwYWNlIENvcmVJUEMKKyNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVy
cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg3YjRjNWZlNzUyOWM1N2JlY2VmYTYyMWQ4YjkxMWExNjFlMjE0ODIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaApAQCAtMCwwICsxLDkzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCwg
SW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIENvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVy
c19oCisjZGVmaW5lIENvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVyc19oCisKKyNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisjaW5jbHVkZSAiQXJndW1lbnRDb2RlcnMuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRmxvYXRQb2ludDNEOworY2xhc3MgVHJhbnNmb3Jt
YXRpb25NYXRyaXg7CitzdHJ1Y3QgTGVuZ3RoOworCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQor
Y2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKKyNlbmRpZgorCisjaWYgRU5BQkxFKENTU19TSEFERVJT
KQorY2xhc3MgVHJhbnNmb3JtT3BlcmF0aW9uczsKKyNlbmRpZgorCisjaWYgVVNFKEdSQVBISUNT
X1NVUkZBQ0UpCitzdHJ1Y3QgR3JhcGhpY3NTdXJmYWNlVG9rZW47CisjZW5kaWYKK30KKworbmFt
ZXNwYWNlIENvcmVJUEMgeworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkZsb2F0UG9pbnQzRD4geworICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29k
ZXIqLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50M0QmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNv
ZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6RmxvYXRQb2ludDNEJik7Cit9OworCit0ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Okxlbmd0aD4geworICAgIHN0YXRp
YyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpMZW5ndGgmKTsK
KyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6TGVuZ3Ro
Jik7Cit9OworCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4PiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2Rl
ciosIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisgICAgc3RhdGljIGJv
b2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4
Jik7Cit9OworCisjaWYgRU5BQkxFKENTU19GSUxURVJTKQordGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPiB7CisgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMm
KTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6Rmls
dGVyT3BlcmF0aW9ucyYpOworfTsKKyNlbmRpZgorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQor
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpUcmFuc2Zvcm1PcGVyYXRp
b25zPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdl
YkNvcmU6OlRyYW5zZm9ybU9wZXJhdGlvbnMmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJn
dW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6VHJhbnNmb3JtT3BlcmF0aW9ucyYpOworfTsKKyNlbmRp
ZgorCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVu
dENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuPiB7CisgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRv
a2VuJik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6
OkdyYXBoaWNzU3VyZmFjZVRva2VuJik7Cit9OworI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIENv
cmVJUEMKKyNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKKyNlbmRpZiAvLyBD
b29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbS5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV2ViQ3VzdG9tRmls
dGVyUHJvZ3JhbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM3MTJmNWMwNGU5N2RiY2NiZTM5ZGJhMzY4ODc4MDA0
ZjM3MDNlYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9XZWJDdXN0b21GaWx0ZXJQcm9ncmFtLmgKQEAgLTAsMCArMSw3MyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBDb21wYW55IDEwMCwgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkN1c3RvbUZpbHRlclByb2dyYW1faAorI2Rl
ZmluZSBXZWJDdXN0b21GaWx0ZXJQcm9ncmFtX2gKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykgJiYgRU5BQkxFKENTU19TSEFERVJTKQorI2luY2x1ZGUgPFdlYkNvcmUvQ3VzdG9tRmls
dGVyUHJvZ3JhbS5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViQ3VzdG9tRmls
dGVyUHJvZ3JhbSA6IHB1YmxpYyBXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJDdXN0b21GaWx0ZXJQcm9ncmFtPiBjcmVhdGUo
U3RyaW5nIHZlcnRleFNoYWRlclN0cmluZywgU3RyaW5nIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcs
IFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyBtaXhTZXR0aW5ncykKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbSh2
ZXJ0ZXhTaGFkZXJTdHJpbmcsIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcsIG1peFNldHRpbmdzKSk7
CisgICAgfQorCisgICAgdmlydHVhbCBib29sIGlzTG9hZGVkKCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gdHJ1ZTsgfQorCisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgQ3VzdG9t
RmlsdGVyUHJvZ3JhbSYgbykgY29uc3QgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIC8vIFRoZSBm
b2xsb3dpbmcgY2FzdCBpcyB1Z2x5LCBidXQgV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbSBpcyB0aGUg
c2luZ2xlIGltcGxlbWVudGF0aW9uIG9mIEN1c3RvbUZpbHRlclByb2dyYW0gb24gVUkgUHJvY2Vz
cy4KKyAgICAgICAgY29uc3QgV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbSogb3RoZXIgPSBzdGF0aWNf
Y2FzdDxjb25zdCBXZWJDdXN0b21GaWx0ZXJQcm9ncmFtKj4oJm8pOworICAgICAgICByZXR1cm4g
bWl4U2V0dGluZ3MoKSA9PSBvdGhlci0+bWl4U2V0dGluZ3MoKSAmJiBtX3ZlcnRleFNoYWRlclN0
cmluZyA9PSBvdGhlci0+dmVydGV4U2hhZGVyU3RyaW5nKCkgJiYgbV9mcmFnbWVudFNoYWRlclN0
cmluZyA9PSBvdGhlci0+ZnJhZ21lbnRTaGFkZXJTdHJpbmcoKTsKKyAgICB9CisKK3Byb3RlY3Rl
ZDoKKyAgICB2aXJ0dWFsIFN0cmluZyB2ZXJ0ZXhTaGFkZXJTdHJpbmcoKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiBtX3ZlcnRleFNoYWRlclN0cmluZzsgfQorICAgIHZpcnR1YWwgU3RyaW5nIGZy
YWdtZW50U2hhZGVyU3RyaW5nKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9mcmFnbWVudFNo
YWRlclN0cmluZzsgfQorCisgICAgdmlydHVhbCB2b2lkIHdpbGxIYXZlQ2xpZW50cygpIE9WRVJS
SURFIHsgbm90aWZ5Q2xpZW50cygpOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZUxhc3RD
bGllbnQoKSBPVkVSUklERSB7IH0KKworcHJpdmF0ZToKKyAgICBXZWJDdXN0b21GaWx0ZXJQcm9n
cmFtKFN0cmluZyB2ZXJ0ZXhTaGFkZXJTdHJpbmcsIFN0cmluZyBmcmFnbWVudFNoYWRlciwgV2Vi
Q29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIG1peFNldHRpbmdzKQorICAgICAg
ICA6IFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW0obWl4U2V0dGluZ3MpCisgICAgICAgICwg
bV92ZXJ0ZXhTaGFkZXJTdHJpbmcodmVydGV4U2hhZGVyU3RyaW5nKQorICAgICAgICAsIG1fZnJh
Z21lbnRTaGFkZXJTdHJpbmcobV9mcmFnbWVudFNoYWRlclN0cmluZykKKyAgICB7CisgICAgfQor
CisgICAgU3RyaW5nIG1fdmVydGV4U2hhZGVyU3RyaW5nOworICAgIFN0cmluZyBtX2ZyYWdtZW50
U2hhZGVyU3RyaW5nOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpICYmIEVOQUJMRShDU1NfU0hBREVSUykKKworI2VuZGlm
IC8vIFdlYkN1c3RvbUZpbHRlclByb2dyYW1faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
U2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJl
YWJsZVN1cmZhY2UuY3BwCmluZGV4IDEzNmIwOTMxMTM0ZTRhMDg4N2YzMzgwNmNmZjYwYmYwZTJi
YTNhYWQuLjY3MjgxNmZjNDkwM2EyZDllMzQ4NmQ5Yzg4OTcxMjcxM2QyMjlhYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5jcHAKQEAgLTIwLDYgKzIwLDcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFyZWFibGVTdXJmYWNlLmgiCiAKKyNp
bmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJH
cmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzU3VyZmFjZVRva2VuLmg+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDA0MTI0NjY3Zjk1NzQ2
OTJlNTg3MzUxYmZhMjBiNzJmOGViY2EzOWIuLjhhZTZjODVhN2UzZDc1MTJkZjAxOWI3YjJlYWU1
YWZkZDFjN2E0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCkBAIC00OSwyMCArNDksNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93
RmVhdHVyZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKLSNpZiBVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpCi0jaW5jbHVkZSA8V2ViQ29yZS9BbmltYXRpb24uaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL0Zsb2F0UG9pbnQzRC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvTGVuZ3Ro
Lmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgotCi0jaWYgRU5B
QkxFKENTU19GSUxURVJTKQotI2luY2x1ZGUgPFdlYkNvcmUvRmlsdGVyT3BlcmF0aW9ucy5oPgot
I2VuZGlmCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0jaW5jbHVkZSA8V2ViQ29yZS9HcmFw
aGljc1N1cmZhY2UuaD4KLSNlbmRpZgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtODcyLDE3MCArODU4LDQgQEAgYm9vbCBB
cmd1bWVudENvZGVyPEtVUkw+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBLVVJM
JiByZXN1bHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCi12b2lkIEFyZ3VtZW50Q29kZXI8RmxvYXRQb2ludDNEPjo6ZW5jb2RlKEFyZ3VtZW50
RW5jb2RlciogZW5jb2RlciwgY29uc3QgRmxvYXRQb2ludDNEJiBmbG9hdFBvaW50M0QpCi17Ci0g
ICAgU2ltcGxlQXJndW1lbnRDb2RlcjxGbG9hdFBvaW50M0Q+OjplbmNvZGUoZW5jb2RlciwgZmxv
YXRQb2ludDNEKTsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPEZsb2F0UG9pbnQzRD46OmRlY29k
ZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIEZsb2F0UG9pbnQzRCYgZmxvYXRQb2ludDNEKQot
ewotICAgIHJldHVybiBTaW1wbGVBcmd1bWVudENvZGVyPEZsb2F0UG9pbnQzRD46OmRlY29kZShk
ZWNvZGVyLCBmbG9hdFBvaW50M0QpOwotfQotCi12b2lkIEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6
ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgTGVuZ3RoJiBsZW5ndGgpCi17
Ci0gICAgU2ltcGxlQXJndW1lbnRDb2RlcjxMZW5ndGg+OjplbmNvZGUoZW5jb2RlciwgbGVuZ3Ro
KTsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPExlbmd0aD46OmRlY29kZShBcmd1bWVudERlY29k
ZXIqIGRlY29kZXIsIExlbmd0aCYgbGVuZ3RoKQotewotICAgIHJldHVybiBTaW1wbGVBcmd1bWVu
dENvZGVyPExlbmd0aD46OmRlY29kZShkZWNvZGVyLCBsZW5ndGgpOwotfQotCi12b2lkIEFyZ3Vt
ZW50Q29kZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBl
bmNvZGVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtYXRpb25NYXRyaXgp
Ci17Ci0gICAgU2ltcGxlQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmVuY29k
ZShlbmNvZGVyLCB0cmFuc2Zvcm1hdGlvbk1hdHJpeCk7Ci19Ci0KLWJvb2wgQXJndW1lbnRDb2Rl
cjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIs
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1hdGlvbk1hdHJpeCkKLXsKLSAgICByZXR1
cm4gU2ltcGxlQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShkZWNv
ZGVyLCB0cmFuc2Zvcm1hdGlvbk1hdHJpeCk7Ci19Ci0KLSNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMp
Ci12b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz46OmVuY29kZShB
cmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMm
IGZpbHRlcnMpCi17Ci0gICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKGZpbHRlcnMuc2l6ZSgpKTsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbHRlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAg
ICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmaWx0ZXIgPSBmaWx0ZXJzLmF0KGkpOwotICAgICAg
ICBGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHlwZSA9IGZpbHRlci0+Z2V0T3BlcmF0
aW9uVHlwZSgpOwotICAgICAgICBlbmNvZGVyLT5lbmNvZGVFbnVtKHR5cGUpOwotICAgICAgICBz
d2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRToK
LSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOgotICAgICAgICBjYXNlIEZpbHRl
ck9wZXJhdGlvbjo6U0FUVVJBVEU6Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpIVUVf
Uk9UQVRFOgotICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlRG91YmxlKHN0YXRpY19jYXN0PGNv
bnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIpLT5hbW91bnQoKSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklOVkVS
VDoKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6Ci0gICAgICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDoKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRp
b246Ok9QQUNJVFk6Ci0gICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVEb3VibGUoc3RhdGljX2Nh
c3Q8Y29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbio+KGZpbHRlcikt
PmFtb3VudCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZpbHRlck9wZXJh
dGlvbjo6QkxVUjoKLSAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZW5jb2RlKGVu
Y29kZXIsIHN0YXRpY19jYXN0PGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIpLT5z
dGREZXZpYXRpb24oKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGaWx0ZXJP
cGVyYXRpb246OkRST1BfU0hBRE9XOiB7Ci0gICAgICAgICAgICBjb25zdCBEcm9wU2hhZG93Rmls
dGVyT3BlcmF0aW9uKiBzaGFkb3cgPSBzdGF0aWNfY2FzdDxjb25zdCBEcm9wU2hhZG93RmlsdGVy
T3BlcmF0aW9uKj4oZmlsdGVyKTsKLSAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8SW50UG9pbnQ+
OjplbmNvZGUoZW5jb2Rlciwgc2hhZG93LT5sb2NhdGlvbigpKTsKLSAgICAgICAgICAgIGVuY29k
ZXItPmVuY29kZUludDMyKHNoYWRvdy0+c3RkRGV2aWF0aW9uKCkpOwotICAgICAgICAgICAgQXJn
dW1lbnRDb2RlcjxDb2xvcj46OmVuY29kZShlbmNvZGVyLCBzaGFkb3ctPmNvbG9yKCkpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotfQotCi1ib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6RmlsdGVyT3BlcmF0aW9ucz46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdl
YkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCi17Ci0gICAgdWludDMyX3Qgc2l6ZTsK
LSAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJbnQzMihzaXplKSkKLSAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgVmVjdG9yPFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+ID4mIG9wZXJhdGlvbnMg
PSBmaWx0ZXJzLm9wZXJhdGlvbnMoKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6
ZTsgKytpKSB7Ci0gICAgICAgIEZpbHRlck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0eXBlOwot
ICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBmaWx0ZXI7Ci0gICAgICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlRW51bSh0eXBlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
ICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlT
Q0FMRToKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOgotICAgICAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9u
OjpIVUVfUk9UQVRFOiB7Ci0gICAgICAgICAgICBkb3VibGUgdmFsdWU7Ci0gICAgICAgICAgICBp
ZiAoIWRlY29kZXItPmRlY29kZURvdWJsZSh2YWx1ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgZmlsdGVyID0gQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJh
dGlvbjo6Y3JlYXRlKHZhbHVlLCB0eXBlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6Ci0gICAgICAgIGNhc2UgRmls
dGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOgotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6
Q09OVFJBU1Q6Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZOiB7Ci0gICAg
ICAgICAgICBkb3VibGUgdmFsdWU7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZURv
dWJsZSh2YWx1ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
ZmlsdGVyID0gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKHZh
bHVlLCB0eXBlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpCTFVSOiB7Ci0gICAgICAgICAgICBMZW5ndGggbGVuZ3RoOwotICAg
ICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVyPExlbmd0aD46OmRlY29kZShkZWNvZGVyLCBsZW5n
dGgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGZpbHRlciA9
IEJsdXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShsZW5ndGgsIHR5cGUpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hB
RE9XOiB7Ci0gICAgICAgICAgICBJbnRQb2ludCBsb2NhdGlvbjsKLSAgICAgICAgICAgIGludDMy
X3Qgc3RkRGV2aWF0aW9uOwotICAgICAgICAgICAgQ29sb3IgY29sb3I7Ci0gICAgICAgICAgICBp
ZiAoIUFyZ3VtZW50Q29kZXI8SW50UG9pbnQ+OjpkZWNvZGUoZGVjb2RlciwgbG9jYXRpb24pKQot
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci0+
ZGVjb2RlSW50MzIoc3RkRGV2aWF0aW9uKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8Q29sb3I+OjpkZWNvZGUoZGVjb2Rlciwg
Y29sb3IpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGZpbHRl
ciA9IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShsb2NhdGlvbiwgc3RkRGV2aWF0
aW9uLCBjb2xvciwgdHlwZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
ZmlsdGVyKQotICAgICAgICAgICAgb3BlcmF0aW9ucy5hcHBlbmQoZmlsdGVyKTsKLSAgICB9Ci0K
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLSNlbmRpZgotCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0Up
Ci12b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4+OjplbmNv
ZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc1N1cmZh
Y2VUb2tlbiYgdG9rZW4pCi17Ci0jaWYgT1MoREFSV0lOKQotICAgIGVuY29kZXItPmVuY29kZVVJ
bnQzMih0b2tlbi5mcm9udEJ1ZmZlckhhbmRsZSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlVUludDMy
KHRva2VuLmJhY2tCdWZmZXJIYW5kbGUpOwotI2VuZGlmCi0jaWYgT1MoTElOVVgpCi0gICAgZW5j
b2Rlci0+ZW5jb2RlVUludDMyKHRva2VuLmZyb250QnVmZmVySGFuZGxlKTsKLSNlbmRpZgotfQot
Ci1ib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4+OjpkZWNv
ZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tl
biYgdG9rZW4pCi17Ci0jaWYgT1MoREFSV0lOKQotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUlu
dDMyKHRva2VuLmZyb250QnVmZmVySGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKHRva2VuLmJhY2tCdWZmZXJIYW5kbGUpKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLSNpZiBPUyhMSU5VWCkKLSAgICBpZiAoIWRlY29k
ZXItPmRlY29kZVVJbnQzMih0b2tlbi5mcm9udEJ1ZmZlckhhbmRsZSkpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSNlbmRpZgotICAgIHJldHVybiB0cnVlOwotfQotCi0jZW5kaWYKLQotI2VuZGlm
Ci0KIH0gLy8gbmFtZXNwYWNlIENvcmVJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJD
b3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCAzNDJjOGZiNzNmNmE2ZTQ0NDI3YWJiNmM2ZTNkYzY0
Y2RhNWQxOTMyLi5iNGRhZmU2NzE0OTRlNDM4N2YzOWM3ZWZiZjBjYzY3YTgxN2NiNzIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC02Nywy
NCArNjcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB9CiAjZW5kaWYKIAotI2lmIFVTRShDT09S
RElOQVRFRF9HUkFQSElDUykKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBGbG9hdFBv
aW50M0Q7Ci0gICAgY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7Ci0gICAgc3RydWN0IExlbmd0
aDsKLQotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIHN0cnVjdCBHcmFwaGljc1N1cmZh
Y2VUb2tlbjsKLSNlbmRpZgotfQotCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotbmFtZXNwYWNl
IFdlYkNvcmUgewotICAgIGNsYXNzIEZpbHRlck9wZXJhdGlvbnM7Ci19Ci0jZW5kaWYKLSNlbmRp
ZgotCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29k
ZXI8V2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtPiB7CkBAIC0yNTgsMzggKzI0MCw2IEBAIHRlbXBs
YXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6S1VSTD4gewogICAgIHN0YXRpYyBi
b29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpLVVJMJik7CiB9OwogCi0jaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpGbG9hdFBvaW50M0Q+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1l
bnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludDNEJik7Ci0gICAgc3RhdGljIGJv
b2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OkZsb2F0UG9pbnQzRCYpOwotfTsK
LQotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpMZW5ndGg+IHsKLSAg
ICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6TGVu
Z3RoJik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6
Okxlbmd0aCYpOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVu
dEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwotICAgIHN0
YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYpOwotfTsKLQotI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLXRlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz4gewotICAgIHN0YXRp
YyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpGaWx0ZXJPcGVy
YXRpb25zJik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNv
cmU6OkZpbHRlck9wZXJhdGlvbnMmKTsKLX07Ci0jZW5kaWYKLQotI2lmIFVTRShHUkFQSElDU19T
VVJGQUNFKQotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGlj
c1N1cmZhY2VUb2tlbj4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIq
LCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiYpOwotICAgIHN0YXRpYyBib29s
IGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiYp
OwotfTsKLSNlbmRpZgotI2VuZGlmCi0KLQogfSAvLyBuYW1lc3BhY2UgQ29yZUlQQwogCiAjZW5k
aWYgLy8gV2ViQ29yZUFyZ3VtZW50Q29kZXJzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IGUzNmM1MjhhM2Zh
NjZkYzhmMGVmMWI3NzIwOGNmYTI5ZGQ4YTYzOWYuLjZiZTcyYWE3NmJmMTk3ZDE3YmZkY2Q2Njk0
NTNjMjQwZDk5NzZlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysr
IGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAtMTMxLDYgKzEzMSw4IEBAIEhFQURFUlMg
Kz0gXAogICAgIFNoYXJlZC9XZWJVUkxSZXF1ZXN0LmggXAogICAgIFNoYXJlZC9XZWJVUkxSZXNw
b25zZS5oIFwKICAgICBTaGFyZWQvV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggXAorICAgIFNo
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVy
cy5oIFwKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDdXN0b21GaWx0ZXJQcm9n
cmFtLmggXAogICAgIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxl
LmggXAogICAgIFNoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmggXAogICAgIFNoYXJl
ZC9QbHVnaW5zL05QSWRlbnRpZmllckRhdGEuaCBcCkBAIC00ODgsNiArNDkwLDcgQEAgU09VUkNF
UyArPSBcCiAgICAgU2hhcmVkL1dlYlVSTFJlcXVlc3QuY3BwIFwKICAgICBTaGFyZWQvV2ViVVJM
UmVzcG9uc2UuY3BwIFwKICAgICBTaGFyZWQvV2ViV2hlZWxFdmVudC5jcHAgXAorICAgIFNoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5j
cHAgXAogICAgIFNoYXJlZC9xdC9Bcmd1bWVudENvZGVyc1F0LmNwcCBcCiAgICAgU2hhcmVkL3F0
L0xheWVyVHJlZUNvbnRleHRRdC5jcHAgXAogICAgIFNoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBR
dC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oCmlu
ZGV4IGIxZWY0MDFhNDQ1MDI1YjIyYzY3ZmI2ZDUwZTcwNGY4NWNjODlkNmMuLjFhMmFiYmRmMTky
MDNjNWI4ZDIzMjQ5ZWQyNmVlMzNkODVkYjNhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVDb29yZGluYXRvclByb3h5LmgKQEAgLTIzLDYgKzIzLDcgQEAKICNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCiAKICNpbmNsdWRlICJCYWNraW5nU3RvcmUuaCIKKyNpbmNsdWRlICJD
b29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJl
YVByb3h5LmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiU3VyZmFjZVVwZGF0ZUlu
Zm8uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJpIGIvU291cmNlL1dl
YktpdDIvV2ViS2l0Mi5wcmkKaW5kZXggNTM2Yjc3OWJhYmJmZWU3OGE4ZWRlNjY5ZTdiZGFiN2E4
YzhjNTg2Ni4uODBjYjJmYjhlNzk1YTI4MGM0OTc5ZWIyZjlhZmIzNGEzNWY5NGZjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi5wcmkKQEAgLTE2LDYgKzE2LDcgQEAgSU5DTFVERVBBVEggKz0gXAogICAgICQkU09VUkNF
X0RJUi9QbGF0Zm9ybS9xdCBcCiAgICAgJCRTT1VSQ0VfRElSL1NoYXJlZCBcCiAgICAgJCRTT1VS
Q0VfRElSL1NoYXJlZC9BUEkvYyBcCisgICAgJCRTT1VSQ0VfRElSL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzIFwKICAgICAkJFNPVVJDRV9ESVIvU2hhcmVkL0NvcmVJUENTdXBwb3J0IFwKICAg
ICAkJFNPVVJDRV9ESVIvU2hhcmVkL1BsdWdpbnMgXAogICAgICQkU09VUkNFX0RJUi9TaGFyZWQv
UGx1Z2lucy9OZXRzY2FwZSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXll
clRyZWVDb29yZGluYXRvci5jcHAKaW5kZXggNDE2Y2YwMGUwMjNjY2IxY2U0NzBkMzk3NzNmMTM1
OWUwNzg2OGJlOC4uZWZmMWM5MzMwMDJmYWFjZmE4ZGQ5MDc1ZDlmMjA3OGIzNTIxNzA5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNw
cApAQCAtMjksNiArMjksNyBAQAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICNpbmNs
dWRlICJMYXllclRyZWVDb29yZGluYXRvci5oIgogCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFw
aGljc0FyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
LmgiCiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbXBsLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0LmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168619</attachid>
            <date>2012-10-14 21:06:21 -0700</date>
            <delta_ts>2012-10-14 22:22:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98733-20121015130505.patch</filename>
            <type>text/plain</type>
            <size>47595</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI3MThjM2VjMDViM2M4
YjI4ZGQ5YjBkMjczYTg0OWQ5YTA3YWEwMS4uMDkwZDA4YWM1MjUwMjg4Y2YyMGUwNWY3MTliZGQy
ZmM5YmVlMGJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIwIEBACiAyMDEyLTEwLTEyICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIFtXSzJdIEFk
ZCBDdXN0b21GaWx0ZXJPcGVyYXRpb24gc2VyaWFsaXphdGlvbiBpbiBBcmd1bWVudENvZGVyLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg3MzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uOjpwYXJhbWV0ZXJzKCkgdG8gY29uc3QgZnVuY3Rpb24sIGJlY2F1
c2UKKyAgICAgICAgdGhpcyBtZXRob2QgaXMgYSBnZXR0ZXIgYW5kIGEgY29uc3QgaW5zdGFuY2Ug
bmVlZHMgdG8gY2FsbCB0aGlzIG1ldGhvZC4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVz
ZSB0aGVyZSBpcyBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpwYXJhbWV0ZXJzKToKKworMjAxMi0xMC0xMiAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKwogICAgICAgICBbQ1NTIFNo
YWRlcnNdIEltcGxlbWVudCBvdmVybGF5LCBjb2xvci1kb2RnZSwgY29sb3ItYnVybiwgaGFyZC1s
aWdodCwgc29mdC1saWdodCBibGVuZCBtb2Rlcy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NTA0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlNDU0M2I3NDhjNDkw
N2MxNmFlNjhiNDQwOWM4NTZhNzhkMTE3OTI4Li4wNzFhOGFmYmEwZDViNjA0ZmM3MDhlYWEyNDZh
ZWE0YjZmYTA5YjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTItMTAtMTIgIEh1
YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgW1dLMl0g
QWRkIEN1c3RvbUZpbHRlck9wZXJhdGlvbiBzZXJpYWxpemF0aW9uIGluIEFyZ3VtZW50Q29kZXIu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODczMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBcmd1
bWVudENvZGVycyBmb3IgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uIGFuZCBhbGwgZGVwZW5kZW50IGNs
YXNzZXMuCisgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzIHdpbGwgdXNlIHRoaXMgY3NzIHNo
YWRlcnMgc2VyaWFsaXphdGlvbiB3aGVuIGl0IGVuYWJsZXMgQ1NTCisgICAgICAgIFNoYWRlcnMu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb2RlIHBhdGggaXMgbm90IGFjdGl2YXRlZCB5ZXQu
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwOiBBZGRlZC4K
KyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUpOgorICAgICAg
ICAoQ29yZUlQQzo6OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJDdXN0b21GaWx0ZXJQcm9ncmFtKToKKyAgICAgICAgICAgIFdl
YkN1c3RvbUZpbHRlclByb2dyYW0gaXMgbWFkZSB0byBzZXJpYWxpemUgdGhlIGRhdGEgb2YgYQor
ICAgICAgICAgICAgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtIHRvIHRoZSBVSSBwcm9jZXNzLgor
ICAgICAgICAoV2ViS2l0OjpXZWJDdXN0b21GaWx0ZXJQcm9ncmFtOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDdXN0b21GaWx0ZXJQcm9ncmFtOjpXZWJDdXN0b21GaWx0ZXJQcm9ncmFt
KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5jcHA6CisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oOgorICAg
ICAgICAqIFdlYktpdDIucHJpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcDoKKwogMjAxMi0xMC0xNCAgU2Ft
IFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1ha2UgVXNlclNjcmlwdCBhbmQg
VXNlclN0eWxlU2hlZXQgdmFsdWUgb2JqZWN0cyB0aGF0IGFyZSBjb3B5YWJsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJP
cGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggNzg4YjNmMDE2MjZiM2Y0YWYwNTIwZGQ4YzZmMjVh
ZjQ0YTI1NDBhMy4uMGQ2NGQyMzY4Mjc3ODY0NTNkM2VhYzdhNDZkNzA1ZTk0NGYyMTNlNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtKiBwcm9ncmFtKCkgY29uc3QgeyByZXR1cm4g
bV9wcm9ncmFtLmdldCgpOyB9CiAgICAgCi0gICAgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVy
TGlzdCYgcGFyYW1ldGVycygpIHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQorICAgIGNvbnN0IEN1
c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3Bh
cmFtZXRlcnM7IH0KICAgICAKICAgICB1bnNpZ25lZCBtZXNoUm93cygpIGNvbnN0IHsgcmV0dXJu
IG1fbWVzaFJvd3M7IH0KICAgICB1bnNpZ25lZCBtZXNoQ29sdW1ucygpIGNvbnN0IHsgcmV0dXJu
IG1fbWVzaENvbHVtbnM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggMjBlN2QzNGRjODY1ODE3
NTM2ZWMwYTE3ZTdhMjk0Mzc1NzU0ZjI3OC4uOGRjNmQyM2RhMmFlMjY1MmYzODkyM2Q5MzQ4MDY3
MWI4N2U1NTI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTYsNiArNiw3IEBAIFNFVChXZWJL
aXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkIgogICAg
ICIke1dFQktJVDJfRElSfS9TaGFyZWQvQVBJIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQv
QVBJL2MiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzIgog
ICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1NoYXJlZC9QbHVnaW5zIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvUGx1Z2lu
cy9OZXRzY2FwZSIKQEAgLTIxMyw2ICsyMTQsOCBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAg
U2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCiAgICAgU2hhcmVkL0FQSS9jL1dLVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmNwcAogCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcAorCiAgICAgU2hhcmVkL1BsdWdpbnMv
TlBJZGVudGlmaWVyRGF0YS5jcHAKICAgICBTaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VS
ZWNlaXZlci5jcHAKICAgICBTaGFyZWQvUGx1Z2lucy9OUE9iamVjdFByb3h5LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTVhMzBmYzMwNGFiMzQyNjI3ZmIxOGEwMmRmMGVmYWY5OWMyNWY5YgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKQEAgLTAsMCArMSw1MzUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNz
QXJndW1lbnRDb2RlcnMuaCIKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FuaW1hdGlv
bi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0
UG9pbnQzRC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9pbnQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0xlbmd0aC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXguaD4K
KworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbHRlck9wZXJh
dGlvbnMuaD4KKyNlbmRpZgorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorI2luY2x1ZGUgIldl
YkN1c3RvbUZpbHRlclByb2dyYW0uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0N1c3RvbUZpbHRlckFy
cmF5UGFyYW1ldGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DdXN0b21GaWx0ZXJOdW1iZXJQYXJh
bWV0ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
Q3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JZGVu
dGl0eVRyYW5zZm9ybU9wZXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWF0cml4M0RUcmFu
c2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01hdHJpeFRyYW5zZm9ybU9wZXJh
dGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24u
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RyYW5zbGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbi5oPgorI2VuZGlmCisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
KyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzU3VyZmFjZS5oPgorI2VuZGlmCisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIENv
cmVJUEMgeworCit2b2lkIEFyZ3VtZW50Q29kZXI8RmxvYXRQb2ludDNEPjo6ZW5jb2RlKEFyZ3Vt
ZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgRmxvYXRQb2ludDNEJiBmbG9hdFBvaW50M0QpCit7
CisgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxGbG9hdFBvaW50M0Q+OjplbmNvZGUoZW5jb2Rlciwg
ZmxvYXRQb2ludDNEKTsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPEZsb2F0UG9pbnQzRD46OmRl
Y29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIEZsb2F0UG9pbnQzRCYgZmxvYXRQb2ludDNE
KQoreworICAgIHJldHVybiBTaW1wbGVBcmd1bWVudENvZGVyPEZsb2F0UG9pbnQzRD46OmRlY29k
ZShkZWNvZGVyLCBmbG9hdFBvaW50M0QpOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8TGVuZ3Ro
Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgTGVuZ3RoJiBsZW5ndGgp
Cit7CisgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxMZW5ndGg+OjplbmNvZGUoZW5jb2RlciwgbGVu
Z3RoKTsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPExlbmd0aD46OmRlY29kZShBcmd1bWVudERl
Y29kZXIqIGRlY29kZXIsIExlbmd0aCYgbGVuZ3RoKQoreworICAgIHJldHVybiBTaW1wbGVBcmd1
bWVudENvZGVyPExlbmd0aD46OmRlY29kZShkZWNvZGVyLCBsZW5ndGgpOworfQorCit2b2lkIEFy
Z3VtZW50Q29kZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVy
KiBlbmNvZGVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtYXRpb25NYXRy
aXgpCit7CisgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmVu
Y29kZShlbmNvZGVyLCB0cmFuc2Zvcm1hdGlvbk1hdHJpeCk7Cit9CisKK2Jvb2wgQXJndW1lbnRD
b2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29k
ZXIsIFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1hdGlvbk1hdHJpeCkKK3sKKyAgICBy
ZXR1cm4gU2ltcGxlQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShk
ZWNvZGVyLCB0cmFuc2Zvcm1hdGlvbk1hdHJpeCk7Cit9CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRF
UlMpCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz46OmVuY29k
ZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlv
bnMmIGZpbHRlcnMpCit7CisgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKGZpbHRlcnMuc2l6ZSgp
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbHRlcnMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmaWx0ZXIgPSBmaWx0ZXJzLmF0KGkpOworICAg
ICAgICBGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHlwZSA9IGZpbHRlci0+Z2V0T3Bl
cmF0aW9uVHlwZSgpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGVFbnVtKHR5cGUpOworICAgICAg
ICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FM
RToKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOgorICAgICAgICBjYXNlIEZp
bHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpI
VUVfUk9UQVRFOgorICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlRG91YmxlKHN0YXRpY19jYXN0
PGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIpLT5hbW91bnQo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklO
VkVSVDoKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6CisgICAgICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDoKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246Ok9QQUNJVFk6CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVEb3VibGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbio+KGZpbHRl
ciktPmFtb3VudCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZpbHRlck9w
ZXJhdGlvbjo6QkxVUjoKKyAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZW5jb2Rl
KGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIp
LT5zdGREZXZpYXRpb24oKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOiB7CisgICAgICAgICAgICBjb25zdCBEcm9wU2hhZG93
RmlsdGVyT3BlcmF0aW9uKiBzaGFkb3cgPSBzdGF0aWNfY2FzdDxjb25zdCBEcm9wU2hhZG93Rmls
dGVyT3BlcmF0aW9uKj4oZmlsdGVyKTsKKyAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8SW50UG9p
bnQ+OjplbmNvZGUoZW5jb2Rlciwgc2hhZG93LT5sb2NhdGlvbigpKTsKKyAgICAgICAgICAgIGVu
Y29kZXItPmVuY29kZUludDMyKHNoYWRvdy0+c3RkRGV2aWF0aW9uKCkpOworICAgICAgICAgICAg
QXJndW1lbnRDb2RlcjxDb2xvcj46OmVuY29kZShlbmNvZGVyLCBzaGFkb3ctPmNvbG9yKCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisg
ICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDVVNUT006IHsKKyAgICAgICAgICAgIGNvbnN0
IEN1c3RvbUZpbHRlck9wZXJhdGlvbiogY3VzdG9tT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8Y29u
c3QgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyKTsKKworICAgICAgICAgICAgQVNTRVJU
KGN1c3RvbU9wZXJhdGlvbi0+cHJvZ3JhbSgpKTsKKyAgICAgICAgICAgIFJlZlB0cjxDdXN0b21G
aWx0ZXJQcm9ncmFtPiBwcm9ncmFtID0gY3VzdG9tT3BlcmF0aW9uLT5wcm9ncmFtKCk7CisgICAg
ICAgICAgICBBU1NFUlQocHJvZ3JhbS0+aXNMb2FkZWQoKSk7CisgICAgICAgICAgICBDdXN0b21G
aWx0ZXJQcm9ncmFtSW5mbyBwcm9ncmFtSW5mbyA9IHByb2dyYW0tPnByb2dyYW1JbmZvKCk7Cisg
ICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUocHJvZ3JhbUluZm8udmVydGV4U2hhZGVyU3RyaW5n
KCkpOworICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHByb2dyYW1JbmZvLmZyYWdtZW50U2hh
ZGVyU3RyaW5nKCkpOworICAgICAgICAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdz
IG1peFNldHRpbmdzID0gcHJvZ3JhbUluZm8ubWl4U2V0dGluZ3MoKTsKKyAgICAgICAgICAgIGVu
Y29kZXItPmVuY29kZShtaXhTZXR0aW5ncy5lbmFibGVkKTsKKyAgICAgICAgICAgIGVuY29kZXIt
PmVuY29kZUVudW0obWl4U2V0dGluZ3MuYmxlbmRNb2RlKTsKKyAgICAgICAgICAgIGVuY29kZXIt
PmVuY29kZUVudW0obWl4U2V0dGluZ3MuY29tcG9zaXRlT3BlcmF0b3IpOworCisgICAgICAgICAg
ICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0IHBhcmFtZXRlcnMgPSBjdXN0b21PcGVyYXRpb24t
PnBhcmFtZXRlcnMoKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZVVJbnQzMihwYXJhbWV0
ZXJzLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRl
cnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyUGFy
YW1ldGVyPiBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJzW2ldOworICAgICAgICAgICAgICAgIGVuY29k
ZXItPmVuY29kZShwYXJhbWV0ZXItPm5hbWUoKSk7CisgICAgICAgICAgICAgICAgZW5jb2Rlci0+
ZW5jb2RlRW51bShwYXJhbWV0ZXItPnBhcmFtZXRlclR5cGUoKSk7CisKKyAgICAgICAgICAgICAg
ICBzd2l0Y2ggKHBhcmFtZXRlci0+cGFyYW1ldGVyVHlwZSgpKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6OkFSUkFZOiB7CisgICAgICAgICAgICAgICAgICAg
IEN1c3RvbUZpbHRlckFycmF5UGFyYW1ldGVyKiBhcnJheVBhcmFtZXRlciA9IHN0YXRpY19jYXN0
PEN1c3RvbUZpbHRlckFycmF5UGFyYW1ldGVyKj4ocGFyYW1ldGVyLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKGFycmF5UGFyYW1ldGVyLT5zaXplKCkp
OworICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGFycmF5UGFyYW1l
dGVyLT5zaXplKCk7ICsraikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZXItPmVuY29k
ZShhcnJheVBhcmFtZXRlci0+dmFsdWVBdChqKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEN1c3RvbUZpbHRlclBh
cmFtZXRlcjo6TlVNQkVSOiB7CisgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpbHRlck51bWJl
clBhcmFtZXRlciogbnVibWVyUGFyYW1ldGVyID0gc3RhdGljX2Nhc3Q8Q3VzdG9tRmlsdGVyTnVt
YmVyUGFyYW1ldGVyKj4ocGFyYW1ldGVyLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW5j
b2Rlci0+ZW5jb2RlVUludDMyKG51Ym1lclBhcmFtZXRlci0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBudWJtZXJQYXJhbWV0ZXItPnNpemUoKTsg
KytqKQorICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKG51Ym1lclBhcmFt
ZXRlci0+dmFsdWVBdChqKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEN1c3RvbUZpbHRlclBhcmFtZXRlcjo6VFJB
TlNGT1JNOiB7CisgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFt
ZXRlciogdHJhbnNmb3JtUGFyYW1ldGVyID0gc3RhdGljX2Nhc3Q8Q3VzdG9tRmlsdGVyVHJhbnNm
b3JtUGFyYW1ldGVyKj4ocGFyYW1ldGVyLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgQXJn
dW1lbnRDb2RlcjxUcmFuc2Zvcm1PcGVyYXRpb25zPjo6ZW5jb2RlKGVuY29kZXIsIHRyYW5zZm9y
bVBhcmFtZXRlci0+b3BlcmF0aW9ucygpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKGN1c3RvbU9wZXJhdGlvbi0+bWVzaFJvd3MoKSk7Cisg
ICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUoY3VzdG9tT3BlcmF0aW9uLT5tZXNoQ29sdW1ucygp
KTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUVudW0oY3VzdG9tT3BlcmF0aW9uLT5tZXNo
Qm94VHlwZSgpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUVudW0oY3VzdG9tT3BlcmF0
aW9uLT5tZXNoVHlwZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisjZW5kaWYK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQor
fQorCitib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz46OmRlY29k
ZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmIGZp
bHRlcnMpCit7CisgICAgdWludDMyX3Qgc2l6ZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJ
bnQzMihzaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVmVjdG9yPFJlZlB0cjxG
aWx0ZXJPcGVyYXRpb24+ID4mIG9wZXJhdGlvbnMgPSBmaWx0ZXJzLm9wZXJhdGlvbnMoKTsKKwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIEZpbHRlck9w
ZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0eXBlOworICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0
aW9uPiBmaWx0ZXI7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bSh0eXBlKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAg
ICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRToKKyAgICAgICAgY2FzZSBGaWx0ZXJP
cGVyYXRpb246OlNFUElBOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6
CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpIVUVfUk9UQVRFOiB7CisgICAgICAgICAg
ICBkb3VibGUgdmFsdWU7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZURvdWJsZSh2
YWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZmlsdGVy
ID0gQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKHZhbHVlLCB0eXBlKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpJTlZFUlQ6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOgor
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q09OVFJBU1Q6CisgICAgICAgIGNhc2UgRmls
dGVyT3BlcmF0aW9uOjpPUEFDSVRZOiB7CisgICAgICAgICAgICBkb3VibGUgdmFsdWU7CisgICAg
ICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZURvdWJsZSh2YWx1ZSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZmlsdGVyID0gQmFzaWNDb21wb25lbnRUcmFu
c2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKHZhbHVlLCB0eXBlKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOiB7Cisg
ICAgICAgICAgICBMZW5ndGggbGVuZ3RoOworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVy
PExlbmd0aD46OmRlY29kZShkZWNvZGVyLCBsZW5ndGgpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIGZpbHRlciA9IEJsdXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0
ZShsZW5ndGgsIHR5cGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOiB7CisgICAgICAgICAgICBJbnRQb2lu
dCBsb2NhdGlvbjsKKyAgICAgICAgICAgIGludDMyX3Qgc3RkRGV2aWF0aW9uOworICAgICAgICAg
ICAgQ29sb3IgY29sb3I7CisgICAgICAgICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8SW50UG9pbnQ+
OjpkZWNvZGUoZGVjb2RlciwgbG9jYXRpb24pKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlSW50MzIoc3RkRGV2aWF0aW9uKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIUFyZ3VtZW50
Q29kZXI8Q29sb3I+OjpkZWNvZGUoZGVjb2RlciwgY29sb3IpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIGZpbHRlciA9IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRp
b246OmNyZWF0ZShsb2NhdGlvbiwgc3RkRGV2aWF0aW9uLCBjb2xvciwgdHlwZSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICAgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246OkNVU1RPTTogeworICAgICAgICAgICAgU3RyaW5nIHZlcnRl
eFNoYWRlclN0cmluZzsKKyAgICAgICAgICAgIFN0cmluZyBmcmFnbWVudFNoYWRlclN0cmluZzsK
KyAgICAgICAgICAgIEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyBtaXhTZXR0aW5nczsK
KyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHZlcnRleFNoYWRlclN0cmluZykpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoZnJhZ21lbnRTaGFkZXJTdHJpbmcpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG1peFNldHRpbmdzLmVuYWJsZWQp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlRW51bShtaXhTZXR0aW5ncy5ibGVuZE1vZGUpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShtaXhTZXR0
aW5ncy5jb21wb3NpdGVPcGVyYXRvcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgUmVmUHRyPEN1c3RvbUZpbHRlclByb2dyYW0+IHByb2dyYW0gPSBXZWJDdXN0
b21GaWx0ZXJQcm9ncmFtOjpjcmVhdGUodmVydGV4U2hhZGVyU3RyaW5nLCBmcmFnbWVudFNoYWRl
clN0cmluZywgbWl4U2V0dGluZ3MpOworCisgICAgICAgICAgICB1aW50MzJfdCBwYXJhbWV0ZXJz
U2l6ZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKHBhcmFtZXRlcnNT
aXplKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIEN1c3Rv
bUZpbHRlclBhcmFtZXRlckxpc3QgcGFyYW1ldGVycyhwYXJhbWV0ZXJzU2l6ZSk7CisgICAgICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnNTaXplOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICBTdHJpbmcgbmFtZTsKKyAgICAgICAgICAgICAgICBDdXN0b21GaWx0ZXJQYXJh
bWV0ZXI6OlBhcmFtZXRlclR5cGUgcGFyYW1ldGVyVHlwZTsKKyAgICAgICAgICAgICAgICBpZiAo
IWRlY29kZXItPmRlY29kZShuYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShwYXJhbWV0ZXJUeXBl
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAg
c3dpdGNoIChwYXJhbWV0ZXJUeXBlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBDdXN0b21GaWx0
ZXJQYXJhbWV0ZXI6OkFSUkFZOiB7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxDdXN0b21G
aWx0ZXJBcnJheVBhcmFtZXRlcj4gYXJyYXlQYXJhbWV0ZXIgPSBDdXN0b21GaWx0ZXJBcnJheVBh
cmFtZXRlcjo6Y3JlYXRlKG5hbWUpOworICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFw
cGVuZChhcnJheVBhcmFtZXRlcik7CisgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFycmF5
UGFyYW1ldGVyU2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVV
SW50MzIoYXJyYXlQYXJhbWV0ZXJTaXplKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIGFycmF5UGFyYW1ldGVyVmFsdWU7
CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgYXJyYXlQYXJhbWV0
ZXJTaXplOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlKGFycmF5UGFyYW1ldGVyVmFsdWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5UGFyYW1ldGVyLT5hZGRW
YWx1ZShhcnJheVBhcmFtZXRlclZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
Y2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6Ok5VTUJFUjogeworICAgICAgICAgICAgICAgICAg
ICBSZWZQdHI8Q3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyPiBudW1iZXJQYXJhbWV0ZXIgPSBD
dXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXI6OmNyZWF0ZShuYW1lKTsKKyAgICAgICAgICAgICAg
ICAgICAgcGFyYW1ldGVycy5hcHBlbmQobnVtYmVyUGFyYW1ldGVyKTsKKyAgICAgICAgICAgICAg
ICAgICAgdWludDMyX3QgbnVtYmVyUGFyYW1ldGVyU2l6ZTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIobnVtYmVyUGFyYW1ldGVyU2l6ZSkpCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGRvdWJs
ZSBudW1iZXJQYXJhbWV0ZXJWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3Qg
aiA9IDA7IGogPCBudW1iZXJQYXJhbWV0ZXJTaXplOyArK2opIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG51bWJlclBhcmFtZXRlclZhbHVlKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
ICAgICBudW1iZXJQYXJhbWV0ZXItPmFkZFZhbHVlKG51bWJlclBhcmFtZXRlclZhbHVlKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6OlRS
QU5TRk9STTogeworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyVHJhbnNm
b3JtUGFyYW1ldGVyPiB0cmFuc2Zvcm1QYXJhbWV0ZXIgPSBDdXN0b21GaWx0ZXJUcmFuc2Zvcm1Q
YXJhbWV0ZXI6OmNyZWF0ZShuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5h
cHBlbmQodHJhbnNmb3JtUGFyYW1ldGVyKTsKKyAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jt
T3BlcmF0aW9ucyBvcGVyYXRpb25zOworICAgICAgICAgICAgICAgICAgICBpZiAoIUFyZ3VtZW50
Q29kZXI8VHJhbnNmb3JtT3BlcmF0aW9ucz46OmRlY29kZShkZWNvZGVyLCBvcGVyYXRpb25zKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgdHJhbnNmb3JtUGFyYW1ldGVyLT5zZXRPcGVyYXRpb25zKG9wZXJhdGlvbnMpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICB1bnNpZ25lZCBtZXNoUm93czsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIG1lc2hDb2x1bW5zOworICAgICAgICAgICAgQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uOjpNZXNoQm94VHlwZSBtZXNoQm94VHlwZTsKKyAgICAgICAgICAgIEN1c3RvbUZpbHRl
ck9wZXJhdGlvbjo6TWVzaFR5cGUgbWVzaFR5cGU7CisgICAgICAgICAgICBpZiAoIWRlY29kZXIt
PmRlY29kZShtZXNoUm93cykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUobWVzaENvbHVtbnMpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShtZXNo
Qm94VHlwZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGVFbnVtKG1lc2hUeXBlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgICAgIGZpbHRlciA9IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6Y3Jl
YXRlKHByb2dyYW0sIHBhcmFtZXRlcnMsIG1lc2hSb3dzLCBtZXNoQ29sdW1ucywgbWVzaEJveFR5
cGUsIG1lc2hUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisjZW5kaWYKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKGZpbHRlcikKKyAgICAgICAgICAgIG9wZXJhdGlvbnMuYXBwZW5kKGZpbHRlcik7CisgICAg
fQorCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShDU1NfU0hBREVS
UykKK3ZvaWQgQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1PcGVyYXRpb25zPjo6ZW5jb2RlKEFyZ3Vt
ZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgdHJhbnNmb3Jt
T3BlcmF0aW9ucykKK3sKKyAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIodHJhbnNmb3JtT3BlcmF0
aW9ucy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNmb3JtT3BlcmF0
aW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIG9w
ZXJhdGlvbiA9IHRyYW5zZm9ybU9wZXJhdGlvbnMuYXQoaSk7CisgICAgICAgIGVuY29kZXItPmVu
Y29kZUVudW0ob3BlcmF0aW9uLT5nZXRPcGVyYXRpb25UeXBlKCkpOworCisgICAgICAgIHN3aXRj
aCAob3BlcmF0aW9uLT5nZXRPcGVyYXRpb25UeXBlKCkpIHsKKyAgICAgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OlNDQUxFX1g6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpT
Q0FMRV9ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEU6CisgICAgICAg
IGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9aOgorICAgICAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6U0NBTEVfM0Q6CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT54KCkpOwor
ICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNm
b3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+eSgpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVu
Y29kZShzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlv
biktPnooKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVy
YXRpb246OlRSQU5TTEFURV9YOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJB
TlNMQVRFX1k6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEU6Cisg
ICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWjoKKyAgICAgICAgY2Fz
ZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV8zRDoKKyAgICAgICAgICAgIEFyZ3VtZW50
Q29kZXI8TGVuZ3RoPjo6ZW5jb2RlKGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPngoKSk7CisgICAgICAgICAgICBBcmd1
bWVudENvZGVyPExlbmd0aD46OmVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxjb25zdCBUcmFu
c2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT55KCkpOworICAgICAgICAgICAg
QXJndW1lbnRDb2RlcjxMZW5ndGg+OjplbmNvZGUoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8Y29uc3Qg
VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+eigpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFOgorICAg
ICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1g6CisgICAgICAgIGNhc2UgVHJh
bnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWToKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246OlJPVEFURV8zRDoKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxj
b25zdCBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT54KCkpOworICAgICAg
ICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGNvbnN0IFJvdGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbio+KG9wZXJhdGlvbiktPnkoKSk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUo
c3RhdGljX2Nhc3Q8Y29uc3QgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+
eigpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxjb25zdCBSb3Rh
dGVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT5hbmdsZSgpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19YOgorICAgICAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19ZOgorICAgICAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6U0tFVzoKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2Fz
dDxjb25zdCBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+YW5nbGVYKCkpOwor
ICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGNvbnN0IFNrZXdUcmFuc2Zv
cm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT5hbmdsZVkoKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWDoKKyAgICAgICAgICAgIEFy
Z3VtZW50Q29kZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+OjplbmNvZGUoZW5jb2Rlciwgc3RhdGlj
X2Nhc3Q8Y29uc3QgTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+bWF0cml4
KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpNQVRSSVhfM0Q6CisgICAgICAgICAgICBBcmd1bWVudENvZGVyPFRyYW5zZm9ybWF0aW9uTWF0
cml4Pjo6ZW5jb2RlKGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0IE1hdHJpeDNEVHJhbnNmb3Jt
T3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+bWF0cml4KCkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpQRVJTUEVDVElWRToKKyAgICAgICAgICAg
IEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZW5jb2RlKGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0
IFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+cGVyc3BlY3RpdmUo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OklERU5USVRZOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpOT05FOgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKworYm9vbCBBcmd1bWVudENvZGVyPFRy
YW5zZm9ybU9wZXJhdGlvbnM+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBUcmFu
c2Zvcm1PcGVyYXRpb25zJiB0cmFuc2Zvcm1PcGVyYXRpb25zKQoreworICAgIHVpbnQzMl90IG9w
ZXJhdGlvbnNTaXplOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKG9wZXJhdGlvbnNT
aXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBvcGVyYXRpb25zU2l6ZTsgKytpKSB7CisgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3Bl
cmF0aW9uVHlwZSBvcGVyYXRpb25UeXBlOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVu
dW0ob3BlcmF0aW9uVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
c3dpdGNoIChvcGVyYXRpb25UeXBlKSB7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpTQ0FMRV9YOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWToKKyAg
ICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFOgorICAgICAgICBjYXNlIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6U0NBTEVfWjoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlNDQUxFXzNEOiB7CisgICAgICAgICAgICBkb3VibGUgeCwgeSwgejsKKyAgICAgICAgICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKHgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHkpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHopKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMub3Bl
cmF0aW9ucygpLmFwcGVuZChTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHgsIHksIHos
IG9wZXJhdGlvblR5cGUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWDoKKyAgICAgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6VFJBTlNMQVRFOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNM
QVRFX1o6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfM0Q6IHsK
KyAgICAgICAgICAgIExlbmd0aCB4LCB5LCB6OworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENv
ZGVyPExlbmd0aD46OmRlY29kZShkZWNvZGVyLCB4KSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZGVjb2RlKGRl
Y29kZXIsIHkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlm
ICghQXJndW1lbnRDb2RlcjxMZW5ndGg+OjpkZWNvZGUoZGVjb2RlciwgeikpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVy
YXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHgsIHks
IHosIG9wZXJhdGlvblR5cGUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEU6CisgICAgICAgIGNhc2UgVHJhbnNm
b3JtT3BlcmF0aW9uOjpST1RBVEVfWDoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlJPVEFURV9ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEOiB7
CisgICAgICAgICAgICBkb3VibGUgeCwgeSwgeiwgYW5nbGU7CisgICAgICAgICAgICBpZiAoIWRl
Y29kZXItPmRlY29kZSh4KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh5KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh6KSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShhbmdsZSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdHJhbnNmb3JtT3Bl
cmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3Jl
YXRlKHgsIHksIHosIGFuZ2xlLCBvcGVyYXRpb25UeXBlKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19YOgorICAg
ICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19ZOgorICAgICAgICBjYXNlIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6U0tFVzogeworICAgICAgICAgICAgZG91YmxlIGFuZ2xlWCwgYW5nbGVZ
OworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoYW5nbGVYKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShhbmds
ZVkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5zZm9y
bU9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChTa2V3VHJhbnNmb3JtT3BlcmF0aW9uOjpj
cmVhdGUoYW5nbGVYLCBhbmdsZVksIG9wZXJhdGlvblR5cGUpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVg6IHsK
KyAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKKyAgICAgICAgICAgIGlm
ICghQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShkZWNvZGVyLCBt
YXRyaXgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5z
Zm9ybU9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChNYXRyaXhUcmFuc2Zvcm1PcGVyYXRp
b246OmNyZWF0ZShtYXRyaXgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVhfM0Q6IHsKKyAgICAgICAgICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKKyAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2Rl
cjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShkZWNvZGVyLCBtYXRyaXgpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMu
b3BlcmF0aW9ucygpLmFwcGVuZChNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKG1h
dHJpeCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246OlBFUlNQRUNUSVZFOiB7CisgICAgICAgICAgICBMZW5ndGggcGVyc3Bl
Y3RpdmU7CisgICAgICAgICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZGVjb2RlKGRl
Y29kZXIsIHBlcnNwZWN0aXZlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICB0cmFuc2Zvcm1PcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoUGVyc3BlY3Rp
dmVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShwZXJzcGVjdGl2ZSkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OklERU5U
SVRZOgorICAgICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5k
KElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok5PTkU6CisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFD
RSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbj46OmVu
Y29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzU3Vy
ZmFjZVRva2VuJiB0b2tlbikKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgZW5jb2Rlci0+ZW5jb2Rl
VUludDMyKHRva2VuLmZyb250QnVmZmVySGFuZGxlKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVVSW50
MzIodG9rZW4uYmFja0J1ZmZlckhhbmRsZSk7CisjZW5kaWYKKyNpZiBPUyhMSU5VWCkKKyAgICBl
bmNvZGVyLT5lbmNvZGVVSW50MzIodG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUpOworI2VuZGlmCit9
CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbj46OmRl
Y29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRv
a2VuJiB0b2tlbikKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVV
SW50MzIodG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIodG9rZW4uYmFja0J1ZmZlckhhbmRsZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorI2lmIE9TKExJTlVYKQorICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlVUludDMyKHRva2VuLmZyb250QnVmZmVySGFuZGxlKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKworfSAvLyBu
YW1lc3BhY2UgQ29yZUlQQworI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODdiNGM1ZmU3NTI5YzU3YmVjZWZhNjIxZDhiOTExYTE2MWUyMTQ4MgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzX2gKKyNk
ZWZpbmUgQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzX2gKKworI2lmIFVTRShDT09S
RElOQVRFRF9HUkFQSElDUykKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBGbG9hdFBvaW50M0Q7CitjbGFzcyBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDsKK3N0cnVjdCBMZW5ndGg7CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCitjbGFzcyBG
aWx0ZXJPcGVyYXRpb25zOworI2VuZGlmCisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCitjbGFz
cyBUcmFuc2Zvcm1PcGVyYXRpb25zOworI2VuZGlmCisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFD
RSkKK3N0cnVjdCBHcmFwaGljc1N1cmZhY2VUb2tlbjsKKyNlbmRpZgorfQorCituYW1lc3BhY2Ug
Q29yZUlQQyB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Rmxv
YXRQb2ludDNEPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQzRCYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1
bWVudERlY29kZXIqLCBXZWJDb3JlOjpGbG9hdFBvaW50M0QmKTsKK307CisKK3RlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TGVuZ3RoPiB7CisgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6Okxlbmd0aCYpOworICAgIHN0
YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpMZW5ndGgmKTsKK307
CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VHJhbnNmb3JtYXRp
b25NYXRyaXg+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29u
c3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNv
ZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKK307
CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
QXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYpOworICAg
IHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpGaWx0ZXJPcGVy
YXRpb25zJik7Cit9OworI2VuZGlmCisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCit0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlRyYW5zZm9ybU9wZXJhdGlvbnM+IHsK
KyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6
VHJhbnNmb3JtT3BlcmF0aW9ucyYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERl
Y29kZXIqLCBXZWJDb3JlOjpUcmFuc2Zvcm1PcGVyYXRpb25zJik7Cit9OworI2VuZGlmCisKKyNp
ZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
QXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4mKTsK
KyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6R3JhcGhp
Y3NTdXJmYWNlVG9rZW4mKTsKK307CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgQ29yZUlQQwor
I2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKworI2VuZGlmIC8vIENvb3JkaW5h
dGVkR3JhcGhpY3NBcmd1bWVudENvZGVyc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDdXN0b21GaWx0ZXJQcm9ncmFtLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDdXN0b21GaWx0ZXJQcm9n
cmFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzcxMmY1YzA0ZTk3ZGJjY2JlMzlkYmEzNjg4NzgwMDRmMzcwM2Vh
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL1dlYkN1c3RvbUZpbHRlclByb2dyYW0uaApAQCAtMCwwICsxLDczIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbV9oCisjZGVmaW5lIFdl
YkN1c3RvbUZpbHRlclByb2dyYW1faAorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKSAm
JiBFTkFCTEUoQ1NTX1NIQURFUlMpCisjaW5jbHVkZSA8V2ViQ29yZS9DdXN0b21GaWx0ZXJQcm9n
cmFtLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJDdXN0b21GaWx0ZXJQcm9n
cmFtIDogcHVibGljIFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW0geworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkN1c3RvbUZpbHRlclByb2dyYW0+IGNyZWF0ZShTdHJpbmcg
dmVydGV4U2hhZGVyU3RyaW5nLCBTdHJpbmcgbV9mcmFnbWVudFNoYWRlclN0cmluZywgV2ViQ29y
ZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIG1peFNldHRpbmdzKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDdXN0b21GaWx0ZXJQcm9ncmFtKHZlcnRleFNo
YWRlclN0cmluZywgbV9mcmFnbWVudFNoYWRlclN0cmluZywgbWl4U2V0dGluZ3MpKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkZWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0
cnVlOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQ
cm9ncmFtJiBvKSBjb25zdCBPVkVSUklERQorICAgIHsKKyAgICAgICAgLy8gVGhlIGZvbGxvd2lu
ZyBjYXN0IGlzIHVnbHksIGJ1dCBXZWJDdXN0b21GaWx0ZXJQcm9ncmFtIGlzIHRoZSBzaW5nbGUg
aW1wbGVtZW50YXRpb24gb2YgQ3VzdG9tRmlsdGVyUHJvZ3JhbSBvbiBVSSBQcm9jZXNzLgorICAg
ICAgICBjb25zdCBXZWJDdXN0b21GaWx0ZXJQcm9ncmFtKiBvdGhlciA9IHN0YXRpY19jYXN0PGNv
bnN0IFdlYkN1c3RvbUZpbHRlclByb2dyYW0qPigmbyk7CisgICAgICAgIHJldHVybiBtaXhTZXR0
aW5ncygpID09IG90aGVyLT5taXhTZXR0aW5ncygpICYmIG1fdmVydGV4U2hhZGVyU3RyaW5nID09
IG90aGVyLT52ZXJ0ZXhTaGFkZXJTdHJpbmcoKSAmJiBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nID09
IG90aGVyLT5mcmFnbWVudFNoYWRlclN0cmluZygpOworICAgIH0KKworcHJvdGVjdGVkOgorICAg
IHZpcnR1YWwgU3RyaW5nIHZlcnRleFNoYWRlclN0cmluZygpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIG1fdmVydGV4U2hhZGVyU3RyaW5nOyB9CisgICAgdmlydHVhbCBTdHJpbmcgZnJhZ21lbnRT
aGFkZXJTdHJpbmcoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2ZyYWdtZW50U2hhZGVyU3Ry
aW5nOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEhhdmVDbGllbnRzKCkgT1ZFUlJJREUgeyBu
b3RpZnlDbGllbnRzKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlTGFzdENsaWVudCgp
IE9WRVJSSURFIHsgfQorCitwcml2YXRlOgorICAgIFdlYkN1c3RvbUZpbHRlclByb2dyYW0oU3Ry
aW5nIHZlcnRleFNoYWRlclN0cmluZywgU3RyaW5nIGZyYWdtZW50U2hhZGVyLCBXZWJDb3JlOjpD
dXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MgbWl4U2V0dGluZ3MpCisgICAgICAgIDogV2Vi
Q29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbShtaXhTZXR0aW5ncykKKyAgICAgICAgLCBtX3ZlcnRl
eFNoYWRlclN0cmluZyh2ZXJ0ZXhTaGFkZXJTdHJpbmcpCisgICAgICAgICwgbV9mcmFnbWVudFNo
YWRlclN0cmluZyhtX2ZyYWdtZW50U2hhZGVyU3RyaW5nKQorICAgIHsKKyAgICB9CisKKyAgICBT
dHJpbmcgbV92ZXJ0ZXhTaGFkZXJTdHJpbmc7CisgICAgU3RyaW5nIG1fZnJhZ21lbnRTaGFkZXJT
dHJpbmc7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShDT09S
RElOQVRFRF9HUkFQSElDUykgJiYgRU5BQkxFKENTU19TSEFERVJTKQorCisjZW5kaWYgLy8gV2Vi
Q3VzdG9tRmlsdGVyUHJvZ3JhbV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
U2hhcmVhYmxlU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlU3Vy
ZmFjZS5jcHAKaW5kZXggMTM2YjA5MzExMzRlNGEwODg3ZjMzODA2Y2ZmNjBiZjBlMmJhM2FhZC4u
NjcyODE2ZmM0OTAzYTJkOWUzNDg2ZDljODg5NzEyNzEzZDIyOWFjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmNwcApAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZhY2UuaCIKIAorI2luY2x1ZGUg
IkNvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggMDQxMjQ2NjdmOTU3NDY5MmU1ODcz
NTFiZmEyMGI3MmY4ZWJjYTM5Yi4uOGFlNmM4NWE3ZTNkNzUxMmRmMDE5YjdiMmVhZTVhZmRkMWM3
YTRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKQEAgLTQ5LDIwICs0OSw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJl
cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAotI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKLSNpbmNsdWRlIDxXZWJDb3JlL0FuaW1hdGlvbi5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvRmxvYXRQb2ludDNELmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9MZW5ndGguaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg+Ci0KLSNpZiBFTkFCTEUoQ1NT
X0ZJTFRFUlMpCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWx0ZXJPcGVyYXRpb25zLmg+Ci0jZW5kaWYK
LSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzU3Vy
ZmFjZS5oPgotI2VuZGlmCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC04NzIsMTcwICs4NTgsNCBAQCBib29sIEFyZ3VtZW50
Q29kZXI8S1VSTD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIEtVUkwmIHJlc3Vs
dCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
LXZvaWQgQXJndW1lbnRDb2RlcjxGbG9hdFBvaW50M0Q+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVy
KiBlbmNvZGVyLCBjb25zdCBGbG9hdFBvaW50M0QmIGZsb2F0UG9pbnQzRCkKLXsKLSAgICBTaW1w
bGVBcmd1bWVudENvZGVyPEZsb2F0UG9pbnQzRD46OmVuY29kZShlbmNvZGVyLCBmbG9hdFBvaW50
M0QpOwotfQotCi1ib29sIEFyZ3VtZW50Q29kZXI8RmxvYXRQb2ludDNEPjo6ZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciogZGVjb2RlciwgRmxvYXRQb2ludDNEJiBmbG9hdFBvaW50M0QpCi17Ci0gICAg
cmV0dXJuIFNpbXBsZUFyZ3VtZW50Q29kZXI8RmxvYXRQb2ludDNEPjo6ZGVjb2RlKGRlY29kZXIs
IGZsb2F0UG9pbnQzRCk7Ci19Ci0KLXZvaWQgQXJndW1lbnRDb2RlcjxMZW5ndGg+OjplbmNvZGUo
QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBMZW5ndGgmIGxlbmd0aCkKLXsKLSAgICBT
aW1wbGVBcmd1bWVudENvZGVyPExlbmd0aD46OmVuY29kZShlbmNvZGVyLCBsZW5ndGgpOwotfQot
Ci1ib29sIEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVj
b2RlciwgTGVuZ3RoJiBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFNpbXBsZUFyZ3VtZW50Q29kZXI8
TGVuZ3RoPjo6ZGVjb2RlKGRlY29kZXIsIGxlbmd0aCk7Ci19Ci0KLXZvaWQgQXJndW1lbnRDb2Rl
cjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1hdGlvbk1hdHJpeCkKLXsKLSAg
ICBTaW1wbGVBcmd1bWVudENvZGVyPFRyYW5zZm9ybWF0aW9uTWF0cml4Pjo6ZW5jb2RlKGVuY29k
ZXIsIHRyYW5zZm9ybWF0aW9uTWF0cml4KTsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPFRyYW5z
Zm9ybWF0aW9uTWF0cml4Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybWF0aW9uTWF0cml4KQotewotICAgIHJldHVybiBTaW1w
bGVBcmd1bWVudENvZGVyPFRyYW5zZm9ybWF0aW9uTWF0cml4Pjo6ZGVjb2RlKGRlY29kZXIsIHRy
YW5zZm9ybWF0aW9uTWF0cml4KTsKLX0KLQotI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLXZvaWQg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPjo6ZW5jb2RlKEFyZ3VtZW50
RW5jb2RlciogZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVy
cykKLXsKLSAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIoZmlsdGVycy5zaXplKCkpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsdGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBjb25z
dCBGaWx0ZXJPcGVyYXRpb24qIGZpbHRlciA9IGZpbHRlcnMuYXQoaSk7Ci0gICAgICAgIEZpbHRl
ck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0eXBlID0gZmlsdGVyLT5nZXRPcGVyYXRpb25UeXBl
KCk7Ci0gICAgICAgIGVuY29kZXItPmVuY29kZUVudW0odHlwZSk7Ci0gICAgICAgIHN3aXRjaCAo
dHlwZSkgewotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFOgotICAgICAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpTQVRVUkFURToKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6
Ci0gICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVEb3VibGUoc3RhdGljX2Nhc3Q8Y29uc3QgQmFz
aWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KGZpbHRlciktPmFtb3VudCgpKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SU5WRVJUOgotICAg
ICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzoKLSAgICAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OkNPTlRSQVNUOgotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6T1BB
Q0lUWToKLSAgICAgICAgICAgIGVuY29kZXItPmVuY29kZURvdWJsZShzdGF0aWNfY2FzdDxjb25z
dCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyKS0+YW1vdW50
KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpC
TFVSOgotICAgICAgICAgICAgQXJndW1lbnRDb2RlcjxMZW5ndGg+OjplbmNvZGUoZW5jb2Rlciwg
c3RhdGljX2Nhc3Q8Y29uc3QgQmx1ckZpbHRlck9wZXJhdGlvbio+KGZpbHRlciktPnN0ZERldmlh
dGlvbigpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6RFJPUF9TSEFET1c6IHsKLSAgICAgICAgICAgIGNvbnN0IERyb3BTaGFkb3dGaWx0ZXJPcGVy
YXRpb24qIHNoYWRvdyA9IHN0YXRpY19jYXN0PGNvbnN0IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRp
b24qPihmaWx0ZXIpOwotICAgICAgICAgICAgQXJndW1lbnRDb2RlcjxJbnRQb2ludD46OmVuY29k
ZShlbmNvZGVyLCBzaGFkb3ctPmxvY2F0aW9uKCkpOwotICAgICAgICAgICAgZW5jb2Rlci0+ZW5j
b2RlSW50MzIoc2hhZG93LT5zdGREZXZpYXRpb24oKSk7Ci0gICAgICAgICAgICBBcmd1bWVudENv
ZGVyPENvbG9yPjo6ZW5jb2RlKGVuY29kZXIsIHNoYWRvdy0+Y29sb3IoKSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0
ZXJPcGVyYXRpb25zPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29yZTo6
RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKLXsKLSAgICB1aW50MzJfdCBzaXplOwotICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKHNpemUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gPiYgb3BlcmF0aW9ucyA9IGZpbHRl
cnMub3BlcmF0aW9ucygpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kp
IHsKLSAgICAgICAgRmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHR5cGU7Ci0gICAgICAg
IFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZpbHRlcjsKLSAgICAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGVFbnVtKHR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHN3
aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFOgot
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6Ci0gICAgICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpTQVRVUkFURToKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9S
T1RBVEU6IHsKLSAgICAgICAgICAgIGRvdWJsZSB2YWx1ZTsKLSAgICAgICAgICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlRG91YmxlKHZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICBmaWx0ZXIgPSBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpj
cmVhdGUodmFsdWUsIHR5cGUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklOVkVSVDoKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246OkJSSUdIVE5FU1M6Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFT
VDoKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJVFk6IHsKLSAgICAgICAgICAg
IGRvdWJsZSB2YWx1ZTsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRG91YmxlKHZh
bHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBmaWx0ZXIg
PSBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUodmFsdWUsIHR5
cGUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0ZXJP
cGVyYXRpb246OkJMVVI6IHsKLSAgICAgICAgICAgIExlbmd0aCBsZW5ndGg7Ci0gICAgICAgICAg
ICBpZiAoIUFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZGVjb2RlKGRlY29kZXIsIGxlbmd0aCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgZmlsdGVyID0gQmx1ckZp
bHRlck9wZXJhdGlvbjo6Y3JlYXRlKGxlbmd0aCwgdHlwZSk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6IHsK
LSAgICAgICAgICAgIEludFBvaW50IGxvY2F0aW9uOwotICAgICAgICAgICAgaW50MzJfdCBzdGRE
ZXZpYXRpb247Ci0gICAgICAgICAgICBDb2xvciBjb2xvcjsKLSAgICAgICAgICAgIGlmICghQXJn
dW1lbnRDb2RlcjxJbnRQb2ludD46OmRlY29kZShkZWNvZGVyLCBsb2NhdGlvbikpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVJ
bnQzMihzdGREZXZpYXRpb24pKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIGlmICghQXJndW1lbnRDb2RlcjxDb2xvcj46OmRlY29kZShkZWNvZGVyLCBjb2xvcikp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgZmlsdGVyID0gRHJv
cFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKGxvY2F0aW9uLCBzdGREZXZpYXRpb24sIGNv
bG9yLCB0eXBlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChmaWx0ZXIp
Ci0gICAgICAgICAgICBvcGVyYXRpb25zLmFwcGVuZChmaWx0ZXIpOwotICAgIH0KLQotICAgIHJl
dHVybiB0cnVlOwotfQotI2VuZGlmCi0KLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLXZvaWQg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbj46OmVuY29kZShBcmd1
bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2Vu
JiB0b2tlbikKLXsKLSNpZiBPUyhEQVJXSU4pCi0gICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKHRv
a2VuLmZyb250QnVmZmVySGFuZGxlKTsKLSAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIodG9rZW4u
YmFja0J1ZmZlckhhbmRsZSk7Ci0jZW5kaWYKLSNpZiBPUyhMSU5VWCkKLSAgICBlbmNvZGVyLT5l
bmNvZGVVSW50MzIodG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUpOwotI2VuZGlmCi19Ci0KLWJvb2wg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbj46OmRlY29kZShBcmd1
bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuJiB0b2tl
bikKLXsKLSNpZiBPUyhEQVJXSU4pCi0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIodG9r
ZW4uZnJvbnRCdWZmZXJIYW5kbGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGVVSW50MzIodG9rZW4uYmFja0J1ZmZlckhhbmRsZSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSNlbmRpZgotI2lmIE9TKExJTlVYKQotICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlVUludDMyKHRva2VuLmZyb250QnVmZmVySGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotI2VuZGlmCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLSNlbmRpZgotCi0jZW5kaWYKLQogfSAv
LyBuYW1lc3BhY2UgQ29yZUlQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oCmluZGV4IDM0MmM4ZmI3M2Y2YTZlNDQ0MjdhYmI2YzZlM2RjNjRjZGE1ZDE5
MzIuLmI0ZGFmZTY3MTQ5NGU0Mzg3ZjM5YzdlZmJmMGNjNjdhODE3Y2I3MjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTY3LDI0ICs2Nyw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIH0KICNlbmRpZgogCi0jaWYgVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEZsb2F0UG9pbnQzRDsK
LSAgICBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKLSAgICBzdHJ1Y3QgTGVuZ3RoOwotCi0j
aWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVRva2Vu
OwotI2VuZGlmCi19Ci0KLSNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0gICAgY2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKLX0KLSNlbmRpZgotI2VuZGlmCi0KIG5h
bWVzcGFjZSBDb3JlSVBDIHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpBZmZpbmVUcmFuc2Zvcm0+IHsKQEAgLTI1OCwzOCArMjQwLDYgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpLVVJMPiB7CiAgICAgc3RhdGljIGJvb2wgZGVj
b2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OktVUkwmKTsKIH07CiAKLSNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkZsb2F0UG9pbnQzRD4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29k
ZXIqLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50M0QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNv
ZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6RmxvYXRQb2ludDNEJik7Ci19OwotCi10ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Okxlbmd0aD4gewotICAgIHN0YXRp
YyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpMZW5ndGgmKTsK
LSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6TGVuZ3Ro
Jik7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4PiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2Rl
ciosIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7Ci0gICAgc3RhdGljIGJv
b2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4
Jik7Ci19OwotCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPiB7Ci0gICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMm
KTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6Rmls
dGVyT3BlcmF0aW9ucyYpOwotfTsKLSNlbmRpZgotCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0Up
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFj
ZVRva2VuPiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuJik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2Rl
KEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuJik7Ci19Owot
I2VuZGlmCi0jZW5kaWYKLQotCiB9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCiAKICNlbmRpZiAvLyBX
ZWJDb3JlQXJndW1lbnRDb2RlcnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0
LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggZTM2YzUyOGEzZmE2NmRjOGYw
ZWYxYjc3MjA4Y2ZhMjlkZDhhNjM5Zi4uNmJlNzJhYTc2YmYxOTdkMTdiZmRjZDY2OTQ1M2MyNDBk
OTk3NmVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0xMzEsNiArMTMxLDggQEAgSEVBREVSUyArPSBcCiAg
ICAgU2hhcmVkL1dlYlVSTFJlcXVlc3QuaCBcCiAgICAgU2hhcmVkL1dlYlVSTFJlc3BvbnNlLmgg
XAogICAgIFNoYXJlZC9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBcCisgICAgU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmggXAor
ICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkN1c3RvbUZpbHRlclByb2dyYW0uaCBc
CiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCBcCiAg
ICAgU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuaCBcCiAgICAgU2hhcmVkL1BsdWdp
bnMvTlBJZGVudGlmaWVyRGF0YS5oIFwKQEAgLTQ4OCw2ICs0OTAsNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICBTaGFyZWQvV2ViVVJMUmVxdWVzdC5jcHAgXAogICAgIFNoYXJlZC9XZWJVUkxSZXNwb25z
ZS5jcHAgXAogICAgIFNoYXJlZC9XZWJXaGVlbEV2ZW50LmNwcCBcCisgICAgU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcCBcCiAg
ICAgU2hhcmVkL3F0L0FyZ3VtZW50Q29kZXJzUXQuY3BwIFwKICAgICBTaGFyZWQvcXQvTGF5ZXJU
cmVlQ29udGV4dFF0LmNwcCBcCiAgICAgU2hhcmVkL3F0L1NoYXJlYWJsZUJpdG1hcFF0LmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmgKaW5kZXggYjFl
ZjQwMWE0NDUwMjViMjJjNjdmYjZkNTBlNzA0Zjg1Y2M4OWQ2Yy4uMWEyYWJiZGYxOTIwM2M1Yjhk
MjMyNDllZDI2ZWUzM2Q4NWRiM2E1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNv
b3JkaW5hdG9yUHJveHkuaApAQCAtMjMsNiArMjMsNyBAQAogI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKIAogI2luY2x1ZGUgIkJhY2tpbmdTdG9yZS5oIgorI2luY2x1ZGUgIkNvb3JkaW5h
dGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHku
aCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJTdXJmYWNlVXBkYXRlSW5mby5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnByaQppbmRleCA1MzZiNzc5YmFiYmZlZTc4YThlZGU2NjllN2JkYWI3YThjOGM1ODY2
Li44MGNiMmZiOGU3OTVhMjgwYzQ5NzllYjJmOWFmYjM0YTM1Zjk0ZmM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBy
aQpAQCAtMTYsNiArMTYsNyBAQCBJTkNMVURFUEFUSCArPSBcCiAgICAgJCRTT1VSQ0VfRElSL1Bs
YXRmb3JtL3F0IFwKICAgICAkJFNPVVJDRV9ESVIvU2hhcmVkIFwKICAgICAkJFNPVVJDRV9ESVIv
U2hhcmVkL0FQSS9jIFwKKyAgICAkJFNPVVJDRV9ESVIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MgXAogICAgICQkU09VUkNFX0RJUi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQgXAogICAgICQkU09V
UkNFX0RJUi9TaGFyZWQvUGx1Z2lucyBcCiAgICAgJCRTT1VSQ0VfRElSL1NoYXJlZC9QbHVnaW5z
L05ldHNjYXBlIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNv
b3JkaW5hdG9yLmNwcAppbmRleCA0MTZjZjAwZTAyM2NjYjFjZTQ3MGQzOTc3M2YxMzU5ZTA3ODY4
YmU4Li5lZmYxYzkzMzAwMmZhYWNmYThkZDkwNzVkOWYyMDc4YjM1MjE3MDllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCkBAIC0y
OSw2ICsyOSw3IEBACiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUgIkxh
eWVyVHJlZUNvb3JkaW5hdG9yLmgiCiAKKyNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNzQXJn
dW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCIKICNp
bmNsdWRlICJEcmF3aW5nQXJlYUltcGwuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168625</attachid>
            <date>2012-10-14 22:22:13 -0700</date>
            <delta_ts>2012-10-15 03:44:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98733-20121015142057.patch</filename>
            <type>text/plain</type>
            <size>47595</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI3MThjM2VjMDViM2M4
YjI4ZGQ5YjBkMjczYTg0OWQ5YTA3YWEwMS4uMDkwZDA4YWM1MjUwMjg4Y2YyMGUwNWY3MTliZGQy
ZmM5YmVlMGJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIwIEBACiAyMDEyLTEwLTEyICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIFtXSzJdIEFk
ZCBDdXN0b21GaWx0ZXJPcGVyYXRpb24gc2VyaWFsaXphdGlvbiBpbiBBcmd1bWVudENvZGVyLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg3MzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uOjpwYXJhbWV0ZXJzKCkgdG8gY29uc3QgZnVuY3Rpb24sIGJlY2F1
c2UKKyAgICAgICAgdGhpcyBtZXRob2QgaXMgYSBnZXR0ZXIgYW5kIGEgY29uc3QgaW5zdGFuY2Ug
bmVlZHMgdG8gY2FsbCB0aGlzIG1ldGhvZC4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVz
ZSB0aGVyZSBpcyBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpwYXJhbWV0ZXJzKToKKworMjAxMi0xMC0xMiAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKwogICAgICAgICBbQ1NTIFNo
YWRlcnNdIEltcGxlbWVudCBvdmVybGF5LCBjb2xvci1kb2RnZSwgY29sb3ItYnVybiwgaGFyZC1s
aWdodCwgc29mdC1saWdodCBibGVuZCBtb2Rlcy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NTA0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlNDU0M2I3NDhjNDkw
N2MxNmFlNjhiNDQwOWM4NTZhNzhkMTE3OTI4Li4wNzFhOGFmYmEwZDViNjA0ZmM3MDhlYWEyNDZh
ZWE0YjZmYTA5YjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTItMTAtMTIgIEh1
YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgW1dLMl0g
QWRkIEN1c3RvbUZpbHRlck9wZXJhdGlvbiBzZXJpYWxpemF0aW9uIGluIEFyZ3VtZW50Q29kZXIu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODczMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBcmd1
bWVudENvZGVycyBmb3IgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uIGFuZCBhbGwgZGVwZW5kZW50IGNs
YXNzZXMuCisgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzIHdpbGwgdXNlIHRoaXMgY3NzIHNo
YWRlcnMgc2VyaWFsaXphdGlvbiB3aGVuIGl0IGVuYWJsZXMgQ1NTCisgICAgICAgIFNoYWRlcnMu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb2RlIHBhdGggaXMgbm90IGFjdGl2YXRlZCB5ZXQu
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwOiBBZGRlZC4K
KyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUpOgorICAgICAg
ICAoQ29yZUlQQzo6OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJDdXN0b21GaWx0ZXJQcm9ncmFtKToKKyAgICAgICAgICAgIFdl
YkN1c3RvbUZpbHRlclByb2dyYW0gaXMgbWFkZSB0byBzZXJpYWxpemUgdGhlIGRhdGEgb2YgYQor
ICAgICAgICAgICAgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtIHRvIHRoZSBVSSBwcm9jZXNzLgor
ICAgICAgICAoV2ViS2l0OjpXZWJDdXN0b21GaWx0ZXJQcm9ncmFtOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDdXN0b21GaWx0ZXJQcm9ncmFtOjpXZWJDdXN0b21GaWx0ZXJQcm9ncmFt
KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5jcHA6CisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oOgorICAg
ICAgICAqIFdlYktpdDIucHJpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcDoKKwogMjAxMi0xMC0xNCAgU2Ft
IFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1ha2UgVXNlclNjcmlwdCBhbmQg
VXNlclN0eWxlU2hlZXQgdmFsdWUgb2JqZWN0cyB0aGF0IGFyZSBjb3B5YWJsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJP
cGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggNzg4YjNmMDE2MjZiM2Y0YWYwNTIwZGQ4YzZmMjVh
ZjQ0YTI1NDBhMy4uMGQ2NGQyMzY4Mjc3ODY0NTNkM2VhYzdhNDZkNzA1ZTk0NGYyMTNlNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtKiBwcm9ncmFtKCkgY29uc3QgeyByZXR1cm4g
bV9wcm9ncmFtLmdldCgpOyB9CiAgICAgCi0gICAgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVy
TGlzdCYgcGFyYW1ldGVycygpIHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQorICAgIGNvbnN0IEN1
c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3Bh
cmFtZXRlcnM7IH0KICAgICAKICAgICB1bnNpZ25lZCBtZXNoUm93cygpIGNvbnN0IHsgcmV0dXJu
IG1fbWVzaFJvd3M7IH0KICAgICB1bnNpZ25lZCBtZXNoQ29sdW1ucygpIGNvbnN0IHsgcmV0dXJu
IG1fbWVzaENvbHVtbnM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggMjBlN2QzNGRjODY1ODE3
NTM2ZWMwYTE3ZTdhMjk0Mzc1NzU0ZjI3OC4uOGRjNmQyM2RhMmFlMjY1MmYzODkyM2Q5MzQ4MDY3
MWI4N2U1NTI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTYsNiArNiw3IEBAIFNFVChXZWJL
aXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkIgogICAg
ICIke1dFQktJVDJfRElSfS9TaGFyZWQvQVBJIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQv
QVBJL2MiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzIgog
ICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1NoYXJlZC9QbHVnaW5zIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvUGx1Z2lu
cy9OZXRzY2FwZSIKQEAgLTIxMyw2ICsyMTQsOCBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAg
U2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCiAgICAgU2hhcmVkL0FQSS9jL1dLVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmNwcAogCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcAorCiAgICAgU2hhcmVkL1BsdWdpbnMv
TlBJZGVudGlmaWVyRGF0YS5jcHAKICAgICBTaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VS
ZWNlaXZlci5jcHAKICAgICBTaGFyZWQvUGx1Z2lucy9OUE9iamVjdFByb3h5LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTVhMzBmYzMwNGFiMzQyNjI3ZmIxOGEwMmRmMGVmYWY5OWMyNWY5YgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKQEAgLTAsMCArMSw1MzUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNz
QXJndW1lbnRDb2RlcnMuaCIKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FuaW1hdGlv
bi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0
UG9pbnQzRC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9pbnQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0xlbmd0aC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXguaD4K
KworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbHRlck9wZXJh
dGlvbnMuaD4KKyNlbmRpZgorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorI2luY2x1ZGUgIldl
YkN1c3RvbUZpbHRlclByb2dyYW0uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0N1c3RvbUZpbHRlckFy
cmF5UGFyYW1ldGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DdXN0b21GaWx0ZXJOdW1iZXJQYXJh
bWV0ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
Q3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JZGVu
dGl0eVRyYW5zZm9ybU9wZXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWF0cml4M0RUcmFu
c2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01hdHJpeFRyYW5zZm9ybU9wZXJh
dGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24u
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RyYW5zbGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbi5oPgorI2VuZGlmCisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
KyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzU3VyZmFjZS5oPgorI2VuZGlmCisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIENv
cmVJUEMgeworCit2b2lkIEFyZ3VtZW50Q29kZXI8RmxvYXRQb2ludDNEPjo6ZW5jb2RlKEFyZ3Vt
ZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgRmxvYXRQb2ludDNEJiBmbG9hdFBvaW50M0QpCit7
CisgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxGbG9hdFBvaW50M0Q+OjplbmNvZGUoZW5jb2Rlciwg
ZmxvYXRQb2ludDNEKTsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPEZsb2F0UG9pbnQzRD46OmRl
Y29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIEZsb2F0UG9pbnQzRCYgZmxvYXRQb2ludDNE
KQoreworICAgIHJldHVybiBTaW1wbGVBcmd1bWVudENvZGVyPEZsb2F0UG9pbnQzRD46OmRlY29k
ZShkZWNvZGVyLCBmbG9hdFBvaW50M0QpOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8TGVuZ3Ro
Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgTGVuZ3RoJiBsZW5ndGgp
Cit7CisgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxMZW5ndGg+OjplbmNvZGUoZW5jb2RlciwgbGVu
Z3RoKTsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPExlbmd0aD46OmRlY29kZShBcmd1bWVudERl
Y29kZXIqIGRlY29kZXIsIExlbmd0aCYgbGVuZ3RoKQoreworICAgIHJldHVybiBTaW1wbGVBcmd1
bWVudENvZGVyPExlbmd0aD46OmRlY29kZShkZWNvZGVyLCBsZW5ndGgpOworfQorCit2b2lkIEFy
Z3VtZW50Q29kZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVy
KiBlbmNvZGVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtYXRpb25NYXRy
aXgpCit7CisgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmVu
Y29kZShlbmNvZGVyLCB0cmFuc2Zvcm1hdGlvbk1hdHJpeCk7Cit9CisKK2Jvb2wgQXJndW1lbnRD
b2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29k
ZXIsIFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1hdGlvbk1hdHJpeCkKK3sKKyAgICBy
ZXR1cm4gU2ltcGxlQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShk
ZWNvZGVyLCB0cmFuc2Zvcm1hdGlvbk1hdHJpeCk7Cit9CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRF
UlMpCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz46OmVuY29k
ZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlv
bnMmIGZpbHRlcnMpCit7CisgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKGZpbHRlcnMuc2l6ZSgp
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbHRlcnMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmaWx0ZXIgPSBmaWx0ZXJzLmF0KGkpOworICAg
ICAgICBGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHlwZSA9IGZpbHRlci0+Z2V0T3Bl
cmF0aW9uVHlwZSgpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGVFbnVtKHR5cGUpOworICAgICAg
ICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FM
RToKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOgorICAgICAgICBjYXNlIEZp
bHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpI
VUVfUk9UQVRFOgorICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlRG91YmxlKHN0YXRpY19jYXN0
PGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIpLT5hbW91bnQo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklO
VkVSVDoKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6CisgICAgICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDoKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246Ok9QQUNJVFk6CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVEb3VibGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbio+KGZpbHRl
ciktPmFtb3VudCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZpbHRlck9w
ZXJhdGlvbjo6QkxVUjoKKyAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZW5jb2Rl
KGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIp
LT5zdGREZXZpYXRpb24oKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOiB7CisgICAgICAgICAgICBjb25zdCBEcm9wU2hhZG93
RmlsdGVyT3BlcmF0aW9uKiBzaGFkb3cgPSBzdGF0aWNfY2FzdDxjb25zdCBEcm9wU2hhZG93Rmls
dGVyT3BlcmF0aW9uKj4oZmlsdGVyKTsKKyAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8SW50UG9p
bnQ+OjplbmNvZGUoZW5jb2Rlciwgc2hhZG93LT5sb2NhdGlvbigpKTsKKyAgICAgICAgICAgIGVu
Y29kZXItPmVuY29kZUludDMyKHNoYWRvdy0+c3RkRGV2aWF0aW9uKCkpOworICAgICAgICAgICAg
QXJndW1lbnRDb2RlcjxDb2xvcj46OmVuY29kZShlbmNvZGVyLCBzaGFkb3ctPmNvbG9yKCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisg
ICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDVVNUT006IHsKKyAgICAgICAgICAgIGNvbnN0
IEN1c3RvbUZpbHRlck9wZXJhdGlvbiogY3VzdG9tT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8Y29u
c3QgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyKTsKKworICAgICAgICAgICAgQVNTRVJU
KGN1c3RvbU9wZXJhdGlvbi0+cHJvZ3JhbSgpKTsKKyAgICAgICAgICAgIFJlZlB0cjxDdXN0b21G
aWx0ZXJQcm9ncmFtPiBwcm9ncmFtID0gY3VzdG9tT3BlcmF0aW9uLT5wcm9ncmFtKCk7CisgICAg
ICAgICAgICBBU1NFUlQocHJvZ3JhbS0+aXNMb2FkZWQoKSk7CisgICAgICAgICAgICBDdXN0b21G
aWx0ZXJQcm9ncmFtSW5mbyBwcm9ncmFtSW5mbyA9IHByb2dyYW0tPnByb2dyYW1JbmZvKCk7Cisg
ICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUocHJvZ3JhbUluZm8udmVydGV4U2hhZGVyU3RyaW5n
KCkpOworICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHByb2dyYW1JbmZvLmZyYWdtZW50U2hh
ZGVyU3RyaW5nKCkpOworICAgICAgICAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdz
IG1peFNldHRpbmdzID0gcHJvZ3JhbUluZm8ubWl4U2V0dGluZ3MoKTsKKyAgICAgICAgICAgIGVu
Y29kZXItPmVuY29kZShtaXhTZXR0aW5ncy5lbmFibGVkKTsKKyAgICAgICAgICAgIGVuY29kZXIt
PmVuY29kZUVudW0obWl4U2V0dGluZ3MuYmxlbmRNb2RlKTsKKyAgICAgICAgICAgIGVuY29kZXIt
PmVuY29kZUVudW0obWl4U2V0dGluZ3MuY29tcG9zaXRlT3BlcmF0b3IpOworCisgICAgICAgICAg
ICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0IHBhcmFtZXRlcnMgPSBjdXN0b21PcGVyYXRpb24t
PnBhcmFtZXRlcnMoKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZVVJbnQzMihwYXJhbWV0
ZXJzLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRl
cnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyUGFy
YW1ldGVyPiBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJzW2ldOworICAgICAgICAgICAgICAgIGVuY29k
ZXItPmVuY29kZShwYXJhbWV0ZXItPm5hbWUoKSk7CisgICAgICAgICAgICAgICAgZW5jb2Rlci0+
ZW5jb2RlRW51bShwYXJhbWV0ZXItPnBhcmFtZXRlclR5cGUoKSk7CisKKyAgICAgICAgICAgICAg
ICBzd2l0Y2ggKHBhcmFtZXRlci0+cGFyYW1ldGVyVHlwZSgpKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6OkFSUkFZOiB7CisgICAgICAgICAgICAgICAgICAg
IEN1c3RvbUZpbHRlckFycmF5UGFyYW1ldGVyKiBhcnJheVBhcmFtZXRlciA9IHN0YXRpY19jYXN0
PEN1c3RvbUZpbHRlckFycmF5UGFyYW1ldGVyKj4ocGFyYW1ldGVyLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKGFycmF5UGFyYW1ldGVyLT5zaXplKCkp
OworICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGFycmF5UGFyYW1l
dGVyLT5zaXplKCk7ICsraikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZXItPmVuY29k
ZShhcnJheVBhcmFtZXRlci0+dmFsdWVBdChqKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEN1c3RvbUZpbHRlclBh
cmFtZXRlcjo6TlVNQkVSOiB7CisgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpbHRlck51bWJl
clBhcmFtZXRlciogbnVibWVyUGFyYW1ldGVyID0gc3RhdGljX2Nhc3Q8Q3VzdG9tRmlsdGVyTnVt
YmVyUGFyYW1ldGVyKj4ocGFyYW1ldGVyLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW5j
b2Rlci0+ZW5jb2RlVUludDMyKG51Ym1lclBhcmFtZXRlci0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBudWJtZXJQYXJhbWV0ZXItPnNpemUoKTsg
KytqKQorICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKG51Ym1lclBhcmFt
ZXRlci0+dmFsdWVBdChqKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEN1c3RvbUZpbHRlclBhcmFtZXRlcjo6VFJB
TlNGT1JNOiB7CisgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFt
ZXRlciogdHJhbnNmb3JtUGFyYW1ldGVyID0gc3RhdGljX2Nhc3Q8Q3VzdG9tRmlsdGVyVHJhbnNm
b3JtUGFyYW1ldGVyKj4ocGFyYW1ldGVyLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgQXJn
dW1lbnRDb2RlcjxUcmFuc2Zvcm1PcGVyYXRpb25zPjo6ZW5jb2RlKGVuY29kZXIsIHRyYW5zZm9y
bVBhcmFtZXRlci0+b3BlcmF0aW9ucygpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKGN1c3RvbU9wZXJhdGlvbi0+bWVzaFJvd3MoKSk7Cisg
ICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUoY3VzdG9tT3BlcmF0aW9uLT5tZXNoQ29sdW1ucygp
KTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUVudW0oY3VzdG9tT3BlcmF0aW9uLT5tZXNo
Qm94VHlwZSgpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUVudW0oY3VzdG9tT3BlcmF0
aW9uLT5tZXNoVHlwZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisjZW5kaWYK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQor
fQorCitib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz46OmRlY29k
ZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmIGZp
bHRlcnMpCit7CisgICAgdWludDMyX3Qgc2l6ZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJ
bnQzMihzaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVmVjdG9yPFJlZlB0cjxG
aWx0ZXJPcGVyYXRpb24+ID4mIG9wZXJhdGlvbnMgPSBmaWx0ZXJzLm9wZXJhdGlvbnMoKTsKKwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIEZpbHRlck9w
ZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0eXBlOworICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0
aW9uPiBmaWx0ZXI7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bSh0eXBlKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAg
ICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRToKKyAgICAgICAgY2FzZSBGaWx0ZXJP
cGVyYXRpb246OlNFUElBOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6
CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpIVUVfUk9UQVRFOiB7CisgICAgICAgICAg
ICBkb3VibGUgdmFsdWU7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZURvdWJsZSh2
YWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZmlsdGVy
ID0gQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKHZhbHVlLCB0eXBlKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpJTlZFUlQ6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOgor
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q09OVFJBU1Q6CisgICAgICAgIGNhc2UgRmls
dGVyT3BlcmF0aW9uOjpPUEFDSVRZOiB7CisgICAgICAgICAgICBkb3VibGUgdmFsdWU7CisgICAg
ICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZURvdWJsZSh2YWx1ZSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZmlsdGVyID0gQmFzaWNDb21wb25lbnRUcmFu
c2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKHZhbHVlLCB0eXBlKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOiB7Cisg
ICAgICAgICAgICBMZW5ndGggbGVuZ3RoOworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVy
PExlbmd0aD46OmRlY29kZShkZWNvZGVyLCBsZW5ndGgpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIGZpbHRlciA9IEJsdXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0
ZShsZW5ndGgsIHR5cGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOiB7CisgICAgICAgICAgICBJbnRQb2lu
dCBsb2NhdGlvbjsKKyAgICAgICAgICAgIGludDMyX3Qgc3RkRGV2aWF0aW9uOworICAgICAgICAg
ICAgQ29sb3IgY29sb3I7CisgICAgICAgICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8SW50UG9pbnQ+
OjpkZWNvZGUoZGVjb2RlciwgbG9jYXRpb24pKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlSW50MzIoc3RkRGV2aWF0aW9uKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIUFyZ3VtZW50
Q29kZXI8Q29sb3I+OjpkZWNvZGUoZGVjb2RlciwgY29sb3IpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIGZpbHRlciA9IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRp
b246OmNyZWF0ZShsb2NhdGlvbiwgc3RkRGV2aWF0aW9uLCBjb2xvciwgdHlwZSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICAgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246OkNVU1RPTTogeworICAgICAgICAgICAgU3RyaW5nIHZlcnRl
eFNoYWRlclN0cmluZzsKKyAgICAgICAgICAgIFN0cmluZyBmcmFnbWVudFNoYWRlclN0cmluZzsK
KyAgICAgICAgICAgIEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyBtaXhTZXR0aW5nczsK
KyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHZlcnRleFNoYWRlclN0cmluZykpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoZnJhZ21lbnRTaGFkZXJTdHJpbmcpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG1peFNldHRpbmdzLmVuYWJsZWQp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlRW51bShtaXhTZXR0aW5ncy5ibGVuZE1vZGUpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShtaXhTZXR0
aW5ncy5jb21wb3NpdGVPcGVyYXRvcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgUmVmUHRyPEN1c3RvbUZpbHRlclByb2dyYW0+IHByb2dyYW0gPSBXZWJDdXN0
b21GaWx0ZXJQcm9ncmFtOjpjcmVhdGUodmVydGV4U2hhZGVyU3RyaW5nLCBmcmFnbWVudFNoYWRl
clN0cmluZywgbWl4U2V0dGluZ3MpOworCisgICAgICAgICAgICB1aW50MzJfdCBwYXJhbWV0ZXJz
U2l6ZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKHBhcmFtZXRlcnNT
aXplKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIEN1c3Rv
bUZpbHRlclBhcmFtZXRlckxpc3QgcGFyYW1ldGVycyhwYXJhbWV0ZXJzU2l6ZSk7CisgICAgICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnNTaXplOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICBTdHJpbmcgbmFtZTsKKyAgICAgICAgICAgICAgICBDdXN0b21GaWx0ZXJQYXJh
bWV0ZXI6OlBhcmFtZXRlclR5cGUgcGFyYW1ldGVyVHlwZTsKKyAgICAgICAgICAgICAgICBpZiAo
IWRlY29kZXItPmRlY29kZShuYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShwYXJhbWV0ZXJUeXBl
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAg
c3dpdGNoIChwYXJhbWV0ZXJUeXBlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBDdXN0b21GaWx0
ZXJQYXJhbWV0ZXI6OkFSUkFZOiB7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxDdXN0b21G
aWx0ZXJBcnJheVBhcmFtZXRlcj4gYXJyYXlQYXJhbWV0ZXIgPSBDdXN0b21GaWx0ZXJBcnJheVBh
cmFtZXRlcjo6Y3JlYXRlKG5hbWUpOworICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFw
cGVuZChhcnJheVBhcmFtZXRlcik7CisgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFycmF5
UGFyYW1ldGVyU2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVV
SW50MzIoYXJyYXlQYXJhbWV0ZXJTaXplKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIGFycmF5UGFyYW1ldGVyVmFsdWU7
CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgYXJyYXlQYXJhbWV0
ZXJTaXplOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlKGFycmF5UGFyYW1ldGVyVmFsdWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5UGFyYW1ldGVyLT5hZGRW
YWx1ZShhcnJheVBhcmFtZXRlclZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
Y2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6Ok5VTUJFUjogeworICAgICAgICAgICAgICAgICAg
ICBSZWZQdHI8Q3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyPiBudW1iZXJQYXJhbWV0ZXIgPSBD
dXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXI6OmNyZWF0ZShuYW1lKTsKKyAgICAgICAgICAgICAg
ICAgICAgcGFyYW1ldGVycy5hcHBlbmQobnVtYmVyUGFyYW1ldGVyKTsKKyAgICAgICAgICAgICAg
ICAgICAgdWludDMyX3QgbnVtYmVyUGFyYW1ldGVyU2l6ZTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIobnVtYmVyUGFyYW1ldGVyU2l6ZSkpCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGRvdWJs
ZSBudW1iZXJQYXJhbWV0ZXJWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3Qg
aiA9IDA7IGogPCBudW1iZXJQYXJhbWV0ZXJTaXplOyArK2opIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG51bWJlclBhcmFtZXRlclZhbHVlKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
ICAgICBudW1iZXJQYXJhbWV0ZXItPmFkZFZhbHVlKG51bWJlclBhcmFtZXRlclZhbHVlKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6OlRS
QU5TRk9STTogeworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyVHJhbnNm
b3JtUGFyYW1ldGVyPiB0cmFuc2Zvcm1QYXJhbWV0ZXIgPSBDdXN0b21GaWx0ZXJUcmFuc2Zvcm1Q
YXJhbWV0ZXI6OmNyZWF0ZShuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5h
cHBlbmQodHJhbnNmb3JtUGFyYW1ldGVyKTsKKyAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jt
T3BlcmF0aW9ucyBvcGVyYXRpb25zOworICAgICAgICAgICAgICAgICAgICBpZiAoIUFyZ3VtZW50
Q29kZXI8VHJhbnNmb3JtT3BlcmF0aW9ucz46OmRlY29kZShkZWNvZGVyLCBvcGVyYXRpb25zKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgdHJhbnNmb3JtUGFyYW1ldGVyLT5zZXRPcGVyYXRpb25zKG9wZXJhdGlvbnMpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICB1bnNpZ25lZCBtZXNoUm93czsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIG1lc2hDb2x1bW5zOworICAgICAgICAgICAgQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uOjpNZXNoQm94VHlwZSBtZXNoQm94VHlwZTsKKyAgICAgICAgICAgIEN1c3RvbUZpbHRl
ck9wZXJhdGlvbjo6TWVzaFR5cGUgbWVzaFR5cGU7CisgICAgICAgICAgICBpZiAoIWRlY29kZXIt
PmRlY29kZShtZXNoUm93cykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUobWVzaENvbHVtbnMpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShtZXNo
Qm94VHlwZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGVFbnVtKG1lc2hUeXBlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgICAgIGZpbHRlciA9IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6Y3Jl
YXRlKHByb2dyYW0sIHBhcmFtZXRlcnMsIG1lc2hSb3dzLCBtZXNoQ29sdW1ucywgbWVzaEJveFR5
cGUsIG1lc2hUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisjZW5kaWYKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKGZpbHRlcikKKyAgICAgICAgICAgIG9wZXJhdGlvbnMuYXBwZW5kKGZpbHRlcik7CisgICAg
fQorCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShDU1NfU0hBREVS
UykKK3ZvaWQgQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1PcGVyYXRpb25zPjo6ZW5jb2RlKEFyZ3Vt
ZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgdHJhbnNmb3Jt
T3BlcmF0aW9ucykKK3sKKyAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIodHJhbnNmb3JtT3BlcmF0
aW9ucy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNmb3JtT3BlcmF0
aW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIG9w
ZXJhdGlvbiA9IHRyYW5zZm9ybU9wZXJhdGlvbnMuYXQoaSk7CisgICAgICAgIGVuY29kZXItPmVu
Y29kZUVudW0ob3BlcmF0aW9uLT5nZXRPcGVyYXRpb25UeXBlKCkpOworCisgICAgICAgIHN3aXRj
aCAob3BlcmF0aW9uLT5nZXRPcGVyYXRpb25UeXBlKCkpIHsKKyAgICAgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OlNDQUxFX1g6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpT
Q0FMRV9ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEU6CisgICAgICAg
IGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9aOgorICAgICAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6U0NBTEVfM0Q6CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT54KCkpOwor
ICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNm
b3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+eSgpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVu
Y29kZShzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlv
biktPnooKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVy
YXRpb246OlRSQU5TTEFURV9YOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJB
TlNMQVRFX1k6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEU6Cisg
ICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWjoKKyAgICAgICAgY2Fz
ZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV8zRDoKKyAgICAgICAgICAgIEFyZ3VtZW50
Q29kZXI8TGVuZ3RoPjo6ZW5jb2RlKGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPngoKSk7CisgICAgICAgICAgICBBcmd1
bWVudENvZGVyPExlbmd0aD46OmVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxjb25zdCBUcmFu
c2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT55KCkpOworICAgICAgICAgICAg
QXJndW1lbnRDb2RlcjxMZW5ndGg+OjplbmNvZGUoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8Y29uc3Qg
VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+eigpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFOgorICAg
ICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1g6CisgICAgICAgIGNhc2UgVHJh
bnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWToKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246OlJPVEFURV8zRDoKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxj
b25zdCBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT54KCkpOworICAgICAg
ICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGNvbnN0IFJvdGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbio+KG9wZXJhdGlvbiktPnkoKSk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUo
c3RhdGljX2Nhc3Q8Y29uc3QgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+
eigpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxjb25zdCBSb3Rh
dGVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT5hbmdsZSgpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19YOgorICAgICAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19ZOgorICAgICAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6U0tFVzoKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2Fz
dDxjb25zdCBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+YW5nbGVYKCkpOwor
ICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGNvbnN0IFNrZXdUcmFuc2Zv
cm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT5hbmdsZVkoKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWDoKKyAgICAgICAgICAgIEFy
Z3VtZW50Q29kZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+OjplbmNvZGUoZW5jb2Rlciwgc3RhdGlj
X2Nhc3Q8Y29uc3QgTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+bWF0cml4
KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpNQVRSSVhfM0Q6CisgICAgICAgICAgICBBcmd1bWVudENvZGVyPFRyYW5zZm9ybWF0aW9uTWF0
cml4Pjo6ZW5jb2RlKGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0IE1hdHJpeDNEVHJhbnNmb3Jt
T3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+bWF0cml4KCkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpQRVJTUEVDVElWRToKKyAgICAgICAgICAg
IEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZW5jb2RlKGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0
IFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+cGVyc3BlY3RpdmUo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OklERU5USVRZOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpOT05FOgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKworYm9vbCBBcmd1bWVudENvZGVyPFRy
YW5zZm9ybU9wZXJhdGlvbnM+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBUcmFu
c2Zvcm1PcGVyYXRpb25zJiB0cmFuc2Zvcm1PcGVyYXRpb25zKQoreworICAgIHVpbnQzMl90IG9w
ZXJhdGlvbnNTaXplOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKG9wZXJhdGlvbnNT
aXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBvcGVyYXRpb25zU2l6ZTsgKytpKSB7CisgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3Bl
cmF0aW9uVHlwZSBvcGVyYXRpb25UeXBlOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVu
dW0ob3BlcmF0aW9uVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
c3dpdGNoIChvcGVyYXRpb25UeXBlKSB7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpTQ0FMRV9YOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWToKKyAg
ICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFOgorICAgICAgICBjYXNlIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6U0NBTEVfWjoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlNDQUxFXzNEOiB7CisgICAgICAgICAgICBkb3VibGUgeCwgeSwgejsKKyAgICAgICAgICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKHgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHkpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHopKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMub3Bl
cmF0aW9ucygpLmFwcGVuZChTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHgsIHksIHos
IG9wZXJhdGlvblR5cGUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWDoKKyAgICAgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6VFJBTlNMQVRFOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNM
QVRFX1o6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfM0Q6IHsK
KyAgICAgICAgICAgIExlbmd0aCB4LCB5LCB6OworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENv
ZGVyPExlbmd0aD46OmRlY29kZShkZWNvZGVyLCB4KSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZGVjb2RlKGRl
Y29kZXIsIHkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlm
ICghQXJndW1lbnRDb2RlcjxMZW5ndGg+OjpkZWNvZGUoZGVjb2RlciwgeikpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVy
YXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHgsIHks
IHosIG9wZXJhdGlvblR5cGUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEU6CisgICAgICAgIGNhc2UgVHJhbnNm
b3JtT3BlcmF0aW9uOjpST1RBVEVfWDoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlJPVEFURV9ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEOiB7
CisgICAgICAgICAgICBkb3VibGUgeCwgeSwgeiwgYW5nbGU7CisgICAgICAgICAgICBpZiAoIWRl
Y29kZXItPmRlY29kZSh4KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh5KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh6KSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShhbmdsZSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdHJhbnNmb3JtT3Bl
cmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3Jl
YXRlKHgsIHksIHosIGFuZ2xlLCBvcGVyYXRpb25UeXBlKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19YOgorICAg
ICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19ZOgorICAgICAgICBjYXNlIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6U0tFVzogeworICAgICAgICAgICAgZG91YmxlIGFuZ2xlWCwgYW5nbGVZ
OworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoYW5nbGVYKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShhbmds
ZVkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5zZm9y
bU9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChTa2V3VHJhbnNmb3JtT3BlcmF0aW9uOjpj
cmVhdGUoYW5nbGVYLCBhbmdsZVksIG9wZXJhdGlvblR5cGUpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVg6IHsK
KyAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKKyAgICAgICAgICAgIGlm
ICghQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShkZWNvZGVyLCBt
YXRyaXgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5z
Zm9ybU9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChNYXRyaXhUcmFuc2Zvcm1PcGVyYXRp
b246OmNyZWF0ZShtYXRyaXgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVhfM0Q6IHsKKyAgICAgICAgICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKKyAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2Rl
cjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShkZWNvZGVyLCBtYXRyaXgpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMu
b3BlcmF0aW9ucygpLmFwcGVuZChNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKG1h
dHJpeCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246OlBFUlNQRUNUSVZFOiB7CisgICAgICAgICAgICBMZW5ndGggcGVyc3Bl
Y3RpdmU7CisgICAgICAgICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZGVjb2RlKGRl
Y29kZXIsIHBlcnNwZWN0aXZlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICB0cmFuc2Zvcm1PcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoUGVyc3BlY3Rp
dmVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShwZXJzcGVjdGl2ZSkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OklERU5U
SVRZOgorICAgICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5k
KElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok5PTkU6CisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFD
RSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbj46OmVu
Y29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzU3Vy
ZmFjZVRva2VuJiB0b2tlbikKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgZW5jb2Rlci0+ZW5jb2Rl
VUludDMyKHRva2VuLmZyb250QnVmZmVySGFuZGxlKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVVSW50
MzIodG9rZW4uYmFja0J1ZmZlckhhbmRsZSk7CisjZW5kaWYKKyNpZiBPUyhMSU5VWCkKKyAgICBl
bmNvZGVyLT5lbmNvZGVVSW50MzIodG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUpOworI2VuZGlmCit9
CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbj46OmRl
Y29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRv
a2VuJiB0b2tlbikKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVV
SW50MzIodG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIodG9rZW4uYmFja0J1ZmZlckhhbmRsZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorI2lmIE9TKExJTlVYKQorICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlVUludDMyKHRva2VuLmZyb250QnVmZmVySGFuZGxlKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKworfSAvLyBu
YW1lc3BhY2UgQ29yZUlQQworI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODdiNGM1ZmU3NTI5YzU3YmVjZWZhNjIxZDhiOTExYTE2MWUyMTQ4MgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzX2gKKyNk
ZWZpbmUgQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzX2gKKworI2lmIFVTRShDT09S
RElOQVRFRF9HUkFQSElDUykKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBGbG9hdFBvaW50M0Q7CitjbGFzcyBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDsKK3N0cnVjdCBMZW5ndGg7CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCitjbGFzcyBG
aWx0ZXJPcGVyYXRpb25zOworI2VuZGlmCisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCitjbGFz
cyBUcmFuc2Zvcm1PcGVyYXRpb25zOworI2VuZGlmCisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFD
RSkKK3N0cnVjdCBHcmFwaGljc1N1cmZhY2VUb2tlbjsKKyNlbmRpZgorfQorCituYW1lc3BhY2Ug
Q29yZUlQQyB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Rmxv
YXRQb2ludDNEPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQzRCYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1
bWVudERlY29kZXIqLCBXZWJDb3JlOjpGbG9hdFBvaW50M0QmKTsKK307CisKK3RlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TGVuZ3RoPiB7CisgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6Okxlbmd0aCYpOworICAgIHN0
YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpMZW5ndGgmKTsKK307
CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VHJhbnNmb3JtYXRp
b25NYXRyaXg+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29u
c3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNv
ZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKK307
CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
QXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYpOworICAg
IHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpGaWx0ZXJPcGVy
YXRpb25zJik7Cit9OworI2VuZGlmCisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCit0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlRyYW5zZm9ybU9wZXJhdGlvbnM+IHsK
KyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6
VHJhbnNmb3JtT3BlcmF0aW9ucyYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERl
Y29kZXIqLCBXZWJDb3JlOjpUcmFuc2Zvcm1PcGVyYXRpb25zJik7Cit9OworI2VuZGlmCisKKyNp
ZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
QXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4mKTsK
KyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6R3JhcGhp
Y3NTdXJmYWNlVG9rZW4mKTsKK307CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgQ29yZUlQQwor
I2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKworI2VuZGlmIC8vIENvb3JkaW5h
dGVkR3JhcGhpY3NBcmd1bWVudENvZGVyc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDdXN0b21GaWx0ZXJQcm9ncmFtLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDdXN0b21GaWx0ZXJQcm9n
cmFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYzcxMmY1YzA0ZTk3ZGJjY2JlMzlkYmEzNjg4NzgwMDRmMzcwM2Vh
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL1dlYkN1c3RvbUZpbHRlclByb2dyYW0uaApAQCAtMCwwICsxLDczIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbV9oCisjZGVmaW5lIFdl
YkN1c3RvbUZpbHRlclByb2dyYW1faAorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKSAm
JiBFTkFCTEUoQ1NTX1NIQURFUlMpCisjaW5jbHVkZSA8V2ViQ29yZS9DdXN0b21GaWx0ZXJQcm9n
cmFtLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJDdXN0b21GaWx0ZXJQcm9n
cmFtIDogcHVibGljIFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW0geworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkN1c3RvbUZpbHRlclByb2dyYW0+IGNyZWF0ZShTdHJpbmcg
dmVydGV4U2hhZGVyU3RyaW5nLCBTdHJpbmcgbV9mcmFnbWVudFNoYWRlclN0cmluZywgV2ViQ29y
ZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIG1peFNldHRpbmdzKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDdXN0b21GaWx0ZXJQcm9ncmFtKHZlcnRleFNo
YWRlclN0cmluZywgbV9mcmFnbWVudFNoYWRlclN0cmluZywgbWl4U2V0dGluZ3MpKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkZWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0
cnVlOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQ
cm9ncmFtJiBvKSBjb25zdCBPVkVSUklERQorICAgIHsKKyAgICAgICAgLy8gVGhlIGZvbGxvd2lu
ZyBjYXN0IGlzIHVnbHksIGJ1dCBXZWJDdXN0b21GaWx0ZXJQcm9ncmFtIGlzIHRoZSBzaW5nbGUg
aW1wbGVtZW50YXRpb24gb2YgQ3VzdG9tRmlsdGVyUHJvZ3JhbSBvbiBVSSBQcm9jZXNzLgorICAg
ICAgICBjb25zdCBXZWJDdXN0b21GaWx0ZXJQcm9ncmFtKiBvdGhlciA9IHN0YXRpY19jYXN0PGNv
bnN0IFdlYkN1c3RvbUZpbHRlclByb2dyYW0qPigmbyk7CisgICAgICAgIHJldHVybiBtaXhTZXR0
aW5ncygpID09IG90aGVyLT5taXhTZXR0aW5ncygpICYmIG1fdmVydGV4U2hhZGVyU3RyaW5nID09
IG90aGVyLT52ZXJ0ZXhTaGFkZXJTdHJpbmcoKSAmJiBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nID09
IG90aGVyLT5mcmFnbWVudFNoYWRlclN0cmluZygpOworICAgIH0KKworcHJvdGVjdGVkOgorICAg
IHZpcnR1YWwgU3RyaW5nIHZlcnRleFNoYWRlclN0cmluZygpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIG1fdmVydGV4U2hhZGVyU3RyaW5nOyB9CisgICAgdmlydHVhbCBTdHJpbmcgZnJhZ21lbnRT
aGFkZXJTdHJpbmcoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2ZyYWdtZW50U2hhZGVyU3Ry
aW5nOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEhhdmVDbGllbnRzKCkgT1ZFUlJJREUgeyBu
b3RpZnlDbGllbnRzKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlTGFzdENsaWVudCgp
IE9WRVJSSURFIHsgfQorCitwcml2YXRlOgorICAgIFdlYkN1c3RvbUZpbHRlclByb2dyYW0oU3Ry
aW5nIHZlcnRleFNoYWRlclN0cmluZywgU3RyaW5nIGZyYWdtZW50U2hhZGVyLCBXZWJDb3JlOjpD
dXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MgbWl4U2V0dGluZ3MpCisgICAgICAgIDogV2Vi
Q29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbShtaXhTZXR0aW5ncykKKyAgICAgICAgLCBtX3ZlcnRl
eFNoYWRlclN0cmluZyh2ZXJ0ZXhTaGFkZXJTdHJpbmcpCisgICAgICAgICwgbV9mcmFnbWVudFNo
YWRlclN0cmluZyhtX2ZyYWdtZW50U2hhZGVyU3RyaW5nKQorICAgIHsKKyAgICB9CisKKyAgICBT
dHJpbmcgbV92ZXJ0ZXhTaGFkZXJTdHJpbmc7CisgICAgU3RyaW5nIG1fZnJhZ21lbnRTaGFkZXJT
dHJpbmc7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShDT09S
RElOQVRFRF9HUkFQSElDUykgJiYgRU5BQkxFKENTU19TSEFERVJTKQorCisjZW5kaWYgLy8gV2Vi
Q3VzdG9tRmlsdGVyUHJvZ3JhbV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
U2hhcmVhYmxlU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlU3Vy
ZmFjZS5jcHAKaW5kZXggMTM2YjA5MzExMzRlNGEwODg3ZjMzODA2Y2ZmNjBiZjBlMmJhM2FhZC4u
NjcyODE2ZmM0OTAzYTJkOWUzNDg2ZDljODg5NzEyNzEzZDIyOWFjMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmNwcApAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZhY2UuaCIKIAorI2luY2x1ZGUg
IkNvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggMDQxMjQ2NjdmOTU3NDY5MmU1ODcz
NTFiZmEyMGI3MmY4ZWJjYTM5Yi4uOGFlNmM4NWE3ZTNkNzUxMmRmMDE5YjdiMmVhZTVhZmRkMWM3
YTRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENv
ZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5jcHAKQEAgLTQ5LDIwICs0OSw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dGZWF0dXJl
cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAotI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKLSNpbmNsdWRlIDxXZWJDb3JlL0FuaW1hdGlvbi5oPgotI2luY2x1ZGUg
PFdlYkNvcmUvRmxvYXRQb2ludDNELmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9MZW5ndGguaD4KLSNp
bmNsdWRlIDxXZWJDb3JlL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg+Ci0KLSNpZiBFTkFCTEUoQ1NT
X0ZJTFRFUlMpCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWx0ZXJPcGVyYXRpb25zLmg+Ci0jZW5kaWYK
LSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzU3Vy
ZmFjZS5oPgotI2VuZGlmCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC04NzIsMTcwICs4NTgsNCBAQCBib29sIEFyZ3VtZW50
Q29kZXI8S1VSTD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIEtVUkwmIHJlc3Vs
dCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
LXZvaWQgQXJndW1lbnRDb2RlcjxGbG9hdFBvaW50M0Q+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVy
KiBlbmNvZGVyLCBjb25zdCBGbG9hdFBvaW50M0QmIGZsb2F0UG9pbnQzRCkKLXsKLSAgICBTaW1w
bGVBcmd1bWVudENvZGVyPEZsb2F0UG9pbnQzRD46OmVuY29kZShlbmNvZGVyLCBmbG9hdFBvaW50
M0QpOwotfQotCi1ib29sIEFyZ3VtZW50Q29kZXI8RmxvYXRQb2ludDNEPjo6ZGVjb2RlKEFyZ3Vt
ZW50RGVjb2RlciogZGVjb2RlciwgRmxvYXRQb2ludDNEJiBmbG9hdFBvaW50M0QpCi17Ci0gICAg
cmV0dXJuIFNpbXBsZUFyZ3VtZW50Q29kZXI8RmxvYXRQb2ludDNEPjo6ZGVjb2RlKGRlY29kZXIs
IGZsb2F0UG9pbnQzRCk7Ci19Ci0KLXZvaWQgQXJndW1lbnRDb2RlcjxMZW5ndGg+OjplbmNvZGUo
QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBMZW5ndGgmIGxlbmd0aCkKLXsKLSAgICBT
aW1wbGVBcmd1bWVudENvZGVyPExlbmd0aD46OmVuY29kZShlbmNvZGVyLCBsZW5ndGgpOwotfQot
Ci1ib29sIEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVj
b2RlciwgTGVuZ3RoJiBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFNpbXBsZUFyZ3VtZW50Q29kZXI8
TGVuZ3RoPjo6ZGVjb2RlKGRlY29kZXIsIGxlbmd0aCk7Ci19Ci0KLXZvaWQgQXJndW1lbnRDb2Rl
cjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1hdGlvbk1hdHJpeCkKLXsKLSAg
ICBTaW1wbGVBcmd1bWVudENvZGVyPFRyYW5zZm9ybWF0aW9uTWF0cml4Pjo6ZW5jb2RlKGVuY29k
ZXIsIHRyYW5zZm9ybWF0aW9uTWF0cml4KTsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPFRyYW5z
Zm9ybWF0aW9uTWF0cml4Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybWF0aW9uTWF0cml4KQotewotICAgIHJldHVybiBTaW1w
bGVBcmd1bWVudENvZGVyPFRyYW5zZm9ybWF0aW9uTWF0cml4Pjo6ZGVjb2RlKGRlY29kZXIsIHRy
YW5zZm9ybWF0aW9uTWF0cml4KTsKLX0KLQotI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLXZvaWQg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPjo6ZW5jb2RlKEFyZ3VtZW50
RW5jb2RlciogZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVy
cykKLXsKLSAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIoZmlsdGVycy5zaXplKCkpOwotICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsdGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBjb25z
dCBGaWx0ZXJPcGVyYXRpb24qIGZpbHRlciA9IGZpbHRlcnMuYXQoaSk7Ci0gICAgICAgIEZpbHRl
ck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0eXBlID0gZmlsdGVyLT5nZXRPcGVyYXRpb25UeXBl
KCk7Ci0gICAgICAgIGVuY29kZXItPmVuY29kZUVudW0odHlwZSk7Ci0gICAgICAgIHN3aXRjaCAo
dHlwZSkgewotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFOgotICAgICAg
ICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpTQVRVUkFURToKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6
Ci0gICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVEb3VibGUoc3RhdGljX2Nhc3Q8Y29uc3QgQmFz
aWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KGZpbHRlciktPmFtb3VudCgpKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SU5WRVJUOgotICAg
ICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzoKLSAgICAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OkNPTlRSQVNUOgotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6T1BB
Q0lUWToKLSAgICAgICAgICAgIGVuY29kZXItPmVuY29kZURvdWJsZShzdGF0aWNfY2FzdDxjb25z
dCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyKS0+YW1vdW50
KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpC
TFVSOgotICAgICAgICAgICAgQXJndW1lbnRDb2RlcjxMZW5ndGg+OjplbmNvZGUoZW5jb2Rlciwg
c3RhdGljX2Nhc3Q8Y29uc3QgQmx1ckZpbHRlck9wZXJhdGlvbio+KGZpbHRlciktPnN0ZERldmlh
dGlvbigpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6RFJPUF9TSEFET1c6IHsKLSAgICAgICAgICAgIGNvbnN0IERyb3BTaGFkb3dGaWx0ZXJPcGVy
YXRpb24qIHNoYWRvdyA9IHN0YXRpY19jYXN0PGNvbnN0IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRp
b24qPihmaWx0ZXIpOwotICAgICAgICAgICAgQXJndW1lbnRDb2RlcjxJbnRQb2ludD46OmVuY29k
ZShlbmNvZGVyLCBzaGFkb3ctPmxvY2F0aW9uKCkpOwotICAgICAgICAgICAgZW5jb2Rlci0+ZW5j
b2RlSW50MzIoc2hhZG93LT5zdGREZXZpYXRpb24oKSk7Ci0gICAgICAgICAgICBBcmd1bWVudENv
ZGVyPENvbG9yPjo6ZW5jb2RlKGVuY29kZXIsIHNoYWRvdy0+Y29sb3IoKSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0
ZXJPcGVyYXRpb25zPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2ViQ29yZTo6
RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKLXsKLSAgICB1aW50MzJfdCBzaXplOwotICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKHNpemUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gPiYgb3BlcmF0aW9ucyA9IGZpbHRl
cnMub3BlcmF0aW9ucygpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kp
IHsKLSAgICAgICAgRmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHR5cGU7Ci0gICAgICAg
IFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZpbHRlcjsKLSAgICAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGVFbnVtKHR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHN3
aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFOgot
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6Ci0gICAgICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpTQVRVUkFURToKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9S
T1RBVEU6IHsKLSAgICAgICAgICAgIGRvdWJsZSB2YWx1ZTsKLSAgICAgICAgICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlRG91YmxlKHZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICBmaWx0ZXIgPSBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uOjpj
cmVhdGUodmFsdWUsIHR5cGUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklOVkVSVDoKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246OkJSSUdIVE5FU1M6Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFT
VDoKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJVFk6IHsKLSAgICAgICAgICAg
IGRvdWJsZSB2YWx1ZTsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRG91YmxlKHZh
bHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBmaWx0ZXIg
PSBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUodmFsdWUsIHR5
cGUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0ZXJP
cGVyYXRpb246OkJMVVI6IHsKLSAgICAgICAgICAgIExlbmd0aCBsZW5ndGg7Ci0gICAgICAgICAg
ICBpZiAoIUFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZGVjb2RlKGRlY29kZXIsIGxlbmd0aCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgZmlsdGVyID0gQmx1ckZp
bHRlck9wZXJhdGlvbjo6Y3JlYXRlKGxlbmd0aCwgdHlwZSk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6IHsK
LSAgICAgICAgICAgIEludFBvaW50IGxvY2F0aW9uOwotICAgICAgICAgICAgaW50MzJfdCBzdGRE
ZXZpYXRpb247Ci0gICAgICAgICAgICBDb2xvciBjb2xvcjsKLSAgICAgICAgICAgIGlmICghQXJn
dW1lbnRDb2RlcjxJbnRQb2ludD46OmRlY29kZShkZWNvZGVyLCBsb2NhdGlvbikpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVJ
bnQzMihzdGREZXZpYXRpb24pKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgICAgIGlmICghQXJndW1lbnRDb2RlcjxDb2xvcj46OmRlY29kZShkZWNvZGVyLCBjb2xvcikp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgZmlsdGVyID0gRHJv
cFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKGxvY2F0aW9uLCBzdGREZXZpYXRpb24sIGNv
bG9yLCB0eXBlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1
bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChmaWx0ZXIp
Ci0gICAgICAgICAgICBvcGVyYXRpb25zLmFwcGVuZChmaWx0ZXIpOwotICAgIH0KLQotICAgIHJl
dHVybiB0cnVlOwotfQotI2VuZGlmCi0KLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLXZvaWQg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbj46OmVuY29kZShBcmd1
bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2Vu
JiB0b2tlbikKLXsKLSNpZiBPUyhEQVJXSU4pCi0gICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKHRv
a2VuLmZyb250QnVmZmVySGFuZGxlKTsKLSAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIodG9rZW4u
YmFja0J1ZmZlckhhbmRsZSk7Ci0jZW5kaWYKLSNpZiBPUyhMSU5VWCkKLSAgICBlbmNvZGVyLT5l
bmNvZGVVSW50MzIodG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUpOwotI2VuZGlmCi19Ci0KLWJvb2wg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbj46OmRlY29kZShBcmd1
bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuJiB0b2tl
bikKLXsKLSNpZiBPUyhEQVJXSU4pCi0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIodG9r
ZW4uZnJvbnRCdWZmZXJIYW5kbGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFk
ZWNvZGVyLT5kZWNvZGVVSW50MzIodG9rZW4uYmFja0J1ZmZlckhhbmRsZSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSNlbmRpZgotI2lmIE9TKExJTlVYKQotICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlVUludDMyKHRva2VuLmZyb250QnVmZmVySGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotI2VuZGlmCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLSNlbmRpZgotCi0jZW5kaWYKLQogfSAv
LyBuYW1lc3BhY2UgQ29yZUlQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dl
YkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5oCmluZGV4IDM0MmM4ZmI3M2Y2YTZlNDQ0MjdhYmI2YzZlM2RjNjRjZGE1ZDE5
MzIuLmI0ZGFmZTY3MTQ5NGU0Mzg3ZjM5YzdlZmJmMGNjNjdhODE3Y2I3MjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTY3LDI0ICs2Nyw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIH0KICNlbmRpZgogCi0jaWYgVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEZsb2F0UG9pbnQzRDsK
LSAgICBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKLSAgICBzdHJ1Y3QgTGVuZ3RoOwotCi0j
aWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgc3RydWN0IEdyYXBoaWNzU3VyZmFjZVRva2Vu
OwotI2VuZGlmCi19Ci0KLSNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0gICAgY2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKLX0KLSNlbmRpZgotI2VuZGlmCi0KIG5h
bWVzcGFjZSBDb3JlSVBDIHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpBZmZpbmVUcmFuc2Zvcm0+IHsKQEAgLTI1OCwzOCArMjQwLDYgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpLVVJMPiB7CiAgICAgc3RhdGljIGJvb2wgZGVj
b2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OktVUkwmKTsKIH07CiAKLSNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkZsb2F0UG9pbnQzRD4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29k
ZXIqLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50M0QmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNv
ZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6RmxvYXRQb2ludDNEJik7Ci19OwotCi10ZW1w
bGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Okxlbmd0aD4gewotICAgIHN0YXRp
YyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpMZW5ndGgmKTsK
LSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6TGVuZ3Ro
Jik7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4PiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2Rl
ciosIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7Ci0gICAgc3RhdGljIGJv
b2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4
Jik7Ci19OwotCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJn
dW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPiB7Ci0gICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMm
KTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6Rmls
dGVyT3BlcmF0aW9ucyYpOwotfTsKLSNlbmRpZgotCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0Up
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFj
ZVRva2VuPiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0
IFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuJik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2Rl
KEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuJik7Ci19Owot
I2VuZGlmCi0jZW5kaWYKLQotCiB9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCiAKICNlbmRpZiAvLyBX
ZWJDb3JlQXJndW1lbnRDb2RlcnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0
LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggZTM2YzUyOGEzZmE2NmRjOGYw
ZWYxYjc3MjA4Y2ZhMjlkZDhhNjM5Zi4uNmJlNzJhYTc2YmYxOTdkMTdiZmRjZDY2OTQ1M2MyNDBk
OTk3NmVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0xMzEsNiArMTMxLDggQEAgSEVBREVSUyArPSBcCiAg
ICAgU2hhcmVkL1dlYlVSTFJlcXVlc3QuaCBcCiAgICAgU2hhcmVkL1dlYlVSTFJlc3BvbnNlLmgg
XAogICAgIFNoYXJlZC9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBcCisgICAgU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmggXAor
ICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkN1c3RvbUZpbHRlclByb2dyYW0uaCBc
CiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCBcCiAg
ICAgU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuaCBcCiAgICAgU2hhcmVkL1BsdWdp
bnMvTlBJZGVudGlmaWVyRGF0YS5oIFwKQEAgLTQ4OCw2ICs0OTAsNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICBTaGFyZWQvV2ViVVJMUmVxdWVzdC5jcHAgXAogICAgIFNoYXJlZC9XZWJVUkxSZXNwb25z
ZS5jcHAgXAogICAgIFNoYXJlZC9XZWJXaGVlbEV2ZW50LmNwcCBcCisgICAgU2hhcmVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcCBcCiAg
ICAgU2hhcmVkL3F0L0FyZ3VtZW50Q29kZXJzUXQuY3BwIFwKICAgICBTaGFyZWQvcXQvTGF5ZXJU
cmVlQ29udGV4dFF0LmNwcCBcCiAgICAgU2hhcmVkL3F0L1NoYXJlYWJsZUJpdG1hcFF0LmNwcCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmgKaW5kZXggYjFl
ZjQwMWE0NDUwMjViMjJjNjdmYjZkNTBlNzA0Zjg1Y2M4OWQ2Yy4uMWEyYWJiZGYxOTIwM2M1Yjhk
MjMyNDllZDI2ZWUzM2Q4NWRiM2E1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNv
b3JkaW5hdG9yUHJveHkuaApAQCAtMjMsNiArMjMsNyBAQAogI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKIAogI2luY2x1ZGUgIkJhY2tpbmdTdG9yZS5oIgorI2luY2x1ZGUgIkNvb3JkaW5h
dGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHku
aCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJTdXJmYWNlVXBkYXRlSW5mby5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnByaQppbmRleCA1MzZiNzc5YmFiYmZlZTc4YThlZGU2NjllN2JkYWI3YThjOGM1ODY2
Li44MGNiMmZiOGU3OTVhMjgwYzQ5NzllYjJmOWFmYjM0YTM1Zjk0ZmM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBy
aQpAQCAtMTYsNiArMTYsNyBAQCBJTkNMVURFUEFUSCArPSBcCiAgICAgJCRTT1VSQ0VfRElSL1Bs
YXRmb3JtL3F0IFwKICAgICAkJFNPVVJDRV9ESVIvU2hhcmVkIFwKICAgICAkJFNPVVJDRV9ESVIv
U2hhcmVkL0FQSS9jIFwKKyAgICAkJFNPVVJDRV9ESVIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MgXAogICAgICQkU09VUkNFX0RJUi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQgXAogICAgICQkU09V
UkNFX0RJUi9TaGFyZWQvUGx1Z2lucyBcCiAgICAgJCRTT1VSQ0VfRElSL1NoYXJlZC9QbHVnaW5z
L05ldHNjYXBlIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNv
b3JkaW5hdG9yLmNwcAppbmRleCA0MTZjZjAwZTAyM2NjYjFjZTQ3MGQzOTc3M2YxMzU5ZTA3ODY4
YmU4Li5lZmYxYzkzMzAwMmZhYWNmYThkZDkwNzVkOWYyMDc4YjM1MjE3MDllIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCkBAIC0y
OSw2ICsyOSw3IEBACiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogI2luY2x1ZGUgIkxh
eWVyVHJlZUNvb3JkaW5hdG9yLmgiCiAKKyNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNzQXJn
dW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuaCIKICNp
bmNsdWRlICJEcmF3aW5nQXJlYUltcGwuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168668</attachid>
            <date>2012-10-15 03:42:16 -0700</date>
            <delta_ts>2012-10-15 03:47:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98733-20121015194059.patch</filename>
            <type>text/plain</type>
            <size>47601</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI3MThjM2VjMDViM2M4
YjI4ZGQ5YjBkMjczYTg0OWQ5YTA3YWEwMS4uMDkwZDA4YWM1MjUwMjg4Y2YyMGUwNWY3MTliZGQy
ZmM5YmVlMGJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIwIEBACiAyMDEyLTEwLTEyICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIFtXSzJdIEFk
ZCBDdXN0b21GaWx0ZXJPcGVyYXRpb24gc2VyaWFsaXphdGlvbiBpbiBBcmd1bWVudENvZGVyLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg3MzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uOjpwYXJhbWV0ZXJzKCkgdG8gY29uc3QgZnVuY3Rpb24sIGJlY2F1
c2UKKyAgICAgICAgdGhpcyBtZXRob2QgaXMgYSBnZXR0ZXIgYW5kIGEgY29uc3QgaW5zdGFuY2Ug
bmVlZHMgdG8gY2FsbCB0aGlzIG1ldGhvZC4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVz
ZSB0aGVyZSBpcyBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpwYXJhbWV0ZXJzKToKKworMjAxMi0xMC0xMiAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKwogICAgICAgICBbQ1NTIFNo
YWRlcnNdIEltcGxlbWVudCBvdmVybGF5LCBjb2xvci1kb2RnZSwgY29sb3ItYnVybiwgaGFyZC1s
aWdodCwgc29mdC1saWdodCBibGVuZCBtb2Rlcy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NTA0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlNDU0M2I3NDhjNDkw
N2MxNmFlNjhiNDQwOWM4NTZhNzhkMTE3OTI4Li4wNzFhOGFmYmEwZDViNjA0ZmM3MDhlYWEyNDZh
ZWE0YjZmYTA5YjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTItMTAtMTIgIEh1
YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgW1dLMl0g
QWRkIEN1c3RvbUZpbHRlck9wZXJhdGlvbiBzZXJpYWxpemF0aW9uIGluIEFyZ3VtZW50Q29kZXIu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODczMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBcmd1
bWVudENvZGVycyBmb3IgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uIGFuZCBhbGwgZGVwZW5kZW50IGNs
YXNzZXMuCisgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzIHdpbGwgdXNlIHRoaXMgY3NzIHNo
YWRlcnMgc2VyaWFsaXphdGlvbiB3aGVuIGl0IGVuYWJsZXMgQ1NTCisgICAgICAgIFNoYWRlcnMu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb2RlIHBhdGggaXMgbm90IGFjdGl2YXRlZCB5ZXQu
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwOiBBZGRlZC4K
KyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUpOgorICAgICAg
ICAoQ29yZUlQQzo6OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJDdXN0b21GaWx0ZXJQcm9ncmFtKToKKyAgICAgICAgICAgIFdl
YkN1c3RvbUZpbHRlclByb2dyYW0gaXMgbWFkZSB0byBzZXJpYWxpemUgdGhlIGRhdGEgb2YgYQor
ICAgICAgICAgICAgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtIHRvIHRoZSBVSSBwcm9jZXNzLgor
ICAgICAgICAoV2ViS2l0OjpXZWJDdXN0b21GaWx0ZXJQcm9ncmFtOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDdXN0b21GaWx0ZXJQcm9ncmFtOjpXZWJDdXN0b21GaWx0ZXJQcm9ncmFt
KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5jcHA6CisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oOgorICAg
ICAgICAqIFdlYktpdDIucHJpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcDoKKwogMjAxMi0xMC0xNCAgU2Ft
IFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1ha2UgVXNlclNjcmlwdCBhbmQg
VXNlclN0eWxlU2hlZXQgdmFsdWUgb2JqZWN0cyB0aGF0IGFyZSBjb3B5YWJsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJP
cGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggNzg4YjNmMDE2MjZiM2Y0YWYwNTIwZGQ4YzZmMjVh
ZjQ0YTI1NDBhMy4uMGQ2NGQyMzY4Mjc3ODY0NTNkM2VhYzdhNDZkNzA1ZTk0NGYyMTNlNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtKiBwcm9ncmFtKCkgY29uc3QgeyByZXR1cm4g
bV9wcm9ncmFtLmdldCgpOyB9CiAgICAgCi0gICAgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVy
TGlzdCYgcGFyYW1ldGVycygpIHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQorICAgIGNvbnN0IEN1
c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3Bh
cmFtZXRlcnM7IH0KICAgICAKICAgICB1bnNpZ25lZCBtZXNoUm93cygpIGNvbnN0IHsgcmV0dXJu
IG1fbWVzaFJvd3M7IH0KICAgICB1bnNpZ25lZCBtZXNoQ29sdW1ucygpIGNvbnN0IHsgcmV0dXJu
IG1fbWVzaENvbHVtbnM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggMjBlN2QzNGRjODY1ODE3
NTM2ZWMwYTE3ZTdhMjk0Mzc1NzU0ZjI3OC4uOGRjNmQyM2RhMmFlMjY1MmYzODkyM2Q5MzQ4MDY3
MWI4N2U1NTI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTYsNiArNiw3IEBAIFNFVChXZWJL
aXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkIgogICAg
ICIke1dFQktJVDJfRElSfS9TaGFyZWQvQVBJIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQv
QVBJL2MiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzIgog
ICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1NoYXJlZC9QbHVnaW5zIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvUGx1Z2lu
cy9OZXRzY2FwZSIKQEAgLTIxMyw2ICsyMTQsOCBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAg
U2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCiAgICAgU2hhcmVkL0FQSS9jL1dLVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmNwcAogCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcAorCiAgICAgU2hhcmVkL1BsdWdpbnMv
TlBJZGVudGlmaWVyRGF0YS5jcHAKICAgICBTaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VS
ZWNlaXZlci5jcHAKICAgICBTaGFyZWQvUGx1Z2lucy9OUE9iamVjdFByb3h5LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTVhMzBmYzMwNGFiMzQyNjI3ZmIxOGEwMmRmMGVmYWY5OWMyNWY5YgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKQEAgLTAsMCArMSw1MzUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNz
QXJndW1lbnRDb2RlcnMuaCIKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FuaW1hdGlv
bi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0
UG9pbnQzRC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9pbnQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0xlbmd0aC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXguaD4K
KworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbHRlck9wZXJh
dGlvbnMuaD4KKyNlbmRpZgorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorI2luY2x1ZGUgIldl
YkN1c3RvbUZpbHRlclByb2dyYW0uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0N1c3RvbUZpbHRlckFy
cmF5UGFyYW1ldGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DdXN0b21GaWx0ZXJOdW1iZXJQYXJh
bWV0ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
Q3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JZGVu
dGl0eVRyYW5zZm9ybU9wZXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWF0cml4M0RUcmFu
c2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01hdHJpeFRyYW5zZm9ybU9wZXJh
dGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24u
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RyYW5zbGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbi5oPgorI2VuZGlmCisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
KyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzU3VyZmFjZS5oPgorI2VuZGlmCisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIENv
cmVJUEMgeworCit2b2lkIEFyZ3VtZW50Q29kZXI8RmxvYXRQb2ludDNEPjo6ZW5jb2RlKEFyZ3Vt
ZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgRmxvYXRQb2ludDNEJiBmbG9hdFBvaW50M0QpCit7
CisgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxGbG9hdFBvaW50M0Q+OjplbmNvZGUoZW5jb2Rlciwg
ZmxvYXRQb2ludDNEKTsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPEZsb2F0UG9pbnQzRD46OmRl
Y29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIEZsb2F0UG9pbnQzRCYgZmxvYXRQb2ludDNE
KQoreworICAgIHJldHVybiBTaW1wbGVBcmd1bWVudENvZGVyPEZsb2F0UG9pbnQzRD46OmRlY29k
ZShkZWNvZGVyLCBmbG9hdFBvaW50M0QpOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8TGVuZ3Ro
Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgTGVuZ3RoJiBsZW5ndGgp
Cit7CisgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxMZW5ndGg+OjplbmNvZGUoZW5jb2RlciwgbGVu
Z3RoKTsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPExlbmd0aD46OmRlY29kZShBcmd1bWVudERl
Y29kZXIqIGRlY29kZXIsIExlbmd0aCYgbGVuZ3RoKQoreworICAgIHJldHVybiBTaW1wbGVBcmd1
bWVudENvZGVyPExlbmd0aD46OmRlY29kZShkZWNvZGVyLCBsZW5ndGgpOworfQorCit2b2lkIEFy
Z3VtZW50Q29kZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVy
KiBlbmNvZGVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtYXRpb25NYXRy
aXgpCit7CisgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmVu
Y29kZShlbmNvZGVyLCB0cmFuc2Zvcm1hdGlvbk1hdHJpeCk7Cit9CisKK2Jvb2wgQXJndW1lbnRD
b2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29k
ZXIsIFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1hdGlvbk1hdHJpeCkKK3sKKyAgICBy
ZXR1cm4gU2ltcGxlQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShk
ZWNvZGVyLCB0cmFuc2Zvcm1hdGlvbk1hdHJpeCk7Cit9CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRF
UlMpCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz46OmVuY29k
ZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlv
bnMmIGZpbHRlcnMpCit7CisgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKGZpbHRlcnMuc2l6ZSgp
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbHRlcnMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmaWx0ZXIgPSBmaWx0ZXJzLmF0KGkpOworICAg
ICAgICBGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHlwZSA9IGZpbHRlci0+Z2V0T3Bl
cmF0aW9uVHlwZSgpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGVFbnVtKHR5cGUpOworICAgICAg
ICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FM
RToKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOgorICAgICAgICBjYXNlIEZp
bHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpI
VUVfUk9UQVRFOgorICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlRG91YmxlKHN0YXRpY19jYXN0
PGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIpLT5hbW91bnQo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklO
VkVSVDoKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6CisgICAgICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDoKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246Ok9QQUNJVFk6CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVEb3VibGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbio+KGZpbHRl
ciktPmFtb3VudCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZpbHRlck9w
ZXJhdGlvbjo6QkxVUjoKKyAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZW5jb2Rl
KGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIp
LT5zdGREZXZpYXRpb24oKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOiB7CisgICAgICAgICAgICBjb25zdCBEcm9wU2hhZG93
RmlsdGVyT3BlcmF0aW9uKiBzaGFkb3cgPSBzdGF0aWNfY2FzdDxjb25zdCBEcm9wU2hhZG93Rmls
dGVyT3BlcmF0aW9uKj4oZmlsdGVyKTsKKyAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8SW50UG9p
bnQ+OjplbmNvZGUoZW5jb2Rlciwgc2hhZG93LT5sb2NhdGlvbigpKTsKKyAgICAgICAgICAgIGVu
Y29kZXItPmVuY29kZUludDMyKHNoYWRvdy0+c3RkRGV2aWF0aW9uKCkpOworICAgICAgICAgICAg
QXJndW1lbnRDb2RlcjxDb2xvcj46OmVuY29kZShlbmNvZGVyLCBzaGFkb3ctPmNvbG9yKCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisg
ICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDVVNUT006IHsKKyAgICAgICAgICAgIGNvbnN0
IEN1c3RvbUZpbHRlck9wZXJhdGlvbiogY3VzdG9tT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8Y29u
c3QgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyKTsKKworICAgICAgICAgICAgQVNTRVJU
KGN1c3RvbU9wZXJhdGlvbi0+cHJvZ3JhbSgpKTsKKyAgICAgICAgICAgIFJlZlB0cjxDdXN0b21G
aWx0ZXJQcm9ncmFtPiBwcm9ncmFtID0gY3VzdG9tT3BlcmF0aW9uLT5wcm9ncmFtKCk7CisgICAg
ICAgICAgICBBU1NFUlQocHJvZ3JhbS0+aXNMb2FkZWQoKSk7CisgICAgICAgICAgICBDdXN0b21G
aWx0ZXJQcm9ncmFtSW5mbyBwcm9ncmFtSW5mbyA9IHByb2dyYW0tPnByb2dyYW1JbmZvKCk7Cisg
ICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUocHJvZ3JhbUluZm8udmVydGV4U2hhZGVyU3RyaW5n
KCkpOworICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHByb2dyYW1JbmZvLmZyYWdtZW50U2hh
ZGVyU3RyaW5nKCkpOworICAgICAgICAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdz
IG1peFNldHRpbmdzID0gcHJvZ3JhbUluZm8ubWl4U2V0dGluZ3MoKTsKKyAgICAgICAgICAgIGVu
Y29kZXItPmVuY29kZShtaXhTZXR0aW5ncy5lbmFibGVkKTsKKyAgICAgICAgICAgIGVuY29kZXIt
PmVuY29kZUVudW0obWl4U2V0dGluZ3MuYmxlbmRNb2RlKTsKKyAgICAgICAgICAgIGVuY29kZXIt
PmVuY29kZUVudW0obWl4U2V0dGluZ3MuY29tcG9zaXRlT3BlcmF0b3IpOworCisgICAgICAgICAg
ICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0IHBhcmFtZXRlcnMgPSBjdXN0b21PcGVyYXRpb24t
PnBhcmFtZXRlcnMoKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZVVJbnQzMihwYXJhbWV0
ZXJzLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRl
cnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyUGFy
YW1ldGVyPiBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJzW2ldOworICAgICAgICAgICAgICAgIGVuY29k
ZXItPmVuY29kZShwYXJhbWV0ZXItPm5hbWUoKSk7CisgICAgICAgICAgICAgICAgZW5jb2Rlci0+
ZW5jb2RlRW51bShwYXJhbWV0ZXItPnBhcmFtZXRlclR5cGUoKSk7CisKKyAgICAgICAgICAgICAg
ICBzd2l0Y2ggKHBhcmFtZXRlci0+cGFyYW1ldGVyVHlwZSgpKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6OkFSUkFZOiB7CisgICAgICAgICAgICAgICAgICAg
IEN1c3RvbUZpbHRlckFycmF5UGFyYW1ldGVyKiBhcnJheVBhcmFtZXRlciA9IHN0YXRpY19jYXN0
PEN1c3RvbUZpbHRlckFycmF5UGFyYW1ldGVyKj4ocGFyYW1ldGVyLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKGFycmF5UGFyYW1ldGVyLT5zaXplKCkp
OworICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGFycmF5UGFyYW1l
dGVyLT5zaXplKCk7ICsraikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZXItPmVuY29k
ZShhcnJheVBhcmFtZXRlci0+dmFsdWVBdChqKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEN1c3RvbUZpbHRlclBh
cmFtZXRlcjo6TlVNQkVSOiB7CisgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpbHRlck51bWJl
clBhcmFtZXRlciogbnVibWVyUGFyYW1ldGVyID0gc3RhdGljX2Nhc3Q8Q3VzdG9tRmlsdGVyTnVt
YmVyUGFyYW1ldGVyKj4ocGFyYW1ldGVyLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW5j
b2Rlci0+ZW5jb2RlVUludDMyKG51Ym1lclBhcmFtZXRlci0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBudWJtZXJQYXJhbWV0ZXItPnNpemUoKTsg
KytqKQorICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKG51Ym1lclBhcmFt
ZXRlci0+dmFsdWVBdChqKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEN1c3RvbUZpbHRlclBhcmFtZXRlcjo6VFJB
TlNGT1JNOiB7CisgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFt
ZXRlciogdHJhbnNmb3JtUGFyYW1ldGVyID0gc3RhdGljX2Nhc3Q8Q3VzdG9tRmlsdGVyVHJhbnNm
b3JtUGFyYW1ldGVyKj4ocGFyYW1ldGVyLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgQXJn
dW1lbnRDb2RlcjxUcmFuc2Zvcm1PcGVyYXRpb25zPjo6ZW5jb2RlKGVuY29kZXIsIHRyYW5zZm9y
bVBhcmFtZXRlci0+b3BlcmF0aW9ucygpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKGN1c3RvbU9wZXJhdGlvbi0+bWVzaFJvd3MoKSk7Cisg
ICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUoY3VzdG9tT3BlcmF0aW9uLT5tZXNoQ29sdW1ucygp
KTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUVudW0oY3VzdG9tT3BlcmF0aW9uLT5tZXNo
Qm94VHlwZSgpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUVudW0oY3VzdG9tT3BlcmF0
aW9uLT5tZXNoVHlwZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisjZW5kaWYK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQor
fQorCitib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz46OmRlY29k
ZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmIGZp
bHRlcnMpCit7CisgICAgdWludDMyX3Qgc2l6ZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJ
bnQzMihzaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVmVjdG9yPFJlZlB0cjxG
aWx0ZXJPcGVyYXRpb24+ID4mIG9wZXJhdGlvbnMgPSBmaWx0ZXJzLm9wZXJhdGlvbnMoKTsKKwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIEZpbHRlck9w
ZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0eXBlOworICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0
aW9uPiBmaWx0ZXI7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bSh0eXBlKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAg
ICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRToKKyAgICAgICAgY2FzZSBGaWx0ZXJP
cGVyYXRpb246OlNFUElBOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6
CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpIVUVfUk9UQVRFOiB7CisgICAgICAgICAg
ICBkb3VibGUgdmFsdWU7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZURvdWJsZSh2
YWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZmlsdGVy
ID0gQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKHZhbHVlLCB0eXBlKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpJTlZFUlQ6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOgor
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q09OVFJBU1Q6CisgICAgICAgIGNhc2UgRmls
dGVyT3BlcmF0aW9uOjpPUEFDSVRZOiB7CisgICAgICAgICAgICBkb3VibGUgdmFsdWU7CisgICAg
ICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZURvdWJsZSh2YWx1ZSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZmlsdGVyID0gQmFzaWNDb21wb25lbnRUcmFu
c2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKHZhbHVlLCB0eXBlKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOiB7Cisg
ICAgICAgICAgICBMZW5ndGggbGVuZ3RoOworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVy
PExlbmd0aD46OmRlY29kZShkZWNvZGVyLCBsZW5ndGgpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIGZpbHRlciA9IEJsdXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0
ZShsZW5ndGgsIHR5cGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOiB7CisgICAgICAgICAgICBJbnRQb2lu
dCBsb2NhdGlvbjsKKyAgICAgICAgICAgIGludDMyX3Qgc3RkRGV2aWF0aW9uOworICAgICAgICAg
ICAgQ29sb3IgY29sb3I7CisgICAgICAgICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8SW50UG9pbnQ+
OjpkZWNvZGUoZGVjb2RlciwgbG9jYXRpb24pKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlSW50MzIoc3RkRGV2aWF0aW9uKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIUFyZ3VtZW50
Q29kZXI8Q29sb3I+OjpkZWNvZGUoZGVjb2RlciwgY29sb3IpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIGZpbHRlciA9IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRp
b246OmNyZWF0ZShsb2NhdGlvbiwgc3RkRGV2aWF0aW9uLCBjb2xvciwgdHlwZSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICAgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246OkNVU1RPTTogeworICAgICAgICAgICAgU3RyaW5nIHZlcnRl
eFNoYWRlclN0cmluZzsKKyAgICAgICAgICAgIFN0cmluZyBmcmFnbWVudFNoYWRlclN0cmluZzsK
KyAgICAgICAgICAgIEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyBtaXhTZXR0aW5nczsK
KyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHZlcnRleFNoYWRlclN0cmluZykpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoZnJhZ21lbnRTaGFkZXJTdHJpbmcpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG1peFNldHRpbmdzLmVuYWJsZWQp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlRW51bShtaXhTZXR0aW5ncy5ibGVuZE1vZGUpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShtaXhTZXR0
aW5ncy5jb21wb3NpdGVPcGVyYXRvcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgUmVmUHRyPEN1c3RvbUZpbHRlclByb2dyYW0+IHByb2dyYW0gPSBXZWJDdXN0
b21GaWx0ZXJQcm9ncmFtOjpjcmVhdGUodmVydGV4U2hhZGVyU3RyaW5nLCBmcmFnbWVudFNoYWRl
clN0cmluZywgbWl4U2V0dGluZ3MpOworCisgICAgICAgICAgICB1aW50MzJfdCBwYXJhbWV0ZXJz
U2l6ZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKHBhcmFtZXRlcnNT
aXplKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIEN1c3Rv
bUZpbHRlclBhcmFtZXRlckxpc3QgcGFyYW1ldGVycyhwYXJhbWV0ZXJzU2l6ZSk7CisgICAgICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnNTaXplOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICBTdHJpbmcgbmFtZTsKKyAgICAgICAgICAgICAgICBDdXN0b21GaWx0ZXJQYXJh
bWV0ZXI6OlBhcmFtZXRlclR5cGUgcGFyYW1ldGVyVHlwZTsKKyAgICAgICAgICAgICAgICBpZiAo
IWRlY29kZXItPmRlY29kZShuYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShwYXJhbWV0ZXJUeXBl
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAg
c3dpdGNoIChwYXJhbWV0ZXJUeXBlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBDdXN0b21GaWx0
ZXJQYXJhbWV0ZXI6OkFSUkFZOiB7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxDdXN0b21G
aWx0ZXJBcnJheVBhcmFtZXRlcj4gYXJyYXlQYXJhbWV0ZXIgPSBDdXN0b21GaWx0ZXJBcnJheVBh
cmFtZXRlcjo6Y3JlYXRlKG5hbWUpOworICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFw
cGVuZChhcnJheVBhcmFtZXRlcik7CisgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFycmF5
UGFyYW1ldGVyU2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVV
SW50MzIoYXJyYXlQYXJhbWV0ZXJTaXplKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIGFycmF5UGFyYW1ldGVyVmFsdWU7
CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgYXJyYXlQYXJhbWV0
ZXJTaXplOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlKGFycmF5UGFyYW1ldGVyVmFsdWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5UGFyYW1ldGVyLT5hZGRW
YWx1ZShhcnJheVBhcmFtZXRlclZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
Y2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6Ok5VTUJFUjogeworICAgICAgICAgICAgICAgICAg
ICBSZWZQdHI8Q3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyPiBudW1iZXJQYXJhbWV0ZXIgPSBD
dXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXI6OmNyZWF0ZShuYW1lKTsKKyAgICAgICAgICAgICAg
ICAgICAgcGFyYW1ldGVycy5hcHBlbmQobnVtYmVyUGFyYW1ldGVyKTsKKyAgICAgICAgICAgICAg
ICAgICAgdWludDMyX3QgbnVtYmVyUGFyYW1ldGVyU2l6ZTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIobnVtYmVyUGFyYW1ldGVyU2l6ZSkpCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGRvdWJs
ZSBudW1iZXJQYXJhbWV0ZXJWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3Qg
aiA9IDA7IGogPCBudW1iZXJQYXJhbWV0ZXJTaXplOyArK2opIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG51bWJlclBhcmFtZXRlclZhbHVlKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
ICAgICBudW1iZXJQYXJhbWV0ZXItPmFkZFZhbHVlKG51bWJlclBhcmFtZXRlclZhbHVlKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6OlRS
QU5TRk9STTogeworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyVHJhbnNm
b3JtUGFyYW1ldGVyPiB0cmFuc2Zvcm1QYXJhbWV0ZXIgPSBDdXN0b21GaWx0ZXJUcmFuc2Zvcm1Q
YXJhbWV0ZXI6OmNyZWF0ZShuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5h
cHBlbmQodHJhbnNmb3JtUGFyYW1ldGVyKTsKKyAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jt
T3BlcmF0aW9ucyBvcGVyYXRpb25zOworICAgICAgICAgICAgICAgICAgICBpZiAoIUFyZ3VtZW50
Q29kZXI8VHJhbnNmb3JtT3BlcmF0aW9ucz46OmRlY29kZShkZWNvZGVyLCBvcGVyYXRpb25zKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgdHJhbnNmb3JtUGFyYW1ldGVyLT5zZXRPcGVyYXRpb25zKG9wZXJhdGlvbnMpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICB1bnNpZ25lZCBtZXNoUm93czsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIG1lc2hDb2x1bW5zOworICAgICAgICAgICAgQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uOjpNZXNoQm94VHlwZSBtZXNoQm94VHlwZTsKKyAgICAgICAgICAgIEN1c3RvbUZpbHRl
ck9wZXJhdGlvbjo6TWVzaFR5cGUgbWVzaFR5cGU7CisgICAgICAgICAgICBpZiAoIWRlY29kZXIt
PmRlY29kZShtZXNoUm93cykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUobWVzaENvbHVtbnMpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShtZXNo
Qm94VHlwZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGVFbnVtKG1lc2hUeXBlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgICAgIGZpbHRlciA9IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6Y3Jl
YXRlKHByb2dyYW0sIHBhcmFtZXRlcnMsIG1lc2hSb3dzLCBtZXNoQ29sdW1ucywgbWVzaEJveFR5
cGUsIG1lc2hUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisjZW5kaWYKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKGZpbHRlcikKKyAgICAgICAgICAgIG9wZXJhdGlvbnMuYXBwZW5kKGZpbHRlcik7CisgICAg
fQorCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShDU1NfU0hBREVS
UykKK3ZvaWQgQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1PcGVyYXRpb25zPjo6ZW5jb2RlKEFyZ3Vt
ZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgdHJhbnNmb3Jt
T3BlcmF0aW9ucykKK3sKKyAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIodHJhbnNmb3JtT3BlcmF0
aW9ucy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNmb3JtT3BlcmF0
aW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIG9w
ZXJhdGlvbiA9IHRyYW5zZm9ybU9wZXJhdGlvbnMuYXQoaSk7CisgICAgICAgIGVuY29kZXItPmVu
Y29kZUVudW0ob3BlcmF0aW9uLT5nZXRPcGVyYXRpb25UeXBlKCkpOworCisgICAgICAgIHN3aXRj
aCAob3BlcmF0aW9uLT5nZXRPcGVyYXRpb25UeXBlKCkpIHsKKyAgICAgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OlNDQUxFX1g6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpT
Q0FMRV9ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEU6CisgICAgICAg
IGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9aOgorICAgICAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6U0NBTEVfM0Q6CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT54KCkpOwor
ICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNm
b3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+eSgpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVu
Y29kZShzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlv
biktPnooKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVy
YXRpb246OlRSQU5TTEFURV9YOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJB
TlNMQVRFX1k6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEU6Cisg
ICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWjoKKyAgICAgICAgY2Fz
ZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV8zRDoKKyAgICAgICAgICAgIEFyZ3VtZW50
Q29kZXI8TGVuZ3RoPjo6ZW5jb2RlKGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPngoKSk7CisgICAgICAgICAgICBBcmd1
bWVudENvZGVyPExlbmd0aD46OmVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxjb25zdCBUcmFu
c2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT55KCkpOworICAgICAgICAgICAg
QXJndW1lbnRDb2RlcjxMZW5ndGg+OjplbmNvZGUoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8Y29uc3Qg
VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+eigpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFOgorICAg
ICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1g6CisgICAgICAgIGNhc2UgVHJh
bnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWToKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246OlJPVEFURV8zRDoKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxj
b25zdCBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT54KCkpOworICAgICAg
ICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGNvbnN0IFJvdGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbio+KG9wZXJhdGlvbiktPnkoKSk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUo
c3RhdGljX2Nhc3Q8Y29uc3QgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+
eigpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxjb25zdCBSb3Rh
dGVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT5hbmdsZSgpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19YOgorICAgICAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19ZOgorICAgICAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6U0tFVzoKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2Fz
dDxjb25zdCBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+YW5nbGVYKCkpOwor
ICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGNvbnN0IFNrZXdUcmFuc2Zv
cm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT5hbmdsZVkoKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWDoKKyAgICAgICAgICAgIEFy
Z3VtZW50Q29kZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+OjplbmNvZGUoZW5jb2Rlciwgc3RhdGlj
X2Nhc3Q8Y29uc3QgTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+bWF0cml4
KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpNQVRSSVhfM0Q6CisgICAgICAgICAgICBBcmd1bWVudENvZGVyPFRyYW5zZm9ybWF0aW9uTWF0
cml4Pjo6ZW5jb2RlKGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0IE1hdHJpeDNEVHJhbnNmb3Jt
T3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+bWF0cml4KCkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpQRVJTUEVDVElWRToKKyAgICAgICAgICAg
IEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZW5jb2RlKGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0
IFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+cGVyc3BlY3RpdmUo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OklERU5USVRZOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpOT05FOgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKworYm9vbCBBcmd1bWVudENvZGVyPFRy
YW5zZm9ybU9wZXJhdGlvbnM+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBUcmFu
c2Zvcm1PcGVyYXRpb25zJiB0cmFuc2Zvcm1PcGVyYXRpb25zKQoreworICAgIHVpbnQzMl90IG9w
ZXJhdGlvbnNTaXplOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKG9wZXJhdGlvbnNT
aXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBvcGVyYXRpb25zU2l6ZTsgKytpKSB7CisgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3Bl
cmF0aW9uVHlwZSBvcGVyYXRpb25UeXBlOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVu
dW0ob3BlcmF0aW9uVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
c3dpdGNoIChvcGVyYXRpb25UeXBlKSB7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpTQ0FMRV9YOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWToKKyAg
ICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFOgorICAgICAgICBjYXNlIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6U0NBTEVfWjoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlNDQUxFXzNEOiB7CisgICAgICAgICAgICBkb3VibGUgeCwgeSwgejsKKyAgICAgICAgICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKHgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHkpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHopKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMub3Bl
cmF0aW9ucygpLmFwcGVuZChTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHgsIHksIHos
IG9wZXJhdGlvblR5cGUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWDoKKyAgICAgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6VFJBTlNMQVRFOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNM
QVRFX1o6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfM0Q6IHsK
KyAgICAgICAgICAgIExlbmd0aCB4LCB5LCB6OworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENv
ZGVyPExlbmd0aD46OmRlY29kZShkZWNvZGVyLCB4KSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZGVjb2RlKGRl
Y29kZXIsIHkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlm
ICghQXJndW1lbnRDb2RlcjxMZW5ndGg+OjpkZWNvZGUoZGVjb2RlciwgeikpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVy
YXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHgsIHks
IHosIG9wZXJhdGlvblR5cGUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEU6CisgICAgICAgIGNhc2UgVHJhbnNm
b3JtT3BlcmF0aW9uOjpST1RBVEVfWDoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlJPVEFURV9ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEOiB7
CisgICAgICAgICAgICBkb3VibGUgeCwgeSwgeiwgYW5nbGU7CisgICAgICAgICAgICBpZiAoIWRl
Y29kZXItPmRlY29kZSh4KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh5KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh6KSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShhbmdsZSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdHJhbnNmb3JtT3Bl
cmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3Jl
YXRlKHgsIHksIHosIGFuZ2xlLCBvcGVyYXRpb25UeXBlKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19YOgorICAg
ICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19ZOgorICAgICAgICBjYXNlIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6U0tFVzogeworICAgICAgICAgICAgZG91YmxlIGFuZ2xlWCwgYW5nbGVZ
OworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoYW5nbGVYKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShhbmds
ZVkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5zZm9y
bU9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChTa2V3VHJhbnNmb3JtT3BlcmF0aW9uOjpj
cmVhdGUoYW5nbGVYLCBhbmdsZVksIG9wZXJhdGlvblR5cGUpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVg6IHsK
KyAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKKyAgICAgICAgICAgIGlm
ICghQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShkZWNvZGVyLCBt
YXRyaXgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5z
Zm9ybU9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChNYXRyaXhUcmFuc2Zvcm1PcGVyYXRp
b246OmNyZWF0ZShtYXRyaXgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVhfM0Q6IHsKKyAgICAgICAgICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKKyAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2Rl
cjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShkZWNvZGVyLCBtYXRyaXgpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMu
b3BlcmF0aW9ucygpLmFwcGVuZChNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKG1h
dHJpeCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246OlBFUlNQRUNUSVZFOiB7CisgICAgICAgICAgICBMZW5ndGggcGVyc3Bl
Y3RpdmU7CisgICAgICAgICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZGVjb2RlKGRl
Y29kZXIsIHBlcnNwZWN0aXZlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICB0cmFuc2Zvcm1PcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoUGVyc3BlY3Rp
dmVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShwZXJzcGVjdGl2ZSkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OklERU5U
SVRZOgorICAgICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5k
KElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok5PTkU6CisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFD
RSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbj46OmVu
Y29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzU3Vy
ZmFjZVRva2VuJiB0b2tlbikKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgZW5jb2Rlci0+ZW5jb2Rl
VUludDMyKHRva2VuLmZyb250QnVmZmVySGFuZGxlKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVVSW50
MzIodG9rZW4uYmFja0J1ZmZlckhhbmRsZSk7CisjZW5kaWYKKyNpZiBPUyhMSU5VWCkKKyAgICBl
bmNvZGVyLT5lbmNvZGVVSW50MzIodG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUpOworI2VuZGlmCit9
CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbj46OmRl
Y29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRv
a2VuJiB0b2tlbikKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVV
SW50MzIodG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIodG9rZW4uYmFja0J1ZmZlckhhbmRsZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorI2lmIE9TKExJTlVYKQorICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlVUludDMyKHRva2VuLmZyb250QnVmZmVySGFuZGxlKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKworfSAvLyBu
YW1lc3BhY2UgQ29yZUlQQworI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODdiNGM1ZmU3NTI5YzU3YmVjZWZhNjIxZDhiOTExYTE2MWUyMTQ4MgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzX2gKKyNk
ZWZpbmUgQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzX2gKKworI2lmIFVTRShDT09S
RElOQVRFRF9HUkFQSElDUykKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBGbG9hdFBvaW50M0Q7CitjbGFzcyBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDsKK3N0cnVjdCBMZW5ndGg7CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCitjbGFzcyBG
aWx0ZXJPcGVyYXRpb25zOworI2VuZGlmCisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCitjbGFz
cyBUcmFuc2Zvcm1PcGVyYXRpb25zOworI2VuZGlmCisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFD
RSkKK3N0cnVjdCBHcmFwaGljc1N1cmZhY2VUb2tlbjsKKyNlbmRpZgorfQorCituYW1lc3BhY2Ug
Q29yZUlQQyB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Rmxv
YXRQb2ludDNEPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQzRCYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1
bWVudERlY29kZXIqLCBXZWJDb3JlOjpGbG9hdFBvaW50M0QmKTsKK307CisKK3RlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TGVuZ3RoPiB7CisgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6Okxlbmd0aCYpOworICAgIHN0
YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpMZW5ndGgmKTsKK307
CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VHJhbnNmb3JtYXRp
b25NYXRyaXg+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29u
c3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNv
ZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKK307
CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
QXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYpOworICAg
IHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpGaWx0ZXJPcGVy
YXRpb25zJik7Cit9OworI2VuZGlmCisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCit0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlRyYW5zZm9ybU9wZXJhdGlvbnM+IHsK
KyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6
VHJhbnNmb3JtT3BlcmF0aW9ucyYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERl
Y29kZXIqLCBXZWJDb3JlOjpUcmFuc2Zvcm1PcGVyYXRpb25zJik7Cit9OworI2VuZGlmCisKKyNp
ZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
QXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4mKTsK
KyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6R3JhcGhp
Y3NTdXJmYWNlVG9rZW4mKTsKK307CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgQ29yZUlQQwor
I2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKworI2VuZGlmIC8vIENvb3JkaW5h
dGVkR3JhcGhpY3NBcmd1bWVudENvZGVyc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDdXN0b21GaWx0ZXJQcm9ncmFtLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDdXN0b21GaWx0ZXJQcm9n
cmFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZGRmYzc2ZjBiZGQxMmY0MTlhZjBjNTE1MTU0MmJhOGY0OGVlMDMw
YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL1dlYkN1c3RvbUZpbHRlclByb2dyYW0uaApAQCAtMCwwICsxLDczIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbV9oCisjZGVmaW5lIFdl
YkN1c3RvbUZpbHRlclByb2dyYW1faAorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKSAm
JiBFTkFCTEUoQ1NTX1NIQURFUlMpCisjaW5jbHVkZSA8V2ViQ29yZS9DdXN0b21GaWx0ZXJQcm9n
cmFtLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJDdXN0b21GaWx0ZXJQcm9n
cmFtIDogcHVibGljIFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW0geworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkN1c3RvbUZpbHRlclByb2dyYW0+IGNyZWF0ZShTdHJpbmcg
dmVydGV4U2hhZGVyU3RyaW5nLCBTdHJpbmcgbV9mcmFnbWVudFNoYWRlclN0cmluZywgV2ViQ29y
ZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIG1peFNldHRpbmdzKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDdXN0b21GaWx0ZXJQcm9ncmFtKHZlcnRleFNo
YWRlclN0cmluZywgbV9mcmFnbWVudFNoYWRlclN0cmluZywgbWl4U2V0dGluZ3MpKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkZWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0
cnVlOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQ
cm9ncmFtJiBvKSBjb25zdCBPVkVSUklERQorICAgIHsKKyAgICAgICAgLy8gVGhlIGZvbGxvd2lu
ZyBjYXN0IGlzIHVnbHksIGJ1dCBXZWJDdXN0b21GaWx0ZXJQcm9ncmFtIGlzIHRoZSBzaW5nbGUg
aW1wbGVtZW50YXRpb24gb2YgQ3VzdG9tRmlsdGVyUHJvZ3JhbSBvbiBVSSBQcm9jZXNzLgorICAg
ICAgICBjb25zdCBXZWJDdXN0b21GaWx0ZXJQcm9ncmFtKiBvdGhlciA9IHN0YXRpY19jYXN0PGNv
bnN0IFdlYkN1c3RvbUZpbHRlclByb2dyYW0qPigmbyk7CisgICAgICAgIHJldHVybiBtaXhTZXR0
aW5ncygpID09IG90aGVyLT5taXhTZXR0aW5ncygpICYmIG1fdmVydGV4U2hhZGVyU3RyaW5nID09
IG90aGVyLT52ZXJ0ZXhTaGFkZXJTdHJpbmcoKSAmJiBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nID09
IG90aGVyLT5mcmFnbWVudFNoYWRlclN0cmluZygpOworICAgIH0KKworcHJvdGVjdGVkOgorICAg
IHZpcnR1YWwgU3RyaW5nIHZlcnRleFNoYWRlclN0cmluZygpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIG1fdmVydGV4U2hhZGVyU3RyaW5nOyB9CisgICAgdmlydHVhbCBTdHJpbmcgZnJhZ21lbnRT
aGFkZXJTdHJpbmcoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2ZyYWdtZW50U2hhZGVyU3Ry
aW5nOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEhhdmVDbGllbnRzKCkgT1ZFUlJJREUgeyBu
b3RpZnlDbGllbnRzKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlTGFzdENsaWVudCgp
IE9WRVJSSURFIHsgfQorCitwcml2YXRlOgorICAgIFdlYkN1c3RvbUZpbHRlclByb2dyYW0oU3Ry
aW5nIHZlcnRleFNoYWRlclN0cmluZywgU3RyaW5nIGZyYWdtZW50U2hhZGVyU3RyaW5nLCBXZWJD
b3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MgbWl4U2V0dGluZ3MpCisgICAgICAg
IDogV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbShtaXhTZXR0aW5ncykKKyAgICAgICAgLCBt
X3ZlcnRleFNoYWRlclN0cmluZyh2ZXJ0ZXhTaGFkZXJTdHJpbmcpCisgICAgICAgICwgbV9mcmFn
bWVudFNoYWRlclN0cmluZyhtX2ZyYWdtZW50U2hhZGVyU3RyaW5nKQorICAgIHsKKyAgICB9CisK
KyAgICBTdHJpbmcgbV92ZXJ0ZXhTaGFkZXJTdHJpbmc7CisgICAgU3RyaW5nIG1fZnJhZ21lbnRT
aGFkZXJTdHJpbmc7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVT
RShDT09SRElOQVRFRF9HUkFQSElDUykgJiYgRU5BQkxFKENTU19TSEFERVJTKQorCisjZW5kaWYg
Ly8gV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2hhcmVh
YmxlU3VyZmFjZS5jcHAKaW5kZXggMTM2YjA5MzExMzRlNGEwODg3ZjMzODA2Y2ZmNjBiZjBlMmJh
M2FhZC4uNjcyODE2ZmM0OTAzYTJkOWUzNDg2ZDljODg5NzEyNzEzZDIyOWFjMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmNwcApAQCAtMjAsNiArMjAsNyBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZVN1cmZhY2UuaCIKIAorI2lu
Y2x1ZGUgIkNvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkdy
YXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NTdXJmYWNlVG9rZW4uaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHAKaW5kZXggMDQxMjQ2NjdmOTU3NDY5
MmU1ODczNTFiZmEyMGI3MmY4ZWJjYTM5Yi4uOGFlNmM4NWE3ZTNkNzUxMmRmMDE5YjdiMmVhZTVh
ZmRkMWM3YTRkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1
bWVudENvZGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVu
dENvZGVycy5jcHAKQEAgLTQ5LDIwICs0OSw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9XaW5kb3dG
ZWF0dXJlcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAotI2lmIFVTRShD
T09SRElOQVRFRF9HUkFQSElDUykKLSNpbmNsdWRlIDxXZWJDb3JlL0FuaW1hdGlvbi5oPgotI2lu
Y2x1ZGUgPFdlYkNvcmUvRmxvYXRQb2ludDNELmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9MZW5ndGgu
aD4KLSNpbmNsdWRlIDxXZWJDb3JlL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg+Ci0KLSNpZiBFTkFC
TEUoQ1NTX0ZJTFRFUlMpCi0jaW5jbHVkZSA8V2ViQ29yZS9GaWx0ZXJPcGVyYXRpb25zLmg+Ci0j
ZW5kaWYKLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSNpbmNsdWRlIDxXZWJDb3JlL0dyYXBo
aWNzU3VyZmFjZS5oPgotI2VuZGlmCi0jZW5kaWYKLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC04NzIsMTcwICs4NTgsNCBAQCBib29sIEFy
Z3VtZW50Q29kZXI8S1VSTD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIEtVUkwm
IHJlc3VsdCkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKLXZvaWQgQXJndW1lbnRDb2RlcjxGbG9hdFBvaW50M0Q+OjplbmNvZGUoQXJndW1lbnRF
bmNvZGVyKiBlbmNvZGVyLCBjb25zdCBGbG9hdFBvaW50M0QmIGZsb2F0UG9pbnQzRCkKLXsKLSAg
ICBTaW1wbGVBcmd1bWVudENvZGVyPEZsb2F0UG9pbnQzRD46OmVuY29kZShlbmNvZGVyLCBmbG9h
dFBvaW50M0QpOwotfQotCi1ib29sIEFyZ3VtZW50Q29kZXI8RmxvYXRQb2ludDNEPjo6ZGVjb2Rl
KEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgRmxvYXRQb2ludDNEJiBmbG9hdFBvaW50M0QpCi17
Ci0gICAgcmV0dXJuIFNpbXBsZUFyZ3VtZW50Q29kZXI8RmxvYXRQb2ludDNEPjo6ZGVjb2RlKGRl
Y29kZXIsIGZsb2F0UG9pbnQzRCk7Ci19Ci0KLXZvaWQgQXJndW1lbnRDb2RlcjxMZW5ndGg+Ojpl
bmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBMZW5ndGgmIGxlbmd0aCkKLXsK
LSAgICBTaW1wbGVBcmd1bWVudENvZGVyPExlbmd0aD46OmVuY29kZShlbmNvZGVyLCBsZW5ndGgp
OwotfQotCi1ib29sIEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2Rl
ciogZGVjb2RlciwgTGVuZ3RoJiBsZW5ndGgpCi17Ci0gICAgcmV0dXJuIFNpbXBsZUFyZ3VtZW50
Q29kZXI8TGVuZ3RoPjo6ZGVjb2RlKGRlY29kZXIsIGxlbmd0aCk7Ci19Ci0KLXZvaWQgQXJndW1l
bnRDb2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVu
Y29kZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1hdGlvbk1hdHJpeCkK
LXsKLSAgICBTaW1wbGVBcmd1bWVudENvZGVyPFRyYW5zZm9ybWF0aW9uTWF0cml4Pjo6ZW5jb2Rl
KGVuY29kZXIsIHRyYW5zZm9ybWF0aW9uTWF0cml4KTsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVy
PFRyYW5zZm9ybWF0aW9uTWF0cml4Pjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2Rlciwg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybWF0aW9uTWF0cml4KQotewotICAgIHJldHVy
biBTaW1wbGVBcmd1bWVudENvZGVyPFRyYW5zZm9ybWF0aW9uTWF0cml4Pjo6ZGVjb2RlKGRlY29k
ZXIsIHRyYW5zZm9ybWF0aW9uTWF0cml4KTsKLX0KLQotI2lmIEVOQUJMRShDU1NfRklMVEVSUykK
LXZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPjo6ZW5jb2RlKEFy
Z3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYg
ZmlsdGVycykKLXsKLSAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIoZmlsdGVycy5zaXplKCkpOwot
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsdGVycy5zaXplKCk7ICsraSkgewotICAgICAg
ICBjb25zdCBGaWx0ZXJPcGVyYXRpb24qIGZpbHRlciA9IGZpbHRlcnMuYXQoaSk7Ci0gICAgICAg
IEZpbHRlck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0eXBlID0gZmlsdGVyLT5nZXRPcGVyYXRp
b25UeXBlKCk7Ci0gICAgICAgIGVuY29kZXItPmVuY29kZUVudW0odHlwZSk7Ci0gICAgICAgIHN3
aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFOgot
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6Ci0gICAgICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpTQVRVUkFURToKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9S
T1RBVEU6Ci0gICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVEb3VibGUoc3RhdGljX2Nhc3Q8Y29u
c3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KGZpbHRlciktPmFtb3VudCgpKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SU5WRVJU
OgotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzoKLSAgICAgICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246OkNPTlRSQVNUOgotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6T1BBQ0lUWToKLSAgICAgICAgICAgIGVuY29kZXItPmVuY29kZURvdWJsZShzdGF0aWNfY2Fz
dDxjb25zdCBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyKS0+
YW1vdW50KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpCTFVSOgotICAgICAgICAgICAgQXJndW1lbnRDb2RlcjxMZW5ndGg+OjplbmNvZGUoZW5j
b2Rlciwgc3RhdGljX2Nhc3Q8Y29uc3QgQmx1ckZpbHRlck9wZXJhdGlvbio+KGZpbHRlciktPnN0
ZERldmlhdGlvbigpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZpbHRlck9w
ZXJhdGlvbjo6RFJPUF9TSEFET1c6IHsKLSAgICAgICAgICAgIGNvbnN0IERyb3BTaGFkb3dGaWx0
ZXJPcGVyYXRpb24qIHNoYWRvdyA9IHN0YXRpY19jYXN0PGNvbnN0IERyb3BTaGFkb3dGaWx0ZXJP
cGVyYXRpb24qPihmaWx0ZXIpOwotICAgICAgICAgICAgQXJndW1lbnRDb2RlcjxJbnRQb2ludD46
OmVuY29kZShlbmNvZGVyLCBzaGFkb3ctPmxvY2F0aW9uKCkpOwotICAgICAgICAgICAgZW5jb2Rl
ci0+ZW5jb2RlSW50MzIoc2hhZG93LT5zdGREZXZpYXRpb24oKSk7Ci0gICAgICAgICAgICBBcmd1
bWVudENvZGVyPENvbG9yPjo6ZW5jb2RlKGVuY29kZXIsIHNoYWRvdy0+Y29sb3IoKSk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLWJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3Jl
OjpGaWx0ZXJPcGVyYXRpb25zPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgV2Vi
Q29yZTo6RmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKLXsKLSAgICB1aW50MzJfdCBzaXplOwot
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKHNpemUpKQotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICBWZWN0b3I8UmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gPiYgb3BlcmF0aW9ucyA9
IGZpbHRlcnMub3BlcmF0aW9ucygpOwotCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXpl
OyArK2kpIHsKLSAgICAgICAgRmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHR5cGU7Ci0g
ICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZpbHRlcjsKLSAgICAgICAgaWYgKCFkZWNv
ZGVyLT5kZWNvZGVFbnVtKHR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
ICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVND
QUxFOgotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6Ci0gICAgICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpTQVRVUkFURToKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OkhVRV9ST1RBVEU6IHsKLSAgICAgICAgICAgIGRvdWJsZSB2YWx1ZTsKLSAgICAgICAgICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlRG91YmxlKHZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICBmaWx0ZXIgPSBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0
aW9uOjpjcmVhdGUodmFsdWUsIHR5cGUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklOVkVSVDoKLSAgICAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpD
T05UUkFTVDoKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJVFk6IHsKLSAgICAg
ICAgICAgIGRvdWJsZSB2YWx1ZTsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRG91
YmxlKHZhbHVlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBm
aWx0ZXIgPSBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUodmFs
dWUsIHR5cGUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBG
aWx0ZXJPcGVyYXRpb246OkJMVVI6IHsKLSAgICAgICAgICAgIExlbmd0aCBsZW5ndGg7Ci0gICAg
ICAgICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZGVjb2RlKGRlY29kZXIsIGxlbmd0
aCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgZmlsdGVyID0g
Qmx1ckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKGxlbmd0aCwgdHlwZSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFE
T1c6IHsKLSAgICAgICAgICAgIEludFBvaW50IGxvY2F0aW9uOwotICAgICAgICAgICAgaW50MzJf
dCBzdGREZXZpYXRpb247Ci0gICAgICAgICAgICBDb2xvciBjb2xvcjsKLSAgICAgICAgICAgIGlm
ICghQXJndW1lbnRDb2RlcjxJbnRQb2ludD46OmRlY29kZShkZWNvZGVyLCBsb2NhdGlvbikpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGVJbnQzMihzdGREZXZpYXRpb24pKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2RlcjxDb2xvcj46OmRlY29kZShkZWNvZGVyLCBj
b2xvcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgZmlsdGVy
ID0gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKGxvY2F0aW9uLCBzdGREZXZpYXRp
b24sIGNvbG9yLCB0eXBlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChm
aWx0ZXIpCi0gICAgICAgICAgICBvcGVyYXRpb25zLmFwcGVuZChmaWx0ZXIpOwotICAgIH0KLQot
ICAgIHJldHVybiB0cnVlOwotfQotI2VuZGlmCi0KLSNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
LXZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbj46OmVuY29k
ZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFj
ZVRva2VuJiB0b2tlbikKLXsKLSNpZiBPUyhEQVJXSU4pCi0gICAgZW5jb2Rlci0+ZW5jb2RlVUlu
dDMyKHRva2VuLmZyb250QnVmZmVySGFuZGxlKTsKLSAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIo
dG9rZW4uYmFja0J1ZmZlckhhbmRsZSk7Ci0jZW5kaWYKLSNpZiBPUyhMSU5VWCkKLSAgICBlbmNv
ZGVyLT5lbmNvZGVVSW50MzIodG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUpOwotI2VuZGlmCi19Ci0K
LWJvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbj46OmRlY29k
ZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2Vu
JiB0b2tlbikKLXsKLSNpZiBPUyhEQVJXSU4pCi0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50
MzIodG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIodG9rZW4uYmFja0J1ZmZlckhhbmRsZSkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotI2lmIE9TKExJTlVYKQotICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlVUludDMyKHRva2VuLmZyb250QnVmZmVySGFuZGxlKSkKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotI2VuZGlmCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLSNlbmRpZgotCi0jZW5kaWYK
LQogfSAvLyBuYW1lc3BhY2UgQ29yZUlQQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNv
cmVBcmd1bWVudENvZGVycy5oCmluZGV4IDM0MmM4ZmI3M2Y2YTZlNDQ0MjdhYmI2YzZlM2RjNjRj
ZGE1ZDE5MzIuLmI0ZGFmZTY3MTQ5NGU0Mzg3ZjM5YzdlZmJmMGNjNjdhODE3Y2I3MjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKQEAgLTY3LDI0
ICs2Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIH0KICNlbmRpZgogCi0jaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEZsb2F0UG9p
bnQzRDsKLSAgICBjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKLSAgICBzdHJ1Y3QgTGVuZ3Ro
OwotCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgc3RydWN0IEdyYXBoaWNzU3VyZmFj
ZVRva2VuOwotI2VuZGlmCi19Ci0KLSNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0gICAgY2xhc3MgRmlsdGVyT3BlcmF0aW9uczsKLX0KLSNlbmRpZgotI2VuZGlm
Ci0KIG5hbWVzcGFjZSBDb3JlSVBDIHsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2Rl
cjxXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0+IHsKQEAgLTI1OCwzOCArMjQwLDYgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpLVVJMPiB7CiAgICAgc3RhdGljIGJv
b2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OktVUkwmKTsKIH07CiAKLSNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVy
PFdlYkNvcmU6OkZsb2F0UG9pbnQzRD4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVu
dEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50M0QmKTsKLSAgICBzdGF0aWMgYm9v
bCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6RmxvYXRQb2ludDNEJik7Ci19Owot
Ci10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6Okxlbmd0aD4gewotICAg
IHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpMZW5n
dGgmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6
TGVuZ3RoJik7Ci19OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6
OlRyYW5zZm9ybWF0aW9uTWF0cml4PiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50
RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7Ci0gICAgc3Rh
dGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4Jik7Ci19OwotCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotdGVtcGxhdGU8PiBzdHJ1
Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zPiB7Ci0gICAgc3RhdGlj
IHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJh
dGlvbnMmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29y
ZTo6RmlsdGVyT3BlcmF0aW9ucyYpOwotfTsKLSNlbmRpZgotCi0jaWYgVVNFKEdSQVBISUNTX1NV
UkZBQ0UpCi10ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkdyYXBoaWNz
U3VyZmFjZVRva2VuPiB7Ci0gICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2Rlcios
IGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuJik7Ci0gICAgc3RhdGljIGJvb2wg
ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuJik7
Ci19OwotI2VuZGlmCi0jZW5kaWYKLQotCiB9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCiAKICNlbmRp
ZiAvLyBXZWJDb3JlQXJndW1lbnRDb2RlcnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKaW5kZXggZTM2YzUyOGEzZmE2
NmRjOGYwZWYxYjc3MjA4Y2ZhMjlkZDhhNjM5Zi4uNmJlNzJhYTc2YmYxOTdkMTdiZmRjZDY2OTQ1
M2MyNDBkOTk3NmVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0xMzEsNiArMTMxLDggQEAgSEVBREVSUyAr
PSBcCiAgICAgU2hhcmVkL1dlYlVSTFJlcXVlc3QuaCBcCiAgICAgU2hhcmVkL1dlYlVSTFJlc3Bv
bnNlLmggXAogICAgIFNoYXJlZC9XZWJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCBcCisgICAgU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJz
LmggXAorICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkN1c3RvbUZpbHRlclByb2dy
YW0uaCBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUu
aCBcCiAgICAgU2hhcmVkL1BsdWdpbnMvTlBSZW1vdGVPYmplY3RNYXAuaCBcCiAgICAgU2hhcmVk
L1BsdWdpbnMvTlBJZGVudGlmaWVyRGF0YS5oIFwKQEAgLTQ4OCw2ICs0OTAsNyBAQCBTT1VSQ0VT
ICs9IFwKICAgICBTaGFyZWQvV2ViVVJMUmVxdWVzdC5jcHAgXAogICAgIFNoYXJlZC9XZWJVUkxS
ZXNwb25zZS5jcHAgXAogICAgIFNoYXJlZC9XZWJXaGVlbEV2ZW50LmNwcCBcCisgICAgU2hhcmVk
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNw
cCBcCiAgICAgU2hhcmVkL3F0L0FyZ3VtZW50Q29kZXJzUXQuY3BwIFwKICAgICBTaGFyZWQvcXQv
TGF5ZXJUcmVlQ29udGV4dFF0LmNwcCBcCiAgICAgU2hhcmVkL3F0L1NoYXJlYWJsZUJpdG1hcFF0
LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmgKaW5k
ZXggYjFlZjQwMWE0NDUwMjViMjJjNjdmYjZkNTBlNzA0Zjg1Y2M4OWQ2Yy4uMWEyYWJiZGYxOTIw
M2M1YjhkMjMyNDllZDI2ZWUzM2Q4NWRiM2E1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZUNvb3JkaW5hdG9yUHJveHkuaApAQCAtMjMsNiArMjMsNyBAQAogI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKIAogI2luY2x1ZGUgIkJhY2tpbmdTdG9yZS5oIgorI2luY2x1ZGUgIkNv
b3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIkRyYXdpbmdBcmVh
UHJveHkuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJTdXJmYWNlVXBkYXRlSW5m
by5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcmkgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJLaXQyLnByaQppbmRleCA1MzZiNzc5YmFiYmZlZTc4YThlZGU2NjllN2JkYWI3YThj
OGM1ODY2Li44MGNiMmZiOGU3OTVhMjgwYzQ5NzllYjJmOWFmYjM0YTM1Zjk0ZmM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyLnByaQpAQCAtMTYsNiArMTYsNyBAQCBJTkNMVURFUEFUSCArPSBcCiAgICAgJCRTT1VSQ0Vf
RElSL1BsYXRmb3JtL3F0IFwKICAgICAkJFNPVVJDRV9ESVIvU2hhcmVkIFwKICAgICAkJFNPVVJD
RV9ESVIvU2hhcmVkL0FQSS9jIFwKKyAgICAkJFNPVVJDRV9ESVIvU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MgXAogICAgICQkU09VUkNFX0RJUi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQgXAogICAg
ICQkU09VUkNFX0RJUi9TaGFyZWQvUGx1Z2lucyBcCiAgICAgJCRTT1VSQ0VfRElSL1NoYXJlZC9Q
bHVnaW5zL05ldHNjYXBlIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVy
VHJlZUNvb3JkaW5hdG9yLmNwcAppbmRleCA0MTZjZjAwZTAyM2NjYjFjZTQ3MGQzOTc3M2YxMzU5
ZTA3ODY4YmU4Li5lZmYxYzkzMzAwMmZhYWNmYThkZDkwNzVkOWYyMDc4YjM1MjE3MDllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3Bw
CkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogI2luY2x1
ZGUgIkxheWVyVHJlZUNvb3JkaW5hdG9yLmgiCiAKKyNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBo
aWNzQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
aCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYUltcGwuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQuaCIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168670</attachid>
            <date>2012-10-15 03:47:27 -0700</date>
            <delta_ts>2012-10-18 03:20:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98733-20121015194610.patch</filename>
            <type>text/plain</type>
            <size>47599</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMjc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzI3MThjM2VjMDViM2M4
YjI4ZGQ5YjBkMjczYTg0OWQ5YTA3YWEwMS4uMDkwZDA4YWM1MjUwMjg4Y2YyMGUwNWY3MTliZGQy
ZmM5YmVlMGJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIwIEBACiAyMDEyLTEwLTEyICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCisgICAgICAgIFtXSzJdIEFk
ZCBDdXN0b21GaWx0ZXJPcGVyYXRpb24gc2VyaWFsaXphdGlvbiBpbiBBcmd1bWVudENvZGVyLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg3MzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uOjpwYXJhbWV0ZXJzKCkgdG8gY29uc3QgZnVuY3Rpb24sIGJlY2F1
c2UKKyAgICAgICAgdGhpcyBtZXRob2QgaXMgYSBnZXR0ZXIgYW5kIGEgY29uc3QgaW5zdGFuY2Ug
bmVlZHMgdG8gY2FsbCB0aGlzIG1ldGhvZC4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVz
ZSB0aGVyZSBpcyBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpwYXJhbWV0ZXJzKToKKworMjAxMi0xMC0xMiAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KKwogICAgICAgICBbQ1NTIFNo
YWRlcnNdIEltcGxlbWVudCBvdmVybGF5LCBjb2xvci1kb2RnZSwgY29sb3ItYnVybiwgaGFyZC1s
aWdodCwgc29mdC1saWdodCBibGVuZCBtb2Rlcy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NTA0CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlNDU0M2I3NDhjNDkw
N2MxNmFlNjhiNDQwOWM4NTZhNzhkMTE3OTI4Li4wNzFhOGFmYmEwZDViNjA0ZmM3MDhlYWEyNDZh
ZWE0YjZmYTA5YjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTItMTAtMTIgIEh1
YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CisKKyAgICAgICAgW1dLMl0g
QWRkIEN1c3RvbUZpbHRlck9wZXJhdGlvbiBzZXJpYWxpemF0aW9uIGluIEFyZ3VtZW50Q29kZXIu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODczMwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBcmd1
bWVudENvZGVycyBmb3IgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uIGFuZCBhbGwgZGVwZW5kZW50IGNs
YXNzZXMuCisgICAgICAgIENvb3JkaW5hdGVkIEdyYXBoaWNzIHdpbGwgdXNlIHRoaXMgY3NzIHNo
YWRlcnMgc2VyaWFsaXphdGlvbiB3aGVuIGl0IGVuYWJsZXMgQ1NTCisgICAgICAgIFNoYWRlcnMu
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBjb2RlIHBhdGggaXMgbm90IGFjdGl2YXRlZCB5ZXQu
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuY3BwOiBBZGRlZC4K
KyAgICAgICAgKENvcmVJUEMpOgorICAgICAgICAoQ29yZUlQQzo6OjplbmNvZGUpOgorICAgICAg
ICAoQ29yZUlQQzo6OjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoQ29yZUlQQyk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJDdXN0b21GaWx0ZXJQcm9ncmFtKToKKyAgICAgICAgICAgIFdl
YkN1c3RvbUZpbHRlclByb2dyYW0gaXMgbWFkZSB0byBzZXJpYWxpemUgdGhlIGRhdGEgb2YgYQor
ICAgICAgICAgICAgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtIHRvIHRoZSBVSSBwcm9jZXNzLgor
ICAgICAgICAoV2ViS2l0OjpXZWJDdXN0b21GaWx0ZXJQcm9ncmFtOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDdXN0b21GaWx0ZXJQcm9ncmFtOjpXZWJDdXN0b21GaWx0ZXJQcm9ncmFt
KToKKyAgICAgICAgKiBTaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5jcHA6CisgICAgICAgICogU2hh
cmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgICogU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5oOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oOgorICAg
ICAgICAqIFdlYktpdDIucHJpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcDoKKwogMjAxMi0xMC0xNCAgU2Ft
IFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1ha2UgVXNlclNjcmlwdCBhbmQg
VXNlclN0eWxlU2hlZXQgdmFsdWUgb2JqZWN0cyB0aGF0IGFyZSBjb3B5YWJsZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJP
cGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggNzg4YjNmMDE2MjZiM2Y0YWYwNTIwZGQ4YzZmMjVh
ZjQ0YTI1NDBhMy4uMGQ2NGQyMzY4Mjc3ODY0NTNkM2VhYzdhNDZkNzA1ZTk0NGYyMTNlNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtKiBwcm9ncmFtKCkgY29uc3QgeyByZXR1cm4g
bV9wcm9ncmFtLmdldCgpOyB9CiAgICAgCi0gICAgY29uc3QgQ3VzdG9tRmlsdGVyUGFyYW1ldGVy
TGlzdCYgcGFyYW1ldGVycygpIHsgcmV0dXJuIG1fcGFyYW1ldGVyczsgfQorICAgIGNvbnN0IEN1
c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHBhcmFtZXRlcnMoKSBjb25zdCB7IHJldHVybiBtX3Bh
cmFtZXRlcnM7IH0KICAgICAKICAgICB1bnNpZ25lZCBtZXNoUm93cygpIGNvbnN0IHsgcmV0dXJu
IG1fbWVzaFJvd3M7IH0KICAgICB1bnNpZ25lZCBtZXNoQ29sdW1ucygpIGNvbnN0IHsgcmV0dXJu
IG1fbWVzaENvbHVtbnM7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMu
dHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKaW5kZXggMjBlN2QzNGRjODY1ODE3
NTM2ZWMwYTE3ZTdhMjk0Mzc1NzU0ZjI3OC4uOGRjNmQyM2RhMmFlMjY1MmYzODkyM2Q5MzQ4MDY3
MWI4N2U1NTI0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKKysr
IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAgLTYsNiArNiw3IEBAIFNFVChXZWJL
aXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0vU2hhcmVkIgogICAg
ICIke1dFQktJVDJfRElSfS9TaGFyZWQvQVBJIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQv
QVBJL2MiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzIgog
ICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQiCiAgICAgIiR7V0VCS0lU
Ml9ESVJ9L1NoYXJlZC9QbHVnaW5zIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvUGx1Z2lu
cy9OZXRzY2FwZSIKQEAgLTIxMyw2ICsyMTQsOCBAQCBTRVQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAg
U2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCiAgICAgU2hhcmVkL0FQSS9jL1dLVXNlckNv
bnRlbnRVUkxQYXR0ZXJuLmNwcAogCisgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcAorCiAgICAgU2hhcmVkL1BsdWdpbnMv
TlBJZGVudGlmaWVyRGF0YS5jcHAKICAgICBTaGFyZWQvUGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VS
ZWNlaXZlci5jcHAKICAgICBTaGFyZWQvUGx1Z2lucy9OUE9iamVjdFByb3h5LmNwcApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29y
ZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTVhMzBmYzMwNGFiMzQyNjI3ZmIxOGEwMmRmMGVmYWY5OWMyNWY5YgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAKQEAgLTAsMCArMSw1MzUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNz
QXJndW1lbnRDb2RlcnMuaCIKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyNpbmNs
dWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0FuaW1hdGlv
bi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0
UG9pbnQzRC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9pbnQuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL0xlbmd0aC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVHJhbnNmb3JtYXRpb25NYXRyaXguaD4K
KworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyNpbmNsdWRlIDxXZWJDb3JlL0ZpbHRlck9wZXJh
dGlvbnMuaD4KKyNlbmRpZgorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQorI2luY2x1ZGUgIldl
YkN1c3RvbUZpbHRlclByb2dyYW0uaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0N1c3RvbUZpbHRlckFy
cmF5UGFyYW1ldGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9DdXN0b21GaWx0ZXJOdW1iZXJQYXJh
bWV0ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
Q3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JZGVu
dGl0eVRyYW5zZm9ybU9wZXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvTWF0cml4M0RUcmFu
c2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL01hdHJpeFRyYW5zZm9ybU9wZXJh
dGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24u
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RyYW5zbGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbi5oPgorI2VuZGlmCisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkK
KyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzU3VyZmFjZS5oPgorI2VuZGlmCisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFtZXNwYWNlIENv
cmVJUEMgeworCit2b2lkIEFyZ3VtZW50Q29kZXI8RmxvYXRQb2ludDNEPjo6ZW5jb2RlKEFyZ3Vt
ZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgRmxvYXRQb2ludDNEJiBmbG9hdFBvaW50M0QpCit7
CisgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxGbG9hdFBvaW50M0Q+OjplbmNvZGUoZW5jb2Rlciwg
ZmxvYXRQb2ludDNEKTsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPEZsb2F0UG9pbnQzRD46OmRl
Y29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIEZsb2F0UG9pbnQzRCYgZmxvYXRQb2ludDNE
KQoreworICAgIHJldHVybiBTaW1wbGVBcmd1bWVudENvZGVyPEZsb2F0UG9pbnQzRD46OmRlY29k
ZShkZWNvZGVyLCBmbG9hdFBvaW50M0QpOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8TGVuZ3Ro
Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgTGVuZ3RoJiBsZW5ndGgp
Cit7CisgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxMZW5ndGg+OjplbmNvZGUoZW5jb2RlciwgbGVu
Z3RoKTsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPExlbmd0aD46OmRlY29kZShBcmd1bWVudERl
Y29kZXIqIGRlY29kZXIsIExlbmd0aCYgbGVuZ3RoKQoreworICAgIHJldHVybiBTaW1wbGVBcmd1
bWVudENvZGVyPExlbmd0aD46OmRlY29kZShkZWNvZGVyLCBsZW5ndGgpOworfQorCit2b2lkIEFy
Z3VtZW50Q29kZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVy
KiBlbmNvZGVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtYXRpb25NYXRy
aXgpCit7CisgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmVu
Y29kZShlbmNvZGVyLCB0cmFuc2Zvcm1hdGlvbk1hdHJpeCk7Cit9CisKK2Jvb2wgQXJndW1lbnRD
b2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29k
ZXIsIFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1hdGlvbk1hdHJpeCkKK3sKKyAgICBy
ZXR1cm4gU2ltcGxlQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShk
ZWNvZGVyLCB0cmFuc2Zvcm1hdGlvbk1hdHJpeCk7Cit9CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRF
UlMpCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz46OmVuY29k
ZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlv
bnMmIGZpbHRlcnMpCit7CisgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKGZpbHRlcnMuc2l6ZSgp
KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbHRlcnMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmaWx0ZXIgPSBmaWx0ZXJzLmF0KGkpOworICAg
ICAgICBGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHlwZSA9IGZpbHRlci0+Z2V0T3Bl
cmF0aW9uVHlwZSgpOworICAgICAgICBlbmNvZGVyLT5lbmNvZGVFbnVtKHR5cGUpOworICAgICAg
ICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FM
RToKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOgorICAgICAgICBjYXNlIEZp
bHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpI
VUVfUk9UQVRFOgorICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlRG91YmxlKHN0YXRpY19jYXN0
PGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIpLT5hbW91bnQo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklO
VkVSVDoKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6CisgICAgICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDoKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246Ok9QQUNJVFk6CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVEb3VibGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbio+KGZpbHRl
ciktPmFtb3VudCgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZpbHRlck9w
ZXJhdGlvbjo6QkxVUjoKKyAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZW5jb2Rl
KGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIp
LT5zdGREZXZpYXRpb24oKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOiB7CisgICAgICAgICAgICBjb25zdCBEcm9wU2hhZG93
RmlsdGVyT3BlcmF0aW9uKiBzaGFkb3cgPSBzdGF0aWNfY2FzdDxjb25zdCBEcm9wU2hhZG93Rmls
dGVyT3BlcmF0aW9uKj4oZmlsdGVyKTsKKyAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8SW50UG9p
bnQ+OjplbmNvZGUoZW5jb2Rlciwgc2hhZG93LT5sb2NhdGlvbigpKTsKKyAgICAgICAgICAgIGVu
Y29kZXItPmVuY29kZUludDMyKHNoYWRvdy0+c3RkRGV2aWF0aW9uKCkpOworICAgICAgICAgICAg
QXJndW1lbnRDb2RlcjxDb2xvcj46OmVuY29kZShlbmNvZGVyLCBzaGFkb3ctPmNvbG9yKCkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisg
ICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDVVNUT006IHsKKyAgICAgICAgICAgIGNvbnN0
IEN1c3RvbUZpbHRlck9wZXJhdGlvbiogY3VzdG9tT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8Y29u
c3QgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyKTsKKworICAgICAgICAgICAgQVNTRVJU
KGN1c3RvbU9wZXJhdGlvbi0+cHJvZ3JhbSgpKTsKKyAgICAgICAgICAgIFJlZlB0cjxDdXN0b21G
aWx0ZXJQcm9ncmFtPiBwcm9ncmFtID0gY3VzdG9tT3BlcmF0aW9uLT5wcm9ncmFtKCk7CisgICAg
ICAgICAgICBBU1NFUlQocHJvZ3JhbS0+aXNMb2FkZWQoKSk7CisgICAgICAgICAgICBDdXN0b21G
aWx0ZXJQcm9ncmFtSW5mbyBwcm9ncmFtSW5mbyA9IHByb2dyYW0tPnByb2dyYW1JbmZvKCk7Cisg
ICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUocHJvZ3JhbUluZm8udmVydGV4U2hhZGVyU3RyaW5n
KCkpOworICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHByb2dyYW1JbmZvLmZyYWdtZW50U2hh
ZGVyU3RyaW5nKCkpOworICAgICAgICAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdz
IG1peFNldHRpbmdzID0gcHJvZ3JhbUluZm8ubWl4U2V0dGluZ3MoKTsKKyAgICAgICAgICAgIGVu
Y29kZXItPmVuY29kZShtaXhTZXR0aW5ncy5lbmFibGVkKTsKKyAgICAgICAgICAgIGVuY29kZXIt
PmVuY29kZUVudW0obWl4U2V0dGluZ3MuYmxlbmRNb2RlKTsKKyAgICAgICAgICAgIGVuY29kZXIt
PmVuY29kZUVudW0obWl4U2V0dGluZ3MuY29tcG9zaXRlT3BlcmF0b3IpOworCisgICAgICAgICAg
ICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0IHBhcmFtZXRlcnMgPSBjdXN0b21PcGVyYXRpb24t
PnBhcmFtZXRlcnMoKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZVVJbnQzMihwYXJhbWV0
ZXJzLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRl
cnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyUGFy
YW1ldGVyPiBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJzW2ldOworICAgICAgICAgICAgICAgIGVuY29k
ZXItPmVuY29kZShwYXJhbWV0ZXItPm5hbWUoKSk7CisgICAgICAgICAgICAgICAgZW5jb2Rlci0+
ZW5jb2RlRW51bShwYXJhbWV0ZXItPnBhcmFtZXRlclR5cGUoKSk7CisKKyAgICAgICAgICAgICAg
ICBzd2l0Y2ggKHBhcmFtZXRlci0+cGFyYW1ldGVyVHlwZSgpKSB7CisgICAgICAgICAgICAgICAg
Y2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6OkFSUkFZOiB7CisgICAgICAgICAgICAgICAgICAg
IEN1c3RvbUZpbHRlckFycmF5UGFyYW1ldGVyKiBhcnJheVBhcmFtZXRlciA9IHN0YXRpY19jYXN0
PEN1c3RvbUZpbHRlckFycmF5UGFyYW1ldGVyKj4ocGFyYW1ldGVyLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKGFycmF5UGFyYW1ldGVyLT5zaXplKCkp
OworICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGFycmF5UGFyYW1l
dGVyLT5zaXplKCk7ICsraikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kZXItPmVuY29k
ZShhcnJheVBhcmFtZXRlci0+dmFsdWVBdChqKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEN1c3RvbUZpbHRlclBh
cmFtZXRlcjo6TlVNQkVSOiB7CisgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpbHRlck51bWJl
clBhcmFtZXRlciogbnVibWVyUGFyYW1ldGVyID0gc3RhdGljX2Nhc3Q8Q3VzdG9tRmlsdGVyTnVt
YmVyUGFyYW1ldGVyKj4ocGFyYW1ldGVyLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZW5j
b2Rlci0+ZW5jb2RlVUludDMyKG51Ym1lclBhcmFtZXRlci0+c2l6ZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBudWJtZXJQYXJhbWV0ZXItPnNpemUoKTsg
KytqKQorICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKG51Ym1lclBhcmFt
ZXRlci0+dmFsdWVBdChqKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEN1c3RvbUZpbHRlclBhcmFtZXRlcjo6VFJB
TlNGT1JNOiB7CisgICAgICAgICAgICAgICAgICAgIEN1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFt
ZXRlciogdHJhbnNmb3JtUGFyYW1ldGVyID0gc3RhdGljX2Nhc3Q8Q3VzdG9tRmlsdGVyVHJhbnNm
b3JtUGFyYW1ldGVyKj4ocGFyYW1ldGVyLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgQXJn
dW1lbnRDb2RlcjxUcmFuc2Zvcm1PcGVyYXRpb25zPjo6ZW5jb2RlKGVuY29kZXIsIHRyYW5zZm9y
bVBhcmFtZXRlci0+b3BlcmF0aW9ucygpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKGN1c3RvbU9wZXJhdGlvbi0+bWVzaFJvd3MoKSk7Cisg
ICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUoY3VzdG9tT3BlcmF0aW9uLT5tZXNoQ29sdW1ucygp
KTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUVudW0oY3VzdG9tT3BlcmF0aW9uLT5tZXNo
Qm94VHlwZSgpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUVudW0oY3VzdG9tT3BlcmF0
aW9uLT5tZXNoVHlwZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisjZW5kaWYK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQor
fQorCitib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz46OmRlY29k
ZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmIGZp
bHRlcnMpCit7CisgICAgdWludDMyX3Qgc2l6ZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJ
bnQzMihzaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgVmVjdG9yPFJlZlB0cjxG
aWx0ZXJPcGVyYXRpb24+ID4mIG9wZXJhdGlvbnMgPSBmaWx0ZXJzLm9wZXJhdGlvbnMoKTsKKwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIEZpbHRlck9w
ZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0eXBlOworICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0
aW9uPiBmaWx0ZXI7CisgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bSh0eXBlKSkKKyAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAg
ICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRToKKyAgICAgICAgY2FzZSBGaWx0ZXJP
cGVyYXRpb246OlNFUElBOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6
CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpIVUVfUk9UQVRFOiB7CisgICAgICAgICAg
ICBkb3VibGUgdmFsdWU7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZURvdWJsZSh2
YWx1ZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZmlsdGVy
ID0gQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKHZhbHVlLCB0eXBlKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpJTlZFUlQ6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOgor
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q09OVFJBU1Q6CisgICAgICAgIGNhc2UgRmls
dGVyT3BlcmF0aW9uOjpPUEFDSVRZOiB7CisgICAgICAgICAgICBkb3VibGUgdmFsdWU7CisgICAg
ICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZURvdWJsZSh2YWx1ZSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZmlsdGVyID0gQmFzaWNDb21wb25lbnRUcmFu
c2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKHZhbHVlLCB0eXBlKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOiB7Cisg
ICAgICAgICAgICBMZW5ndGggbGVuZ3RoOworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVy
PExlbmd0aD46OmRlY29kZShkZWNvZGVyLCBsZW5ndGgpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIGZpbHRlciA9IEJsdXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0
ZShsZW5ndGgsIHR5cGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOiB7CisgICAgICAgICAgICBJbnRQb2lu
dCBsb2NhdGlvbjsKKyAgICAgICAgICAgIGludDMyX3Qgc3RkRGV2aWF0aW9uOworICAgICAgICAg
ICAgQ29sb3IgY29sb3I7CisgICAgICAgICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8SW50UG9pbnQ+
OjpkZWNvZGUoZGVjb2RlciwgbG9jYXRpb24pKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlSW50MzIoc3RkRGV2aWF0aW9uKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIUFyZ3VtZW50
Q29kZXI8Q29sb3I+OjpkZWNvZGUoZGVjb2RlciwgY29sb3IpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIGZpbHRlciA9IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRp
b246OmNyZWF0ZShsb2NhdGlvbiwgc3RkRGV2aWF0aW9uLCBjb2xvciwgdHlwZSk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyAgICAgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246OkNVU1RPTTogeworICAgICAgICAgICAgU3RyaW5nIHZlcnRl
eFNoYWRlclN0cmluZzsKKyAgICAgICAgICAgIFN0cmluZyBmcmFnbWVudFNoYWRlclN0cmluZzsK
KyAgICAgICAgICAgIEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyBtaXhTZXR0aW5nczsK
KyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHZlcnRleFNoYWRlclN0cmluZykpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUoZnJhZ21lbnRTaGFkZXJTdHJpbmcpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG1peFNldHRpbmdzLmVuYWJsZWQp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlRW51bShtaXhTZXR0aW5ncy5ibGVuZE1vZGUpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShtaXhTZXR0
aW5ncy5jb21wb3NpdGVPcGVyYXRvcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgUmVmUHRyPEN1c3RvbUZpbHRlclByb2dyYW0+IHByb2dyYW0gPSBXZWJDdXN0
b21GaWx0ZXJQcm9ncmFtOjpjcmVhdGUodmVydGV4U2hhZGVyU3RyaW5nLCBmcmFnbWVudFNoYWRl
clN0cmluZywgbWl4U2V0dGluZ3MpOworCisgICAgICAgICAgICB1aW50MzJfdCBwYXJhbWV0ZXJz
U2l6ZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKHBhcmFtZXRlcnNT
aXplKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIEN1c3Rv
bUZpbHRlclBhcmFtZXRlckxpc3QgcGFyYW1ldGVycyhwYXJhbWV0ZXJzU2l6ZSk7CisgICAgICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnNTaXplOyArK2kpIHsKKyAgICAg
ICAgICAgICAgICBTdHJpbmcgbmFtZTsKKyAgICAgICAgICAgICAgICBDdXN0b21GaWx0ZXJQYXJh
bWV0ZXI6OlBhcmFtZXRlclR5cGUgcGFyYW1ldGVyVHlwZTsKKyAgICAgICAgICAgICAgICBpZiAo
IWRlY29kZXItPmRlY29kZShuYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShwYXJhbWV0ZXJUeXBl
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAg
c3dpdGNoIChwYXJhbWV0ZXJUeXBlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBDdXN0b21GaWx0
ZXJQYXJhbWV0ZXI6OkFSUkFZOiB7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxDdXN0b21G
aWx0ZXJBcnJheVBhcmFtZXRlcj4gYXJyYXlQYXJhbWV0ZXIgPSBDdXN0b21GaWx0ZXJBcnJheVBh
cmFtZXRlcjo6Y3JlYXRlKG5hbWUpOworICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFw
cGVuZChhcnJheVBhcmFtZXRlcik7CisgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGFycmF5
UGFyYW1ldGVyU2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVV
SW50MzIoYXJyYXlQYXJhbWV0ZXJTaXplKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIGFycmF5UGFyYW1ldGVyVmFsdWU7
CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgYXJyYXlQYXJhbWV0
ZXJTaXplOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlKGFycmF5UGFyYW1ldGVyVmFsdWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5UGFyYW1ldGVyLT5hZGRW
YWx1ZShhcnJheVBhcmFtZXRlclZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
Y2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6Ok5VTUJFUjogeworICAgICAgICAgICAgICAgICAg
ICBSZWZQdHI8Q3VzdG9tRmlsdGVyTnVtYmVyUGFyYW1ldGVyPiBudW1iZXJQYXJhbWV0ZXIgPSBD
dXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXI6OmNyZWF0ZShuYW1lKTsKKyAgICAgICAgICAgICAg
ICAgICAgcGFyYW1ldGVycy5hcHBlbmQobnVtYmVyUGFyYW1ldGVyKTsKKyAgICAgICAgICAgICAg
ICAgICAgdWludDMyX3QgbnVtYmVyUGFyYW1ldGVyU2l6ZTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIobnVtYmVyUGFyYW1ldGVyU2l6ZSkpCisgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGRvdWJs
ZSBudW1iZXJQYXJhbWV0ZXJWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3Qg
aiA9IDA7IGogPCBudW1iZXJQYXJhbWV0ZXJTaXplOyArK2opIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKG51bWJlclBhcmFtZXRlclZhbHVlKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAg
ICAgICBudW1iZXJQYXJhbWV0ZXItPmFkZFZhbHVlKG51bWJlclBhcmFtZXRlclZhbHVlKTsKKyAg
ICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6OlRS
QU5TRk9STTogeworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyVHJhbnNm
b3JtUGFyYW1ldGVyPiB0cmFuc2Zvcm1QYXJhbWV0ZXIgPSBDdXN0b21GaWx0ZXJUcmFuc2Zvcm1Q
YXJhbWV0ZXI6OmNyZWF0ZShuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5h
cHBlbmQodHJhbnNmb3JtUGFyYW1ldGVyKTsKKyAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3Jt
T3BlcmF0aW9ucyBvcGVyYXRpb25zOworICAgICAgICAgICAgICAgICAgICBpZiAoIUFyZ3VtZW50
Q29kZXI8VHJhbnNmb3JtT3BlcmF0aW9ucz46OmRlY29kZShkZWNvZGVyLCBvcGVyYXRpb25zKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgdHJhbnNmb3JtUGFyYW1ldGVyLT5zZXRPcGVyYXRpb25zKG9wZXJhdGlvbnMpOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICB1bnNpZ25lZCBtZXNoUm93czsKKyAgICAg
ICAgICAgIHVuc2lnbmVkIG1lc2hDb2x1bW5zOworICAgICAgICAgICAgQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uOjpNZXNoQm94VHlwZSBtZXNoQm94VHlwZTsKKyAgICAgICAgICAgIEN1c3RvbUZpbHRl
ck9wZXJhdGlvbjo6TWVzaFR5cGUgbWVzaFR5cGU7CisgICAgICAgICAgICBpZiAoIWRlY29kZXIt
PmRlY29kZShtZXNoUm93cykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUobWVzaENvbHVtbnMpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShtZXNo
Qm94VHlwZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYg
KCFkZWNvZGVyLT5kZWNvZGVFbnVtKG1lc2hUeXBlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgICAgIGZpbHRlciA9IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6Y3Jl
YXRlKHByb2dyYW0sIHBhcmFtZXRlcnMsIG1lc2hSb3dzLCBtZXNoQ29sdW1ucywgbWVzaEJveFR5
cGUsIG1lc2hUeXBlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisjZW5kaWYKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKGZpbHRlcikKKyAgICAgICAgICAgIG9wZXJhdGlvbnMuYXBwZW5kKGZpbHRlcik7CisgICAg
fQorCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKworI2lmIEVOQUJMRShDU1NfU0hBREVS
UykKK3ZvaWQgQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1PcGVyYXRpb25zPjo6ZW5jb2RlKEFyZ3Vt
ZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgdHJhbnNmb3Jt
T3BlcmF0aW9ucykKK3sKKyAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIodHJhbnNmb3JtT3BlcmF0
aW9ucy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdHJhbnNmb3JtT3BlcmF0
aW9ucy5zaXplKCk7ICsraSkgeworICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIG9w
ZXJhdGlvbiA9IHRyYW5zZm9ybU9wZXJhdGlvbnMuYXQoaSk7CisgICAgICAgIGVuY29kZXItPmVu
Y29kZUVudW0ob3BlcmF0aW9uLT5nZXRPcGVyYXRpb25UeXBlKCkpOworCisgICAgICAgIHN3aXRj
aCAob3BlcmF0aW9uLT5nZXRPcGVyYXRpb25UeXBlKCkpIHsKKyAgICAgICAgY2FzZSBUcmFuc2Zv
cm1PcGVyYXRpb246OlNDQUxFX1g6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpT
Q0FMRV9ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEU6CisgICAgICAg
IGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9aOgorICAgICAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6U0NBTEVfM0Q6CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGlj
X2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT54KCkpOwor
ICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNm
b3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+eSgpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVu
Y29kZShzdGF0aWNfY2FzdDxjb25zdCBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlv
biktPnooKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVy
YXRpb246OlRSQU5TTEFURV9YOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJB
TlNMQVRFX1k6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEU6Cisg
ICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWjoKKyAgICAgICAgY2Fz
ZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV8zRDoKKyAgICAgICAgICAgIEFyZ3VtZW50
Q29kZXI8TGVuZ3RoPjo6ZW5jb2RlKGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPngoKSk7CisgICAgICAgICAgICBBcmd1
bWVudENvZGVyPExlbmd0aD46OmVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxjb25zdCBUcmFu
c2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT55KCkpOworICAgICAgICAgICAg
QXJndW1lbnRDb2RlcjxMZW5ndGg+OjplbmNvZGUoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8Y29uc3Qg
VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+eigpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFOgorICAg
ICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1g6CisgICAgICAgIGNhc2UgVHJh
bnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWToKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246OlJPVEFURV8zRDoKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxj
b25zdCBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT54KCkpOworICAgICAg
ICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGNvbnN0IFJvdGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbio+KG9wZXJhdGlvbiktPnkoKSk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUo
c3RhdGljX2Nhc3Q8Y29uc3QgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+
eigpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxjb25zdCBSb3Rh
dGVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT5hbmdsZSgpKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19YOgorICAgICAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19ZOgorICAgICAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6U0tFVzoKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2Fz
dDxjb25zdCBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+YW5nbGVYKCkpOwor
ICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRpY19jYXN0PGNvbnN0IFNrZXdUcmFuc2Zv
cm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT5hbmdsZVkoKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWDoKKyAgICAgICAgICAgIEFy
Z3VtZW50Q29kZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+OjplbmNvZGUoZW5jb2Rlciwgc3RhdGlj
X2Nhc3Q8Y29uc3QgTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+bWF0cml4
KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpNQVRSSVhfM0Q6CisgICAgICAgICAgICBBcmd1bWVudENvZGVyPFRyYW5zZm9ybWF0aW9uTWF0
cml4Pjo6ZW5jb2RlKGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0IE1hdHJpeDNEVHJhbnNmb3Jt
T3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+bWF0cml4KCkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpQRVJTUEVDVElWRToKKyAgICAgICAgICAg
IEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZW5jb2RlKGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0
IFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+cGVyc3BlY3RpdmUo
KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OklERU5USVRZOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpOT05FOgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKworYm9vbCBBcmd1bWVudENvZGVyPFRy
YW5zZm9ybU9wZXJhdGlvbnM+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBUcmFu
c2Zvcm1PcGVyYXRpb25zJiB0cmFuc2Zvcm1PcGVyYXRpb25zKQoreworICAgIHVpbnQzMl90IG9w
ZXJhdGlvbnNTaXplOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKG9wZXJhdGlvbnNT
aXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBvcGVyYXRpb25zU2l6ZTsgKytpKSB7CisgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3Bl
cmF0aW9uVHlwZSBvcGVyYXRpb25UeXBlOworICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVu
dW0ob3BlcmF0aW9uVHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAg
c3dpdGNoIChvcGVyYXRpb25UeXBlKSB7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpTQ0FMRV9YOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWToKKyAg
ICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFOgorICAgICAgICBjYXNlIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6U0NBTEVfWjoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlNDQUxFXzNEOiB7CisgICAgICAgICAgICBkb3VibGUgeCwgeSwgejsKKyAgICAgICAgICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKHgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHkpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHopKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMub3Bl
cmF0aW9ucygpLmFwcGVuZChTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHgsIHksIHos
IG9wZXJhdGlvblR5cGUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWDoKKyAgICAgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJh
dGlvbjo6VFJBTlNMQVRFOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNM
QVRFX1o6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfM0Q6IHsK
KyAgICAgICAgICAgIExlbmd0aCB4LCB5LCB6OworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENv
ZGVyPExlbmd0aD46OmRlY29kZShkZWNvZGVyLCB4KSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZGVjb2RlKGRl
Y29kZXIsIHkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlm
ICghQXJndW1lbnRDb2RlcjxMZW5ndGg+OjpkZWNvZGUoZGVjb2RlciwgeikpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVy
YXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHgsIHks
IHosIG9wZXJhdGlvblR5cGUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEU6CisgICAgICAgIGNhc2UgVHJhbnNm
b3JtT3BlcmF0aW9uOjpST1RBVEVfWDoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246
OlJPVEFURV9ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEOiB7
CisgICAgICAgICAgICBkb3VibGUgeCwgeSwgeiwgYW5nbGU7CisgICAgICAgICAgICBpZiAoIWRl
Y29kZXItPmRlY29kZSh4KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh5KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh6KSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShhbmdsZSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgdHJhbnNmb3JtT3Bl
cmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3Jl
YXRlKHgsIHksIHosIGFuZ2xlLCBvcGVyYXRpb25UeXBlKSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19YOgorICAg
ICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFV19ZOgorICAgICAgICBjYXNlIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6U0tFVzogeworICAgICAgICAgICAgZG91YmxlIGFuZ2xlWCwgYW5nbGVZ
OworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoYW5nbGVYKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShhbmds
ZVkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5zZm9y
bU9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChTa2V3VHJhbnNmb3JtT3BlcmF0aW9uOjpj
cmVhdGUoYW5nbGVYLCBhbmdsZVksIG9wZXJhdGlvblR5cGUpKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVg6IHsK
KyAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKKyAgICAgICAgICAgIGlm
ICghQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShkZWNvZGVyLCBt
YXRyaXgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5z
Zm9ybU9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChNYXRyaXhUcmFuc2Zvcm1PcGVyYXRp
b246OmNyZWF0ZShtYXRyaXgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVhfM0Q6IHsKKyAgICAgICAgICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKKyAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2Rl
cjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShkZWNvZGVyLCBtYXRyaXgpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMu
b3BlcmF0aW9ucygpLmFwcGVuZChNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKG1h
dHJpeCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246OlBFUlNQRUNUSVZFOiB7CisgICAgICAgICAgICBMZW5ndGggcGVyc3Bl
Y3RpdmU7CisgICAgICAgICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZGVjb2RlKGRl
Y29kZXIsIHBlcnNwZWN0aXZlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICB0cmFuc2Zvcm1PcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoUGVyc3BlY3Rp
dmVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShwZXJzcGVjdGl2ZSkpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OklERU5U
SVRZOgorICAgICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5k
KElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok5PTkU6CisgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
fQorICAgIHJldHVybiB0cnVlOworfQorI2VuZGlmCisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFD
RSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbj46OmVu
Y29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzU3Vy
ZmFjZVRva2VuJiB0b2tlbikKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgZW5jb2Rlci0+ZW5jb2Rl
VUludDMyKHRva2VuLmZyb250QnVmZmVySGFuZGxlKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVVSW50
MzIodG9rZW4uYmFja0J1ZmZlckhhbmRsZSk7CisjZW5kaWYKKyNpZiBPUyhMSU5VWCkKKyAgICBl
bmNvZGVyLT5lbmNvZGVVSW50MzIodG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUpOworI2VuZGlmCit9
CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbj46OmRl
Y29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRv
a2VuJiB0b2tlbikKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVV
SW50MzIodG9rZW4uZnJvbnRCdWZmZXJIYW5kbGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIodG9rZW4uYmFja0J1ZmZlckhhbmRsZSkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorI2lmIE9TKExJTlVYKQorICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlVUludDMyKHRva2VuLmZyb250QnVmZmVySGFuZGxlKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworI2VuZGlmCisgICAgcmV0dXJuIHRydWU7Cit9CisjZW5kaWYKKworfSAvLyBu
YW1lc3BhY2UgQ29yZUlQQworI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uODdiNGM1ZmU3NTI5YzU3YmVjZWZhNjIxZDhiOTExYTE2MWUyMTQ4MgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nv
b3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzX2gKKyNk
ZWZpbmUgQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzX2gKKworI2lmIFVTRShDT09S
RElOQVRFRF9HUkFQSElDUykKKyNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CitjbGFzcyBGbG9hdFBvaW50M0Q7CitjbGFzcyBUcmFuc2Zvcm1hdGlvbk1h
dHJpeDsKK3N0cnVjdCBMZW5ndGg7CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCitjbGFzcyBG
aWx0ZXJPcGVyYXRpb25zOworI2VuZGlmCisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCitjbGFz
cyBUcmFuc2Zvcm1PcGVyYXRpb25zOworI2VuZGlmCisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFD
RSkKK3N0cnVjdCBHcmFwaGljc1N1cmZhY2VUb2tlbjsKKyNlbmRpZgorfQorCituYW1lc3BhY2Ug
Q29yZUlQQyB7CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Rmxv
YXRQb2ludDNEPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQzRCYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1
bWVudERlY29kZXIqLCBXZWJDb3JlOjpGbG9hdFBvaW50M0QmKTsKK307CisKK3RlbXBsYXRlPD4g
c3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TGVuZ3RoPiB7CisgICAgc3RhdGljIHZvaWQg
ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6Okxlbmd0aCYpOworICAgIHN0
YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpMZW5ndGgmKTsKK307
CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6VHJhbnNmb3JtYXRp
b25NYXRyaXg+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29u
c3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNv
ZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKK307
CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENv
ZGVyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
QXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucyYpOworICAg
IHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpGaWx0ZXJPcGVy
YXRpb25zJik7Cit9OworI2VuZGlmCisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCit0ZW1wbGF0
ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OlRyYW5zZm9ybU9wZXJhdGlvbnM+IHsK
KyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6
VHJhbnNmb3JtT3BlcmF0aW9ucyYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERl
Y29kZXIqLCBXZWJDb3JlOjpUcmFuc2Zvcm1PcGVyYXRpb25zJik7Cit9OworI2VuZGlmCisKKyNp
ZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUo
QXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4mKTsK
KyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6R3JhcGhp
Y3NTdXJmYWNlVG9rZW4mKTsKK307CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgQ29yZUlQQwor
I2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKworI2VuZGlmIC8vIENvb3JkaW5h
dGVkR3JhcGhpY3NBcmd1bWVudENvZGVyc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDdXN0b21GaWx0ZXJQcm9ncmFtLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDdXN0b21GaWx0ZXJQcm9n
cmFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZWI2M2Y3MTA4Yjk2ZDdiMmI3ODY4YjgzM2U5M2E4ODIwZjQ4NzIy
NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL1dlYkN1c3RvbUZpbHRlclByb2dyYW0uaApAQCAtMCwwICsxLDczIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbV9oCisjZGVmaW5lIFdl
YkN1c3RvbUZpbHRlclByb2dyYW1faAorCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKSAm
JiBFTkFCTEUoQ1NTX1NIQURFUlMpCisjaW5jbHVkZSA8V2ViQ29yZS9DdXN0b21GaWx0ZXJQcm9n
cmFtLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJDdXN0b21GaWx0ZXJQcm9n
cmFtIDogcHVibGljIFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW0geworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFdlYkN1c3RvbUZpbHRlclByb2dyYW0+IGNyZWF0ZShTdHJpbmcg
dmVydGV4U2hhZGVyU3RyaW5nLCBTdHJpbmcgbV9mcmFnbWVudFNoYWRlclN0cmluZywgV2ViQ29y
ZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIG1peFNldHRpbmdzKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJDdXN0b21GaWx0ZXJQcm9ncmFtKHZlcnRleFNo
YWRlclN0cmluZywgbV9mcmFnbWVudFNoYWRlclN0cmluZywgbWl4U2V0dGluZ3MpKTsKKyAgICB9
CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNMb2FkZWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiB0
cnVlOyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQ
cm9ncmFtJiBvKSBjb25zdCBPVkVSUklERQorICAgIHsKKyAgICAgICAgLy8gVGhlIGZvbGxvd2lu
ZyBjYXN0IGlzIHVnbHksIGJ1dCBXZWJDdXN0b21GaWx0ZXJQcm9ncmFtIGlzIHRoZSBzaW5nbGUg
aW1wbGVtZW50YXRpb24gb2YgQ3VzdG9tRmlsdGVyUHJvZ3JhbSBvbiBVSSBQcm9jZXNzLgorICAg
ICAgICBjb25zdCBXZWJDdXN0b21GaWx0ZXJQcm9ncmFtKiBvdGhlciA9IHN0YXRpY19jYXN0PGNv
bnN0IFdlYkN1c3RvbUZpbHRlclByb2dyYW0qPigmbyk7CisgICAgICAgIHJldHVybiBtaXhTZXR0
aW5ncygpID09IG90aGVyLT5taXhTZXR0aW5ncygpICYmIG1fdmVydGV4U2hhZGVyU3RyaW5nID09
IG90aGVyLT52ZXJ0ZXhTaGFkZXJTdHJpbmcoKSAmJiBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nID09
IG90aGVyLT5mcmFnbWVudFNoYWRlclN0cmluZygpOworICAgIH0KKworcHJvdGVjdGVkOgorICAg
IHZpcnR1YWwgU3RyaW5nIHZlcnRleFNoYWRlclN0cmluZygpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIG1fdmVydGV4U2hhZGVyU3RyaW5nOyB9CisgICAgdmlydHVhbCBTdHJpbmcgZnJhZ21lbnRT
aGFkZXJTdHJpbmcoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2ZyYWdtZW50U2hhZGVyU3Ry
aW5nOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbEhhdmVDbGllbnRzKCkgT1ZFUlJJREUgeyBu
b3RpZnlDbGllbnRzKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlTGFzdENsaWVudCgp
IE9WRVJSSURFIHsgfQorCitwcml2YXRlOgorICAgIFdlYkN1c3RvbUZpbHRlclByb2dyYW0oU3Ry
aW5nIHZlcnRleFNoYWRlclN0cmluZywgU3RyaW5nIGZyYWdtZW50U2hhZGVyU3RyaW5nLCBXZWJD
b3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MgbWl4U2V0dGluZ3MpCisgICAgICAg
IDogV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbShtaXhTZXR0aW5ncykKKyAgICAgICAgLCBt
X3ZlcnRleFNoYWRlclN0cmluZyh2ZXJ0ZXhTaGFkZXJTdHJpbmcpCisgICAgICAgICwgbV9mcmFn
bWVudFNoYWRlclN0cmluZyhmcmFnbWVudFNoYWRlclN0cmluZykKKyAgICB7CisgICAgfQorCisg
ICAgU3RyaW5nIG1fdmVydGV4U2hhZGVyU3RyaW5nOworICAgIFN0cmluZyBtX2ZyYWdtZW50U2hh
ZGVyU3RyaW5nOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpICYmIEVOQUJMRShDU1NfU0hBREVSUykKKworI2VuZGlmIC8v
IFdlYkN1c3RvbUZpbHRlclByb2dyYW1faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1NoYXJlYWJsZVN1cmZhY2UuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJs
ZVN1cmZhY2UuY3BwCmluZGV4IDEzNmIwOTMxMTM0ZTRhMDg4N2YzMzgwNmNmZjYwYmYwZTJiYTNh
YWQuLjY3MjgxNmZjNDkwM2EyZDllMzQ4NmQ5Yzg4OTcxMjcxM2QyMjlhYzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvU2hhcmVhYmxlU3VyZmFjZS5jcHAKQEAgLTIwLDYgKzIwLDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTaGFyZWFibGVTdXJmYWNlLmgiCiAKKyNpbmNs
dWRlICJDb29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJHcmFw
aGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0dyYXBoaWNzU3VyZmFjZVRva2VuLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IDA0MTI0NjY3Zjk1NzQ2OTJl
NTg3MzUxYmZhMjBiNzJmOGViY2EzOWIuLjhhZTZjODVhN2UzZDc1MTJkZjAxOWI3YjJlYWU1YWZk
ZDFjN2E0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRD
b2RlcnMuY3BwCkBAIC00OSwyMCArNDksNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93RmVh
dHVyZXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKLSNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCi0jaW5jbHVkZSA8V2ViQ29yZS9BbmltYXRpb24uaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0Zsb2F0UG9pbnQzRC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvTGVuZ3RoLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgotCi0jaWYgRU5BQkxF
KENTU19GSUxURVJTKQotI2luY2x1ZGUgPFdlYkNvcmUvRmlsdGVyT3BlcmF0aW9ucy5oPgotI2Vu
ZGlmCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0jaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGlj
c1N1cmZhY2UuaD4KLSNlbmRpZgotI2VuZGlmCi0KIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtODcyLDE3MCArODU4LDQgQEAgYm9vbCBBcmd1
bWVudENvZGVyPEtVUkw+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBLVVJMJiBy
ZXN1bHQpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCi12b2lkIEFyZ3VtZW50Q29kZXI8RmxvYXRQb2ludDNEPjo6ZW5jb2RlKEFyZ3VtZW50RW5j
b2RlciogZW5jb2RlciwgY29uc3QgRmxvYXRQb2ludDNEJiBmbG9hdFBvaW50M0QpCi17Ci0gICAg
U2ltcGxlQXJndW1lbnRDb2RlcjxGbG9hdFBvaW50M0Q+OjplbmNvZGUoZW5jb2RlciwgZmxvYXRQ
b2ludDNEKTsKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPEZsb2F0UG9pbnQzRD46OmRlY29kZShB
cmd1bWVudERlY29kZXIqIGRlY29kZXIsIEZsb2F0UG9pbnQzRCYgZmxvYXRQb2ludDNEKQotewot
ICAgIHJldHVybiBTaW1wbGVBcmd1bWVudENvZGVyPEZsb2F0UG9pbnQzRD46OmRlY29kZShkZWNv
ZGVyLCBmbG9hdFBvaW50M0QpOwotfQotCi12b2lkIEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZW5j
b2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgTGVuZ3RoJiBsZW5ndGgpCi17Ci0g
ICAgU2ltcGxlQXJndW1lbnRDb2RlcjxMZW5ndGg+OjplbmNvZGUoZW5jb2RlciwgbGVuZ3RoKTsK
LX0KLQotYm9vbCBBcmd1bWVudENvZGVyPExlbmd0aD46OmRlY29kZShBcmd1bWVudERlY29kZXIq
IGRlY29kZXIsIExlbmd0aCYgbGVuZ3RoKQotewotICAgIHJldHVybiBTaW1wbGVBcmd1bWVudENv
ZGVyPExlbmd0aD46OmRlY29kZShkZWNvZGVyLCBsZW5ndGgpOwotfQotCi12b2lkIEFyZ3VtZW50
Q29kZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNv
ZGVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtYXRpb25NYXRyaXgpCi17
Ci0gICAgU2ltcGxlQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmVuY29kZShl
bmNvZGVyLCB0cmFuc2Zvcm1hdGlvbk1hdHJpeCk7Ci19Ci0KLWJvb2wgQXJndW1lbnRDb2RlcjxU
cmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFRy
YW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1hdGlvbk1hdHJpeCkKLXsKLSAgICByZXR1cm4g
U2ltcGxlQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShkZWNvZGVy
LCB0cmFuc2Zvcm1hdGlvbk1hdHJpeCk7Ci19Ci0KLSNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCi12
b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz46OmVuY29kZShBcmd1
bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmIGZp
bHRlcnMpCi17Ci0gICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKGZpbHRlcnMuc2l6ZSgpKTsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbHRlcnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAg
Y29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmaWx0ZXIgPSBmaWx0ZXJzLmF0KGkpOwotICAgICAgICBG
aWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHlwZSA9IGZpbHRlci0+Z2V0T3BlcmF0aW9u
VHlwZSgpOwotICAgICAgICBlbmNvZGVyLT5lbmNvZGVFbnVtKHR5cGUpOwotICAgICAgICBzd2l0
Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRToKLSAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOgotICAgICAgICBjYXNlIEZpbHRlck9w
ZXJhdGlvbjo6U0FUVVJBVEU6Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpIVUVfUk9U
QVRFOgotICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlRG91YmxlKHN0YXRpY19jYXN0PGNvbnN0
IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIpLT5hbW91bnQoKSk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklOVkVSVDoK
LSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6Ci0gICAgICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDoKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
Ok9QQUNJVFk6Ci0gICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVEb3VibGUoc3RhdGljX2Nhc3Q8
Y29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbio+KGZpbHRlciktPmFt
b3VudCgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6QkxVUjoKLSAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZW5jb2RlKGVuY29k
ZXIsIHN0YXRpY19jYXN0PGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIpLT5zdGRE
ZXZpYXRpb24oKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246OkRST1BfU0hBRE9XOiB7Ci0gICAgICAgICAgICBjb25zdCBEcm9wU2hhZG93RmlsdGVy
T3BlcmF0aW9uKiBzaGFkb3cgPSBzdGF0aWNfY2FzdDxjb25zdCBEcm9wU2hhZG93RmlsdGVyT3Bl
cmF0aW9uKj4oZmlsdGVyKTsKLSAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8SW50UG9pbnQ+Ojpl
bmNvZGUoZW5jb2Rlciwgc2hhZG93LT5sb2NhdGlvbigpKTsKLSAgICAgICAgICAgIGVuY29kZXIt
PmVuY29kZUludDMyKHNoYWRvdy0+c3RkRGV2aWF0aW9uKCkpOwotICAgICAgICAgICAgQXJndW1l
bnRDb2RlcjxDb2xvcj46OmVuY29kZShlbmNvZGVyLCBzaGFkb3ctPmNvbG9yKCkpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0gICAgfQotfQotCi1ib29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
RmlsdGVyT3BlcmF0aW9ucz46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFdlYkNv
cmU6OkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCi17Ci0gICAgdWludDMyX3Qgc2l6ZTsKLSAg
ICBpZiAoIWRlY29kZXItPmRlY29kZVVJbnQzMihzaXplKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgVmVjdG9yPFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+ID4mIG9wZXJhdGlvbnMgPSBm
aWx0ZXJzLm9wZXJhdGlvbnMoKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsg
KytpKSB7Ci0gICAgICAgIEZpbHRlck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0eXBlOwotICAg
ICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBmaWx0ZXI7Ci0gICAgICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlRW51bSh0eXBlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAg
ICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FM
RToKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOgotICAgICAgICBjYXNlIEZp
bHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpI
VUVfUk9UQVRFOiB7Ci0gICAgICAgICAgICBkb3VibGUgdmFsdWU7Ci0gICAgICAgICAgICBpZiAo
IWRlY29kZXItPmRlY29kZURvdWJsZSh2YWx1ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgZmlsdGVyID0gQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlv
bjo6Y3JlYXRlKHZhbHVlLCB0eXBlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6Ci0gICAgICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpCUklHSFRORVNTOgotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q09O
VFJBU1Q6Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZOiB7Ci0gICAgICAg
ICAgICBkb3VibGUgdmFsdWU7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZURvdWJs
ZSh2YWx1ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgZmls
dGVyID0gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKHZhbHVl
LCB0eXBlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgRmls
dGVyT3BlcmF0aW9uOjpCTFVSOiB7Ci0gICAgICAgICAgICBMZW5ndGggbGVuZ3RoOwotICAgICAg
ICAgICAgaWYgKCFBcmd1bWVudENvZGVyPExlbmd0aD46OmRlY29kZShkZWNvZGVyLCBsZW5ndGgp
KQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGZpbHRlciA9IEJs
dXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShsZW5ndGgsIHR5cGUpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9X
OiB7Ci0gICAgICAgICAgICBJbnRQb2ludCBsb2NhdGlvbjsKLSAgICAgICAgICAgIGludDMyX3Qg
c3RkRGV2aWF0aW9uOwotICAgICAgICAgICAgQ29sb3IgY29sb3I7Ci0gICAgICAgICAgICBpZiAo
IUFyZ3VtZW50Q29kZXI8SW50UG9pbnQ+OjpkZWNvZGUoZGVjb2RlciwgbG9jYXRpb24pKQotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlSW50MzIoc3RkRGV2aWF0aW9uKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8Q29sb3I+OjpkZWNvZGUoZGVjb2RlciwgY29s
b3IpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGZpbHRlciA9
IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShsb2NhdGlvbiwgc3RkRGV2aWF0aW9u
LCBjb2xvciwgdHlwZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZmls
dGVyKQotICAgICAgICAgICAgb3BlcmF0aW9ucy5hcHBlbmQoZmlsdGVyKTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLSNlbmRpZgotCi0jaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi12
b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4+OjplbmNvZGUo
QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VU
b2tlbiYgdG9rZW4pCi17Ci0jaWYgT1MoREFSV0lOKQotICAgIGVuY29kZXItPmVuY29kZVVJbnQz
Mih0b2tlbi5mcm9udEJ1ZmZlckhhbmRsZSk7Ci0gICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKHRv
a2VuLmJhY2tCdWZmZXJIYW5kbGUpOwotI2VuZGlmCi0jaWYgT1MoTElOVVgpCi0gICAgZW5jb2Rl
ci0+ZW5jb2RlVUludDMyKHRva2VuLmZyb250QnVmZmVySGFuZGxlKTsKLSNlbmRpZgotfQotCi1i
b29sIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4+OjpkZWNvZGUo
QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiYg
dG9rZW4pCi17Ci0jaWYgT1MoREFSV0lOKQotICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDMy
KHRva2VuLmZyb250QnVmZmVySGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKHRva2VuLmJhY2tCdWZmZXJIYW5kbGUpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLSNpZiBPUyhMSU5VWCkKLSAgICBpZiAoIWRlY29kZXIt
PmRlY29kZVVJbnQzMih0b2tlbi5mcm9udEJ1ZmZlckhhbmRsZSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSNlbmRpZgotICAgIHJldHVybiB0cnVlOwotfQotCi0jZW5kaWYKLQotI2VuZGlmCi0K
IH0gLy8gbmFtZXNwYWNlIENvcmVJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3Jl
QXJndW1lbnRDb2RlcnMuaAppbmRleCAzNDJjOGZiNzNmNmE2ZTQ0NDI3YWJiNmM2ZTNkYzY0Y2Rh
NWQxOTMyLi5iNGRhZmU2NzE0OTRlNDM4N2YzOWM3ZWZiZjBjYzY3YTgxN2NiNzIyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC02NywyNCAr
NjcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB9CiAjZW5kaWYKIAotI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBGbG9hdFBvaW50
M0Q7Ci0gICAgY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7Ci0gICAgc3RydWN0IExlbmd0aDsK
LQotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIHN0cnVjdCBHcmFwaGljc1N1cmZhY2VU
b2tlbjsKLSNlbmRpZgotfQotCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotbmFtZXNwYWNlIFdl
YkNvcmUgewotICAgIGNsYXNzIEZpbHRlck9wZXJhdGlvbnM7Ci19Ci0jZW5kaWYKLSNlbmRpZgot
CiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtPiB7CkBAIC0yNTgsMzggKzI0MCw2IEBAIHRlbXBsYXRl
PD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6S1VSTD4gewogICAgIHN0YXRpYyBib29s
IGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpLVVJMJik7CiB9OwogCi0jaWYgVVNF
KENPT1JESU5BVEVEX0dSQVBISUNTKQotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpGbG9hdFBvaW50M0Q+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRF
bmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludDNEJik7Ci0gICAgc3RhdGljIGJvb2wg
ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OkZsb2F0UG9pbnQzRCYpOwotfTsKLQot
dGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpMZW5ndGg+IHsKLSAgICBz
dGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6TGVuZ3Ro
Jik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6Okxl
bmd0aCYpOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpU
cmFuc2Zvcm1hdGlvbk1hdHJpeD4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVu
Y29kZXIqLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwotICAgIHN0YXRp
YyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYpOwotfTsKLQotI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLXRlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz4gewotICAgIHN0YXRpYyB2
b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRp
b25zJik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6
OkZpbHRlck9wZXJhdGlvbnMmKTsKLX07Ci0jZW5kaWYKLQotI2lmIFVTRShHUkFQSElDU19TVVJG
QUNFKQotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpHcmFwaGljc1N1
cmZhY2VUb2tlbj4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBj
b25zdCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiYpOwotICAgIHN0YXRpYyBib29sIGRl
Y29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiYpOwot
fTsKLSNlbmRpZgotI2VuZGlmCi0KLQogfSAvLyBuYW1lc3BhY2UgQ29yZUlQQwogCiAjZW5kaWYg
Ly8gV2ViQ29yZUFyZ3VtZW50Q29kZXJzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Rh
cmdldC5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IGUzNmM1MjhhM2ZhNjZk
YzhmMGVmMWI3NzIwOGNmYTI5ZGQ4YTYzOWYuLjZiZTcyYWE3NmJmMTk3ZDE3YmZkY2Q2Njk0NTNj
MjQwZDk5NzZlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIv
U291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQpAQCAtMTMxLDYgKzEzMSw4IEBAIEhFQURFUlMgKz0g
XAogICAgIFNoYXJlZC9XZWJVUkxSZXF1ZXN0LmggXAogICAgIFNoYXJlZC9XZWJVUkxSZXNwb25z
ZS5oIFwKICAgICBTaGFyZWQvV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggXAorICAgIFNoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5o
IFwKKyAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDdXN0b21GaWx0ZXJQcm9ncmFt
LmggXAogICAgIFNoYXJlZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmgg
XAogICAgIFNoYXJlZC9QbHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmggXAogICAgIFNoYXJlZC9Q
bHVnaW5zL05QSWRlbnRpZmllckRhdGEuaCBcCkBAIC00ODgsNiArNDkwLDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgU2hhcmVkL1dlYlVSTFJlcXVlc3QuY3BwIFwKICAgICBTaGFyZWQvV2ViVVJMUmVz
cG9uc2UuY3BwIFwKICAgICBTaGFyZWQvV2ViV2hlZWxFdmVudC5jcHAgXAorICAgIFNoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAg
XAogICAgIFNoYXJlZC9xdC9Bcmd1bWVudENvZGVyc1F0LmNwcCBcCiAgICAgU2hhcmVkL3F0L0xh
eWVyVHJlZUNvbnRleHRRdC5jcHAgXAogICAgIFNoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBRdC5j
cHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3Jh
cGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oCmluZGV4
IGIxZWY0MDFhNDQ1MDI1YjIyYzY3ZmI2ZDUwZTcwNGY4NWNjODlkNmMuLjFhMmFiYmRmMTkyMDNj
NWI4ZDIzMjQ5ZWQyNmVlMzNkODVkYjNhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVDb29yZGluYXRvclByb3h5LmgKQEAgLTIzLDYgKzIzLDcgQEAKICNpZiBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1MpCiAKICNpbmNsdWRlICJCYWNraW5nU3RvcmUuaCIKKyNpbmNsdWRlICJDb29y
ZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVBy
b3h5LmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiU3VyZmFjZVVwZGF0ZUluZm8u
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJpIGIvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi5wcmkKaW5kZXggNTM2Yjc3OWJhYmJmZWU3OGE4ZWRlNjY5ZTdiZGFiN2E4Yzhj
NTg2Ni4uODBjYjJmYjhlNzk1YTI4MGM0OTc5ZWIyZjlhZmIzNGEzNWY5NGZjOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0
Mi5wcmkKQEAgLTE2LDYgKzE2LDcgQEAgSU5DTFVERVBBVEggKz0gXAogICAgICQkU09VUkNFX0RJ
Ui9QbGF0Zm9ybS9xdCBcCiAgICAgJCRTT1VSQ0VfRElSL1NoYXJlZCBcCiAgICAgJCRTT1VSQ0Vf
RElSL1NoYXJlZC9BUEkvYyBcCisgICAgJCRTT1VSQ0VfRElSL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzIFwKICAgICAkJFNPVVJDRV9ESVIvU2hhcmVkL0NvcmVJUENTdXBwb3J0IFwKICAgICAk
JFNPVVJDRV9ESVIvU2hhcmVkL1BsdWdpbnMgXAogICAgICQkU09VUkNFX0RJUi9TaGFyZWQvUGx1
Z2lucy9OZXRzY2FwZSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVDb29yZGluYXRvci5jcHAKaW5kZXggNDE2Y2YwMGUwMjNjY2IxY2U0NzBkMzk3NzNmMTM1OWUw
Nzg2OGJlOC4uZWZmMWM5MzMwMDJmYWFjZmE4ZGQ5MDc1ZDlmMjA3OGIzNTIxNzA5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcApA
QCAtMjksNiArMjksNyBAQAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICNpbmNsdWRl
ICJMYXllclRyZWVDb29yZGluYXRvci5oIgogCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGlj
c0FyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgi
CiAjaW5jbHVkZSAiRHJhd2luZ0FyZWFJbXBsLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169382</attachid>
            <date>2012-10-18 03:20:57 -0700</date>
            <delta_ts>2012-10-18 06:38:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98733-20121018191934.patch</filename>
            <type>text/plain</type>
            <size>48040</size>
            <attacher name="Dongseong Hwang">dongseong.hwang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRjZTAxYjdlZThjZGFm
N2FmZTc0ZDdmOGU4N2I0OTZjY2Y4NzVjNC4uMTFmMzY4MGNmYjNmYWRlYjNjMDcwYTdhNDY4NDZk
ZDYyZjk3NjI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTEwLTEyICBIdWFu
ZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtXSzJdIEFk
ZCBDdXN0b21GaWx0ZXJPcGVyYXRpb24gc2VyaWFsaXphdGlvbiBpbiBBcmd1bWVudENvZGVyLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg3MzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgQ3Vz
dG9tRmlsdGVyT3BlcmF0aW9uOjpwYXJhbWV0ZXJzKCkgdG8gY29uc3QgZnVuY3Rpb24sIGJlY2F1
c2UKKyAgICAgICAgdGhpcyBtZXRob2QgaXMgYSBnZXR0ZXIgYW5kIGEgY29uc3QgaW5zdGFuY2Ug
bmVlZHMgdG8gY2FsbCB0aGlzIG1ldGhvZC4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVz
ZSB0aGVyZSBpcyBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpwYXJhbWV0ZXJzKToKKwogMjAxMi0xMC0xNiAgSHVh
bmcgRG9uZ3N1bmcgIDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBbQ1NTIFNo
YWRlcnNdIEltcGxlbWVudCBhbGwgY29tcG9zaXRlIG9wZXJhdG9ycyBleGNlcHQgZGVzdGluYXRp
b24gYW5kIGxpZ2h0ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDIyOWI3MGQ0Y2QwNTI1ZGJkMWFmYTZmMjc2
ZTk4NjE3NTYwNDNlNS4uNGYxZjdlYzI0N2I0ZmE1MzM0ZjI2ZmI0N2NjZWM4ZmE2Y2RmNzRkOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEyLTEwLTEyICBIdWFuZyBEb25nc3VuZyAg
PGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgorCisgICAgICAgIFtXSzJdIEFkZCBDdXN0b21GaWx0
ZXJPcGVyYXRpb24gc2VyaWFsaXphdGlvbiBpbiBBcmd1bWVudENvZGVyLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg3MzMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQXJndW1lbnRDb2RlcnMgZm9y
IEN1c3RvbUZpbHRlck9wZXJhdGlvbiBhbmQgYWxsIGRlcGVuZGVudCBjbGFzc2VzLgorICAgICAg
ICBDb29yZGluYXRlZCBHcmFwaGljcyB3aWxsIHVzZSB0aGlzIGNzcyBzaGFkZXJzIHNlcmlhbGl6
YXRpb24gd2hlbiBpdCBlbmFibGVzIENTUworICAgICAgICBTaGFkZXJzLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgY29kZSBwYXRoIGlzIG5vdCBhY3RpdmF0ZWQgeWV0LgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29v
cmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChDb3Jl
SVBDKToKKyAgICAgICAgKENvcmVJUEM6Ojo6ZW5jb2RlKToKKyAgICAgICAgKENvcmVJUEM6Ojo6
ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKENvcmVJUEMpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dl
YkN1c3RvbUZpbHRlclByb2dyYW0uaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbSk6CisgICAgICAgICAgICBXZWJDdXN0b21GaWx0ZXJQ
cm9ncmFtIGlzIG1hZGUgdG8gc2VyaWFsaXplIHRoZSBkYXRhIG9mIGEKKyAgICAgICAgICAgIFN0
eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSB0byB0aGUgVUkgcHJvY2Vzcy4KKyAgICAgICAgKFdlYktp
dDo6V2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q3VzdG9tRmlsdGVyUHJvZ3JhbTo6V2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbSk6CisgICAgICAgICog
U2hhcmVkL1NoYXJlYWJsZVN1cmZhY2UuY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwOgorICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
aDoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRl
ZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaDoKKyAgICAgICAgKiBXZWJLaXQy
LnByaToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9M
YXllclRyZWVDb29yZGluYXRvci5jcHA6CisKIDIwMTItMTAtMTcgIENocmlzdG9waGUgRHVtZXog
IDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIENvbXBp
bGF0aW9uIHdhcm5pbmcgaW4gRXdrX1ZpZXcgd2hlbiBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBp
cyBkaXNhYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggNzg4YjNmMDE2
MjZiM2Y0YWYwNTIwZGQ4YzZmMjVhZjQ0YTI1NDBhMy4uMGQ2NGQyMzY4Mjc3ODY0NTNkM2VhYzdh
NDZkNzA1ZTk0NGYyMTNlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJPcGVyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oCkBAIC02
OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtKiBwcm9n
cmFtKCkgY29uc3QgeyByZXR1cm4gbV9wcm9ncmFtLmdldCgpOyB9CiAgICAgCi0gICAgY29uc3Qg
Q3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCYgcGFyYW1ldGVycygpIHsgcmV0dXJuIG1fcGFyYW1l
dGVyczsgfQorICAgIGNvbnN0IEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QmIHBhcmFtZXRlcnMo
KSBjb25zdCB7IHJldHVybiBtX3BhcmFtZXRlcnM7IH0KICAgICAKICAgICB1bnNpZ25lZCBtZXNo
Um93cygpIGNvbnN0IHsgcmV0dXJuIG1fbWVzaFJvd3M7IH0KICAgICB1bnNpZ25lZCBtZXNoQ29s
dW1ucygpIGNvbnN0IHsgcmV0dXJuIG1fbWVzaENvbHVtbnM7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQK
aW5kZXggODU2NGQ5OGE5MjU3YzQyYzgyOTI4Y2IxOTU5NmFlYTg1YjM2YzcxMC4uZjE2MWVkY2Ez
OGJmYTE4OWY2NTI0Y2Y2YWQxMGMxNGU1ZmJhMTMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKQEAg
LTYsNiArNiw3IEBAIFNFVChXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJL
SVQyX0RJUn0vU2hhcmVkIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvQVBJIgogICAgICIk
e1dFQktJVDJfRElSfS9TaGFyZWQvQVBJL2MiCisgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzIgogICAgICIke1dFQktJVDJfRElSfS9TaGFyZWQvQ29yZUlQQ1N1
cHBvcnQiCiAgICAgIiR7V0VCS0lUMl9ESVJ9L1NoYXJlZC9QbHVnaW5zIgogICAgICIke1dFQktJ
VDJfRElSfS9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZSIKQEAgLTIxMiw2ICsyMTMsOCBAQCBTRVQo
V2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCiAgICAg
U2hhcmVkL0FQSS9jL1dLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcAogCisgICAgU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcAor
CiAgICAgU2hhcmVkL1BsdWdpbnMvTlBJZGVudGlmaWVyRGF0YS5jcHAKICAgICBTaGFyZWQvUGx1
Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5jcHAKICAgICBTaGFyZWQvUGx1Z2lucy9OUE9i
amVjdFByb3h5LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5h
dGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NB
cmd1bWVudENvZGVycy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjNjZmM2M2Y5MjczYWMyMjA2NmFkZGJhMDRj
MDM0NjI5YzQzNWU1MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAK
QEAgLTAsMCArMSw1MzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDEyIENv
bXBhbnkgMTAwLCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJDb29yZGluYXRlZEdyYXBoaWNzQXJndW1lbnRDb2RlcnMuaCIKKworI2lmIFVTRShDT09SRElO
QVRFRF9HUkFQSElDUykKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNs
dWRlIDxXZWJDb3JlL0FuaW1hdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL0Zsb2F0UG9pbnQzRC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW50UG9p
bnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0xlbmd0aC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVHJh
bnNmb3JtYXRpb25NYXRyaXguaD4KKworI2lmIEVOQUJMRShDU1NfRklMVEVSUykKKyNpbmNsdWRl
IDxXZWJDb3JlL0ZpbHRlck9wZXJhdGlvbnMuaD4KKyNlbmRpZgorCisjaWYgRU5BQkxFKENTU19T
SEFERVJTKQorI2luY2x1ZGUgIldlYkN1c3RvbUZpbHRlclByb2dyYW0uaCIKKyNpbmNsdWRlIDxX
ZWJDb3JlL0N1c3RvbUZpbHRlckFycmF5UGFyYW1ldGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9D
dXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0N1c3RvbUZp
bHRlck9wZXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvQ3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyLmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9JZGVudGl0eVRyYW5zZm9ybU9wZXJhdGlvbi5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L01hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGVyc3BlY3Rp
dmVUcmFuc2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JvdGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24u
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NrZXdUcmFuc2Zvcm1PcGVyYXRpb24uaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1RyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oPgorI2VuZGlmCisKKyNpZiBV
U0UoR1JBUEhJQ1NfU1VSRkFDRSkKKyNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzU3VyZmFjZS5o
PgorI2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdl
YktpdDsKKworbmFtZXNwYWNlIENvcmVJUEMgeworCit2b2lkIEFyZ3VtZW50Q29kZXI8RmxvYXRQ
b2ludDNEPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgRmxvYXRQb2lu
dDNEJiBmbG9hdFBvaW50M0QpCit7CisgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxGbG9hdFBvaW50
M0Q+OjplbmNvZGUoZW5jb2RlciwgZmxvYXRQb2ludDNEKTsKK30KKworYm9vbCBBcmd1bWVudENv
ZGVyPEZsb2F0UG9pbnQzRD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIEZsb2F0
UG9pbnQzRCYgZmxvYXRQb2ludDNEKQoreworICAgIHJldHVybiBTaW1wbGVBcmd1bWVudENvZGVy
PEZsb2F0UG9pbnQzRD46OmRlY29kZShkZWNvZGVyLCBmbG9hdFBvaW50M0QpOworfQorCit2b2lk
IEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rlciwg
Y29uc3QgTGVuZ3RoJiBsZW5ndGgpCit7CisgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxMZW5ndGg+
OjplbmNvZGUoZW5jb2RlciwgbGVuZ3RoKTsKK30KKworYm9vbCBBcmd1bWVudENvZGVyPExlbmd0
aD46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIExlbmd0aCYgbGVuZ3RoKQorewor
ICAgIHJldHVybiBTaW1wbGVBcmd1bWVudENvZGVyPExlbmd0aD46OmRlY29kZShkZWNvZGVyLCBs
ZW5ndGgpOworfQorCit2b2lkIEFyZ3VtZW50Q29kZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+Ojpl
bmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdHJhbnNmb3JtYXRpb25NYXRyaXgpCit7CisgICAgU2ltcGxlQXJndW1lbnRDb2RlcjxUcmFu
c2Zvcm1hdGlvbk1hdHJpeD46OmVuY29kZShlbmNvZGVyLCB0cmFuc2Zvcm1hdGlvbk1hdHJpeCk7
Cit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRlY29kZShB
cmd1bWVudERlY29kZXIqIGRlY29kZXIsIFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1h
dGlvbk1hdHJpeCkKK3sKKyAgICByZXR1cm4gU2ltcGxlQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1h
dGlvbk1hdHJpeD46OmRlY29kZShkZWNvZGVyLCB0cmFuc2Zvcm1hdGlvbk1hdHJpeCk7Cit9CisK
KyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCit2b2lkIEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6Rmls
dGVyT3BlcmF0aW9ucz46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IFdl
YkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCit7CisgICAgZW5jb2Rlci0+ZW5jb2Rl
VUludDMyKGZpbHRlcnMuc2l6ZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZpbHRl
cnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmaWx0ZXIg
PSBmaWx0ZXJzLmF0KGkpOworICAgICAgICBGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUg
dHlwZSA9IGZpbHRlci0+Z2V0T3BlcmF0aW9uVHlwZSgpOworICAgICAgICBlbmNvZGVyLT5lbmNv
ZGVFbnVtKHR5cGUpOworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OkdSQVlTQ0FMRToKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNF
UElBOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6CisgICAgICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpIVUVfUk9UQVRFOgorICAgICAgICAgICAgZW5jb2Rlci0+ZW5j
b2RlRG91YmxlKHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRp
b24qPihmaWx0ZXIpLT5hbW91bnQoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246OklOVkVSVDoKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OkJSSUdIVE5FU1M6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDoKKyAg
ICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJVFk6CisgICAgICAgICAgICBlbmNvZGVy
LT5lbmNvZGVEb3VibGUoc3RhdGljX2Nhc3Q8Y29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZp
bHRlck9wZXJhdGlvbio+KGZpbHRlciktPmFtb3VudCgpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxVUjoKKyAgICAgICAgICAgIEFyZ3VtZW50
Q29kZXI8TGVuZ3RoPjo6ZW5jb2RlKGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0IEJsdXJGaWx0
ZXJPcGVyYXRpb24qPihmaWx0ZXIpLT5zdGREZXZpYXRpb24oKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOiB7CisgICAgICAg
ICAgICBjb25zdCBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKiBzaGFkb3cgPSBzdGF0aWNfY2Fz
dDxjb25zdCBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyKTsKKyAgICAgICAgICAg
IEFyZ3VtZW50Q29kZXI8SW50UG9pbnQ+OjplbmNvZGUoZW5jb2Rlciwgc2hhZG93LT5sb2NhdGlv
bigpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUludDMyKHNoYWRvdy0+c3RkRGV2aWF0
aW9uKCkpOworICAgICAgICAgICAgQXJndW1lbnRDb2RlcjxDb2xvcj46OmVuY29kZShlbmNvZGVy
LCBzaGFkb3ctPmNvbG9yKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNpZiBF
TkFCTEUoQ1NTX1NIQURFUlMpCisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDVVNUT006
IHsKKyAgICAgICAgICAgIGNvbnN0IEN1c3RvbUZpbHRlck9wZXJhdGlvbiogY3VzdG9tT3BlcmF0
aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyKTsK
KworICAgICAgICAgICAgQVNTRVJUKGN1c3RvbU9wZXJhdGlvbi0+cHJvZ3JhbSgpKTsKKyAgICAg
ICAgICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJQcm9ncmFtPiBwcm9ncmFtID0gY3VzdG9tT3BlcmF0
aW9uLT5wcm9ncmFtKCk7CisgICAgICAgICAgICBBU1NFUlQocHJvZ3JhbS0+aXNMb2FkZWQoKSk7
CisgICAgICAgICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyBwcm9ncmFtSW5mbyA9IHByb2dy
YW0tPnByb2dyYW1JbmZvKCk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUocHJvZ3JhbUlu
Zm8udmVydGV4U2hhZGVyU3RyaW5nKCkpOworICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHBy
b2dyYW1JbmZvLmZyYWdtZW50U2hhZGVyU3RyaW5nKCkpOworICAgICAgICAgICAgZW5jb2Rlci0+
ZW5jb2RlRW51bShwcm9ncmFtLT5wcm9ncmFtVHlwZSgpKTsKKyAgICAgICAgICAgIEN1c3RvbUZp
bHRlclByb2dyYW1NaXhTZXR0aW5ncyBtaXhTZXR0aW5ncyA9IHByb2dyYW1JbmZvLm1peFNldHRp
bmdzKCk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVFbnVtKG1peFNldHRpbmdzLmJsZW5k
TW9kZSk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVFbnVtKG1peFNldHRpbmdzLmNvbXBv
c2l0ZU9wZXJhdG9yKTsKKworICAgICAgICAgICAgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdCBw
YXJhbWV0ZXJzID0gY3VzdG9tT3BlcmF0aW9uLT5wYXJhbWV0ZXJzKCk7CisgICAgICAgICAgICBl
bmNvZGVyLT5lbmNvZGVVSW50MzIocGFyYW1ldGVycy5zaXplKCkpOworICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBwYXJhbWV0ZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgICAg
ICAgICAgUmVmUHRyPEN1c3RvbUZpbHRlclBhcmFtZXRlcj4gcGFyYW1ldGVyID0gcGFyYW1ldGVy
c1tpXTsKKyAgICAgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUocGFyYW1ldGVyLT5uYW1lKCkp
OworICAgICAgICAgICAgICAgIGVuY29kZXItPmVuY29kZUVudW0ocGFyYW1ldGVyLT5wYXJhbWV0
ZXJUeXBlKCkpOworCisgICAgICAgICAgICAgICAgc3dpdGNoIChwYXJhbWV0ZXItPnBhcmFtZXRl
clR5cGUoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgQ3VzdG9tRmlsdGVyUGFyYW1ldGVyOjpB
UlJBWTogeworICAgICAgICAgICAgICAgICAgICBDdXN0b21GaWx0ZXJBcnJheVBhcmFtZXRlciog
YXJyYXlQYXJhbWV0ZXIgPSBzdGF0aWNfY2FzdDxDdXN0b21GaWx0ZXJBcnJheVBhcmFtZXRlcio+
KHBhcmFtZXRlci5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGVuY29kZXItPmVuY29kZVVJ
bnQzMihhcnJheVBhcmFtZXRlci0+c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChz
aXplX3QgaiA9IDA7IGogPCBhcnJheVBhcmFtZXRlci0+c2l6ZSgpOyArK2opCisgICAgICAgICAg
ICAgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUoYXJyYXlQYXJhbWV0ZXItPnZhbHVlQXQoaikp
OworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgY2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6Ok5VTUJFUjogeworICAgICAgICAg
ICAgICAgICAgICBDdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXIqIG51Ym1lclBhcmFtZXRlciA9
IHN0YXRpY19jYXN0PEN1c3RvbUZpbHRlck51bWJlclBhcmFtZXRlcio+KHBhcmFtZXRlci5nZXQo
KSk7CisgICAgICAgICAgICAgICAgICAgIGVuY29kZXItPmVuY29kZVVJbnQzMihudWJtZXJQYXJh
bWV0ZXItPnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBq
IDwgbnVibWVyUGFyYW1ldGVyLT5zaXplKCk7ICsraikKKyAgICAgICAgICAgICAgICAgICAgICAg
IGVuY29kZXItPmVuY29kZShudWJtZXJQYXJhbWV0ZXItPnZhbHVlQXQoaikpOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2Fz
ZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6OlRSQU5TRk9STTogeworICAgICAgICAgICAgICAgICAg
ICBDdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXIqIHRyYW5zZm9ybVBhcmFtZXRlciA9IHN0
YXRpY19jYXN0PEN1c3RvbUZpbHRlclRyYW5zZm9ybVBhcmFtZXRlcio+KHBhcmFtZXRlci5nZXQo
KSk7CisgICAgICAgICAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8VHJhbnNmb3JtT3BlcmF0aW9u
cz46OmVuY29kZShlbmNvZGVyLCB0cmFuc2Zvcm1QYXJhbWV0ZXItPm9wZXJhdGlvbnMoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShjdXN0
b21PcGVyYXRpb24tPm1lc2hSb3dzKCkpOworICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKGN1
c3RvbU9wZXJhdGlvbi0+bWVzaENvbHVtbnMoKSk7CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNv
ZGVFbnVtKGN1c3RvbU9wZXJhdGlvbi0+bWVzaEJveFR5cGUoKSk7CisgICAgICAgICAgICBlbmNv
ZGVyLT5lbmNvZGVFbnVtKGN1c3RvbU9wZXJhdGlvbi0+bWVzaFR5cGUoKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKworYm9vbCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkZpbHRlck9wZXJhdGlvbnM+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBX
ZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQoreworICAgIHVpbnQzMl90IHNpemU7
CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIoc2l6ZSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIFZlY3RvcjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiA+JiBvcGVyYXRpb25z
ID0gZmlsdGVycy5vcGVyYXRpb25zKCk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNp
emU7ICsraSkgeworICAgICAgICBGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHlwZTsK
KyAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gZmlsdGVyOworICAgICAgICBpZiAoIWRl
Y29kZXItPmRlY29kZUVudW0odHlwZSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZ
U0NBTEU6CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTRVBJQToKKyAgICAgICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6SFVFX1JPVEFURTogeworICAgICAgICAgICAgZG91YmxlIHZhbHVlOworICAgICAgICAgICAg
aWYgKCFkZWNvZGVyLT5kZWNvZGVEb3VibGUodmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIGZpbHRlciA9IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVy
YXRpb246OmNyZWF0ZSh2YWx1ZSwgdHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SU5WRVJUOgorICAgICAgICBjYXNlIEZp
bHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzoKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OkNPTlRSQVNUOgorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWTogeworICAg
ICAgICAgICAgZG91YmxlIHZhbHVlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVE
b3VibGUodmFsdWUpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IGZpbHRlciA9IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSh2
YWx1ZSwgdHlwZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6QkxVUjogeworICAgICAgICAgICAgTGVuZ3RoIGxlbmd0aDsKKyAg
ICAgICAgICAgIGlmICghQXJndW1lbnRDb2RlcjxMZW5ndGg+OjpkZWNvZGUoZGVjb2RlciwgbGVu
Z3RoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBmaWx0ZXIg
PSBCbHVyRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUobGVuZ3RoLCB0eXBlKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NI
QURPVzogeworICAgICAgICAgICAgSW50UG9pbnQgbG9jYXRpb247CisgICAgICAgICAgICBpbnQz
Ml90IHN0ZERldmlhdGlvbjsKKyAgICAgICAgICAgIENvbG9yIGNvbG9yOworICAgICAgICAgICAg
aWYgKCFBcmd1bWVudENvZGVyPEludFBvaW50Pjo6ZGVjb2RlKGRlY29kZXIsIGxvY2F0aW9uKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXIt
PmRlY29kZUludDMyKHN0ZERldmlhdGlvbikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVyPENvbG9yPjo6ZGVjb2RlKGRlY29kZXIs
IGNvbG9yKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBmaWx0
ZXIgPSBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUobG9jYXRpb24sIHN0ZERldmlh
dGlvbiwgY29sb3IsIHR5cGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyNpZiBF
TkFCTEUoQ1NTX1NIQURFUlMpCisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDVVNUT006
IHsKKyAgICAgICAgICAgIFN0cmluZyB2ZXJ0ZXhTaGFkZXJTdHJpbmc7CisgICAgICAgICAgICBT
dHJpbmcgZnJhZ21lbnRTaGFkZXJTdHJpbmc7CisgICAgICAgICAgICBDdXN0b21GaWx0ZXJQcm9n
cmFtVHlwZSBwcm9ncmFtVHlwZTsKKyAgICAgICAgICAgIEN1c3RvbUZpbHRlclByb2dyYW1NaXhT
ZXR0aW5ncyBtaXhTZXR0aW5nczsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHZl
cnRleFNoYWRlclN0cmluZykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUoZnJhZ21lbnRTaGFkZXJTdHJpbmcpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
RW51bShwcm9ncmFtVHlwZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVFbnVtKG1peFNldHRpbmdzLmJsZW5kTW9kZSkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGVFbnVtKG1peFNldHRpbmdzLmNvbXBvc2l0ZU9wZXJhdG9yKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyUHJvZ3JhbT4g
cHJvZ3JhbSA9IFdlYkN1c3RvbUZpbHRlclByb2dyYW06OmNyZWF0ZSh2ZXJ0ZXhTaGFkZXJTdHJp
bmcsIGZyYWdtZW50U2hhZGVyU3RyaW5nLCBwcm9ncmFtVHlwZSwgbWl4U2V0dGluZ3MpOworCisg
ICAgICAgICAgICB1aW50MzJfdCBwYXJhbWV0ZXJzU2l6ZTsKKyAgICAgICAgICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlVUludDMyKHBhcmFtZXRlcnNTaXplKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAgICAgICAgIEN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QgcGFyYW1l
dGVycyhwYXJhbWV0ZXJzU2l6ZSk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHBhcmFtZXRlcnNTaXplOyArK2kpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbmFtZTsKKyAg
ICAgICAgICAgICAgICBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6OlBhcmFtZXRlclR5cGUgcGFyYW1l
dGVyVHlwZTsKKyAgICAgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShuYW1lKSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlRW51bShwYXJhbWV0ZXJUeXBlKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgc3dpdGNoIChwYXJhbWV0ZXJUeXBlKSB7Cisg
ICAgICAgICAgICAgICAgY2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6OkFSUkFZOiB7CisgICAg
ICAgICAgICAgICAgICAgIFJlZlB0cjxDdXN0b21GaWx0ZXJBcnJheVBhcmFtZXRlcj4gYXJyYXlQ
YXJhbWV0ZXIgPSBDdXN0b21GaWx0ZXJBcnJheVBhcmFtZXRlcjo6Y3JlYXRlKG5hbWUpOworICAg
ICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJzLmFwcGVuZChhcnJheVBhcmFtZXRlcik7CisgICAg
ICAgICAgICAgICAgICAgIHVpbnQzMl90IGFycmF5UGFyYW1ldGVyU2l6ZTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIoYXJyYXlQYXJhbWV0ZXJTaXplKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAg
ICAgZG91YmxlIGFycmF5UGFyYW1ldGVyVmFsdWU7CisgICAgICAgICAgICAgICAgICAgIGZvciAo
c2l6ZV90IGogPSAwOyBqIDwgYXJyYXlQYXJhbWV0ZXJTaXplOyArK2opIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKGFycmF5UGFyYW1ldGVyVmFsdWUpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFycmF5UGFyYW1ldGVyLT5hZGRWYWx1ZShhcnJheVBhcmFtZXRlclZhbHVlKTsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6
Ok5VTUJFUjogeworICAgICAgICAgICAgICAgICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyTnVtYmVy
UGFyYW1ldGVyPiBudW1iZXJQYXJhbWV0ZXIgPSBDdXN0b21GaWx0ZXJOdW1iZXJQYXJhbWV0ZXI6
OmNyZWF0ZShuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQobnVt
YmVyUGFyYW1ldGVyKTsKKyAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbnVtYmVyUGFyYW1l
dGVyU2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIo
bnVtYmVyUGFyYW1ldGVyU2l6ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBudW1iZXJQYXJhbWV0ZXJWYWx1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBudW1iZXJQYXJhbWV0ZXJT
aXplOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2Rl
KG51bWJlclBhcmFtZXRlclZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJQYXJhbWV0ZXItPmFkZFZh
bHVlKG51bWJlclBhcmFtZXRlclZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
Y2FzZSBDdXN0b21GaWx0ZXJQYXJhbWV0ZXI6OlRSQU5TRk9STTogeworICAgICAgICAgICAgICAg
ICAgICBSZWZQdHI8Q3VzdG9tRmlsdGVyVHJhbnNmb3JtUGFyYW1ldGVyPiB0cmFuc2Zvcm1QYXJh
bWV0ZXIgPSBDdXN0b21GaWx0ZXJUcmFuc2Zvcm1QYXJhbWV0ZXI6OmNyZWF0ZShuYW1lKTsKKyAg
ICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQodHJhbnNmb3JtUGFyYW1ldGVyKTsK
KyAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zOworICAg
ICAgICAgICAgICAgICAgICBpZiAoIUFyZ3VtZW50Q29kZXI8VHJhbnNmb3JtT3BlcmF0aW9ucz46
OmRlY29kZShkZWNvZGVyLCBvcGVyYXRpb25zKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtUGFyYW1ldGVyLT5zZXRP
cGVyYXRpb25zKG9wZXJhdGlvbnMpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICB1bnNpZ25lZCBtZXNoUm93czsKKyAgICAgICAgICAgIHVuc2lnbmVkIG1lc2hDb2x1bW5z
OworICAgICAgICAgICAgQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpNZXNoQm94VHlwZSBtZXNoQm94
VHlwZTsKKyAgICAgICAgICAgIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6TWVzaFR5cGUgbWVzaFR5
cGU7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZShtZXNoUm93cykpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUo
bWVzaENvbHVtbnMpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IGlmICghZGVjb2Rlci0+ZGVjb2RlRW51bShtZXNoQm94VHlwZSkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVFbnVtKG1lc2hU
eXBlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIGZpbHRl
ciA9IEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKHByb2dyYW0sIHBhcmFtZXRlcnMsIG1l
c2hSb3dzLCBtZXNoQ29sdW1ucywgbWVzaEJveFR5cGUsIG1lc2hUeXBlKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZpbHRlcikKKyAgICAgICAgICAgIG9w
ZXJhdGlvbnMuYXBwZW5kKGZpbHRlcik7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9Cisj
ZW5kaWYKKworI2lmIEVOQUJMRShDU1NfU0hBREVSUykKK3ZvaWQgQXJndW1lbnRDb2RlcjxUcmFu
c2Zvcm1PcGVyYXRpb25zPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3Qg
VHJhbnNmb3JtT3BlcmF0aW9ucyYgdHJhbnNmb3JtT3BlcmF0aW9ucykKK3sKKyAgICBlbmNvZGVy
LT5lbmNvZGVVSW50MzIodHJhbnNmb3JtT3BlcmF0aW9ucy5zaXplKCkpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgdHJhbnNmb3JtT3BlcmF0aW9ucy5zaXplKCk7ICsraSkgeworICAgICAg
ICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIG9wZXJhdGlvbiA9IHRyYW5zZm9ybU9wZXJhdGlv
bnMuYXQoaSk7CisgICAgICAgIGVuY29kZXItPmVuY29kZUVudW0ob3BlcmF0aW9uLT5nZXRPcGVy
YXRpb25UeXBlKCkpOworCisgICAgICAgIHN3aXRjaCAob3BlcmF0aW9uLT5nZXRPcGVyYXRpb25U
eXBlKCkpIHsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1g6CisgICAg
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9ZOgorICAgICAgICBjYXNlIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6U0NBTEU6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpT
Q0FMRV9aOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfM0Q6CisgICAg
ICAgICAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1P
cGVyYXRpb24qPihvcGVyYXRpb24pLT54KCkpOworICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2Rl
KHN0YXRpY19jYXN0PGNvbnN0IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+
eSgpKTsKKyAgICAgICAgICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxjb25zdCBTY2Fs
ZVRyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPnooKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9YOgorICAgICAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1k6CisgICAgICAgIGNhc2UgVHJh
bnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEU6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0
aW9uOjpUUkFOU0xBVEVfWjoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5T
TEFURV8zRDoKKyAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZW5jb2RlKGVuY29k
ZXIsIHN0YXRpY19jYXN0PGNvbnN0IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJh
dGlvbiktPngoKSk7CisgICAgICAgICAgICBBcmd1bWVudENvZGVyPExlbmd0aD46OmVuY29kZShl
bmNvZGVyLCBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPihv
cGVyYXRpb24pLT55KCkpOworICAgICAgICAgICAgQXJndW1lbnRDb2RlcjxMZW5ndGg+OjplbmNv
ZGUoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9u
Kj4ob3BlcmF0aW9uKS0+eigpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlv
bjo6Uk9UQVRFX1g6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWToK
KyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV8zRDoKKyAgICAgICAgICAg
IGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxjb25zdCBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRp
b24qPihvcGVyYXRpb24pLT54KCkpOworICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2RlKHN0YXRp
Y19jYXN0PGNvbnN0IFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KG9wZXJhdGlvbiktPnkoKSk7
CisgICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGUoc3RhdGljX2Nhc3Q8Y29uc3QgUm90YXRlVHJh
bnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+eigpKTsKKyAgICAgICAgICAgIGVuY29kZXIt
PmVuY29kZShzdGF0aWNfY2FzdDxjb25zdCBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVy
YXRpb24pLT5hbmdsZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyYW5z
Zm9ybU9wZXJhdGlvbjo6U0tFV19YOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6
U0tFV19ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFVzoKKyAgICAgICAg
ICAgIGVuY29kZXItPmVuY29kZShzdGF0aWNfY2FzdDxjb25zdCBTa2V3VHJhbnNmb3JtT3BlcmF0
aW9uKj4ob3BlcmF0aW9uKS0+YW5nbGVYKCkpOworICAgICAgICAgICAgZW5jb2Rlci0+ZW5jb2Rl
KHN0YXRpY19jYXN0PGNvbnN0IFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24qPihvcGVyYXRpb24pLT5h
bmdsZVkoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVy
YXRpb246Ok1BVFJJWDoKKyAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8VHJhbnNmb3JtYXRpb25N
YXRyaXg+OjplbmNvZGUoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8Y29uc3QgTWF0cml4VHJhbnNmb3Jt
T3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+bWF0cml4KCkpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVhfM0Q6CisgICAgICAgICAgICBB
cmd1bWVudENvZGVyPFRyYW5zZm9ybWF0aW9uTWF0cml4Pjo6ZW5jb2RlKGVuY29kZXIsIHN0YXRp
Y19jYXN0PGNvbnN0IE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uKj4ob3BlcmF0aW9uKS0+bWF0
cml4KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0
aW9uOjpQRVJTUEVDVElWRToKKyAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZW5j
b2RlKGVuY29kZXIsIHN0YXRpY19jYXN0PGNvbnN0IFBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0
aW9uKj4ob3BlcmF0aW9uKS0+cGVyc3BlY3RpdmUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OklERU5USVRZOgorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpOT05FOgorICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
IH0KK30KKworYm9vbCBBcmd1bWVudENvZGVyPFRyYW5zZm9ybU9wZXJhdGlvbnM+OjpkZWNvZGUo
QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB0cmFuc2Zvcm1P
cGVyYXRpb25zKQoreworICAgIHVpbnQzMl90IG9wZXJhdGlvbnNTaXplOworICAgIGlmICghZGVj
b2Rlci0+ZGVjb2RlVUludDMyKG9wZXJhdGlvbnNTaXplKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBvcGVyYXRpb25zU2l6ZTsgKytpKSB7Cisg
ICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSBvcGVyYXRpb25UeXBlOwor
ICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0ob3BlcmF0aW9uVHlwZSkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgc3dpdGNoIChvcGVyYXRpb25UeXBlKSB7Cisg
ICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9YOgorICAgICAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWToKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRp
b246OlNDQUxFOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEVfWjoKKyAg
ICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFXzNEOiB7CisgICAgICAgICAgICBk
b3VibGUgeCwgeSwgejsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHgpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci0+ZGVj
b2RlKHkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKHopKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChTY2FsZVRyYW5z
Zm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHgsIHksIHosIG9wZXJhdGlvblR5cGUpKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpU
UkFOU0xBVEVfWDoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9Z
OgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFOgorICAgICAgICBj
YXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1o6CisgICAgICAgIGNhc2UgVHJhbnNm
b3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfM0Q6IHsKKyAgICAgICAgICAgIExlbmd0aCB4LCB5LCB6
OworICAgICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVyPExlbmd0aD46OmRlY29kZShkZWNvZGVy
LCB4KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIUFy
Z3VtZW50Q29kZXI8TGVuZ3RoPjo6ZGVjb2RlKGRlY29kZXIsIHkpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2RlcjxMZW5ndGg+Ojpk
ZWNvZGUoZGVjb2RlciwgeikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHgsIHksIHosIG9wZXJhdGlvblR5cGUpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpST1RBVEU6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEVfWDoKKyAg
ICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9ZOgorICAgICAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEOiB7CisgICAgICAgICAgICBkb3VibGUgeCwgeSwg
eiwgYW5nbGU7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh4KSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZSh5
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoIWRlY29k
ZXItPmRlY29kZSh6KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICBpZiAoIWRlY29kZXItPmRlY29kZShhbmdsZSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5k
KFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHgsIHksIHosIGFuZ2xlLCBvcGVyYXRp
b25UeXBlKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6U0tFV19YOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlv
bjo6U0tFV19ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0tFVzogeworICAg
ICAgICAgICAgZG91YmxlIGFuZ2xlWCwgYW5nbGVZOworICAgICAgICAgICAgaWYgKCFkZWNvZGVy
LT5kZWNvZGUoYW5nbGVYKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICBpZiAoIWRlY29kZXItPmRlY29kZShhbmdsZVkpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFw
cGVuZChTa2V3VHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoYW5nbGVYLCBhbmdsZVksIG9wZXJh
dGlvblR5cGUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
VHJhbnNmb3JtT3BlcmF0aW9uOjpNQVRSSVg6IHsKKyAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IG1hdHJpeDsKKyAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1h
dGlvbk1hdHJpeD46OmRlY29kZShkZWNvZGVyLCBtYXRyaXgpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMub3BlcmF0aW9ucygp
LmFwcGVuZChNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShtYXRyaXgpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpNQVRSSVhfM0Q6IHsKKyAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsK
KyAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2RlcjxUcmFuc2Zvcm1hdGlvbk1hdHJpeD46OmRl
Y29kZShkZWNvZGVyLCBtYXRyaXgpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIHRyYW5zZm9ybU9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChNYXRyaXgz
RFRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKG1hdHJpeCkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlBFUlNQRUNUSVZF
OiB7CisgICAgICAgICAgICBMZW5ndGggcGVyc3BlY3RpdmU7CisgICAgICAgICAgICBpZiAoIUFy
Z3VtZW50Q29kZXI8TGVuZ3RoPjo6ZGVjb2RlKGRlY29kZXIsIHBlcnNwZWN0aXZlKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB0cmFuc2Zvcm1PcGVyYXRpb25z
Lm9wZXJhdGlvbnMoKS5hcHBlbmQoUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0
ZShwZXJzcGVjdGl2ZSkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OklERU5USVRZOgorICAgICAgICAgICAgdHJhbnNmb3Jt
T3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBwZW5kKElkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9u
OjpjcmVhdGUoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1P
cGVyYXRpb246Ok5PTkU6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorI2Vu
ZGlmCisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKK3ZvaWQgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbj46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29k
ZXIsIGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuJiB0b2tlbikKK3sKKyNpZiBP
UyhEQVJXSU4pCisgICAgZW5jb2Rlci0+ZW5jb2RlVUludDMyKHRva2VuLmZyb250QnVmZmVySGFu
ZGxlKTsKKyAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIodG9rZW4uYmFja0J1ZmZlckhhbmRsZSk7
CisjZW5kaWYKKyNpZiBPUyhMSU5VWCkKKyAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIodG9rZW4u
ZnJvbnRCdWZmZXJIYW5kbGUpOworI2VuZGlmCit9CisKK2Jvb2wgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbj46OmRlY29kZShBcmd1bWVudERlY29kZXIqIGRlY29k
ZXIsIFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuJiB0b2tlbikKK3sKKyNpZiBPUyhEQVJX
SU4pCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIodG9rZW4uZnJvbnRCdWZmZXJIYW5k
bGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50
MzIodG9rZW4uYmFja0J1ZmZlckhhbmRsZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgorI2lmIE9TKExJTlVYKQorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlVUludDMyKHRva2VuLmZy
b250QnVmZmVySGFuZGxlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgcmV0
dXJuIHRydWU7Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgQ29yZUlQQworI2VuZGlmIC8v
IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVy
cy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODdiNGM1ZmU3NTI5YzU3YmVj
ZWZhNjIxZDhiOTExYTE2MWUyMTQ4MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENv
ZGVycy5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0
IChDKSAyMDEyIENvbXBhbnkgMTAwLCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29vcmRpbmF0
ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJzX2gKKyNkZWZpbmUgQ29vcmRpbmF0ZWRHcmFwaGljc0Fy
Z3VtZW50Q29kZXJzX2gKKworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyNpbmNsdWRl
ICJBcmd1bWVudENvZGVycy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBGbG9hdFBv
aW50M0Q7CitjbGFzcyBUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKK3N0cnVjdCBMZW5ndGg7CisKKyNp
ZiBFTkFCTEUoQ1NTX0ZJTFRFUlMpCitjbGFzcyBGaWx0ZXJPcGVyYXRpb25zOworI2VuZGlmCisK
KyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCitjbGFzcyBUcmFuc2Zvcm1PcGVyYXRpb25zOworI2Vu
ZGlmCisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKK3N0cnVjdCBHcmFwaGljc1N1cmZhY2VU
b2tlbjsKKyNlbmRpZgorfQorCituYW1lc3BhY2UgQ29yZUlQQyB7CisKK3RlbXBsYXRlPD4gc3Ry
dWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmxvYXRQb2ludDNEPiB7CisgICAgc3RhdGljIHZv
aWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQzRCYp
OworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpGbG9h
dFBvaW50M0QmKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29y
ZTo6TGVuZ3RoPiB7CisgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciosIGNv
bnN0IFdlYkNvcmU6Okxlbmd0aCYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERl
Y29kZXIqLCBXZWJDb3JlOjpMZW5ndGgmKTsKK307CisKK3RlbXBsYXRlPD4gc3RydWN0IEFyZ3Vt
ZW50Q29kZXI8V2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXg+IHsKKyAgICBzdGF0aWMgdm9p
ZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25N
YXRyaXgmKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29y
ZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKK307CisKKyNpZiBFTkFCTEUoQ1NTX0ZJTFRFUlMp
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlv
bnM+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2Vi
Q29yZTo6RmlsdGVyT3BlcmF0aW9ucyYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVu
dERlY29kZXIqLCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zJik7Cit9OworI2VuZGlmCisKKyNp
ZiBFTkFCTEUoQ1NTX1NIQURFUlMpCit0ZW1wbGF0ZTw+IHN0cnVjdCBBcmd1bWVudENvZGVyPFdl
YkNvcmU6OlRyYW5zZm9ybU9wZXJhdGlvbnM+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJn
dW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtT3BlcmF0aW9ucyYpOworICAg
IHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpUcmFuc2Zvcm1P
cGVyYXRpb25zJik7Cit9OworI2VuZGlmCisKKyNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKK3Rl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9r
ZW4+IHsKKyAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2Vi
Q29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4mKTsKKyAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJn
dW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4mKTsKK307CisjZW5k
aWYKKworfSAvLyBuYW1lc3BhY2UgQ29yZUlQQworI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKKworI2VuZGlmIC8vIENvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVyc19o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9X
ZWJDdXN0b21GaWx0ZXJQcm9ncmFtLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9XZWJDdXN0b21GaWx0ZXJQcm9ncmFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWIwOTdjMjk1
MTk3NmMyZWJkNmE3NmJkNzNjNDIxOTc5MzdmZWRlZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL1dlYkN1c3RvbUZpbHRlclByb2dy
YW0uaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENvbXBhbnkg
MTAwLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViQ3Vz
dG9tRmlsdGVyUHJvZ3JhbV9oCisjZGVmaW5lIFdlYkN1c3RvbUZpbHRlclByb2dyYW1faAorCisj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKSAmJiBFTkFCTEUoQ1NTX1NIQURFUlMpCisjaW5j
bHVkZSA8V2ViQ29yZS9DdXN0b21GaWx0ZXJQcm9ncmFtLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJDdXN0b21GaWx0ZXJQcm9ncmFtIDogcHVibGljIFdlYkNvcmU6OkN1c3Rv
bUZpbHRlclByb2dyYW0geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkN1c3Rv
bUZpbHRlclByb2dyYW0+IGNyZWF0ZShTdHJpbmcgdmVydGV4U2hhZGVyU3RyaW5nLCBTdHJpbmcg
bV9mcmFnbWVudFNoYWRlclN0cmluZywgV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUg
cHJvZ3JhbVR5cGUsIFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyBtaXhT
ZXR0aW5ncykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViQ3VzdG9tRmls
dGVyUHJvZ3JhbSh2ZXJ0ZXhTaGFkZXJTdHJpbmcsIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcsIHBy
b2dyYW1UeXBlLCBtaXhTZXR0aW5ncykpOworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCBpc0xv
YWRlZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZpcnR1YWwgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW0mIG8pIGNvbnN0IE9WRVJSSURF
CisgICAgeworICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGNhc3QgaXMgdWdseSwgYnV0IFdlYkN1
c3RvbUZpbHRlclByb2dyYW0gaXMgdGhlIHNpbmdsZSBpbXBsZW1lbnRhdGlvbiBvZiBDdXN0b21G
aWx0ZXJQcm9ncmFtIG9uIFVJIFByb2Nlc3MuCisgICAgICAgIGNvbnN0IFdlYkN1c3RvbUZpbHRl
clByb2dyYW0qIG90aGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ3VzdG9tRmlsdGVyUHJvZ3Jh
bSo+KCZvKTsKKyAgICAgICAgcmV0dXJuIG1peFNldHRpbmdzKCkgPT0gb3RoZXItPm1peFNldHRp
bmdzKCkgJiYgbV92ZXJ0ZXhTaGFkZXJTdHJpbmcgPT0gb3RoZXItPnZlcnRleFNoYWRlclN0cmlu
ZygpICYmIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcgPT0gb3RoZXItPmZyYWdtZW50U2hhZGVyU3Ry
aW5nKCk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBTdHJpbmcgdmVydGV4U2hh
ZGVyU3RyaW5nKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV92ZXJ0ZXhTaGFkZXJTdHJpbmc7
IH0KKyAgICB2aXJ0dWFsIFN0cmluZyBmcmFnbWVudFNoYWRlclN0cmluZygpIGNvbnN0IE9WRVJS
SURFIHsgcmV0dXJuIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmc7IH0KKworICAgIHZpcnR1YWwgdm9p
ZCB3aWxsSGF2ZUNsaWVudHMoKSBPVkVSUklERSB7IG5vdGlmeUNsaWVudHMoKTsgfQorICAgIHZp
cnR1YWwgdm9pZCBkaWRSZW1vdmVMYXN0Q2xpZW50KCkgT1ZFUlJJREUgeyB9CisKK3ByaXZhdGU6
CisgICAgV2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbShTdHJpbmcgdmVydGV4U2hhZGVyU3RyaW5nLCBT
dHJpbmcgZnJhZ21lbnRTaGFkZXJTdHJpbmcsIFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW1U
eXBlIHByb2dyYW1UeXBlLCBXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3Mg
bWl4U2V0dGluZ3MpCisgICAgICAgIDogV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbShwcm9n
cmFtVHlwZSwgbWl4U2V0dGluZ3MpCisgICAgICAgICwgbV92ZXJ0ZXhTaGFkZXJTdHJpbmcodmVy
dGV4U2hhZGVyU3RyaW5nKQorICAgICAgICAsIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcoZnJhZ21l
bnRTaGFkZXJTdHJpbmcpCisgICAgeworICAgIH0KKworICAgIFN0cmluZyBtX3ZlcnRleFNoYWRl
clN0cmluZzsKKyAgICBTdHJpbmcgbV9mcmFnbWVudFNoYWRlclN0cmluZzsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKSAm
JiBFTkFCTEUoQ1NTX1NIQURFUlMpCisKKyNlbmRpZiAvLyBXZWJDdXN0b21GaWx0ZXJQcm9ncmFt
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TaGFyZWFibGVTdXJmYWNlLmNwcAppbmRleCAxMzZi
MDkzMTEzNGU0YTA4ODdmMzM4MDZjZmY2MGJmMGUyYmEzYWFkLi42NzI4MTZmYzQ5MDNhMmQ5ZTM0
ODZkOWM4ODk3MTI3MTNkMjI5YWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
U2hhcmVhYmxlU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1NoYXJlYWJs
ZVN1cmZhY2UuY3BwCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiU2hhcmVhYmxlU3VyZmFjZS5oIgogCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGlj
c0FyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc1N1
cmZhY2VUb2tlbi5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVB
cmd1bWVudENvZGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcAppbmRleCBjMjVlYTk1MTE2MDc0ZGE1NmRmYWUyMzQ3NmFhYTRmY2Q2YjE3ZTRl
Li5mYTFjZmZhZGE4MTRhMzE3OThkMGM4N2U4ZGE5ODBiYjNmMDNkZTQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcApAQCAtNTEsMjAgKzUx
LDYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVzLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotI2lu
Y2x1ZGUgPFdlYkNvcmUvQW5pbWF0aW9uLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFBvaW50
M0QuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0xlbmd0aC5oPgotI2luY2x1ZGUgPFdlYkNvcmUvVHJh
bnNmb3JtYXRpb25NYXRyaXguaD4KLQotI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSNpbmNsdWRl
IDxXZWJDb3JlL0ZpbHRlck9wZXJhdGlvbnMuaD4KLSNlbmRpZgotI2lmIFVTRShHUkFQSElDU19T
VVJGQUNFKQotI2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NTdXJmYWNlLmg+Ci0jZW5kaWYKLSNl
bmRpZgotCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CiAKQEAgLTg3NCwxNzIgKzg2MCw2IEBAIGJvb2wgQXJndW1lbnRDb2RlcjxLVVJMPjo6ZGVjb2Rl
KEFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwgS1VSTCYgcmVzdWx0KQogICAgIHJldHVybiB0cnVl
OwogfQogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotdm9pZCBBcmd1bWVudENvZGVy
PEZsb2F0UG9pbnQzRD46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVuY29kZXIsIGNvbnN0IEZs
b2F0UG9pbnQzRCYgZmxvYXRQb2ludDNEKQotewotICAgIFNpbXBsZUFyZ3VtZW50Q29kZXI8Rmxv
YXRQb2ludDNEPjo6ZW5jb2RlKGVuY29kZXIsIGZsb2F0UG9pbnQzRCk7Ci19Ci0KLWJvb2wgQXJn
dW1lbnRDb2RlcjxGbG9hdFBvaW50M0Q+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVy
LCBGbG9hdFBvaW50M0QmIGZsb2F0UG9pbnQzRCkKLXsKLSAgICByZXR1cm4gU2ltcGxlQXJndW1l
bnRDb2RlcjxGbG9hdFBvaW50M0Q+OjpkZWNvZGUoZGVjb2RlciwgZmxvYXRQb2ludDNEKTsKLX0K
LQotdm9pZCBBcmd1bWVudENvZGVyPExlbmd0aD46OmVuY29kZShBcmd1bWVudEVuY29kZXIqIGVu
Y29kZXIsIGNvbnN0IExlbmd0aCYgbGVuZ3RoKQotewotICAgIFNpbXBsZUFyZ3VtZW50Q29kZXI8
TGVuZ3RoPjo6ZW5jb2RlKGVuY29kZXIsIGxlbmd0aCk7Ci19Ci0KLWJvb2wgQXJndW1lbnRDb2Rl
cjxMZW5ndGg+OjpkZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBMZW5ndGgmIGxlbmd0
aCkKLXsKLSAgICByZXR1cm4gU2ltcGxlQXJndW1lbnRDb2RlcjxMZW5ndGg+OjpkZWNvZGUoZGVj
b2RlciwgbGVuZ3RoKTsKLX0KLQotdm9pZCBBcmd1bWVudENvZGVyPFRyYW5zZm9ybWF0aW9uTWF0
cml4Pjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2RlciwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybWF0aW9uTWF0cml4KQotewotICAgIFNpbXBsZUFyZ3VtZW50Q29k
ZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+OjplbmNvZGUoZW5jb2RlciwgdHJhbnNmb3JtYXRpb25N
YXRyaXgpOwotfQotCi1ib29sIEFyZ3VtZW50Q29kZXI8VHJhbnNmb3JtYXRpb25NYXRyaXg+Ojpk
ZWNvZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtYXRpb25NYXRyaXgpCi17Ci0gICAgcmV0dXJuIFNpbXBsZUFyZ3VtZW50Q29kZXI8VHJh
bnNmb3JtYXRpb25NYXRyaXg+OjpkZWNvZGUoZGVjb2RlciwgdHJhbnNmb3JtYXRpb25NYXRyaXgp
OwotfQotCi0jaWYgRU5BQkxFKENTU19GSUxURVJTKQotdm9pZCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkZpbHRlck9wZXJhdGlvbnM+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBj
b25zdCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQotewotICAgIGVuY29kZXIt
PmVuY29kZVVJbnQzMihmaWx0ZXJzLnNpemUoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBmaWx0ZXJzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNvbnN0IEZpbHRlck9wZXJhdGlvbiog
ZmlsdGVyID0gZmlsdGVycy5hdChpKTsKLSAgICAgICAgRmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRp
b25UeXBlIHR5cGUgPSBmaWx0ZXItPmdldE9wZXJhdGlvblR5cGUoKTsKLSAgICAgICAgZW5jb2Rl
ci0+ZW5jb2RlRW51bSh0eXBlKTsKLSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpTRVBJQToKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFOgotICAg
ICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURToKLSAgICAgICAgICAgIGVuY29k
ZXItPmVuY29kZURvdWJsZShzdGF0aWNfY2FzdDxjb25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVy
T3BlcmF0aW9uKj4oZmlsdGVyKS0+YW1vdW50KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6Ci0gICAgICAgIGNhc2UgRmlsdGVyT3Bl
cmF0aW9uOjpCUklHSFRORVNTOgotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q09OVFJB
U1Q6Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZOgotICAgICAgICAgICAg
ZW5jb2Rlci0+ZW5jb2RlRG91YmxlKHN0YXRpY19jYXN0PGNvbnN0IEJhc2ljQ29tcG9uZW50VHJh
bnNmZXJGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIpLT5hbW91bnQoKSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6Ci0gICAgICAgICAgICBB
cmd1bWVudENvZGVyPExlbmd0aD46OmVuY29kZShlbmNvZGVyLCBzdGF0aWNfY2FzdDxjb25zdCBC
bHVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyKS0+c3RkRGV2aWF0aW9uKCkpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzogewot
ICAgICAgICAgICAgY29uc3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiogc2hhZG93ID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbio+KGZpbHRlcik7Ci0gICAg
ICAgICAgICBBcmd1bWVudENvZGVyPEludFBvaW50Pjo6ZW5jb2RlKGVuY29kZXIsIHNoYWRvdy0+
bG9jYXRpb24oKSk7Ci0gICAgICAgICAgICBlbmNvZGVyLT5lbmNvZGVJbnQzMihzaGFkb3ctPnN0
ZERldmlhdGlvbigpKTsKLSAgICAgICAgICAgIEFyZ3VtZW50Q29kZXI8Q29sb3I+OjplbmNvZGUo
ZW5jb2Rlciwgc2hhZG93LT5jb2xvcigpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0K
LX0KLQotYm9vbCBBcmd1bWVudENvZGVyPFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnM+OjpkZWNv
ZGUoQXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25zJiBm
aWx0ZXJzKQotewotICAgIHVpbnQzMl90IHNpemU7Ci0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVV
SW50MzIoc2l6ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIFZlY3RvcjxSZWZQdHI8
RmlsdGVyT3BlcmF0aW9uPiA+JiBvcGVyYXRpb25zID0gZmlsdGVycy5vcGVyYXRpb25zKCk7Ci0K
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAgICBGaWx0ZXJP
cGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHlwZTsKLSAgICAgICAgUmVmUHRyPEZpbHRlck9wZXJh
dGlvbj4gZmlsdGVyOwotICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUVudW0odHlwZSkpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAg
ICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpHUkFZU0NBTEU6Ci0gICAgICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpTRVBJQToKLSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRF
OgotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFURTogewotICAgICAgICAg
ICAgZG91YmxlIHZhbHVlOwotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVEb3VibGUo
dmFsdWUpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGZpbHRl
ciA9IEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSh2YWx1ZSwgdHlwZSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEZpbHRlck9wZXJh
dGlvbjo6SU5WRVJUOgotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzoK
LSAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNPTlRSQVNUOgotICAgICAgICBjYXNlIEZp
bHRlck9wZXJhdGlvbjo6T1BBQ0lUWTogewotICAgICAgICAgICAgZG91YmxlIHZhbHVlOwotICAg
ICAgICAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVEb3VibGUodmFsdWUpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGZpbHRlciA9IEJhc2ljQ29tcG9uZW50VHJh
bnNmZXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSh2YWx1ZSwgdHlwZSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxVUjogewot
ICAgICAgICAgICAgTGVuZ3RoIGxlbmd0aDsKLSAgICAgICAgICAgIGlmICghQXJndW1lbnRDb2Rl
cjxMZW5ndGg+OjpkZWNvZGUoZGVjb2RlciwgbGVuZ3RoKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICBmaWx0ZXIgPSBCbHVyRmlsdGVyT3BlcmF0aW9uOjpjcmVh
dGUobGVuZ3RoLCB0eXBlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzogewotICAgICAgICAgICAgSW50UG9p
bnQgbG9jYXRpb247Ci0gICAgICAgICAgICBpbnQzMl90IHN0ZERldmlhdGlvbjsKLSAgICAgICAg
ICAgIENvbG9yIGNvbG9yOwotICAgICAgICAgICAgaWYgKCFBcmd1bWVudENvZGVyPEludFBvaW50
Pjo6ZGVjb2RlKGRlY29kZXIsIGxvY2F0aW9uKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXItPmRlY29kZUludDMyKHN0ZERldmlhdGlvbikp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKCFBcmd1bWVu
dENvZGVyPENvbG9yPjo6ZGVjb2RlKGRlY29kZXIsIGNvbG9yKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBmaWx0ZXIgPSBEcm9wU2hhZG93RmlsdGVyT3BlcmF0
aW9uOjpjcmVhdGUobG9jYXRpb24sIHN0ZERldmlhdGlvbiwgY29sb3IsIHR5cGUpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGZpbHRlcikKLSAgICAgICAgICAgIG9wZXJh
dGlvbnMuYXBwZW5kKGZpbHRlcik7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0jZW5k
aWYKLQotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotdm9pZCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuPjo6ZW5jb2RlKEFyZ3VtZW50RW5jb2RlciogZW5jb2Rl
ciwgY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4mIHRva2VuKQotewotI2lmIE9T
KERBUldJTikKLSAgICBlbmNvZGVyLT5lbmNvZGVVSW50MzIodG9rZW4uZnJvbnRCdWZmZXJIYW5k
bGUpOwotICAgIGVuY29kZXItPmVuY29kZVVJbnQzMih0b2tlbi5iYWNrQnVmZmVySGFuZGxlKTsK
LSNlbmRpZgotI2lmIE9TKExJTlVYKQotICAgIGVuY29kZXItPmVuY29kZVVJbnQzMih0b2tlbi5m
cm9udEJ1ZmZlckhhbmRsZSk7Ci0jZW5kaWYKLX0KLQotYm9vbCBBcmd1bWVudENvZGVyPFdlYkNv
cmU6OkdyYXBoaWNzU3VyZmFjZVRva2VuPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciogZGVjb2Rl
ciwgV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlVG9rZW4mIHRva2VuKQotewotI2lmIE9TKERBUldJ
TikKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJbnQzMih0b2tlbi5mcm9udEJ1ZmZlckhhbmRs
ZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXItPmRlY29kZVVJbnQz
Mih0b2tlbi5iYWNrQnVmZmVySGFuZGxlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlm
Ci0jaWYgT1MoTElOVVgpCi0gICAgaWYgKCFkZWNvZGVyLT5kZWNvZGVVSW50MzIodG9rZW4uZnJv
bnRCdWZmZXJIYW5kbGUpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKLSAgICByZXR1
cm4gdHJ1ZTsKLX0KLQotI2VuZGlmCi0KLSNlbmRpZgotCiB2b2lkIEFyZ3VtZW50Q29kZXI8V2Vi
Q29yZTo6VXNlclN0eWxlU2hlZXQ+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyLCBj
b25zdCBXZWJDb3JlOjpVc2VyU3R5bGVTaGVldCYgdXNlclN0eWxlU2hlZXQpCiB7CiAgICAgZW5j
b2Rlci0+ZW5jb2RlKHVzZXJTdHlsZVNoZWV0LnNvdXJjZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCA1ODEwNThjYWI3Y2ZkNjdhZWQy
OGQ2OWIwYTAxOTMzNDRhZDAxOWFkLi42ODUwZDZiYzc3MjA5NjNkNzI4N2RkNGNhN2YwNTAxNzdl
OTViMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVy
cy5oCkBAIC02OSwyNCArNjksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB9CiAjZW5kaWYKIAot
I2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBj
bGFzcyBGbG9hdFBvaW50M0Q7Ci0gICAgY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7Ci0gICAg
c3RydWN0IExlbmd0aDsKLQotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIHN0cnVjdCBH
cmFwaGljc1N1cmZhY2VUb2tlbjsKLSNlbmRpZgotfQotCi0jaWYgRU5BQkxFKENTU19GSUxURVJT
KQotbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIGNsYXNzIEZpbHRlck9wZXJhdGlvbnM7Ci19Ci0j
ZW5kaWYKLSNlbmRpZgotCiBuYW1lc3BhY2UgQ29yZUlQQyB7CiAKIHRlbXBsYXRlPD4gc3RydWN0
IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6QWZmaW5lVHJhbnNmb3JtPiB7CkBAIC0yNjAsMzcgKzI0
Miw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6S1VSTD4gewog
ICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpLVVJMJik7
CiB9OwogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotdGVtcGxhdGU8PiBzdHJ1Y3Qg
QXJndW1lbnRDb2RlcjxXZWJDb3JlOjpGbG9hdFBvaW50M0Q+IHsKLSAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludDNEJik7Ci0g
ICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciosIFdlYkNvcmU6OkZsb2F0UG9p
bnQzRCYpOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpM
ZW5ndGg+IHsKLSAgICBzdGF0aWMgdm9pZCBlbmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3Qg
V2ViQ29yZTo6TGVuZ3RoJik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2Rl
ciosIFdlYkNvcmU6Okxlbmd0aCYpOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRD
b2RlcjxXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gewotICAgIHN0YXRpYyB2b2lkIGVu
Y29kZShBcmd1bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYpOwotICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwotfTsKLQotI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLXRl
bXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz4g
ewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3Jl
OjpGaWx0ZXJPcGVyYXRpb25zJik7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVj
b2RlciosIFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMmKTsKLX07Ci0jZW5kaWYKLQotI2lmIFVT
RShHUkFQSElDU19TVVJGQUNFKQotdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJD
b3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbj4gewotICAgIHN0YXRpYyB2b2lkIGVuY29kZShBcmd1
bWVudEVuY29kZXIqLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc1N1cmZhY2VUb2tlbiYpOwotICAg
IHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXIqLCBXZWJDb3JlOjpHcmFwaGljc1N1
cmZhY2VUb2tlbiYpOwotfTsKLSNlbmRpZgotI2VuZGlmCi0KIHRlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6VXNlclN0eWxlU2hlZXQ+IHsKICAgICBzdGF0aWMgdm9pZCBl
bmNvZGUoQXJndW1lbnRFbmNvZGVyKiwgY29uc3QgV2ViQ29yZTo6VXNlclN0eWxlU2hlZXQmKTsK
ICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQXJndW1lbnREZWNvZGVyKiwgV2ViQ29yZTo6VXNlclN0
eWxlU2hlZXQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkgYi9Tb3Vy
Y2UvV2ViS2l0Mi9UYXJnZXQucHJpCmluZGV4IDRmMzkzMDc1M2NhZmMxOGMwMDA3YWQ3Y2ExYmY0
ODhlZTYxNGI5MzYuLjJlZWRmODAzYzIxMTk3YjE3NDk2MjJkNDk5M2I5YTdlYWE4OGRhODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYktpdDIv
VGFyZ2V0LnByaQpAQCAtMTMwLDYgKzEzMCw4IEBAIEhFQURFUlMgKz0gXAogICAgIFNoYXJlZC9X
ZWJVUkxSZXF1ZXN0LmggXAogICAgIFNoYXJlZC9XZWJVUkxSZXNwb25zZS5oIFwKICAgICBTaGFy
ZWQvV2ViVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmggXAorICAgIFNoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5oIFwKKyAgICBTaGFyZWQv
Q29vcmRpbmF0ZWRHcmFwaGljcy9XZWJDdXN0b21GaWx0ZXJQcm9ncmFtLmggXAogICAgIFNoYXJl
ZC9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luTW9kdWxlLmggXAogICAgIFNoYXJlZC9Q
bHVnaW5zL05QUmVtb3RlT2JqZWN0TWFwLmggXAogICAgIFNoYXJlZC9QbHVnaW5zL05QSWRlbnRp
ZmllckRhdGEuaCBcCkBAIC00ODYsNiArNDg4LDcgQEAgU09VUkNFUyArPSBcCiAgICAgU2hhcmVk
L1dlYlVSTFJlcXVlc3QuY3BwIFwKICAgICBTaGFyZWQvV2ViVVJMUmVzcG9uc2UuY3BwIFwKICAg
ICBTaGFyZWQvV2ViV2hlZWxFdmVudC5jcHAgXAorICAgIFNoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NBcmd1bWVudENvZGVycy5jcHAgXAogICAgIFNoYXJlZC9x
dC9Bcmd1bWVudENvZGVyc1F0LmNwcCBcCiAgICAgU2hhcmVkL3F0L0xheWVyVHJlZUNvbnRleHRR
dC5jcHAgXAogICAgIFNoYXJlZC9xdC9TaGFyZWFibGVCaXRtYXBRdC5jcHAgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVl
Q29vcmRpbmF0b3JQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oCmluZGV4IGIxZWY0MDFhNDQ1MDI1
YjIyYzY3ZmI2ZDUwZTcwNGY4NWNjODlkNmMuLjFhMmFiYmRmMTkyMDNjNWI4ZDIzMjQ5ZWQyNmVl
MzNkODVkYjNhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGlu
YXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclBy
b3h5LmgKQEAgLTIzLDYgKzIzLDcgQEAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAK
ICNpbmNsdWRlICJCYWNraW5nU3RvcmUuaCIKKyNpbmNsdWRlICJDb29yZGluYXRlZEdyYXBoaWNz
QXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVk
ZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiU3VyZmFjZVVwZGF0ZUluZm8uaCIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJpIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcmkK
aW5kZXggNTM2Yjc3OWJhYmJmZWU3OGE4ZWRlNjY5ZTdiZGFiN2E4YzhjNTg2Ni4uODBjYjJmYjhl
Nzk1YTI4MGM0OTc5ZWIyZjlhZmIzNGEzNWY5NGZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViS2l0Mi5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcmkKQEAgLTE2LDYg
KzE2LDcgQEAgSU5DTFVERVBBVEggKz0gXAogICAgICQkU09VUkNFX0RJUi9QbGF0Zm9ybS9xdCBc
CiAgICAgJCRTT1VSQ0VfRElSL1NoYXJlZCBcCiAgICAgJCRTT1VSQ0VfRElSL1NoYXJlZC9BUEkv
YyBcCisgICAgJCRTT1VSQ0VfRElSL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzIFwKICAgICAk
JFNPVVJDRV9ESVIvU2hhcmVkL0NvcmVJUENTdXBwb3J0IFwKICAgICAkJFNPVVJDRV9ESVIvU2hh
cmVkL1BsdWdpbnMgXAogICAgICQkU09VUkNFX0RJUi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5j
cHAKaW5kZXggYTE5NzE1ZTdlYThiNWQwNGJkNjc5NjA3MmNlMDg2MTZlZjVhYTVkZS4uYWFhMWMz
OGQ1Nzc2YTUxYWQwZjMzOTQ3MGYxMmY2MTYyMjQyOGMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29v
cmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29y
ZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcApAQCAtMjksNiArMjksNyBA
QAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICNpbmNsdWRlICJMYXllclRyZWVDb29y
ZGluYXRvci5oIgogCisjaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGljc0FyZ3VtZW50Q29kZXJz
LmgiCiAjaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiRHJh
d2luZ0FyZWFJbXBsLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>