<?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>90180</bug_id>
          
          <creation_ts>2012-06-28 07:49:46 -0700</creation_ts>
          <short_desc>MediaStream API: Update MediaStreamTrack to match the specification</short_desc>
          <delta_ts>2012-07-25 09:53:25 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          <dependson>92161</dependson>
          <blocked>56459</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tommy Widenflycht">tommyw</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>ojan</cc>
    
    <cc>tkent</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>659502</commentid>
    <comment_count>0</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-06-28 07:49:46 -0700</bug_when>
    <thetext>MediaStreamTracks are now required to show the status of the underlying source, and trigger events when that status changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659506</commentid>
    <comment_count>1</comment_count>
      <attachid>149955</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-06-28 07:57:47 -0700</bug_when>
    <thetext>Created attachment 149955
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659532</commentid>
    <comment_count>2</comment_count>
      <attachid>149955</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-28 08:54:29 -0700</bug_when>
    <thetext>Comment on attachment 149955
Patch

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

&gt; Source/WebCore/Modules/mediastream/MediaStreamTrack.h:84
&gt; +    ScriptExecutionContext* m_context;

What controls the relation between the lifetime of MediaStreamTrack and ScriptExecutionContext?  They both appear to be refcounted and so likely have unrelated lifetimes, which means this pointer can become stale.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659534</commentid>
    <comment_count>3</comment_count>
      <attachid>149955</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-28 08:55:27 -0700</bug_when>
    <thetext>Comment on attachment 149955
Patch

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

&gt; Source/WebCore/Modules/mediastream/MediaStreamTrack.h:43
&gt; -class MediaStreamTrack : public RefCounted&lt;MediaStreamTrack&gt; {
&gt; +class MediaStreamTrack : public RefCounted&lt;MediaStreamTrack&gt;, public EventTarget, public MediaStreamSource::Observer {

It&apos;s likely that MediaStreamTrack needs to be an ActiveDOMObject given that it&apos;s going to fire events on itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659585</commentid>
    <comment_count>4</comment_count>
      <attachid>149955</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-28 10:13:49 -0700</bug_when>
    <thetext>Comment on attachment 149955
Patch

Attachment 149955 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13106154</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660272</commentid>
    <comment_count>5</comment_count>
      <attachid>150112</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-06-29 01:31:53 -0700</bug_when>
    <thetext>Created attachment 150112
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660273</commentid>
    <comment_count>6</comment_count>
      <attachid>149955</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-06-29 01:35:40 -0700</bug_when>
    <thetext>Comment on attachment 149955
Patch

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

&gt;&gt; Source/WebCore/Modules/mediastream/MediaStreamTrack.h:43
&gt;&gt; +class MediaStreamTrack : public RefCounted&lt;MediaStreamTrack&gt;, public EventTarget, public MediaStreamSource::Observer {
&gt; 
&gt; It&apos;s likely that MediaStreamTrack needs to be an ActiveDOMObject given that it&apos;s going to fire events on itself.

Hmm, why? MediaStreamTrack doesn&apos;t fire events on itself, it fires events into the JS world.

&gt;&gt; Source/WebCore/Modules/mediastream/MediaStreamTrack.h:84
&gt;&gt; +    ScriptExecutionContext* m_context;
&gt; 
&gt; What controls the relation between the lifetime of MediaStreamTrack and ScriptExecutionContext?  They both appear to be refcounted and so likely have unrelated lifetimes, which means this pointer can become stale.

ScriptExecutionContext is the document as far as I know and therefore no object can outlive it. Also storing this pointer in a RefPtr can stop a world teardown to take place.n</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660274</commentid>
    <comment_count>7</comment_count>
      <attachid>149955</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-06-29 01:37:29 -0700</bug_when>
    <thetext>Comment on attachment 149955
Patch

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

&gt;&gt;&gt; Source/WebCore/Modules/mediastream/MediaStreamTrack.h:43
&gt;&gt;&gt; +class MediaStreamTrack : public RefCounted&lt;MediaStreamTrack&gt;, public EventTarget, public MediaStreamSource::Observer {
&gt;&gt; 
&gt;&gt; It&apos;s likely that MediaStreamTrack needs to be an ActiveDOMObject given that it&apos;s going to fire events on itself.
&gt; 
&gt; Hmm, why? MediaStreamTrack doesn&apos;t fire events on itself, it fires events into the JS world.

Btw, I&apos;m happy to make it a ActiveDOMObject, I just want to know the reasoning behind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660475</commentid>
    <comment_count>8</comment_count>
      <attachid>149955</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-29 07:48:23 -0700</bug_when>
    <thetext>Comment on attachment 149955
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/Modules/mediastream/MediaStreamTrack.h:43
&gt;&gt;&gt;&gt; +class MediaStreamTrack : public RefCounted&lt;MediaStreamTrack&gt;, public EventTarget, public MediaStreamSource::Observer {
&gt;&gt;&gt; 
&gt;&gt;&gt; It&apos;s likely that MediaStreamTrack needs to be an ActiveDOMObject given that it&apos;s going to fire events on itself.
&gt;&gt; 
&gt;&gt; Hmm, why? MediaStreamTrack doesn&apos;t fire events on itself, it fires events into the JS world.
&gt; 
&gt; Btw, I&apos;m happy to make it a ActiveDOMObject, I just want to know the reasoning behind.

Right, it fires events into the JS world.  We want it to stop firing events when the document is no longer active (i.e., displayed in a frame).  To do that, we subclass ActiveDOMObject and get the stop() callback, after which we shouldn&apos;t fire any more events.

&gt;&gt;&gt; Source/WebCore/Modules/mediastream/MediaStreamTrack.h:84
&gt;&gt;&gt; +    ScriptExecutionContext* m_context;
&gt;&gt; 
&gt;&gt; What controls the relation between the lifetime of MediaStreamTrack and ScriptExecutionContext?  They both appear to be refcounted and so likely have unrelated lifetimes, which means this pointer can become stale.
&gt; 
&gt; ScriptExecutionContext is the document as far as I know and therefore no object can outlive it. Also storing this pointer in a RefPtr can stop a world teardown to take place.n

There&apos;s nothing that prevents objects from outliving their document.  Imagine a document with an iframe.  The parent documents can get a JS reference to a MediaStreamTrack object from the subframe and then destroy the subframe.  Now this will be a stale pointer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660477</commentid>
    <comment_count>9</comment_count>
      <attachid>150112</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-06-29 07:50:07 -0700</bug_when>
    <thetext>Comment on attachment 150112
Patch

This patch still contains use-after-free vulnerabilities, as described in the previous comment.  I&apos;m also concerned that there isn&apos;t any testing for this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674357</commentid>
    <comment_count>10</comment_count>
      <attachid>153453</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-20 02:22:32 -0700</bug_when>
    <thetext>Created attachment 153453
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674362</commentid>
    <comment_count>11</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-20 02:24:55 -0700</bug_when>
    <thetext>I hope the latest patch removes all your concerns. I have added a test and MediaStreamTrack is now a ActiveDOMObject.

The patch is on the large size but it isn&apos;t easy to split it sensibly.

(In reply to comment #9)
&gt; (From update of attachment 150112 [details])
&gt; This patch still contains use-after-free vulnerabilities, as described in the previous comment.  I&apos;m also concerned that there isn&apos;t any testing for this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674363</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-20 02:25:50 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674622</commentid>
    <comment_count>13</comment_count>
      <attachid>153453</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-20 09:14:29 -0700</bug_when>
    <thetext>Comment on attachment 153453
Patch

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

&gt; Source/Platform/chromium/public/WebMediaStreamSource.h:56
&gt; +        ReadyStateLive = 0,
&gt; +        ReadyStateMuted = 1,
&gt; +        ReadyStateEnded = 2

Should we COMPILE_ASSERT that these enums match the WebCore versions?

&gt; Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp:112
&gt; +    return LIVE;

SHould we return MUTED or ENDED here?  That seems like it would be safer.

&gt; Tools/DumpRenderTree/chromium/MockWebKitPlatformSupport.cpp:53
&gt; -WebMediaStreamCenter* MockWebKitPlatformSupport::createMediaStreamCenter(WebMediaStreamCenterClient*)
&gt; +WebMediaStreamCenter* MockWebKitPlatformSupport::createMediaStreamCenter(WebMediaStreamCenterClient* client)

Should this return PassOwnPtr?

&gt; Tools/DumpRenderTree/chromium/MockWebMediaStreamCenter.h:39
&gt; +class MockWebMediaStreamCenter : public WebMediaStreamCenter {

This declaration should not be in the WebKit namespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674623</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-20 09:14:53 -0700</bug_when>
    <thetext>Just minor comments.  Thanks for the patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675565</commentid>
    <comment_count>15</comment_count>
      <attachid>153453</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-23 02:39:04 -0700</bug_when>
    <thetext>Comment on attachment 153453
Patch

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

&gt;&gt; Source/Platform/chromium/public/WebMediaStreamSource.h:56
&gt;&gt; +        ReadyStateEnded = 2
&gt; 
&gt; Should we COMPILE_ASSERT that these enums match the WebCore versions?

We sure should, thought I already had added them. Fixed.

&gt;&gt; Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp:112
&gt;&gt; +    return LIVE;
&gt; 
&gt; SHould we return MUTED or ENDED here?  That seems like it would be safer.

Done.

&gt;&gt; Tools/DumpRenderTree/chromium/MockWebKitPlatformSupport.cpp:53
&gt;&gt; +WebMediaStreamCenter* MockWebKitPlatformSupport::createMediaStreamCenter(WebMediaStreamCenterClient* client)
&gt; 
&gt; Should this return PassOwnPtr?

Unfortunately it can&apos;t since it is a override and the normal, non-mock, implementation in Chromium wants to use scoped_ptr.

&gt;&gt; Tools/DumpRenderTree/chromium/MockWebMediaStreamCenter.h:39
&gt;&gt; +class MockWebMediaStreamCenter : public WebMediaStreamCenter {
&gt; 
&gt; This declaration should not be in the WebKit namespace.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675601</commentid>
    <comment_count>16</comment_count>
      <attachid>153771</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-23 04:06:52 -0700</bug_when>
    <thetext>Created attachment 153771
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675750</commentid>
    <comment_count>17</comment_count>
      <attachid>153771</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-23 09:07:50 -0700</bug_when>
    <thetext>Comment on attachment 153771
Patch

Thanks.  I might have added tests to make sure the JavaScript wrappers interact correctly with the garbage collector (as discussed above).  In the test hardness, there&apos;s a gc function you can call.  I think there&apos;s a gc.js file that has some instructions about how to use it.  In any case, we can add that tests in a followup patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>675785</commentid>
    <comment_count>18</comment_count>
      <attachid>153771</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-23 09:59:47 -0700</bug_when>
    <thetext>Comment on attachment 153771
Patch

Rejecting attachment 153771 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ommit-queue/Source/WebKit/chromium/third_party/snappy/src --revision 63 --non-interactive --force --accept theirs-conflict --ignore-externals&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
45&gt;At revision 63.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/13326138</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676659</commentid>
    <comment_count>19</comment_count>
      <attachid>154018</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-24 04:43:06 -0700</bug_when>
    <thetext>Created attachment 154018
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676660</commentid>
    <comment_count>20</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-24 04:43:48 -0700</bug_when>
    <thetext>Fixed merge problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676709</commentid>
    <comment_count>21</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-24 05:49:07 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 153771 [details])
&gt; Thanks.  I might have added tests to make sure the JavaScript wrappers interact correctly with the garbage collector (as discussed above).  In the test hardness, there&apos;s a gc function you can call.  I think there&apos;s a gc.js file that has some instructions about how to use it.  In any case, we can add that tests in a followup patch.

Will definitely do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>676988</commentid>
    <comment_count>22</comment_count>
      <attachid>154018</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-24 10:32:49 -0700</bug_when>
    <thetext>Comment on attachment 154018
Patch

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

&gt; Source/WebCore/Modules/mediastream/MediaStreamTrack.idl:29
&gt;          Conditional=MEDIA_STREAM,
&gt; +        EventTarget

I think we need to add the ActiveDOMObject attribute to this class because MediaStreamTrack inherits from ActiveDOMObject.  Please feel free to do that in a followup patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677064</commentid>
    <comment_count>23</comment_count>
      <attachid>154018</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-24 11:33:40 -0700</bug_when>
    <thetext>Comment on attachment 154018
Patch

Clearing flags on attachment: 154018

Committed r123499: &lt;http://trac.webkit.org/changeset/123499&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677065</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-24 11:33:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677195</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-24 14:14:57 -0700</bug_when>
    <thetext>Re-opened since this is blocked by 92161</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677197</commentid>
    <comment_count>26</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2012-07-24 14:15:58 -0700</bug_when>
    <thetext>This patch broke Android build (compile failure) and are blocking me from rolling webkit, so I am rolling this out for now.

From sievers@: &quot;it might be that ENABLE(MEDIA_STREAM) is not used consistently and we have it off
the constructor is if&apos;defd for MockWebMediaStreamCenter but the call site is not&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677811</commentid>
    <comment_count>27</comment_count>
      <attachid>154298</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-25 02:09:36 -0700</bug_when>
    <thetext>Created attachment 154298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677812</commentid>
    <comment_count>28</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-25 02:10:15 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (From update of attachment 154018 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=154018&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/mediastream/MediaStreamTrack.idl:29
&gt; &gt;          Conditional=MEDIA_STREAM,
&gt; &gt; +        EventTarget
&gt; 
&gt; I think we need to add the ActiveDOMObject attribute to this class because MediaStreamTrack inherits from ActiveDOMObject.  Please feel free to do that in a followup patch.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677813</commentid>
    <comment_count>29</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2012-07-25 02:11:18 -0700</bug_when>
    <thetext>Hopefully fixed the Android build problem, this patch now builds properly with ENABLE_MEDIA_STREAM=0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678092</commentid>
    <comment_count>30</comment_count>
      <attachid>154298</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-07-25 08:36:25 -0700</bug_when>
    <thetext>Comment on attachment 154298
Patch

Great.  Let&apos;s give it a whirl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678167</commentid>
    <comment_count>31</comment_count>
      <attachid>154298</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-25 09:53:19 -0700</bug_when>
    <thetext>Comment on attachment 154298
Patch

Clearing flags on attachment: 154298

Committed r123627: &lt;http://trac.webkit.org/changeset/123627&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678168</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-25 09:53:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149955</attachid>
            <date>2012-06-28 07:57:47 -0700</date>
            <delta_ts>2012-06-29 07:48:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90180-20120628165746.patch</filename>
            <type>text/plain</type>
            <size>19231</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZjNzg3MjllODc0YzJh
MTlhMDc1ZGEwZjVjYzNhZTJkNzM2ZTk1ZS4uYzA1MzFiMjVmYjk1MmFlNWE2NTBkYWE4ZWZkMjNk
OGRkMjc2YjVhZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA2LTI4ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogVXBkYXRlIE1lZGlhU3RyZWFtVHJhY2sgdG8gbWF0Y2ggdGhlIHNwZWNpZmljYXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMTgwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVkaWFTdHJl
YW1UcmFja3MgYXJlIG5vdyByZXF1aXJlZCB0byBzaG93IHRoZSBzdGF0dXMgb2YgdGhlIHVuZGVy
bHlpbmcgc291cmNlLAorICAgICAgICBhbmQgdHJpZ2dlciBldmVudHMgd2hlbiB0aGF0IHN0YXR1
cyBjaGFuZ2VzLgorCisgICAgICAgIE5vdCBjdXJyZW50bHkgdGVzdGFibGUuCisKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06Ok1lZGlhU3RyZWFt
KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmg6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbVRyYWNrOjpNZWRpYVN0cmVhbVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtVHJhY2s6On5NZWRpYVN0cmVhbVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtVHJhY2s6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VDaGFuZ2VkU3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGw6CisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6TWVkaWFTdHJlYW1Tb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6OnNldFJlYWR5U3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6OmFkZE9ic2VydmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpyZW1vdmVPYnNlcnZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaDoKKyAgICAgICAgKE9i
c2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpPYnNlcnZlcjo6
fk9ic2VydmVyKToKKyAgICAgICAgKE1lZGlhU3RyZWFtU291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtU291cmNlOjpyZWFkeVN0YXRlKToKKwogMjAxMi0wNi0yNyAgQWxleGFu
ZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVuZXhwZWN0ZWQg
ZW5kIG9mIHN0eWxlIHNoZWV0IGluIEBmb250LWZhY2UgcnVsZSBkaXNjYXJkcyBpdCByYXRoZXIg
dGhhbiBjbG9zZXMgYWxsIG9wZW4gY29uc3RydWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggMzVlYzJlYzE1NTZmNDRmMjZmMTlkMTlkZjE3M2JjNzdlNDNmMmM4ZS4uODBjODA1
YjdmM2E3NWViNjA1NzUwMjYxZTc2ZmM1NDVjZGIyMDc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC0zNDk3LDYgKzM0OTcsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29tcG9uZW50
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVz
Y3JpcHRvci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVNvdXJjZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtU291cmNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDBIYW5kbGVyLmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCmluZGV4IDhh
M2Y1ODVjYmJkNmRmMGY0Y2JkZTdlZTcxZWY2MDMxODJkMGNlOGUuLjY3MDJkYWQ5NGE2ZGVmNTlm
ZDBkNTUwN2UwMTY5MjljMGQ3MjczYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCkBAIC05NCwxNCArOTQsMTQgQEAgTWVkaWFT
dHJlYW06Ok1lZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW0KICAgICBzaXplX3QgbnVtYmVyT2ZBdWRpb1RyYWNrcyA9IG1fZGVz
Y3JpcHRvci0+bnVtYmVyT2ZBdWRpb0NvbXBvbmVudHMoKTsKICAgICBhdWRpb1RyYWNrVmVjdG9y
LnJlc2VydmVDYXBhY2l0eShudW1iZXJPZkF1ZGlvVHJhY2tzKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG51bWJlck9mQXVkaW9UcmFja3M7IGkrKykKLSAgICAgICAgYXVkaW9UcmFja1Zl
Y3Rvci5hcHBlbmQoTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKG1fZGVzY3JpcHRvciwgbV9kZXNj
cmlwdG9yLT5hdWRpb0NvbXBvbmVudChpKSkpOworICAgICAgICBhdWRpb1RyYWNrVmVjdG9yLmFw
cGVuZChNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoY29udGV4dCwgbV9kZXNjcmlwdG9yLCBtX2Rl
c2NyaXB0b3ItPmF1ZGlvQ29tcG9uZW50KGkpKSk7CiAgICAgbV9hdWRpb1RyYWNrcyA9IE1lZGlh
U3RyZWFtVHJhY2tMaXN0OjpjcmVhdGUoYXVkaW9UcmFja1ZlY3Rvcik7CiAKICAgICBNZWRpYVN0
cmVhbVRyYWNrVmVjdG9yIHZpZGVvVHJhY2tWZWN0b3I7CiAgICAgc2l6ZV90IG51bWJlck9mVmlk
ZW9UcmFja3MgPSBtX2Rlc2NyaXB0b3ItPm51bWJlck9mVmlkZW9Db21wb25lbnRzKCk7CiAgICAg
dmlkZW9UcmFja1ZlY3Rvci5yZXNlcnZlQ2FwYWNpdHkobnVtYmVyT2ZWaWRlb1RyYWNrcyk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlZpZGVvVHJhY2tzOyBpKyspCi0gICAg
ICAgIHZpZGVvVHJhY2tWZWN0b3IuYXBwZW5kKE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShtX2Rl
c2NyaXB0b3IsIG1fZGVzY3JpcHRvci0+dmlkZW9Db21wb25lbnQoaSkpKTsKKyAgICAgICAgdmlk
ZW9UcmFja1ZlY3Rvci5hcHBlbmQoTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKGNvbnRleHQsIG1f
ZGVzY3JpcHRvciwgbV9kZXNjcmlwdG9yLT52aWRlb0NvbXBvbmVudChpKSkpOwogICAgIG1fdmlk
ZW9UcmFja3MgPSBNZWRpYVN0cmVhbVRyYWNrTGlzdDo6Y3JlYXRlKHZpZGVvVHJhY2tWZWN0b3Ip
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtLmgKaW5kZXggZjZhOThkZWJkYjYyMzgyNjQ0MmU4YWZlODg1NWE4ZjNiMWU4MDViMy4uMGY4
YjlmNmM1MWI3ODE3Y2M3MzJlYWNkYjhhMWJmNGNjYmZiNmZkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaApAQCAtMzksNyArMzksNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhU3RyZWFtIDogcHVibGljIFJlZkNv
dW50ZWQ8TWVkaWFTdHJlYW0+LCBwdWJsaWMgTWVkaWFTdHJlYW1EZXNjcmlwdG9yT3duZXIsIHB1
YmxpYyBFdmVudFRhcmdldCwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1
YmxpYzoKLSAgICAvLyBNdXN0IG1hdGNoIHRoZSBjb25zdGFudHMgaW4gdGhlIC5pZGwgZmlsZS4K
ICAgICBlbnVtIFJlYWR5U3RhdGUgewogICAgICAgICBMSVZFID0gMSwKICAgICAgICAgRU5ERUQg
PSAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmNwcAppbmRleCBmMjI3NzQ5NmMxMzYxNWQ5OTRhM2RhNjVmNWM1ZjVhNTJh
MzBjMDY4Li4wZTFjNDFiOGJmNTA0YjcyZjk0NmE3NjJhYjhkYTM4M2IyZGNmMTg4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5jcHAKQEAgLTI4LDI0ICsyOCwyOCBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
IAorI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKICNp
bmNsdWRlICJNZWRpYVN0cmVhbUNvbXBvbmVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBzdHJlYW1EZXNjcmlwdG9yLCBNZWRpYVN0
cmVhbUNvbXBvbmVudCogY29tcG9uZW50KQorUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBN
ZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IHN0cmVhbURlc2NyaXB0b3IsIE1lZGlh
U3RyZWFtQ29tcG9uZW50KiBjb21wb25lbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
ZWRpYVN0cmVhbVRyYWNrKHN0cmVhbURlc2NyaXB0b3IsIGNvbXBvbmVudCkpOworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgTWVkaWFTdHJlYW1UcmFjayhjb250ZXh0LCBzdHJlYW1EZXNjcmlwdG9y
LCBjb21wb25lbnQpKTsKIH0KIAotTWVkaWFTdHJlYW1UcmFjazo6TWVkaWFTdHJlYW1UcmFjayhQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gc3RyZWFtRGVzY3JpcHRvciwgTWVkaWFT
dHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCkKLSAgICA6IG1fc3RyZWFtRGVzY3JpcHRvcihzdHJl
YW1EZXNjcmlwdG9yKQorTWVkaWFTdHJlYW1UcmFjazo6TWVkaWFTdHJlYW1UcmFjayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRv
cj4gc3RyZWFtRGVzY3JpcHRvciwgTWVkaWFTdHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCkKKyAg
ICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9zdHJlYW1EZXNjcmlwdG9yKHN0cmVhbURl
c2NyaXB0b3IpCiAgICAgLCBtX2NvbXBvbmVudChjb21wb25lbnQpCiB7CisgICAgbV9jb21wb25l
bnQtPnNvdXJjZSgpLT5hZGRPYnNlcnZlcih0aGlzKTsKIH0KIAogTWVkaWFTdHJlYW1UcmFjazo6
fk1lZGlhU3RyZWFtVHJhY2soKQogeworICAgIG1fY29tcG9uZW50LT5zb3VyY2UoKS0+cmVtb3Zl
T2JzZXJ2ZXIodGhpcyk7CiB9CiAKIFN0cmluZyBNZWRpYVN0cmVhbVRyYWNrOjpraW5kKCkgY29u
c3QKQEAgLTg3LDExICs5MSw1OCBAQCB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnNldEVuYWJsZWQo
Ym9vbCBlbmFibGVkKQogICAgIE1lZGlhU3RyZWFtQ2VudGVyOjppbnN0YW5jZSgpLmRpZFNldE1l
ZGlhU3RyZWFtVHJhY2tFbmFibGVkKG1fc3RyZWFtRGVzY3JpcHRvci5nZXQoKSwgbV9jb21wb25l
bnQuZ2V0KCkpOwogfQogCitNZWRpYVN0cmVhbVRyYWNrOjpSZWFkeVN0YXRlIE1lZGlhU3RyZWFt
VHJhY2s6OnJlYWR5U3RhdGUoKSBjb25zdAoreworICAgIHN3aXRjaCAobV9jb21wb25lbnQtPnNv
dXJjZSgpLT5yZWFkeVN0YXRlKCkpIHsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpSZWFk
eVN0YXRlTGl2ZToKKyAgICAgICAgcmV0dXJuIExJVkU7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNv
dXJjZTo6UmVhZHlTdGF0ZU11dGVkOgorICAgICAgICByZXR1cm4gTVVURUQ7CisgICAgY2FzZSBN
ZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZUVuZGVkOgorICAgICAgICByZXR1cm4gRU5ERUQ7
CisgICAgfQorfQorCit2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnNvdXJjZUNoYW5nZWRTdGF0ZSgp
Cit7CisgICAgc3dpdGNoIChtX2NvbXBvbmVudC0+c291cmNlKCktPnJlYWR5U3RhdGUoKSkgewor
ICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGVMaXZlOgorICAgICAgICBkaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnVubXV0ZUV2ZW50LCBmYWxzZSwg
ZmFsc2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6UmVh
ZHlTdGF0ZU11dGVkOgorICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLm11dGVFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGVFbmRlZDoKKyAgICAgICAgZGlzcGF0Y2hF
dmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50LCBmYWxzZSwgZmFsc2Up
KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCiBNZWRpYVN0cmVhbUNvbXBvbmVudCogTWVk
aWFTdHJlYW1UcmFjazo6Y29tcG9uZW50KCkKIHsKICAgICByZXR1cm4gbV9jb21wb25lbnQuZ2V0
KCk7CiB9CiAKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTdHJlYW1UcmFjazo6aW50ZXJmYWNl
TmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JNZWRp
YVN0cmVhbVRyYWNrOworfQorCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBNZWRpYVN0cmVhbVRy
YWNrOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb250
ZXh0OworfQorCitFdmVudFRhcmdldERhdGEqIE1lZGlhU3RyZWFtVHJhY2s6OmV2ZW50VGFyZ2V0
RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKworRXZlbnRUYXJn
ZXREYXRhKiBNZWRpYVN0cmVhbVRyYWNrOjplbnN1cmVFdmVudFRhcmdldERhdGEoKQoreworICAg
IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCmluZGV4IGM0NWJlMThj
NzRjYThjNGRmNTQ3MGUyZTA5NDVjN2VmN2JhOTNjYmYuLmQ1NTgyY2YyY2U1Y2NmZDEzZmFiY2Jm
OTJjZDIzNjNiNGY5Y2M2OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCkBAIC0yOCw3ICsyOCw5IEBACiAKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRl
ICJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5o
IgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0zOCw5ICs0MCwxNSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhU3RyZWFtQ29tcG9uZW50OwogCi1jbGFzcyBNZWRpYVN0
cmVhbVRyYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFjaz4geworY2xhc3Mg
TWVkaWFTdHJlYW1UcmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2s+LCBw
dWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBNZWRpYVN0cmVhbVNvdXJjZTo6T2JzZXJ2ZXIgewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IGNyZWF0ZShQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4sIE1lZGlhU3RyZWFtQ29tcG9uZW50Kik7
CisgICAgZW51bSBSZWFkeVN0YXRlIHsKKyAgICAgICAgTElWRSA9IDAsCisgICAgICAgIE1VVEVE
ID0gMSwKKyAgICAgICAgRU5ERUQgPSAyCisgICAgfTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+LCBNZWRpYVN0cmVhbUNvbXBvbmVudCopOwogICAg
IHZpcnR1YWwgfk1lZGlhU3RyZWFtVHJhY2soKTsKIAogICAgIFN0cmluZyBraW5kKCkgY29uc3Q7
CkBAIC00OSwxMCArNTcsMzQgQEAgcHVibGljOgogICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0Owog
ICAgIHZvaWQgc2V0RW5hYmxlZChib29sKTsKIAorICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgp
IGNvbnN0OworCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihtdXRlKTsKKyAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHVubXV0ZSk7CisgICAgREVGSU5FX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUihlbmRlZCk7CisKICAgICBNZWRpYVN0cmVhbUNvbXBvbmVu
dCogY29tcG9uZW50KCk7CiAKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVh
bCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3Qg
T1ZFUlJJREU7CisKKyAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2s+OjpyZWY7
CisgICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNrPjo6ZGVyZWY7CisKIHByaXZh
dGU6Ci0gICAgTWVkaWFTdHJlYW1UcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRv
cj4sIE1lZGlhU3RyZWFtQ29tcG9uZW50Kik7CisgICAgTWVkaWFTdHJlYW1UcmFjayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+LCBNZWRp
YVN0cmVhbUNvbXBvbmVudCopOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIEV2
ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBF
dmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVmKCk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVyZWYoKTsgfQorICAgIEV2
ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBtX2NvbnRleHQ7CisKKyAgICAvLyBNZWRpYVN0cmVhbVNvdXJjZU9ic2VydmVyCisgICAg
dmlydHVhbCB2b2lkIHNvdXJjZUNoYW5nZWRTdGF0ZSgpIE9WRVJSSURFOwogCiAgICAgUmVmUHRy
PE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gbV9zdHJlYW1EZXNjcmlwdG9yOwogICAgIFJlZlB0cjxN
ZWRpYVN0cmVhbUNvbXBvbmVudD4gbV9jb21wb25lbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbAppbmRleCA3OTg3
NTk3NWU5MTdjYmU2ZWY5OTMxODI4ZDU4YzFjOTY5ZjhlZGViLi4wNWI4OTczODQ0ZmE1N2YzNmZm
MDQ4OThjN2Y0ZmFlYTcyYmVkYWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwKQEAgLTI2LDEwICsyNiwzMCBA
QCBtb2R1bGUgY29yZSB7CiAKICAgICBpbnRlcmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1N
RURJQV9TVFJFQU0sCisgICAgICAgIEV2ZW50VGFyZ2V0CiAgICAgXSBNZWRpYVN0cmVhbVRyYWNr
IHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBraW5kOwogICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhYmVsOwogICAgICAgICAgICAgICAgICBhdHRy
aWJ1dGUgYm9vbGVhbiBlbmFibGVkOworCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IExJ
VkUgPSAwOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBNVVRFRCA9IDE7CisgICAgICAg
IGNvbnN0IHVuc2lnbmVkIHNob3J0IEVOREVEID0gMjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVuc2lnbmVkIHNob3J0IHJlYWR5U3RhdGU7CisKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50
TGlzdGVuZXIgb25tdXRlOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnVubXV0
ZTsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lbmRlZDsKKworICAgICAgICAv
LyBFdmVudFRhcmdldCBpbnRlcmZhY2UKKyAgICAgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGlu
IERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRM
aXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtPcHRp
b25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgdm9pZCByZW1vdmVFdmVudExpc3Rl
bmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgYm9vbGVhbiBk
aXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2ZW50KQorICAgICAgICAgICAgcmFpc2VzKEV2ZW50RXhj
ZXB0aW9uKTsKICAgICB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMTA1NGUwNzI1NWNhNzZh
YjhiZGU1ZTRjMDI5YTk2NWU5ZDMwMjgwNS4uMzAwN2MxOWFhYzZhM2E4NzZjYzFhN2NhZDcwMTdl
MjVhMjYzNWY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNDQzLDYgKzQ0Myw3IEBACiAgICAgICAg
ICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db21wb25lbnQuaCcsCiAgICAg
ICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgnLAor
ICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24wMEhhbmRs
ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb24w
MEhhbmRsZXJDbGllbnQuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRO
YW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAppbmRleCA1OThiY2RkZTUx
MTRhZWFhMDc1M2M5NDcyYzlmMWExNWJhYjFkMzFjLi40ZmQ0ZjY2YmZmNTgyMWE0YmZhNGUxZTNm
YWQ3OTM5ODQ4OGFhYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1l
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKQEAgLTIxNiw2ICsyMTYs
OCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8oYWRkc3RyZWFtKSBcCiAgICAgbWFj
cm8ocmVtb3Zlc3RyZWFtKSBcCiAgICAgbWFjcm8oc3RhdGVjaGFuZ2UpIFwKKyAgICBtYWNybyht
dXRlKSBcCisgICAgbWFjcm8odW5tdXRlKSBcCiAgICAgXAogICAgIG1hY3JvKHNob3cpIFwKICAg
ICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5Lmlu
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCAzZWM2ZGI5
NDQ2ZDI1OTYzMTYyOWFjNzNjZTllZjBlNDFmNGEzNTg2Li5iOWFhYWE2YTUxYjIxNWE2OGQ4Zjc2
ZTNhMGVmODBhMDg1OWI2YzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rv
cnkuaW4KQEAgLTE3LDYgKzE3LDcgQEAgSmF2YVNjcmlwdEF1ZGlvTm9kZSBjb25kaXRpb25hbD1X
RUJfQVVESU8KIExvY2FsTWVkaWFTdHJlYW0gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBNZWRp
YUNvbnRyb2xsZXIgY29uZGl0aW9uYWw9VklERU8KIE1lZGlhU3RyZWFtIGNvbmRpdGlvbmFsPU1F
RElBX1NUUkVBTQorTWVkaWFTdHJlYW1UcmFjayBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIE1l
c3NhZ2VQb3J0CiBOZXR3b3JrSW5mb0Nvbm5lY3Rpb24gY29uZGl0aW9uYWw9TkVUV09SS19JTkZP
CiBOb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTcyMDQ4N2RjMTI1NGE0YzIzNDI0
Y2IxMDAxZWFmNjI5YzkyODUxZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcApAQCAtMCwwICsxLDc2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAg
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
KworI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gTWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0
ZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUmVhZHlT
dGF0ZSByZWFkeVN0YXRlKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTdHJlYW1T
b3VyY2UoaWQsIHR5cGUsIG5hbWUsIHJlYWR5U3RhdGUpKTsKK30KKworTWVkaWFTdHJlYW1Tb3Vy
Y2U6Ok1lZGlhU3RyZWFtU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUgdHlwZSwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBSZWFkeVN0YXRlIHJlYWR5U3RhdGUpCisgICAgOiBtX2lkKGlkKQorICAg
ICwgbV90eXBlKHR5cGUpCisgICAgLCBtX25hbWUobmFtZSkKKyAgICAsIG1fcmVhZHlTdGF0ZShy
ZWFkeVN0YXRlKQoreworfQorCit2b2lkIE1lZGlhU3RyZWFtU291cmNlOjpzZXRSZWFkeVN0YXRl
KFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKK3sKKyAgICBBU1NFUlQobV9yZWFkeVN0YXRlICE9IFJl
YWR5U3RhdGVFbmRlZCk7CisgICAgaWYgKG1fcmVhZHlTdGF0ZSAhPSByZWFkeVN0YXRlKSB7Cisg
ICAgICAgIG1fcmVhZHlTdGF0ZSA9IHJlYWR5U3RhdGU7CisgICAgICAgIGZvciAoVmVjdG9yPE9i
c2VydmVyKj46Oml0ZXJhdG9yIGkgPSBtX29ic2VydmVycy5iZWdpbigpOyBpICE9IG1fb2JzZXJ2
ZXJzLmVuZCgpOyArK2kpCisgICAgICAgICAgICAoKmkpLT5zb3VyY2VDaGFuZ2VkU3RhdGUoKTsK
KyAgICB9Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OmFkZE9ic2VydmVyKE1lZGlhU3Ry
ZWFtU291cmNlOjpPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgbV9vYnNlcnZlcnMuYXBwZW5k
KG9ic2VydmVyKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6cmVtb3ZlT2JzZXJ2ZXIo
TWVkaWFTdHJlYW1Tb3VyY2U6Ok9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBzaXplX3QgcG9z
ID0gbV9vYnNlcnZlcnMuZmluZChvYnNlcnZlcik7CisgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkK
KyAgICAgICAgbV9vYnNlcnZlcnMucmVtb3ZlKHBvcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaAppbmRl
eCA3NjM0ZTQwYTU4MjliOTk4ODZlYmNhM2NkNTgyY2JlODA5NDcwMmM4Li5jNDViNTcxNDIxNDM0
NGE0NDc4NTk1NTUzMTZkOWZmMmQxN2M4YWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmgKQEAgLTQxLDM2ICs0
MSw0MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhU3RyZWFtU291cmNlIDog
cHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1Tb3VyY2U+IHsKIHB1YmxpYzoKKyAgICBjbGFz
cyBPYnNlcnZlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5PYnNlcnZlcigpIHsg
fQorICAgICAgICB2aXJ0dWFsIHZvaWQgc291cmNlQ2hhbmdlZFN0YXRlKCkgPSAwOworICAgIH07
CisKICAgICBlbnVtIFR5cGUgewogICAgICAgICBUeXBlQXVkaW8sCiAgICAgICAgIFR5cGVWaWRl
bwogICAgIH07CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gY3Jl
YXRlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbVNvdXJjZShpZCwgdHlw
ZSwgbmFtZSkpOwotICAgIH0KKyAgICBlbnVtIFJlYWR5U3RhdGUgeworICAgICAgICBSZWFkeVN0
YXRlTGl2ZSA9IDAsCisgICAgICAgIFJlYWR5U3RhdGVNdXRlZCA9IDEsCisgICAgICAgIFJlYWR5
U3RhdGVFbmRlZCA9IDIKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1Tb3VyY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlLCBjb25zdCBTdHJpbmcmIG5h
bWUsIFJlYWR5U3RhdGUgPSBSZWFkeVN0YXRlTGl2ZSk7CiAKICAgICBjb25zdCBTdHJpbmcmIGlk
KCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFt
ZTsgfQogCi0gICAgYm9vbCBtdXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbXV0ZWQ7IH0KLSAgICB2
b2lkIHNldE11dGVkKGJvb2wgbXV0ZWQpIHsgbV9tdXRlZCA9IG11dGVkOyB9CisgICAgdm9pZCBz
ZXRSZWFkeVN0YXRlKFJlYWR5U3RhdGUpOworICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcmVhZHlTdGF0ZTsgfQorCisgICAgdm9pZCBhZGRPYnNlcnZlcihPYnNl
cnZlciopOworICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKIAogcHJpdmF0ZToK
LSAgICBNZWRpYVN0cmVhbVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlIHR5cGUsIGNvbnN0
IFN0cmluZyYgbmFtZSkKLSAgICAgICAgOiBtX2lkKGlkKQotICAgICAgICAsIG1fdHlwZSh0eXBl
KQotICAgICAgICAsIG1fbmFtZShuYW1lKQotICAgICAgICAsIG1fbXV0ZWQoZmFsc2UpCi0gICAg
ewotICAgIH0KKyAgICBNZWRpYVN0cmVhbVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlLCBj
b25zdCBTdHJpbmcmIG5hbWUsIFJlYWR5U3RhdGUpOwogCiAgICAgU3RyaW5nIG1faWQ7CiAgICAg
VHlwZSBtX3R5cGU7CiAgICAgU3RyaW5nIG1fbmFtZTsKLSAgICBib29sIG1fbXV0ZWQ7CisgICAg
UmVhZHlTdGF0ZSBtX3JlYWR5U3RhdGU7CisgICAgVmVjdG9yPE9ic2VydmVyKj4gbV9vYnNlcnZl
cnM7CiB9OwogCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+ID4gTWVk
aWFTdHJlYW1Tb3VyY2VWZWN0b3I7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150112</attachid>
            <date>2012-06-29 01:31:53 -0700</date>
            <delta_ts>2012-07-20 02:22:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90180-20120629103152.patch</filename>
            <type>text/plain</type>
            <size>19278</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZjNzg3MjllODc0YzJh
MTlhMDc1ZGEwZjVjYzNhZTJkNzM2ZTk1ZS4uYzA1MzFiMjVmYjk1MmFlNWE2NTBkYWE4ZWZkMjNk
OGRkMjc2YjVhZCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA2LTI4ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogVXBkYXRlIE1lZGlhU3RyZWFtVHJhY2sgdG8gbWF0Y2ggdGhlIHNwZWNpZmljYXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMTgwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVkaWFTdHJl
YW1UcmFja3MgYXJlIG5vdyByZXF1aXJlZCB0byBzaG93IHRoZSBzdGF0dXMgb2YgdGhlIHVuZGVy
bHlpbmcgc291cmNlLAorICAgICAgICBhbmQgdHJpZ2dlciBldmVudHMgd2hlbiB0aGF0IHN0YXR1
cyBjaGFuZ2VzLgorCisgICAgICAgIE5vdCBjdXJyZW50bHkgdGVzdGFibGUuCisKKyAgICAgICAg
KiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06Ok1lZGlhU3RyZWFt
KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmg6CisgICAgICAg
ICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbVRyYWNrOjpNZWRpYVN0cmVhbVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtVHJhY2s6On5NZWRpYVN0cmVhbVRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtVHJhY2s6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VDaGFuZ2VkU3RhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6aW50ZXJmYWNlTmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAg
ICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGw6CisgICAgICAgICogV2ViQ29y
ZS5neXBpOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorICAgICAgICAqIHBsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6TWVkaWFTdHJlYW1Tb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6OnNldFJlYWR5U3RhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6OmFkZE9ic2VydmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpyZW1vdmVPYnNlcnZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaDoKKyAgICAgICAgKE9i
c2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpPYnNlcnZlcjo6
fk9ic2VydmVyKToKKyAgICAgICAgKE1lZGlhU3RyZWFtU291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtU291cmNlOjpyZWFkeVN0YXRlKToKKwogMjAxMi0wNi0yNyAgQWxleGFu
ZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVuZXhwZWN0ZWQg
ZW5kIG9mIHN0eWxlIHNoZWV0IGluIEBmb250LWZhY2UgcnVsZSBkaXNjYXJkcyBpdCByYXRoZXIg
dGhhbiBjbG9zZXMgYWxsIG9wZW4gY29uc3RydWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KaW5kZXggMzVlYzJlYzE1NTZmNDRmMjZmMTlkMTlkZjE3M2JjNzdlNDNmMmM4ZS4uODBjODA1
YjdmM2E3NWViNjA1NzUwMjYxZTc2ZmM1NDVjZGIyMDc0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCkBAIC0zNDk3LDYgKzM0OTcsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmggXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29tcG9uZW50
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVz
Y3JpcHRvci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVNvdXJjZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtU291cmNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDBIYW5kbGVyLmNwcCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCmluZGV4IDhh
M2Y1ODVjYmJkNmRmMGY0Y2JkZTdlZTcxZWY2MDMxODJkMGNlOGUuLjY3MDJkYWQ5NGE2ZGVmNTlm
ZDBkNTUwN2UwMTY5MjljMGQ3MjczYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCkBAIC05NCwxNCArOTQsMTQgQEAgTWVkaWFT
dHJlYW06Ok1lZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW0KICAgICBzaXplX3QgbnVtYmVyT2ZBdWRpb1RyYWNrcyA9IG1fZGVz
Y3JpcHRvci0+bnVtYmVyT2ZBdWRpb0NvbXBvbmVudHMoKTsKICAgICBhdWRpb1RyYWNrVmVjdG9y
LnJlc2VydmVDYXBhY2l0eShudW1iZXJPZkF1ZGlvVHJhY2tzKTsKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG51bWJlck9mQXVkaW9UcmFja3M7IGkrKykKLSAgICAgICAgYXVkaW9UcmFja1Zl
Y3Rvci5hcHBlbmQoTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKG1fZGVzY3JpcHRvciwgbV9kZXNj
cmlwdG9yLT5hdWRpb0NvbXBvbmVudChpKSkpOworICAgICAgICBhdWRpb1RyYWNrVmVjdG9yLmFw
cGVuZChNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoY29udGV4dCwgbV9kZXNjcmlwdG9yLCBtX2Rl
c2NyaXB0b3ItPmF1ZGlvQ29tcG9uZW50KGkpKSk7CiAgICAgbV9hdWRpb1RyYWNrcyA9IE1lZGlh
U3RyZWFtVHJhY2tMaXN0OjpjcmVhdGUoYXVkaW9UcmFja1ZlY3Rvcik7CiAKICAgICBNZWRpYVN0
cmVhbVRyYWNrVmVjdG9yIHZpZGVvVHJhY2tWZWN0b3I7CiAgICAgc2l6ZV90IG51bWJlck9mVmlk
ZW9UcmFja3MgPSBtX2Rlc2NyaXB0b3ItPm51bWJlck9mVmlkZW9Db21wb25lbnRzKCk7CiAgICAg
dmlkZW9UcmFja1ZlY3Rvci5yZXNlcnZlQ2FwYWNpdHkobnVtYmVyT2ZWaWRlb1RyYWNrcyk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlZpZGVvVHJhY2tzOyBpKyspCi0gICAg
ICAgIHZpZGVvVHJhY2tWZWN0b3IuYXBwZW5kKE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShtX2Rl
c2NyaXB0b3IsIG1fZGVzY3JpcHRvci0+dmlkZW9Db21wb25lbnQoaSkpKTsKKyAgICAgICAgdmlk
ZW9UcmFja1ZlY3Rvci5hcHBlbmQoTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKGNvbnRleHQsIG1f
ZGVzY3JpcHRvciwgbV9kZXNjcmlwdG9yLT52aWRlb0NvbXBvbmVudChpKSkpOwogICAgIG1fdmlk
ZW9UcmFja3MgPSBNZWRpYVN0cmVhbVRyYWNrTGlzdDo6Y3JlYXRlKHZpZGVvVHJhY2tWZWN0b3Ip
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtLmgKaW5kZXggZjZhOThkZWJkYjYyMzgyNjQ0MmU4YWZlODg1NWE4ZjNiMWU4MDViMy4uMGY4
YjlmNmM1MWI3ODE3Y2M3MzJlYWNkYjhhMWJmNGNjYmZiNmZkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaApAQCAtMzksNyArMzksNiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhU3RyZWFtIDogcHVibGljIFJlZkNv
dW50ZWQ8TWVkaWFTdHJlYW0+LCBwdWJsaWMgTWVkaWFTdHJlYW1EZXNjcmlwdG9yT3duZXIsIHB1
YmxpYyBFdmVudFRhcmdldCwgcHVibGljIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyIHsKIHB1
YmxpYzoKLSAgICAvLyBNdXN0IG1hdGNoIHRoZSBjb25zdGFudHMgaW4gdGhlIC5pZGwgZmlsZS4K
ICAgICBlbnVtIFJlYWR5U3RhdGUgewogICAgICAgICBMSVZFID0gMSwKICAgICAgICAgRU5ERUQg
PSAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmNwcAppbmRleCBmMjI3NzQ5NmMxMzYxNWQ5OTRhM2RhNjVmNWM1ZjVhNTJh
MzBjMDY4Li40OWNhOWIxZWJjZTBkZjQ4MDQ3ZmUzYzJkYWVmZTU3NmVhZTljZDY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5jcHAKQEAgLTI4LDI0ICsyOCwyOCBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
IAorI2luY2x1ZGUgIkV2ZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKICNp
bmNsdWRlICJNZWRpYVN0cmVhbUNvbXBvbmVudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LVBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBzdHJlYW1EZXNjcmlwdG9yLCBNZWRpYVN0
cmVhbUNvbXBvbmVudCogY29tcG9uZW50KQorUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBN
ZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IHN0cmVhbURlc2NyaXB0b3IsIE1lZGlh
U3RyZWFtQ29tcG9uZW50KiBjb21wb25lbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBN
ZWRpYVN0cmVhbVRyYWNrKHN0cmVhbURlc2NyaXB0b3IsIGNvbXBvbmVudCkpOworICAgIHJldHVy
biBhZG9wdFJlZihuZXcgTWVkaWFTdHJlYW1UcmFjayhjb250ZXh0LCBzdHJlYW1EZXNjcmlwdG9y
LCBjb21wb25lbnQpKTsKIH0KIAotTWVkaWFTdHJlYW1UcmFjazo6TWVkaWFTdHJlYW1UcmFjayhQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gc3RyZWFtRGVzY3JpcHRvciwgTWVkaWFT
dHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCkKLSAgICA6IG1fc3RyZWFtRGVzY3JpcHRvcihzdHJl
YW1EZXNjcmlwdG9yKQorTWVkaWFTdHJlYW1UcmFjazo6TWVkaWFTdHJlYW1UcmFjayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRv
cj4gc3RyZWFtRGVzY3JpcHRvciwgTWVkaWFTdHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCkKKyAg
ICA6IG1fY29udGV4dChjb250ZXh0KQorICAgICwgbV9zdHJlYW1EZXNjcmlwdG9yKHN0cmVhbURl
c2NyaXB0b3IpCiAgICAgLCBtX2NvbXBvbmVudChjb21wb25lbnQpCiB7CisgICAgbV9jb21wb25l
bnQtPnNvdXJjZSgpLT5hZGRPYnNlcnZlcih0aGlzKTsKIH0KIAogTWVkaWFTdHJlYW1UcmFjazo6
fk1lZGlhU3RyZWFtVHJhY2soKQogeworICAgIG1fY29tcG9uZW50LT5zb3VyY2UoKS0+cmVtb3Zl
T2JzZXJ2ZXIodGhpcyk7CiB9CiAKIFN0cmluZyBNZWRpYVN0cmVhbVRyYWNrOjpraW5kKCkgY29u
c3QKQEAgLTg3LDExICs5MSw2MSBAQCB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnNldEVuYWJsZWQo
Ym9vbCBlbmFibGVkKQogICAgIE1lZGlhU3RyZWFtQ2VudGVyOjppbnN0YW5jZSgpLmRpZFNldE1l
ZGlhU3RyZWFtVHJhY2tFbmFibGVkKG1fc3RyZWFtRGVzY3JpcHRvci5nZXQoKSwgbV9jb21wb25l
bnQuZ2V0KCkpOwogfQogCitNZWRpYVN0cmVhbVRyYWNrOjpSZWFkeVN0YXRlIE1lZGlhU3RyZWFt
VHJhY2s6OnJlYWR5U3RhdGUoKSBjb25zdAoreworICAgIHN3aXRjaCAobV9jb21wb25lbnQtPnNv
dXJjZSgpLT5yZWFkeVN0YXRlKCkpIHsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpSZWFk
eVN0YXRlTGl2ZToKKyAgICAgICAgcmV0dXJuIExJVkU7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNv
dXJjZTo6UmVhZHlTdGF0ZU11dGVkOgorICAgICAgICByZXR1cm4gTVVURUQ7CisgICAgY2FzZSBN
ZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZUVuZGVkOgorICAgICAgICByZXR1cm4gRU5ERUQ7
CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIExJVkU7Cit9
CisKK3ZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c291cmNlQ2hhbmdlZFN0YXRlKCkKK3sKKyAgICBz
d2l0Y2ggKG1fY29tcG9uZW50LT5zb3VyY2UoKS0+cmVhZHlTdGF0ZSgpKSB7CisgICAgY2FzZSBN
ZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZUxpdmU6CisgICAgICAgIGRpc3BhdGNoRXZlbnQo
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkudW5tdXRlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpSZWFkeVN0YXRlTXV0
ZWQ6CisgICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubXV0
ZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNZWRpYVN0
cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZUVuZGVkOgorICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmVuZGVkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAg
ICBicmVhazsKKyAgICB9Cit9CisKIE1lZGlhU3RyZWFtQ29tcG9uZW50KiBNZWRpYVN0cmVhbVRy
YWNrOjpjb21wb25lbnQoKQogewogICAgIHJldHVybiBtX2NvbXBvbmVudC5nZXQoKTsKIH0KIAor
Y29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVN0cmVhbVRyYWNrOjppbnRlcmZhY2VOYW1lKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVyZmFjZUZvck1lZGlhU3RyZWFtVHJh
Y2s7Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE1lZGlhU3RyZWFtVHJhY2s6OnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBtX2NvbnRleHQ7Cit9CisK
K0V2ZW50VGFyZ2V0RGF0YSogTWVkaWFTdHJlYW1UcmFjazo6ZXZlbnRUYXJnZXREYXRhKCkKK3sK
KyAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOworfQorCitFdmVudFRhcmdldERhdGEqIE1l
ZGlhU3RyZWFtVHJhY2s6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZt
X2V2ZW50VGFyZ2V0RGF0YTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKaW5kZXggYzQ1YmUxOGM3NGNhOGM0ZGY1
NDcwZTJlMDk0NWM3ZWY3YmE5M2NiZi4uZDU1ODJjZjJjZTVjY2ZkMTNmYWJjYmY5MmNkMjM2M2I0
ZjljYzY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmgKQEAgLTI4LDcgKzI4LDkgQEAKIAogI2lmIEVOQUJMRShNRURJ
QV9TVFJFQU0pCiAKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTM4LDkgKzQwLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgTWVkaWFTdHJlYW1Db21wb25lbnQ7CiAKLWNsYXNzIE1lZGlhU3RyZWFtVHJhY2sg
OiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNrPiB7CitjbGFzcyBNZWRpYVN0cmVh
bVRyYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFjaz4sIHB1YmxpYyBFdmVu
dFRhcmdldCwgcHVibGljIE1lZGlhU3RyZWFtU291cmNlOjpPYnNlcnZlciB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiwgTWVkaWFTdHJlYW1Db21wb25lbnQqKTsKKyAgICBlbnVt
IFJlYWR5U3RhdGUgeworICAgICAgICBMSVZFID0gMCwKKyAgICAgICAgTVVURUQgPSAxLAorICAg
ICAgICBFTkRFRCA9IDIKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1UcmFjaz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtRGVzY3JpcHRvcj4sIE1lZGlhU3RyZWFtQ29tcG9uZW50Kik7CiAgICAgdmlydHVhbCB+
TWVkaWFTdHJlYW1UcmFjaygpOwogCiAgICAgU3RyaW5nIGtpbmQoKSBjb25zdDsKQEAgLTQ5LDEw
ICs1NywzNCBAQCBwdWJsaWM6CiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBz
ZXRFbmFibGVkKGJvb2wpOwogCisgICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7CisK
KyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKG11dGUpOworICAgIERFRklORV9B
VFRSSUJVVEVfRVZFTlRfTElTVEVORVIodW5tdXRlKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKGVuZGVkKTsKKwogICAgIE1lZGlhU3RyZWFtQ29tcG9uZW50KiBjb21wb25l
bnQoKTsKIAorICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJp
bmcmIGludGVyZmFjZU5hbWUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERTsK
KworICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFjaz46OnJlZjsKKyAgICB1c2lu
ZyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2s+OjpkZXJlZjsKKwogcHJpdmF0ZToKLSAgICBN
ZWRpYVN0cmVhbVRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiwgTWVkaWFT
dHJlYW1Db21wb25lbnQqKTsKKyAgICBNZWRpYVN0cmVhbVRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4sIE1lZGlhU3RyZWFtQ29t
cG9uZW50Kik7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRE
YXRhKiBldmVudFRhcmdldERhdGEoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0
RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBk
ZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBkZXJlZigpOyB9CisgICAgRXZlbnRUYXJnZXRE
YXRhIG1fZXZlbnRUYXJnZXREYXRhOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fY29u
dGV4dDsKKworICAgIC8vIE1lZGlhU3RyZWFtU291cmNlT2JzZXJ2ZXIKKyAgICB2aXJ0dWFsIHZv
aWQgc291cmNlQ2hhbmdlZFN0YXRlKCkgT1ZFUlJJREU7CiAKICAgICBSZWZQdHI8TWVkaWFTdHJl
YW1EZXNjcmlwdG9yPiBtX3N0cmVhbURlc2NyaXB0b3I7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFt
Q29tcG9uZW50PiBtX2NvbXBvbmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsCmluZGV4IDc5ODc1OTc1ZTkxN2Ni
ZTZlZjk5MzE4MjhkNThjMWM5NjlmOGVkZWIuLjA1Yjg5NzM4NDRmYTU3ZjM2ZmYwNDg5OGM3ZjRm
YWVhNzJiZWRhY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFjay5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbApAQCAtMjYsMTAgKzI2LDMwIEBAIG1vZHVsZSBj
b3JlIHsKIAogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVB
TSwKKyAgICAgICAgRXZlbnRUYXJnZXQKICAgICBdIE1lZGlhU3RyZWFtVHJhY2sgewogICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGtpbmQ7CiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBib29s
ZWFuIGVuYWJsZWQ7CisKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTElWRSA9IDA7Cisg
ICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1VVEVEID0gMTsKKyAgICAgICAgY29uc3QgdW5z
aWduZWQgc2hvcnQgRU5ERUQgPSAyOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWdu
ZWQgc2hvcnQgcmVhZHlTdGF0ZTsKKworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBv
bm11dGU7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9udW5tdXRlOworICAgICAg
ICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVuZGVkOworCisgICAgICAgIC8vIEV2ZW50VGFy
Z2V0IGludGVyZmFjZQorICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5n
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxp
c3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29s
ZWFuIHVzZUNhcHR1cmUpOworICAgICAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9N
U3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExp
c3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09w
dGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZl
bnQoaW4gRXZlbnQgZXZlbnQpCisgICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOwog
ICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAxMDU0ZTA3MjU1Y2E3NmFiOGJkZTVlNGMw
MjlhOTY1ZTlkMzAyODA1Li4zMDA3YzE5YWFjNmEzYTg3NmNjMWE3Y2FkNzAxN2UyNWEyNjM1Zjgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCkBAIC00NDMsNiArNDQzLDcgQEAKICAgICAgICAgICAgICdwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbXBvbmVudC5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuaCcsCisgICAgICAgICAg
ICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwSGFuZGxlci5oJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwSGFuZGxlckNs
aWVudC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmluZGV4IDU5OGJjZGRlNTExNGFlYWEwNzUz
Yzk0NzJjOWYxYTE1YmFiMWQzMWMuLjRmZDRmNjZiZmY1ODIxYTRiZmE0ZTFlM2ZhZDc5Mzk4NDg4
YWFiN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApAQCAtMjE2LDYgKzIxNiw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhhZGRzdHJlYW0pIFwKICAgICBtYWNybyhyZW1vdmVz
dHJlYW0pIFwKICAgICBtYWNybyhzdGF0ZWNoYW5nZSkgXAorICAgIG1hY3JvKG11dGUpIFwKKyAg
ICBtYWNybyh1bm11dGUpIFwKICAgICBcCiAgICAgbWFjcm8oc2hvdykgXAogICAgIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IDNlYzZkYjk0NDZkMjU5NjMx
NjI5YWM3M2NlOWVmMGU0MWY0YTM1ODYuLmI5YWFhYTZhNTFiMjE1YTY4ZDhmNzZlM2EwZWY4MGEw
ODU5YjZjMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rv
cnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAt
MTcsNiArMTcsNyBAQCBKYXZhU2NyaXB0QXVkaW9Ob2RlIGNvbmRpdGlvbmFsPVdFQl9BVURJTwog
TG9jYWxNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIE1lZGlhQ29udHJvbGxl
ciBjb25kaXRpb25hbD1WSURFTwogTWVkaWFTdHJlYW0gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
CitNZWRpYVN0cmVhbVRyYWNrIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQogTWVzc2FnZVBvcnQK
IE5ldHdvcmtJbmZvQ29ubmVjdGlvbiBjb25kaXRpb25hbD1ORVRXT1JLX0lORk8KIE5vZGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtU291cmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzIwNDg3ZGMxMjU0YTRjMjM0MjRjYjEwMDFlYWY2
MjljOTI4NTFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAg
ZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtU291cmNlPiBNZWRpYVN0cmVhbVNvdXJjZTo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgaWQsIFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBSZWFkeVN0YXRlIHJlYWR5
U3RhdGUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbVNvdXJjZShpZCwg
dHlwZSwgbmFtZSwgcmVhZHlTdGF0ZSkpOworfQorCitNZWRpYVN0cmVhbVNvdXJjZTo6TWVkaWFT
dHJlYW1Tb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5h
bWUsIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKKyAgICA6IG1faWQoaWQpCisgICAgLCBtX3R5cGUo
dHlwZSkKKyAgICAsIG1fbmFtZShuYW1lKQorICAgICwgbV9yZWFkeVN0YXRlKHJlYWR5U3RhdGUp
Cit7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnNldFJlYWR5U3RhdGUoUmVhZHlTdGF0
ZSByZWFkeVN0YXRlKQoreworICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgIT0gUmVhZHlTdGF0ZUVu
ZGVkKTsKKyAgICBpZiAobV9yZWFkeVN0YXRlICE9IHJlYWR5U3RhdGUpIHsKKyAgICAgICAgbV9y
ZWFkeVN0YXRlID0gcmVhZHlTdGF0ZTsKKyAgICAgICAgZm9yIChWZWN0b3I8T2JzZXJ2ZXIqPjo6
aXRlcmF0b3IgaSA9IG1fb2JzZXJ2ZXJzLmJlZ2luKCk7IGkgIT0gbV9vYnNlcnZlcnMuZW5kKCk7
ICsraSkKKyAgICAgICAgICAgICgqaSktPnNvdXJjZUNoYW5nZWRTdGF0ZSgpOworICAgIH0KK30K
Kwordm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6YWRkT2JzZXJ2ZXIoTWVkaWFTdHJlYW1Tb3VyY2U6
Ok9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBtX29ic2VydmVycy5hcHBlbmQob2JzZXJ2ZXIp
OworfQorCit2b2lkIE1lZGlhU3RyZWFtU291cmNlOjpyZW1vdmVPYnNlcnZlcihNZWRpYVN0cmVh
bVNvdXJjZTo6T2JzZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIHNpemVfdCBwb3MgPSBtX29ic2Vy
dmVycy5maW5kKG9ic2VydmVyKTsKKyAgICBpZiAocG9zICE9IG5vdEZvdW5kKQorICAgICAgICBt
X29ic2VydmVycy5yZW1vdmUocG9zKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oCmluZGV4IDc2MzRlNDBh
NTgyOWI5OTg4NmViY2EzY2Q1ODJjYmU4MDk0NzAyYzguLmM0NWI1NzE0MjE0MzQ0YTQ0Nzg1OTU1
NTMxNmQ5ZmYyZDE3YzhhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaApAQCAtNDEsMzYgKzQxLDQzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2UgOiBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYVN0cmVhbVNvdXJjZT4gewogcHVibGljOgorICAgIGNsYXNzIE9ic2VydmVy
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgeyB9CisgICAgICAg
IHZpcnR1YWwgdm9pZCBzb3VyY2VDaGFuZ2VkU3RhdGUoKSA9IDA7CisgICAgfTsKKwogICAgIGVu
dW0gVHlwZSB7CiAgICAgICAgIFR5cGVBdWRpbywKICAgICAgICAgVHlwZVZpZGVvCiAgICAgfTsK
IAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiBpZCwgVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtU291cmNlKGlkLCB0eXBlLCBuYW1lKSk7
Ci0gICAgfQorICAgIGVudW0gUmVhZHlTdGF0ZSB7CisgICAgICAgIFJlYWR5U3RhdGVMaXZlID0g
MCwKKyAgICAgICAgUmVhZHlTdGF0ZU11dGVkID0gMSwKKyAgICAgICAgUmVhZHlTdGF0ZUVuZGVk
ID0gMgorICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4g
Y3JlYXRlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUmVhZHlT
dGF0ZSA9IFJlYWR5U3RhdGVMaXZlKTsKIAogICAgIGNvbnN0IFN0cmluZyYgaWQoKSBjb25zdCB7
IHJldHVybiBtX2lkOyB9CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9
CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAKLSAg
ICBib29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4gbV9tdXRlZDsgfQotICAgIHZvaWQgc2V0TXV0
ZWQoYm9vbCBtdXRlZCkgeyBtX211dGVkID0gbXV0ZWQ7IH0KKyAgICB2b2lkIHNldFJlYWR5U3Rh
dGUoUmVhZHlTdGF0ZSk7CisgICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgeyByZXR1
cm4gbV9yZWFkeVN0YXRlOyB9CisKKyAgICB2b2lkIGFkZE9ic2VydmVyKE9ic2VydmVyKik7Cisg
ICAgdm9pZCByZW1vdmVPYnNlcnZlcihPYnNlcnZlciopOwogCiBwcml2YXRlOgotICAgIE1lZGlh
U3RyZWFtU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBu
YW1lKQotICAgICAgICA6IG1faWQoaWQpCi0gICAgICAgICwgbV90eXBlKHR5cGUpCi0gICAgICAg
ICwgbV9uYW1lKG5hbWUpCi0gICAgICAgICwgbV9tdXRlZChmYWxzZSkKLSAgICB7Ci0gICAgfQor
ICAgIE1lZGlhU3RyZWFtU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUmVhZHlTdGF0ZSk7CiAKICAgICBTdHJpbmcgbV9pZDsKICAgICBUeXBlIG1fdHlw
ZTsKICAgICBTdHJpbmcgbV9uYW1lOwotICAgIGJvb2wgbV9tdXRlZDsKKyAgICBSZWFkeVN0YXRl
IG1fcmVhZHlTdGF0ZTsKKyAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKIH07CiAK
IHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gPiBNZWRpYVN0cmVhbVNv
dXJjZVZlY3RvcjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153453</attachid>
            <date>2012-07-20 02:22:32 -0700</date>
            <delta_ts>2012-07-23 04:06:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90180-20120720112227.patch</filename>
            <type>text/plain</type>
            <size>41397</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3NmMxNzEzM2YzOGQ4
MDE0ZWY5MGMzOTZhNzI0NWU0NzhhOTNmMTNhLi5mNjI0Mzk3ZTY4Y2FjODg1YzViZTJmNDhlMGI2
NjdjMTVmMWFmOWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNy0yMCAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0
cmVhbSBBUEk6IFVwZGF0ZSBNZWRpYVN0cmVhbVRyYWNrIHRvIG1hdGNoIHRoZSBzcGVjaWZpY2F0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDE4
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY2hy
b21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oOgorICAgICAgICAoV2ViTWVk
aWFTdHJlYW1EZXNjcmlwdG9yKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFT
dHJlYW1Tb3VyY2UuaDoKKyAgICAgICAgKFdlYk1lZGlhU3RyZWFtU291cmNlKToKKwogMjAxMi0w
Ny0xOCAgQW50b2luZSBMYWJvdXIgIDxwaW1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2No
cm9taXVtXSBJbnRyb2R1Y2UgQ0NSZXNvdXJjZVByb3ZpZGVyLCByZXBsYWNpbmcgVGV4dHVyZUFs
bG9jYXRvciBhbmQgaGlkaW5nIHRleHR1cmVzIGZyb20gY2xpZW50cyB0byBhbGxvdyB0cmFuc3Bv
cnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBlNDhlNmFjNDVlZmIzMzA2OTc4ODFlNzZhMWM5YmQ5NzM5M2JiODhm
Li5jMTVlZDBiMjlkZTVjZDI0YjM5NGQ1NjJkOGEwYjljNGU0NDczMjIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTkgQEAKKzIwMTItMDctMjAgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdv
b2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBVcGRhdGUgTWVkaWFTdHJlYW1U
cmFjayB0byBtYXRjaCB0aGUgc3BlY2lmaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAxODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNZWRpYVN0cmVhbVRyYWNrcyBhcmUgbm93IHJlcXVpcmVk
IHRvIHNob3cgdGhlIHN0YXR1cyBvZiB0aGUgdW5kZXJseWluZyBzb3VyY2UsCisgICAgICAgIGFu
ZCB0cmlnZ2VyIGV2ZW50cyB3aGVuIHRoYXQgc3RhdHVzIGNoYW5nZXMuCisKKyAgICAgICAgVGVz
dDogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmh0bWwKKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6TWVkaWFTdHJlYW0pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmFkZFRyYWNrKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
VHJhY2s6Ok1lZGlhU3RyZWFtVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1U
cmFjazo6fk1lZGlhU3RyZWFtVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1U
cmFjazo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpy
ZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1UcmFjazo6c291cmNlQ2hhbmdlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtVHJhY2s6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6
aW50ZXJmYWNlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6
OmV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpl
bnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFjay5pZGw6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGRvbS9FdmVu
dE5hbWVzLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRG
YWN0b3J5LmluOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFT
dHJlYW1EZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0
L1dlYk1lZGlhU3RyZWFtU291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJl
YW1Tb3VyY2U6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2U6OnJlYWR5U3RhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6TWVkaWFTdHJlYW1Tb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6OnNldFJlYWR5U3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6OmFkZE9ic2VydmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpyZW1vdmVPYnNlcnZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaDoKKyAgICAgICAg
KE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpPYnNlcnZl
cjo6fk9ic2VydmVyKToKKyAgICAgICAgKE1lZGlhU3RyZWFtU291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpyZWFkeVN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9NZWRpYVN0cmVhbUNlbnRlckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyQ2hyb21pdW06OnF1ZXJ5TWVkaWFTdHJl
YW1Tb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyQ2hyb21pdW06
OmRpZENyZWF0ZU1lZGlhU3RyZWFtKToKKwogMjAxMi0wNy0yMCAgTWF0dCBGYWxrZW5oYWdlbiAg
PGZhbGtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU2hvdyBvciBoaWRlIDxkaWFsb2c+IGRl
cGVuZGluZyBvbiB0aGUgb3BlbiBhdHRyaWJ1dGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmggYi9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oCmluZGV4IGMy
NWY0MmUxYjg4OTE0MjIwNjE5Yjg0ODM2MjM1M2Q5Y2Q0OTllMjIuLmQxYjM4NTM2N2Q5ODdkNTY0
MmEwYWI3Y2UzOGM3ZWFhYTUzYzUxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaApAQCAtNjgsOSAr
NjgsNiBAQCBwdWJsaWM6CiAKICAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBsYWJlbCgpIGNv
bnN0OwogCi0gICAgLy8gREVQUkVDQVRFRAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzb3VyY2Vz
KFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mKSBjb25zdDsKLQogICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBhdWRpb1NvdXJjZXMoV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50
PiYpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCB2aWRlb1NvdXJjZXMoV2ViVmVjdG9y
PFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50PiYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtU291cmNlLmggYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtU291cmNlLmgKaW5kZXggMTQy
ZDU5ODY2ZTZhYzg1ODJjMjQ5MzgyZDE1N2RkNTZiNWY4ZDc2Ny4uMDFhYThjZjdmODU5MTA1ODU2
MjQ5NmRmYzMyNjg1ZjZhOTU1ZTRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaApAQCAtNTAsNiArNTAsMTIgQEAg
cHVibGljOgogICAgICAgICBUeXBlVmlkZW8KICAgICB9OwogCisgICAgZW51bSBSZWFkeVN0YXRl
IHsKKyAgICAgICAgUmVhZHlTdGF0ZUxpdmUgPSAwLAorICAgICAgICBSZWFkeVN0YXRlTXV0ZWQg
PSAxLAorICAgICAgICBSZWFkeVN0YXRlRW5kZWQgPSAyCisgICAgfTsKKwogICAgIFdlYk1lZGlh
U3RyZWFtU291cmNlKCkgeyB9CiAgICAgV2ViTWVkaWFTdHJlYW1Tb3VyY2UoY29uc3QgV2ViTWVk
aWFTdHJlYW1Tb3VyY2UmIG90aGVyKSB7IGFzc2lnbihvdGhlcik7IH0KICAgICB+V2ViTWVkaWFT
dHJlYW1Tb3VyY2UoKSB7IHJlc2V0KCk7IH0KQEAgLTcwLDYgKzc2LDkgQEAgcHVibGljOgogICAg
IFdFQktJVF9FWFBPUlQgVHlwZSB0eXBlKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJT
dHJpbmcgbmFtZSgpIGNvbnN0OwogCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFJlYWR5U3Rh
dGUoUmVhZHlTdGF0ZSk7CisgICAgV0VCS0lUX0VYUE9SVCBSZWFkeVN0YXRlIHJlYWR5U3RhdGUo
KSBjb25zdDsKKwogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgIFdlYk1lZGlhU3RyZWFt
U291cmNlKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZT4m
KTsKICAgICBXZWJNZWRpYVN0cmVhbVNvdXJjZSYgb3BlcmF0b3I9KFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtU291cmNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA3NDkxMDQzNjJh
ZTU1YTA1ZDRlYjk1N2UyZDkyOTNkMzQzMjg5MTgwLi5iMTE3NGNiOGMxMmU0NzRiZjc5NDdkN2Fj
ZDM3NWZjNWEwNDBjYTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM1MjQs
NiArMzUyNCw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db21wb25lbnQuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmggXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2Vz
UXVlcnlDbGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb24wMEhhbmRsZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKaW5kZXggZTRlZmM0OWI3ZGRmZTI5YjEwMzll
MmU0OTg5ODk1NGEyMmM4YmZhOS4uY2U4ZTI2NTVlZTdmMjMzMzlhYzlkOWZkNGQxODdkZWM0OTE5
NzNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbS5jcHAKQEAgLTk0LDE0ICs5NCwxNCBAQCBNZWRpYVN0cmVhbTo6TWVkaWFTdHJlYW0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbQog
ICAgIHNpemVfdCBudW1iZXJPZkF1ZGlvVHJhY2tzID0gbV9kZXNjcmlwdG9yLT5udW1iZXJPZkF1
ZGlvQ29tcG9uZW50cygpOwogICAgIGF1ZGlvVHJhY2tWZWN0b3IucmVzZXJ2ZUNhcGFjaXR5KG51
bWJlck9mQXVkaW9UcmFja3MpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZB
dWRpb1RyYWNrczsgaSsrKQotICAgICAgICBhdWRpb1RyYWNrVmVjdG9yLmFwcGVuZChNZWRpYVN0
cmVhbVRyYWNrOjpjcmVhdGUobV9kZXNjcmlwdG9yLCBtX2Rlc2NyaXB0b3ItPmF1ZGlvQ29tcG9u
ZW50KGkpKSk7CisgICAgICAgIGF1ZGlvVHJhY2tWZWN0b3IuYXBwZW5kKE1lZGlhU3RyZWFtVHJh
Y2s6OmNyZWF0ZShjb250ZXh0LCBtX2Rlc2NyaXB0b3IsIG1fZGVzY3JpcHRvci0+YXVkaW9Db21w
b25lbnQoaSkpKTsKICAgICBtX2F1ZGlvVHJhY2tzID0gTWVkaWFTdHJlYW1UcmFja0xpc3Q6OmNy
ZWF0ZSh0aGlzLCBhdWRpb1RyYWNrVmVjdG9yKTsKIAogICAgIE1lZGlhU3RyZWFtVHJhY2tWZWN0
b3IgdmlkZW9UcmFja1ZlY3RvcjsKICAgICBzaXplX3QgbnVtYmVyT2ZWaWRlb1RyYWNrcyA9IG1f
ZGVzY3JpcHRvci0+bnVtYmVyT2ZWaWRlb0NvbXBvbmVudHMoKTsKICAgICB2aWRlb1RyYWNrVmVj
dG9yLnJlc2VydmVDYXBhY2l0eShudW1iZXJPZlZpZGVvVHJhY2tzKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG51bWJlck9mVmlkZW9UcmFja3M7IGkrKykKLSAgICAgICAgdmlkZW9UcmFj
a1ZlY3Rvci5hcHBlbmQoTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKG1fZGVzY3JpcHRvciwgbV9k
ZXNjcmlwdG9yLT52aWRlb0NvbXBvbmVudChpKSkpOworICAgICAgICB2aWRlb1RyYWNrVmVjdG9y
LmFwcGVuZChNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoY29udGV4dCwgbV9kZXNjcmlwdG9yLCBt
X2Rlc2NyaXB0b3ItPnZpZGVvQ29tcG9uZW50KGkpKSk7CiAgICAgbV92aWRlb1RyYWNrcyA9IE1l
ZGlhU3RyZWFtVHJhY2tMaXN0OjpjcmVhdGUodGhpcywgdmlkZW9UcmFja1ZlY3Rvcik7CiB9CiAK
QEAgLTE1MSw3ICsxNTEsNyBAQCBFdmVudFRhcmdldERhdGEqIE1lZGlhU3RyZWFtOjplbnN1cmVF
dmVudFRhcmdldERhdGEoKQogCiB2b2lkIE1lZGlhU3RyZWFtOjphZGRUcmFjayhNZWRpYVN0cmVh
bUNvbXBvbmVudCogY29tcG9uZW50KQogewotICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0
cmFjayA9IE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShtX2Rlc2NyaXB0b3IsIGNvbXBvbmVudCk7
CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0gTWVkaWFTdHJlYW1UcmFjazo6
Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV9kZXNjcmlwdG9yLCBjb21wb25lbnQp
OwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHN3aXRjaCAoY29tcG9uZW50LT5zb3Vy
Y2UoKS0+dHlwZSgpKSB7CiAgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZUF1ZGlvOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFjay5jcHAKaW5kZXggZjIyNzc0OTZjMTM2MTVkOTk0YTNkYTY1ZjVjNWY1YTUyYTMwYzA2
OC4uNjc4ZDQxODcxOTM4YmNjMWJkMDE4MDVmYmMxNTQ4N2VmNzcxZTRlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
Y3BwCkBAIC0yOCwyNCArMjgsMzEgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNp
bmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyLmgiCiAjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1Db21wb25lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNz
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gc3RyZWFtRGVzY3JpcHRvciwgTWVkaWFTdHJlYW1D
b21wb25lbnQqIGNvbXBvbmVudCkKK1Bhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gTWVkaWFT
dHJlYW1UcmFjazo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBzdHJlYW1EZXNjcmlwdG9yLCBNZWRpYVN0cmVh
bUNvbXBvbmVudCogY29tcG9uZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFT
dHJlYW1UcmFjayhzdHJlYW1EZXNjcmlwdG9yLCBjb21wb25lbnQpKTsKKyAgICBSZWZQdHI8TWVk
aWFTdHJlYW1UcmFjaz4gdHJhY2sgPSBhZG9wdFJlZihuZXcgTWVkaWFTdHJlYW1UcmFjayhjb250
ZXh0LCBzdHJlYW1EZXNjcmlwdG9yLCBjb21wb25lbnQpKTsKKyAgICB0cmFjay0+c3VzcGVuZElm
TmVlZGVkKCk7CisgICAgcmV0dXJuIHRyYWNrLnJlbGVhc2UoKTsKIH0KIAotTWVkaWFTdHJlYW1U
cmFjazo6TWVkaWFTdHJlYW1UcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4g
c3RyZWFtRGVzY3JpcHRvciwgTWVkaWFTdHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCkKLSAgICA6
IG1fc3RyZWFtRGVzY3JpcHRvcihzdHJlYW1EZXNjcmlwdG9yKQorTWVkaWFTdHJlYW1UcmFjazo6
TWVkaWFTdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gc3RyZWFtRGVzY3JpcHRvciwgTWVkaWFTdHJlYW1D
b21wb25lbnQqIGNvbXBvbmVudCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlz
KQorICAgICwgbV9zdG9wcGVkKGZhbHNlKQorICAgICwgbV9zdHJlYW1EZXNjcmlwdG9yKHN0cmVh
bURlc2NyaXB0b3IpCiAgICAgLCBtX2NvbXBvbmVudChjb21wb25lbnQpCiB7CisgICAgbV9jb21w
b25lbnQtPnNvdXJjZSgpLT5hZGRPYnNlcnZlcih0aGlzKTsKIH0KIAogTWVkaWFTdHJlYW1UcmFj
azo6fk1lZGlhU3RyZWFtVHJhY2soKQogeworICAgIG1fY29tcG9uZW50LT5zb3VyY2UoKS0+cmVt
b3ZlT2JzZXJ2ZXIodGhpcyk7CiB9CiAKIFN0cmluZyBNZWRpYVN0cmVhbVRyYWNrOjpraW5kKCkg
Y29uc3QKQEAgLTc2LDcgKzgzLDcgQEAgYm9vbCBNZWRpYVN0cmVhbVRyYWNrOjplbmFibGVkKCkg
Y29uc3QKIAogdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkK
IHsKLSAgICBpZiAoZW5hYmxlZCA9PSBtX2NvbXBvbmVudC0+ZW5hYmxlZCgpKQorICAgIGlmICht
X3N0b3BwZWQgfHwgZW5hYmxlZCA9PSBtX2NvbXBvbmVudC0+ZW5hYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBtX2NvbXBvbmVudC0+c2V0RW5hYmxlZChlbmFibGVkKTsKQEAgLTg3LDEx
ICs5NCw3MiBAQCB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVk
KQogICAgIE1lZGlhU3RyZWFtQ2VudGVyOjppbnN0YW5jZSgpLmRpZFNldE1lZGlhU3RyZWFtVHJh
Y2tFbmFibGVkKG1fc3RyZWFtRGVzY3JpcHRvci5nZXQoKSwgbV9jb21wb25lbnQuZ2V0KCkpOwog
fQogCitNZWRpYVN0cmVhbVRyYWNrOjpSZWFkeVN0YXRlIE1lZGlhU3RyZWFtVHJhY2s6OnJlYWR5
U3RhdGUoKSBjb25zdAoreworICAgIGlmIChtX3N0b3BwZWQpCisgICAgICAgIHJldHVybiBFTkRF
RDsKKworICAgIHN3aXRjaCAobV9jb21wb25lbnQtPnNvdXJjZSgpLT5yZWFkeVN0YXRlKCkpIHsK
KyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpSZWFkeVN0YXRlTGl2ZToKKyAgICAgICAgcmV0
dXJuIExJVkU7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZU11dGVkOgor
ICAgICAgICByZXR1cm4gTVVURUQ7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlT
dGF0ZUVuZGVkOgorICAgICAgICByZXR1cm4gRU5ERUQ7CisgICAgfQorCisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIExJVkU7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1UcmFj
azo6c291cmNlQ2hhbmdlZFN0YXRlKCkKK3sKKyAgICBpZiAobV9zdG9wcGVkKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBzd2l0Y2ggKG1fY29tcG9uZW50LT5zb3VyY2UoKS0+cmVhZHlTdGF0ZSgp
KSB7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZUxpdmU6CisgICAgICAg
IGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkudW5tdXRlRXZlbnQsIGZh
bHNlLCBmYWxzZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNl
OjpSZWFkeVN0YXRlTXV0ZWQ6CisgICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkubXV0ZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZUVuZGVkOgorICAgICAgICBkaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVuZGVkRXZlbnQsIGZhbHNlLCBm
YWxzZSkpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKIE1lZGlhU3RyZWFtQ29tcG9uZW50
KiBNZWRpYVN0cmVhbVRyYWNrOjpjb21wb25lbnQoKQogewogICAgIHJldHVybiBtX2NvbXBvbmVu
dC5nZXQoKTsKIH0KIAordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzdG9wKCkKK3sKKyAgICBtX3N0
b3BwZWQgPSB0cnVlOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU3RyZWFtVHJhY2s6
OmludGVyZmFjZU5hbWUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudE5hbWVzKCkuaW50ZXJm
YWNlRm9yTWVkaWFTdHJlYW1UcmFjazsKK30KKworU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVk
aWFTdHJlYW1UcmFjazo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIEFjdGl2ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworfQorCitFdmVu
dFRhcmdldERhdGEqIE1lZGlhU3RyZWFtVHJhY2s6OmV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAg
cmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKworRXZlbnRUYXJnZXREYXRhKiBNZWRpYVN0
cmVhbVRyYWNrOjplbnN1cmVFdmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVybiAmbV9ldmVu
dFRhcmdldERhdGE7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCmluZGV4IGM0NWJlMThjNzRjYThjNGRmNTQ3MGUy
ZTA5NDVjN2VmN2JhOTNjYmYuLjcyNGExMjBkY2IzM2FmMDc5ODZlYThjYmQ3MTMwNmE5OGNhYmM4
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5oCkBAIC0yOCw3ICsyOCwxMCBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKIAorI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkV2ZW50VGFy
Z2V0LmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAiTWVk
aWFTdHJlYW1Tb3VyY2UuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtMzgsOSArNDEs
MTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVN0cmVhbUNvbXBvbmVudDsK
IAotY2xhc3MgTWVkaWFTdHJlYW1UcmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFt
VHJhY2s+IHsKK2NsYXNzIE1lZGlhU3RyZWFtVHJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRp
YVN0cmVhbVRyYWNrPiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0
LCBwdWJsaWMgTWVkaWFTdHJlYW1Tb3VyY2U6Ok9ic2VydmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBjcmVhdGUoUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbURlc2NyaXB0b3I+LCBNZWRpYVN0cmVhbUNvbXBvbmVudCopOworICAgIGVudW0gUmVhZHlT
dGF0ZSB7CisgICAgICAgIExJVkUgPSAwLAorICAgICAgICBNVVRFRCA9IDEsCisgICAgICAgIEVO
REVEID0gMgorICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNr
PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1E
ZXNjcmlwdG9yPiwgTWVkaWFTdHJlYW1Db21wb25lbnQqKTsKICAgICB2aXJ0dWFsIH5NZWRpYVN0
cmVhbVRyYWNrKCk7CiAKICAgICBTdHJpbmcga2luZCgpIGNvbnN0OwpAQCAtNDksMTEgKzU4LDM4
IEBAIHB1YmxpYzoKICAgICBib29sIGVuYWJsZWQoKSBjb25zdDsKICAgICB2b2lkIHNldEVuYWJs
ZWQoYm9vbCk7CiAKKyAgICBSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKKworICAgIERF
RklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIobXV0ZSk7CisgICAgREVGSU5FX0FUVFJJQlVU
RV9FVkVOVF9MSVNURU5FUih1bm11dGUpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElT
VEVORVIoZW5kZWQpOworCiAgICAgTWVkaWFTdHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCgpOwog
CisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgaW50
ZXJmYWNlTmFtZSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFOworCisgICAg
Ly8gQWN0aXZlRE9NT2JqZWN0CisgICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKKwor
ICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFjaz46OnJlZjsKKyAgICB1c2luZyBS
ZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2s+OjpkZXJlZjsKKwogcHJpdmF0ZToKLSAgICBNZWRp
YVN0cmVhbVRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiwgTWVkaWFTdHJl
YW1Db21wb25lbnQqKTsKKyAgICBNZWRpYVN0cmVhbVRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4sIE1lZGlhU3RyZWFtQ29tcG9u
ZW50Kik7CisKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRh
KiBldmVudFRhcmdldERhdGEoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0
YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHJl
ZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBkZXJl
ZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBkZXJlZigpOyB9CisgICAgRXZlbnRUYXJnZXREYXRh
IG1fZXZlbnRUYXJnZXREYXRhOworCisgICAgLy8gTWVkaWFTdHJlYW1Tb3VyY2VPYnNlcnZlcgor
ICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VDaGFuZ2VkU3RhdGUoKSBPVkVSUklERTsKIAorICAgIGJv
b2wgbV9zdG9wcGVkOwogICAgIFJlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IG1fc3RyZWFt
RGVzY3JpcHRvcjsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1Db21wb25lbnQ+IG1fY29tcG9uZW50
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2suaWRsCmluZGV4IDc5ODc1OTc1ZTkxN2NiZTZlZjk5MzE4MjhkNThjMWM5
NjlmOGVkZWIuLjA1Yjg5NzM4NDRmYTU3ZjM2ZmYwNDg5OGM3ZjRmYWVhNzJiZWRhY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFj
ay5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrLmlkbApAQCAtMjYsMTAgKzI2LDMwIEBAIG1vZHVsZSBjb3JlIHsKIAogICAgIGludGVy
ZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPU1FRElBX1NUUkVBTSwKKyAgICAgICAgRXZlbnRU
YXJnZXQKICAgICBdIE1lZGlhU3RyZWFtVHJhY2sgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIGtpbmQ7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcg
bGFiZWw7CiAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuIGVuYWJsZWQ7CisKKyAg
ICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTElWRSA9IDA7CisgICAgICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IE1VVEVEID0gMTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRU5ERUQg
PSAyOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVhZHlTdGF0
ZTsKKworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm11dGU7CisgICAgICAgIGF0
dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9udW5tdXRlOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRM
aXN0ZW5lciBvbmVuZGVkOworCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAg
ICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOwor
ICAgICAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVz
ZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZlbnQp
CisgICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOwogICAgIH07CiAKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCA1ZmNkNmQ0ZWY2ZTNjM2ZmYjYyMDQ1ZGJhMjQ1NjkxMmMxNjU3YTE3Li40
NmUwMmQ3ODU0MGEzMDdiYmZlZjFmMTkwNjhlNWM5MTUwM2VlMjA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CkBAIC00NDYsNiArNDQ2LDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbUNlbnRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbUNvbXBvbmVudC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRp
YXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwSGFuZGxlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwSGFuZGxlckNsaWVudC5oJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnROYW1lcy5oCmluZGV4IDgzNmU2MzA4YjBkYWNmOWRiMWY3NzVmZmYyOTM0ZjFiNzZkZmMx
OGEuLjNmYzZjZTU2OTg3OWY4NGRhZWMwNzUyNzM5YjE0MjgxMDJiY2FmYjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuaApAQCAtMjE3LDYgKzIxNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICBtYWNybyhyZW1vdmVzdHJlYW0pIFwKICAgICBtYWNybyhzdGF0ZWNoYW5nZSkgXAogICAgIG1h
Y3JvKHJlbW92ZXRyYWNrKSBcCisgICAgbWFjcm8obXV0ZSkgXAorICAgIG1hY3JvKHVubXV0ZSkg
XAogICAgIFwKICAgICBtYWNybyhzaG93KSBcCiAgICAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldEZhY3RvcnkuaW4KaW5kZXggODIxNzE3YjBkN2ZlNzY1M2FhZjNmNjVkYTM1ZWE4ZWY5
NWJkMDRlNC4uYzU1OGNkNTMxZjk2NWYzMDNlZWM0ZmI2Yzk1NzUyMDNhYzE5NzIxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC0xNyw2ICsxNyw3IEBAIEph
dmFTY3JpcHRBdWRpb05vZGUgY29uZGl0aW9uYWw9V0VCX0FVRElPCiBMb2NhbE1lZGlhU3RyZWFt
IGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQogTWVkaWFDb250cm9sbGVyIGNvbmRpdGlvbmFsPVZJ
REVPCiBNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KK01lZGlhU3RyZWFtVHJh
Y2sgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBNZWRpYVN0cmVhbVRyYWNrTGlzdCBjb25kaXRp
b25hbD1NRURJQV9TVFJFQU0KIE1lc3NhZ2VQb3J0CiBOZXR3b3JrSW5mb0Nvbm5lY3Rpb24gY29u
ZGl0aW9uYWw9TkVUV09SS19JTkZPCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRv
ci5jcHAKaW5kZXggOGU3YTNhN2UyMjU3YjYxNmI0M2MyNDQxYmU4YjFmMGQxODdlY2QxZC4uMzZj
Y2U3NDM5MTM5NWI2MGRlM2Y4NzAwNzI4MjgxZGU1MzJlZDE2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJNZWRpYVN0cmVhbURlc2NyaXB0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
TWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcApAQCAtOTEsMjAgKzkxLDYgQEAgdm9pZCBXZWJNZWRp
YVN0cmVhbURlc2NyaXB0b3I6OnNldEV4dHJhRGF0YShFeHRyYURhdGEqIGV4dHJhRGF0YSkKICAg
ICBtX3ByaXZhdGUtPnNldEV4dHJhRGF0YShhZG9wdFJlZihuZXcgRXh0cmFEYXRhQ29udGFpbmVy
KGV4dHJhRGF0YSkpKTsKIH0KIAotLy8gRklYTUU6IENsZWFudXAgd2hlbiB0aGUgY2hyb21pdW0g
Y29kZSBoYXMgc3dpdGNoZWQgdG8gdGhlIHNwbGl0IHNvdXJjZXMgaW1wbGVtZW50YXRpb24uCi12
b2lkIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6c291cmNlcyhXZWJWZWN0b3I8V2ViTWVkaWFT
dHJlYW1Tb3VyY2U+JiB3ZWJTb3VyY2VzKSBjb25zdAotewotICAgIHNpemVfdCBudW1iZXJPZkF1
ZGlvU291cmNlcyA9IG1fcHJpdmF0ZS0+bnVtYmVyT2ZBdWRpb0NvbXBvbmVudHMoKTsKLSAgICBz
aXplX3QgbnVtYmVyT2ZWaWRlb1NvdXJjZXMgPSBtX3ByaXZhdGUtPm51bWJlck9mVmlkZW9Db21w
b25lbnRzKCk7Ci0gICAgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiByZXN1bHQobnVt
YmVyT2ZBdWRpb1NvdXJjZXMgKyBudW1iZXJPZlZpZGVvU291cmNlcyk7Ci0gICAgc2l6ZV90IGkg
PSAwOwotICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbnVtYmVyT2ZBdWRpb1NvdXJjZXM7ICsr
aSwgKytqKQotICAgICAgICByZXN1bHRbaV0gPSBtX3ByaXZhdGUtPmF1ZGlvQ29tcG9uZW50KGop
LT5zb3VyY2UoKTsKLSAgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IG51bWJlck9mVmlkZW9Tb3Vy
Y2VzOyArK2ksICsraikKLSAgICAgICAgcmVzdWx0W2ldID0gbV9wcml2YXRlLT52aWRlb0NvbXBv
bmVudChqKS0+c291cmNlKCk7Ci0gICAgd2ViU291cmNlcy5zd2FwKHJlc3VsdCk7Ci19Ci0KIHZv
aWQgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjphdWRpb1NvdXJjZXMoV2ViVmVjdG9yPFdlYk1l
ZGlhU3RyZWFtQ29tcG9uZW50PiYgd2ViU291cmNlcykgY29uc3QKIHsKICAgICBzaXplX3QgbnVt
YmVyT2ZTb3VyY2VzID0gbV9wcml2YXRlLT5udW1iZXJPZkF1ZGlvQ29tcG9uZW50cygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJNZWRp
YVN0cmVhbVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYk1lZGlhU3RyZWFtU291cmNlLmNwcAppbmRleCAzZjg3N2Y1NGM3MzBmMDU2NzFhMDhl
YjQ2YzgyMTE2NzcxMTJkMGYyLi43MGVmNzA4MDk5NGE2NzAwZDdkMDAzOTQzNDdkZmI2YTlkZDdh
NDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0
L1dlYk1lZGlhU3RyZWFtU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhU3RyZWFtU291cmNlLmNwcApAQCAtOTYsNiArOTYsMTgg
QEAgV2ViU3RyaW5nIFdlYk1lZGlhU3RyZWFtU291cmNlOjpuYW1lKCkgY29uc3QKICAgICByZXR1
cm4gbV9wcml2YXRlLmdldCgpLT5uYW1lKCk7CiB9CiAKK3ZvaWQgV2ViTWVkaWFTdHJlYW1Tb3Vy
Y2U6OnNldFJlYWR5U3RhdGUoUmVhZHlTdGF0ZSBzdGF0ZSkKK3sKKyAgICBBU1NFUlQoIW1fcHJp
dmF0ZS5pc051bGwoKSk7CisgICAgbV9wcml2YXRlLT5zZXRSZWFkeVN0YXRlKHN0YXRpY19jYXN0
PE1lZGlhU3RyZWFtU291cmNlOjpSZWFkeVN0YXRlPihzdGF0ZSkpOworfQorCitXZWJNZWRpYVN0
cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZSBXZWJNZWRpYVN0cmVhbVNvdXJjZTo6cmVhZHlTdGF0ZSgp
IGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX3ByaXZhdGUuaXNOdWxsKCkpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxSZWFkeVN0YXRlPihtX3ByaXZhdGUtPnJlYWR5U3RhdGUoKSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtU291cmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzIwNDg3ZGMxMjU0YTRjMjM0MjRjYjEwMDFlYWY2
MjljOTI4NTFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogICAgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogICAg
ZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworICogICAgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtU291cmNlPiBNZWRpYVN0cmVhbVNvdXJjZTo6Y3JlYXRlKGNvbnN0IFN0
cmluZyYgaWQsIFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBSZWFkeVN0YXRlIHJlYWR5
U3RhdGUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbVNvdXJjZShpZCwg
dHlwZSwgbmFtZSwgcmVhZHlTdGF0ZSkpOworfQorCitNZWRpYVN0cmVhbVNvdXJjZTo6TWVkaWFT
dHJlYW1Tb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5h
bWUsIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKKyAgICA6IG1faWQoaWQpCisgICAgLCBtX3R5cGUo
dHlwZSkKKyAgICAsIG1fbmFtZShuYW1lKQorICAgICwgbV9yZWFkeVN0YXRlKHJlYWR5U3RhdGUp
Cit7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnNldFJlYWR5U3RhdGUoUmVhZHlTdGF0
ZSByZWFkeVN0YXRlKQoreworICAgIEFTU0VSVChtX3JlYWR5U3RhdGUgIT0gUmVhZHlTdGF0ZUVu
ZGVkKTsKKyAgICBpZiAobV9yZWFkeVN0YXRlICE9IHJlYWR5U3RhdGUpIHsKKyAgICAgICAgbV9y
ZWFkeVN0YXRlID0gcmVhZHlTdGF0ZTsKKyAgICAgICAgZm9yIChWZWN0b3I8T2JzZXJ2ZXIqPjo6
aXRlcmF0b3IgaSA9IG1fb2JzZXJ2ZXJzLmJlZ2luKCk7IGkgIT0gbV9vYnNlcnZlcnMuZW5kKCk7
ICsraSkKKyAgICAgICAgICAgICgqaSktPnNvdXJjZUNoYW5nZWRTdGF0ZSgpOworICAgIH0KK30K
Kwordm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6YWRkT2JzZXJ2ZXIoTWVkaWFTdHJlYW1Tb3VyY2U6
Ok9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBtX29ic2VydmVycy5hcHBlbmQob2JzZXJ2ZXIp
OworfQorCit2b2lkIE1lZGlhU3RyZWFtU291cmNlOjpyZW1vdmVPYnNlcnZlcihNZWRpYVN0cmVh
bVNvdXJjZTo6T2JzZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIHNpemVfdCBwb3MgPSBtX29ic2Vy
dmVycy5maW5kKG9ic2VydmVyKTsKKyAgICBpZiAocG9zICE9IG5vdEZvdW5kKQorICAgICAgICBt
X29ic2VydmVycy5yZW1vdmUocG9zKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oCmluZGV4IDc2MzRlNDBh
NTgyOWI5OTg4NmViY2EzY2Q1ODJjYmU4MDk0NzAyYzguLmM0NWI1NzE0MjE0MzQ0YTQ0Nzg1OTU1
NTMxNmQ5ZmYyZDE3YzhhYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaApAQCAtNDEsMzYgKzQxLDQzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFTdHJlYW1Tb3VyY2UgOiBwdWJsaWMgUmVm
Q291bnRlZDxNZWRpYVN0cmVhbVNvdXJjZT4gewogcHVibGljOgorICAgIGNsYXNzIE9ic2VydmVy
IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgeyB9CisgICAgICAg
IHZpcnR1YWwgdm9pZCBzb3VyY2VDaGFuZ2VkU3RhdGUoKSA9IDA7CisgICAgfTsKKwogICAgIGVu
dW0gVHlwZSB7CiAgICAgICAgIFR5cGVBdWRpbywKICAgICAgICAgVHlwZVZpZGVvCiAgICAgfTsK
IAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBjcmVhdGUoY29uc3Qg
U3RyaW5nJiBpZCwgVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtU291cmNlKGlkLCB0eXBlLCBuYW1lKSk7
Ci0gICAgfQorICAgIGVudW0gUmVhZHlTdGF0ZSB7CisgICAgICAgIFJlYWR5U3RhdGVMaXZlID0g
MCwKKyAgICAgICAgUmVhZHlTdGF0ZU11dGVkID0gMSwKKyAgICAgICAgUmVhZHlTdGF0ZUVuZGVk
ID0gMgorICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4g
Y3JlYXRlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUmVhZHlT
dGF0ZSA9IFJlYWR5U3RhdGVMaXZlKTsKIAogICAgIGNvbnN0IFN0cmluZyYgaWQoKSBjb25zdCB7
IHJldHVybiBtX2lkOyB9CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9
CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CiAKLSAg
ICBib29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4gbV9tdXRlZDsgfQotICAgIHZvaWQgc2V0TXV0
ZWQoYm9vbCBtdXRlZCkgeyBtX211dGVkID0gbXV0ZWQ7IH0KKyAgICB2b2lkIHNldFJlYWR5U3Rh
dGUoUmVhZHlTdGF0ZSk7CisgICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgeyByZXR1
cm4gbV9yZWFkeVN0YXRlOyB9CisKKyAgICB2b2lkIGFkZE9ic2VydmVyKE9ic2VydmVyKik7Cisg
ICAgdm9pZCByZW1vdmVPYnNlcnZlcihPYnNlcnZlciopOwogCiBwcml2YXRlOgotICAgIE1lZGlh
U3RyZWFtU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBu
YW1lKQotICAgICAgICA6IG1faWQoaWQpCi0gICAgICAgICwgbV90eXBlKHR5cGUpCi0gICAgICAg
ICwgbV9uYW1lKG5hbWUpCi0gICAgICAgICwgbV9tdXRlZChmYWxzZSkKLSAgICB7Ci0gICAgfQor
ICAgIE1lZGlhU3RyZWFtU291cmNlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUmVhZHlTdGF0ZSk7CiAKICAgICBTdHJpbmcgbV9pZDsKICAgICBUeXBlIG1fdHlw
ZTsKICAgICBTdHJpbmcgbV9uYW1lOwotICAgIGJvb2wgbV9tdXRlZDsKKyAgICBSZWFkeVN0YXRl
IG1fcmVhZHlTdGF0ZTsKKyAgICBWZWN0b3I8T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKIH07CiAK
IHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gPiBNZWRpYVN0cmVhbVNv
dXJjZVZlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL2Nocm9taXVtL01lZGlhU3RyZWFtQ2VudGVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vTWVkaWFTdHJlYW1DZW50ZXJDaHJvbWl1
bS5jcHAKaW5kZXggM2M4MmY1ZjhiZDFlNjgwMWM2ZDM1Y2UyNzU3ODE5OWYwNzc5NDg5My4uOTI1
ODA3NDQyMGE4MGUzNWQyM2M0NDY0MWZiMDMxZjRhMzA3YzM1YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vTWVkaWFTdHJlYW1DZW50ZXJD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hy
b21pdW0vTWVkaWFTdHJlYW1DZW50ZXJDaHJvbWl1bS5jcHAKQEAgLTY4LDkgKzY4LDEyIEBAIE1l
ZGlhU3RyZWFtQ2VudGVyQ2hyb21pdW06On5NZWRpYVN0cmVhbUNlbnRlckNocm9taXVtKCkKIAog
dm9pZCBNZWRpYVN0cmVhbUNlbnRlckNocm9taXVtOjpxdWVyeU1lZGlhU3RyZWFtU291cmNlcyhQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50PiBjbGllbnQpCiB7Ci0gICAg
Ly8gRklYTUU6IFJlbW92ZSB0aGlzICJzaG9ydC1jaXJjdWl0IiBhbmQgZm9yd2FyZCB0byBtX3By
aXZhdGUgd2hlbiBDaHJvbWUgYW5kIER1bXBSZW5kZXJUcmVlIGhhcyBpbXBsZW1lbnRlZCBXZWJN
ZWRpYVN0cmVhbUNlbnRlci4KLSAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBhdWRpb1NvdXJj
ZXMsIHZpZGVvU291cmNlczsKLSAgICBjbGllbnQtPmRpZENvbXBsZXRlUXVlcnkoYXVkaW9Tb3Vy
Y2VzLCB2aWRlb1NvdXJjZXMpOworICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAgIG1fcHJpdmF0
ZS0+cXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMoY2xpZW50KTsKKyAgICBlbHNlIHsKKyAgICAgICAg
TWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXM7CisgICAg
ICAgIGNsaWVudC0+ZGlkQ29tcGxldGVRdWVyeShhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7
CisgICAgfQogfQogCiB2b2lkIE1lZGlhU3RyZWFtQ2VudGVyQ2hyb21pdW06OmRpZFNldE1lZGlh
U3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtLCAgTWVkaWFT
dHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCkKQEAgLTEwMCw5ICsxMDMsNiBAQCB2b2lkIE1lZGlh
U3RyZWFtQ2VudGVyQ2hyb21pdW06OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFt
RGVzY3JpcHRvciogcwogdm9pZCBNZWRpYVN0cmVhbUNlbnRlckNocm9taXVtOjpkaWRDcmVhdGVN
ZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0b3IqIHN0cmVhbSkKIHsKICAgICBpZiAobV9w
cml2YXRlKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgd2hlbiBDaHJvbWl1bSBoYXZlIHN3
aXRjaGVkIHRvIHRoZSBuZXcgQVBJLgotICAgICAgICBtX3ByaXZhdGUtPmRpZENvbnN0cnVjdE1l
ZGlhU3RyZWFtKHN0cmVhbSk7Ci0KICAgICAgICAgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbURlc2Ny
aXB0b3Igd2ViU3RyZWFtKHN0cmVhbSk7CiAgICAgICAgIG1fcHJpdmF0ZS0+ZGlkQ3JlYXRlTWVk
aWFTdHJlYW0od2ViU3RyZWFtKTsKICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDM4ZTEzZjg2MWI4ZDkwNDIzYmNiOTdiMmZmYjAwNTA5
M2NjNjFhNi4uYTViNWMzYjg2ZDE5ODM3ZWQyMGIxNzdjZWM1YmJmZDQwZjgwOWM5YiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5
IEBACisyMDEyLTA3LTIwICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgor
CisgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogVXBkYXRlIE1lZGlhU3RyZWFtVHJhY2sgdG8gbWF0
Y2ggdGhlIHNwZWNpZmljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkwMTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkaW5nIGEgTW9jayBXZWJNZWRpYVN0cmVhbUNlbnRlciB0byBlbmFibGUg
YmV0dGVyIExheW91dFRlc3RzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRl
clRyZWUuZ3lwaToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViS2l0
UGxhdGZvcm1TdXBwb3J0LmNwcDoKKyAgICAgICAgKE1vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQ6
OmNyZWF0ZU1lZGlhU3RyZWFtQ2VudGVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9Nb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6TW9ja1dlYk1l
ZGlhU3RyZWFtQ2VudGVyKToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYk1lZGlhU3RyZWFtQ2Vu
dGVyOjpxdWVyeU1lZGlhU3RyZWFtU291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJN
ZWRpYVN0cmVhbUNlbnRlcjo6ZGlkRW5hYmxlTWVkaWFTdHJlYW1UcmFjayk6CisgICAgICAgIChX
ZWJLaXQ6Ok1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkRGlzYWJsZU1lZGlhU3RyZWFtVHJh
Y2spOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6OmRpZFN0b3BM
b2NhbE1lZGlhU3RyZWFtKToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYk1lZGlhU3RyZWFtQ2Vu
dGVyOjpkaWRDcmVhdGVNZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJNZWRp
YVN0cmVhbUNlbnRlcjo6Y29uc3RydWN0U0RQKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9Nb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXIuaDogQ29waWVkIGZyb20gVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYktpdFBsYXRmb3JtU3VwcG9ydC5jcHAuCisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyKToKKyAgICAg
ICAgKFdlYktpdDo6TW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpNb2NrV2ViTWVkaWFTdHJlYW1D
ZW50ZXIpOgorCiAyMDEyLTA3LTIwICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3Vu
Zy5jb20+CiAKICAgICAgICAgW1dUUl0gQWRkICpleHBsaWNpdCoga2V5d29yZCB0byBjb25zdHJ1
Y3RvciB3aGljaCBoYXMgYSBwYXJhbWV0ZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVy
VHJlZS5neXBpCmluZGV4IGUxMWY0MGVjZDU4NmZhOWYyZGE0ODc3NGVmMjU5ZDliMjlkM2E1ZTku
LjdkZDVhMWVjNmY0NWM4NDA3NGQ2ZjJhNmRjNGExNzcyMTU1YmZkMzkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQpAQCAtMTYsNiArMTYsOCBAQAogICAgICAgICAg
ICAgJ2Nocm9taXVtL01vY2tTcGVsbENoZWNrLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL01v
Y2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9Nb2Nr
V2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJN
ZWRpYVN0cmVhbUNlbnRlci5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJNZWRp
YVN0cmVhbUNlbnRlci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9Nb2NrV2ViUHJlcmVuZGVy
aW5nU3VwcG9ydC5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJQcmVyZW5kZXJp
bmdTdXBwb3J0LmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJTcGVlY2hJbnB1dENv
bnRyb2xsZXIuY3BwJywKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L01vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTW9ja1dlYktpdFBsYXRmb3JtU3VwcG9ydC5jcHAKaW5kZXggZDQ4N2I4OGFhMTI5MWIx
ZTA0MjM3MmRiMGEyODM4NzZlOGY0Yjc2Mi4uYzExMzRkODg2NDA1YjIzZWY4MDZkMzIxYzE4NjBj
ZGEzNGI5NDkwNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9j
a1dlYktpdFBsYXRmb3JtU3VwcG9ydC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTW9ja1dlYktpdFBsYXRmb3JtU3VwcG9ydC5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0Lmgi
CiAKKyNpbmNsdWRlICJNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXIuaCIKICNpbmNsdWRlIDx3dGYv
QXNzZXJ0aW9ucy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtNDksNyArNTAsNyBA
QCB2b2lkIE1vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQ6OmNyeXB0b2dyYXBoaWNhbGx5UmFuZG9t
VmFsdWVzKHVuc2lnbmVkIGNoYXIqLCBzaQogICAgIENSQVNIKCk7CiB9CiAKLVdlYk1lZGlhU3Ry
ZWFtQ2VudGVyKiBNb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0OjpjcmVhdGVNZWRpYVN0cmVhbUNl
bnRlcihXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudCopCitXZWJNZWRpYVN0cmVhbUNlbnRlciog
TW9ja1dlYktpdFBsYXRmb3JtU3VwcG9ydDo6Y3JlYXRlTWVkaWFTdHJlYW1DZW50ZXIoV2ViTWVk
aWFTdHJlYW1DZW50ZXJDbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gbmV3IE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcihjbGllbnQpOwogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJNZWRpYVN0cmVhbUNlbnRl
ci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjcxZDBkNDU3M2IzZGExZjRmMWIzMTZiYjgwZGRlZDZiYTg1ZmE1
YwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tX
ZWJNZWRpYVN0cmVhbUNlbnRlci5jcHAKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1vY2tXZWJNZWRpYVN0
cmVhbUNlbnRlci5oIgorCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViSUNFQ2FuZGlkYXRlRGVzY3Jp
cHRvci5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50Lmgi
CisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Db21wb25lbnQuaCIKKyNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3Ry
ZWFtU291cmNlc1JlcXVlc3QuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTZXNzaW9uRGVzY3Jp
cHRpb25EZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6Ok1vY2tXZWJNZWRp
YVN0cmVhbUNlbnRlcihXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudCogY2xpZW50KQoreworfQor
Cit2b2lkIE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6cXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMo
Y29uc3QgV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBXZWJW
ZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+IGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzOwor
ICAgIHJlcXVlc3QuZGlkQ29tcGxldGVRdWVyeShhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7
Cit9CisKK3ZvaWQgTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpkaWRFbmFibGVNZWRpYVN0cmVh
bVRyYWNrKGNvbnN0IFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYsIGNvbnN0IFdlYk1lZGlhU3Ry
ZWFtQ29tcG9uZW50JiBjb21wb25lbnQpCit7CisgICAgY29tcG9uZW50LnNvdXJjZSgpLnNldFJl
YWR5U3RhdGUoV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGVMaXZlKTsKK30KKwordm9p
ZCBNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6OmRpZERpc2FibGVNZWRpYVN0cmVhbVRyYWNrKGNv
bnN0IFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYsIGNvbnN0IFdlYk1lZGlhU3RyZWFtQ29tcG9u
ZW50JiBjb21wb25lbnQpCit7CisgICAgY29tcG9uZW50LnNvdXJjZSgpLnNldFJlYWR5U3RhdGUo
V2ViTWVkaWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGVNdXRlZCk7Cit9CisKK3ZvaWQgTW9ja1dl
Yk1lZGlhU3RyZWFtQ2VudGVyOjpkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShjb25zdCBXZWJNZWRp
YVN0cmVhbURlc2NyaXB0b3ImIHN0cmVhbSkKK3sKKyAgICBXZWJWZWN0b3I8V2ViTWVkaWFTdHJl
YW1Db21wb25lbnQ+IGF1ZGlvQ29tcG9uZW50czsKKyAgICBzdHJlYW0uYXVkaW9Tb3VyY2VzKGF1
ZGlvQ29tcG9uZW50cyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhdWRpb0NvbXBvbmVu
dHMuc2l6ZSgpOyArK2kpCisgICAgICAgIGF1ZGlvQ29tcG9uZW50c1tpXS5zb3VyY2UoKS5zZXRS
ZWFkeVN0YXRlKFdlYk1lZGlhU3RyZWFtU291cmNlOjpSZWFkeVN0YXRlRW5kZWQpOworCisgICAg
V2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50PiB2aWRlb0NvbXBvbmVudHM7CisgICAg
c3RyZWFtLnZpZGVvU291cmNlcyh2aWRlb0NvbXBvbmVudHMpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgdmlkZW9Db21wb25lbnRzLnNpemUoKTsgKytpKQorICAgICAgICB2aWRlb0NvbXBv
bmVudHNbaV0uc291cmNlKCkuc2V0UmVhZHlTdGF0ZShXZWJNZWRpYVN0cmVhbVNvdXJjZTo6UmVh
ZHlTdGF0ZUVuZGVkKTsKK30KKwordm9pZCBNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6OmRpZENy
ZWF0ZU1lZGlhU3RyZWFtKFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYpCit7Cit9CisKK1dlYlN0
cmluZyBNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6OmNvbnN0cnVjdFNEUChjb25zdCBXZWJJQ0VD
YW5kaWRhdGVEZXNjcmlwdG9yJiBpY2VDYW5kaWRhdGUpCit7CisgICAgc3RyaW5nMTYgcmVzdWx0
ID0gaWNlQ2FuZGlkYXRlLmxhYmVsKCk7CisgICAgcmVzdWx0ICs9IFdlYlN0cmluZygiOiIpOwor
ICAgIHJlc3VsdCArPSBpY2VDYW5kaWRhdGUuY2FuZGlkYXRlTGluZSgpOworICAgIHJlc3VsdCAr
PSBXZWJTdHJpbmcoIjsiKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitXZWJTdHJpbmcgTW9j
a1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpjb25zdHJ1Y3RTRFAoY29uc3QgV2ViU2Vzc2lvbkRlc2Ny
aXB0aW9uRGVzY3JpcHRvciYgc2Vzc2lvbkRlc2NyaXB0aW9uKQoreworICAgIHN0cmluZzE2IHJl
c3VsdCA9IHNlc3Npb25EZXNjcmlwdGlvbi5pbml0aWFsU0RQKCk7CisgICAgcmVzdWx0ICs9IFdl
YlN0cmluZygiOyIpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2Vzc2lvbkRlc2NyaXB0
aW9uLm51bWJlck9mQWRkZWRDYW5kaWRhdGVzKCk7ICsraSkgeworICAgICAgICByZXN1bHQgKz0g
Y29uc3RydWN0U0RQKHNlc3Npb25EZXNjcmlwdGlvbi5jYW5kaWRhdGUoaSkpOworICAgICAgICBy
ZXN1bHQgKz0gV2ViU3RyaW5nKCI7Iik7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJNZWRpYVN0
cmVhbUNlbnRlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYk1lZGlh
U3RyZWFtQ2VudGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjM3M2NmZGFiNGY1ZGMxMTFlYjYwZjZkZTMzNjZm
OWYzOTc4MjQzYgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL01vY2tXZWJNZWRpYVN0cmVhbUNlbnRlci5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1v
Y2tXZWJNZWRpYVN0cmVhbUNlbnRlcl9oCisjZGVmaW5lIE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRl
cl9oCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlci5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50OworCitjbGFz
cyBNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXIgOiBwdWJsaWMgV2ViTWVkaWFTdHJlYW1DZW50ZXIg
eworcHVibGljOgorICAgIGV4cGxpY2l0IE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcihXZWJNZWRp
YVN0cmVhbUNlbnRlckNsaWVudCopOworCisgICAgdmlydHVhbCB2b2lkIHF1ZXJ5TWVkaWFTdHJl
YW1Tb3VyY2VzKGNvbnN0IFdlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QmKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkRW5hYmxlTWVkaWFTdHJlYW1UcmFjayhjb25zdCBXZWJNZWRp
YVN0cmVhbURlc2NyaXB0b3ImLCBjb25zdCBXZWJNZWRpYVN0cmVhbUNvbXBvbmVudCYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgdm9pZCBkaWREaXNhYmxlTWVkaWFTdHJlYW1UcmFjayhjb25zdCBX
ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImLCBjb25zdCBXZWJNZWRpYVN0cmVhbUNvbXBvbmVudCYp
IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9wTG9jYWxNZWRpYVN0cmVhbShjb25z
dCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ3JlYXRlTWVkaWFTdHJlYW0oV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCBXZWJTdHJpbmcgY29uc3RydWN0U0RQKGNvbnN0IFdlYklDRUNhbmRpZGF0
ZURlc2NyaXB0b3ImKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBjb25zdHJ1Y3RT
RFAoY29uc3QgV2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvciYpIE9WRVJSSURFOworCitw
cml2YXRlOgorICAgIE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcigpIHsgfQorfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXJfaAor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMmQ3ZDcyMzA0OTRmNGI1MzhmMDVlODkyMTU3OTY1NDY0ZDViZDU2MS4uZDUyNDQ4
NDY5MTRjYjIwZGViNWJkYTM1OTIwNmVlNDViMDliOTdhNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDEyLTA3LTIwICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisg
ICAgICAgIE1lZGlhU3RyZWFtIEFQSTogVXBkYXRlIE1lZGlhU3RyZWFtVHJhY2sgdG8gbWF0Y2gg
dGhlIHNwZWNpZmljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkwMTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaHRt
bDogQWRkZWQuCisKIDIwMTItMDctMjAgIE1hdHQgRmFsa2VuaGFnZW4gIDxmYWxrZW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFNob3cgb3IgaGlkZSA8ZGlhbG9nPiBkZXBlbmRpbmcgb24gdGhl
IG9wZW4gYXR0cmlidXRlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtVHJhY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZmQ2NDYwYWUz
MzViODM5ZTY4OThhNWMyMzkyOTU1NmE2ZWY2MDBhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDEzIEBACitUZXN0cyBNZWRpYVN0cmVhbVRyYWNrIGNhbGxiYWNrcy4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZ2V0VXNlck1lZGlhIHN1Y2NlZWRlZC4KK1BB
U1MgVHJhY2sgb25tdXRlIGNhbGxiYWNrIHN1Y2NlZWRlZC4KK1BBU1MgVHJhY2sgb251bm11dGUg
Y2FsbGJhY2sgc3VjY2VlZGVkLgorUEFTUyBUcmFjayBvbmVuZGVkIGNhbGxiYWNrIHN1Y2NlZWRl
ZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjdmNWI2ZWI3ZGZkZWQ2OGZiNTM4MTNjNGJkYzYxY2UwZTRlNzRkNjEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2suaHRtbApAQCAtMCwwICsxLDcyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9
Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIE1lZGlhU3RyZWFtVHJhY2sgY2FsbGJhY2tzLiIp
OworCisvLyBOb3RlIHRoYXQgdGhlIGJlbG93IGJlaGF2aW91ciBkb2Vzbid0IHJlZmxlY3QgaG93
IGl0IHdvcmtzIG91dHNpZGUgb2YgTGF5b3V0VGVzdHMuCisvLyBUaGUgdW5kZXJseWluZyBtb2Nr
IGlzIG1vZGlmaWVkIHRvIHRyaWdnZXIgdGhlIGV2ZW50cyB3aGVuIGNlcnRhaW4gZnVuY3Rpb25z
IGFyZSBjYWxsZWQuCisvLyBUaGlzIG1vZGlmaWVkIGJlaGF2aW91ciBhbGxvd3MgdXMgdG8gdGVz
dCB0aGUgTWVkaWFTdHJlYW1UcmFjayBjbGFzcyBwcm9wZXJseS4KKwordmFyIHN0cmVhbTsKK3Zh
ciB0cmFjazsKKworZnVuY3Rpb24gZXJyb3IoKSB7CisgICAgdGVzdEZhaWxlZCgnU3RyZWFtIGdl
bmVyYXRpb24gZmFpbGVkLicpOworICAgIGZpbmlzaEpTVGVzdCgpOworfQorCitmdW5jdGlvbiBn
ZXRVc2VyTWVkaWEoY29uc3RyYWludHMsIGNhbGxiYWNrKSB7CisgICAgdHJ5IHsKKyAgICAgICAg
bmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShjb25zdHJhaW50cywgY2FsbGJhY2ssIGVycm9y
KTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRlc3RGYWlsZWQoJ3dlYmtpdEdldFVzZXJN
ZWRpYSB0aHJldyBleGNlcHRpb24gOicgKyBlKTsKKyAgICAgICAgZmluaXNoSlNUZXN0KCk7Cisg
ICAgfQorfQorCitmdW5jdGlvbiBvblRyYWNrRW5kZWQoKSB7CisgICAgdGVzdFBhc3NlZCgnVHJh
Y2sgb25lbmRlZCBjYWxsYmFjayBzdWNjZWVkZWQuJyk7CisKKyAgICBmaW5pc2hKU1Rlc3QoKTsK
K30KKworZnVuY3Rpb24gb25UcmFja1VubXV0ZSgpIHsKKyAgICB0ZXN0UGFzc2VkKCdUcmFjayBv
bnVubXV0ZSBjYWxsYmFjayBzdWNjZWVkZWQuJyk7CisKKyAgICBzdHJlYW0uc3RvcCgpOworfQor
CitmdW5jdGlvbiBvblRyYWNrTXV0ZSgpIHsKKyAgICB0ZXN0UGFzc2VkKCdUcmFjayBvbm11dGUg
Y2FsbGJhY2sgc3VjY2VlZGVkLicpOworCisgICAgdHJhY2suZW5hYmxlZCA9IHRydWU7Cit9CisK
K2Z1bmN0aW9uIGdvdFN0cmVhbShzKSB7CisgICAgdGVzdFBhc3NlZCgnZ2V0VXNlck1lZGlhIHN1
Y2NlZWRlZC4nKTsKKworICAgIHN0cmVhbSA9IHM7CisgICAgdHJhY2sgPSBzdHJlYW0udmlkZW9U
cmFja3NbMF07CisKKyAgICB0cmFjay5vbnVubXV0ZSA9IG9uVHJhY2tVbm11dGU7CisgICAgdHJh
Y2sub25tdXRlID0gb25UcmFja011dGU7CisgICAgdHJhY2sub25lbmRlZCA9IG9uVHJhY2tFbmRl
ZDsKKworICAgIHRyYWNrLmVuYWJsZWQgPSBmYWxzZTsKK30KKworZ2V0VXNlck1lZGlhKHthdWRp
bzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtKTsKKword2luZG93LmpzVGVzdElzQXN5bmMg
PSB0cnVlOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153771</attachid>
            <date>2012-07-23 04:06:52 -0700</date>
            <delta_ts>2012-07-24 04:42:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90180-20120723130644.patch</filename>
            <type>text/plain</type>
            <size>43510</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3NmMxNzEzM2YzOGQ4
MDE0ZWY5MGMzOTZhNzI0NWU0NzhhOTNmMTNhLi5mNjI0Mzk3ZTY4Y2FjODg1YzViZTJmNDhlMGI2
NjdjMTVmMWFmOWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNy0yMCAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0
cmVhbSBBUEk6IFVwZGF0ZSBNZWRpYVN0cmVhbVRyYWNrIHRvIG1hdGNoIHRoZSBzcGVjaWZpY2F0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDE4
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY2hy
b21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oOgorICAgICAgICAoV2ViTWVk
aWFTdHJlYW1EZXNjcmlwdG9yKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFT
dHJlYW1Tb3VyY2UuaDoKKyAgICAgICAgKFdlYk1lZGlhU3RyZWFtU291cmNlKToKKwogMjAxMi0w
Ny0xOCAgQW50b2luZSBMYWJvdXIgIDxwaW1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2No
cm9taXVtXSBJbnRyb2R1Y2UgQ0NSZXNvdXJjZVByb3ZpZGVyLCByZXBsYWNpbmcgVGV4dHVyZUFs
bG9jYXRvciBhbmQgaGlkaW5nIHRleHR1cmVzIGZyb20gY2xpZW50cyB0byBhbGxvdyB0cmFuc3Bv
cnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCAwOTI3YmU4ZTUxMzRlOTE1NTMwNmEzYThjNmUzOTQ1OThkMTA4YjI3
Li5lMzYxMmU0YTg5NTI4NjBlYzk4NjBlNDJjODIyNmYxMjFlNjMyNWJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNTkgQEAKKzIwMTItMDctMjAgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdv
b2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBVcGRhdGUgTWVkaWFTdHJlYW1U
cmFjayB0byBtYXRjaCB0aGUgc3BlY2lmaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAxODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNZWRpYVN0cmVhbVRyYWNrcyBhcmUgbm93IHJlcXVpcmVk
IHRvIHNob3cgdGhlIHN0YXR1cyBvZiB0aGUgdW5kZXJseWluZyBzb3VyY2UsCisgICAgICAgIGFu
ZCB0cmlnZ2VyIGV2ZW50cyB3aGVuIHRoYXQgc3RhdHVzIGNoYW5nZXMuCisKKyAgICAgICAgVGVz
dDogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmh0bWwKKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6TWVkaWFTdHJlYW0pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmFkZFRyYWNrKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
VHJhY2s6Ok1lZGlhU3RyZWFtVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1U
cmFjazo6fk1lZGlhU3RyZWFtVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1U
cmFjazo6c2V0RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpy
ZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1UcmFjazo6c291cmNlQ2hhbmdlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtVHJhY2s6OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6
aW50ZXJmYWNlTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6
OmV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpl
bnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5oOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFjay5pZGw6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGRvbS9FdmVu
dE5hbWVzLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRG
YWN0b3J5LmluOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFT
dHJlYW1EZXNjcmlwdG9yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0
L1dlYk1lZGlhU3RyZWFtU291cmNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTWVkaWFTdHJl
YW1Tb3VyY2U6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2U6OnJlYWR5U3RhdGUpOgorICAgICAgICAqIHBsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcDogQ29waWVkIGZyb20gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6TWVkaWFTdHJlYW1Tb3Vy
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6OnNldFJlYWR5U3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6OmFkZE9ic2VydmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpyZW1vdmVPYnNlcnZlcik6CisgICAg
ICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaDoKKyAgICAgICAg
KE9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpPYnNlcnZl
cjo6fk9ic2VydmVyKToKKyAgICAgICAgKE1lZGlhU3RyZWFtU291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpyZWFkeVN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9NZWRpYVN0cmVhbUNlbnRlckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyQ2hyb21pdW06OnF1ZXJ5TWVkaWFTdHJl
YW1Tb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQ2VudGVyQ2hyb21pdW06
OmRpZENyZWF0ZU1lZGlhU3RyZWFtKToKKwogMjAxMi0wNy0yMyAgSGF5YXRvIEl0byAgPGhheWF0
b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyIHNob3Vs
ZCBza2lwIGFuIGVtcHR5IGluc2VydGlvbiBwb2ludHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oIGIvU291cmNl
L1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaAppbmRl
eCBjMjVmNDJlMWI4ODkxNDIyMDYxOWI4NDgzNjIzNTNkOWNkNDk5ZTIyLi5kMWIzODUzNjdkOTg3
ZDU2NDJhMGFiN2NlMzhjN2VhYWE1M2M1MTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKQEAgLTY4
LDkgKzY4LDYgQEAgcHVibGljOgogCiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgbGFiZWwo
KSBjb25zdDsKIAotICAgIC8vIERFUFJFQ0FURUQKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc291
cmNlcyhXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JikgY29uc3Q7Ci0KICAgICBXRUJL
SVRfRVhQT1JUIHZvaWQgYXVkaW9Tb3VyY2VzKFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbUNvbXBv
bmVudD4mKSBjb25zdDsKICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgdmlkZW9Tb3VyY2VzKFdlYlZl
Y3RvcjxXZWJNZWRpYVN0cmVhbUNvbXBvbmVudD4mKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oCmluZGV4
IDE0MmQ1OTg2NmU2YWM4NTgyYzI0OTM4MmQxNTdkZDU2YjVmOGQ3NjcuLjAxYWE4Y2Y3Zjg1OTEw
NTg1NjI0OTZkZmMzMjY4NWY2YTk1NWU0YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaAorKysgYi9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtU291cmNlLmgKQEAgLTUwLDYgKzUwLDEy
IEBAIHB1YmxpYzoKICAgICAgICAgVHlwZVZpZGVvCiAgICAgfTsKIAorICAgIGVudW0gUmVhZHlT
dGF0ZSB7CisgICAgICAgIFJlYWR5U3RhdGVMaXZlID0gMCwKKyAgICAgICAgUmVhZHlTdGF0ZU11
dGVkID0gMSwKKyAgICAgICAgUmVhZHlTdGF0ZUVuZGVkID0gMgorICAgIH07CisKICAgICBXZWJN
ZWRpYVN0cmVhbVNvdXJjZSgpIHsgfQogICAgIFdlYk1lZGlhU3RyZWFtU291cmNlKGNvbnN0IFdl
Yk1lZGlhU3RyZWFtU291cmNlJiBvdGhlcikgeyBhc3NpZ24ob3RoZXIpOyB9CiAgICAgfldlYk1l
ZGlhU3RyZWFtU291cmNlKCkgeyByZXNldCgpOyB9CkBAIC03MCw2ICs3Niw5IEBAIHB1YmxpYzoK
ICAgICBXRUJLSVRfRVhQT1JUIFR5cGUgdHlwZSgpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQg
V2ViU3RyaW5nIG5hbWUoKSBjb25zdDsKIAorICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRSZWFk
eVN0YXRlKFJlYWR5U3RhdGUpOworICAgIFdFQktJVF9FWFBPUlQgUmVhZHlTdGF0ZSByZWFkeVN0
YXRlKCkgY29uc3Q7CisKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KICAgICBXZWJNZWRpYVN0
cmVhbVNvdXJjZShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3Vy
Y2U+Jik7CiAgICAgV2ViTWVkaWFTdHJlYW1Tb3VyY2UmIG9wZXJhdG9yPShXZWJDb3JlOjpNZWRp
YVN0cmVhbVNvdXJjZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggM2ViOTQz
OTkxZDdlZjM3YzJjMDk0YWEzNzI4MDAwNzczMmY5OTA0OC4uNzRjOTk4ZDY5MjBlYjQyYmNjODBi
ZmY1NDNjNDcwNWI4N2YyZTA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0z
NTIyLDYgKzM1MjIsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmggXAogCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29tcG9uZW50LmggXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNl
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291
cmNlc1F1ZXJ5Q2xpZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1BlZXJDb25uZWN0aW9uMDBIYW5kbGVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCmluZGV4IGU0ZWZjNDliN2RkZmUyOWIx
MDM5ZTJlNDk4OTg5NTRhMjJjOGJmYTkuLmNlOGUyNjU1ZWU3ZjIzMzM5YWM5ZDlmZDRkMTg3ZGVj
NDkxOTczY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW0uY3BwCkBAIC05NCwxNCArOTQsMTQgQEAgTWVkaWFTdHJlYW06Ok1lZGlhU3Ry
ZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW0KICAgICBzaXplX3QgbnVtYmVyT2ZBdWRpb1RyYWNrcyA9IG1fZGVzY3JpcHRvci0+bnVtYmVy
T2ZBdWRpb0NvbXBvbmVudHMoKTsKICAgICBhdWRpb1RyYWNrVmVjdG9yLnJlc2VydmVDYXBhY2l0
eShudW1iZXJPZkF1ZGlvVHJhY2tzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJl
ck9mQXVkaW9UcmFja3M7IGkrKykKLSAgICAgICAgYXVkaW9UcmFja1ZlY3Rvci5hcHBlbmQoTWVk
aWFTdHJlYW1UcmFjazo6Y3JlYXRlKG1fZGVzY3JpcHRvciwgbV9kZXNjcmlwdG9yLT5hdWRpb0Nv
bXBvbmVudChpKSkpOworICAgICAgICBhdWRpb1RyYWNrVmVjdG9yLmFwcGVuZChNZWRpYVN0cmVh
bVRyYWNrOjpjcmVhdGUoY29udGV4dCwgbV9kZXNjcmlwdG9yLCBtX2Rlc2NyaXB0b3ItPmF1ZGlv
Q29tcG9uZW50KGkpKSk7CiAgICAgbV9hdWRpb1RyYWNrcyA9IE1lZGlhU3RyZWFtVHJhY2tMaXN0
OjpjcmVhdGUodGhpcywgYXVkaW9UcmFja1ZlY3Rvcik7CiAKICAgICBNZWRpYVN0cmVhbVRyYWNr
VmVjdG9yIHZpZGVvVHJhY2tWZWN0b3I7CiAgICAgc2l6ZV90IG51bWJlck9mVmlkZW9UcmFja3Mg
PSBtX2Rlc2NyaXB0b3ItPm51bWJlck9mVmlkZW9Db21wb25lbnRzKCk7CiAgICAgdmlkZW9UcmFj
a1ZlY3Rvci5yZXNlcnZlQ2FwYWNpdHkobnVtYmVyT2ZWaWRlb1RyYWNrcyk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlZpZGVvVHJhY2tzOyBpKyspCi0gICAgICAgIHZpZGVv
VHJhY2tWZWN0b3IuYXBwZW5kKE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShtX2Rlc2NyaXB0b3Is
IG1fZGVzY3JpcHRvci0+dmlkZW9Db21wb25lbnQoaSkpKTsKKyAgICAgICAgdmlkZW9UcmFja1Zl
Y3Rvci5hcHBlbmQoTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKGNvbnRleHQsIG1fZGVzY3JpcHRv
ciwgbV9kZXNjcmlwdG9yLT52aWRlb0NvbXBvbmVudChpKSkpOwogICAgIG1fdmlkZW9UcmFja3Mg
PSBNZWRpYVN0cmVhbVRyYWNrTGlzdDo6Y3JlYXRlKHRoaXMsIHZpZGVvVHJhY2tWZWN0b3IpOwog
fQogCkBAIC0xNTEsNyArMTUxLDcgQEAgRXZlbnRUYXJnZXREYXRhKiBNZWRpYVN0cmVhbTo6ZW5z
dXJlRXZlbnRUYXJnZXREYXRhKCkKIAogdm9pZCBNZWRpYVN0cmVhbTo6YWRkVHJhY2soTWVkaWFT
dHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCkKIHsKLSAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
az4gdHJhY2sgPSBNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUobV9kZXNjcmlwdG9yLCBjb21wb25l
bnQpOworICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFjayA9IE1lZGlhU3RyZWFtVHJh
Y2s6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIG1fZGVzY3JpcHRvciwgY29tcG9u
ZW50KTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBzd2l0Y2ggKGNvbXBvbmVudC0+
c291cmNlKCktPnR5cGUoKSkgewogICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVBdWRp
bzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2suY3BwCmluZGV4IGYyMjc3NDk2YzEzNjE1ZDk5NGEzZGE2NWY1YzVmNWE1MmEz
MGMwNjguLmZhMDcxZmVmMjliZTliYTM0OWYyNTNjMmE3MmI4ZTBmODBhNjU2YzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrLmNwcApAQCAtMjgsMjQgKzI4LDMxIEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQog
CisjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgogI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtQ29tcG9uZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IHN0cmVhbURlc2NyaXB0b3IsIE1lZGlhU3Ry
ZWFtQ29tcG9uZW50KiBjb21wb25lbnQpCitQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IE1l
ZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gc3RyZWFtRGVzY3JpcHRvciwgTWVkaWFT
dHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1l
ZGlhU3RyZWFtVHJhY2soc3RyZWFtRGVzY3JpcHRvciwgY29tcG9uZW50KSk7CisgICAgUmVmUHRy
PE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtVHJhY2so
Y29udGV4dCwgc3RyZWFtRGVzY3JpcHRvciwgY29tcG9uZW50KSk7CisgICAgdHJhY2stPnN1c3Bl
bmRJZk5lZWRlZCgpOworICAgIHJldHVybiB0cmFjay5yZWxlYXNlKCk7CiB9CiAKLU1lZGlhU3Ry
ZWFtVHJhY2s6Ok1lZGlhU3RyZWFtVHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0
b3I+IHN0cmVhbURlc2NyaXB0b3IsIE1lZGlhU3RyZWFtQ29tcG9uZW50KiBjb21wb25lbnQpCi0g
ICAgOiBtX3N0cmVhbURlc2NyaXB0b3Ioc3RyZWFtRGVzY3JpcHRvcikKK01lZGlhU3RyZWFtVHJh
Y2s6Ok1lZGlhU3RyZWFtVHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IHN0cmVhbURlc2NyaXB0b3IsIE1lZGlhU3Ry
ZWFtQ29tcG9uZW50KiBjb21wb25lbnQpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwg
dGhpcykKKyAgICAsIG1fc3RvcHBlZChmYWxzZSkKKyAgICAsIG1fc3RyZWFtRGVzY3JpcHRvcihz
dHJlYW1EZXNjcmlwdG9yKQogICAgICwgbV9jb21wb25lbnQoY29tcG9uZW50KQogeworICAgIG1f
Y29tcG9uZW50LT5zb3VyY2UoKS0+YWRkT2JzZXJ2ZXIodGhpcyk7CiB9CiAKIE1lZGlhU3RyZWFt
VHJhY2s6On5NZWRpYVN0cmVhbVRyYWNrKCkKIHsKKyAgICBtX2NvbXBvbmVudC0+c291cmNlKCkt
PnJlbW92ZU9ic2VydmVyKHRoaXMpOwogfQogCiBTdHJpbmcgTWVkaWFTdHJlYW1UcmFjazo6a2lu
ZCgpIGNvbnN0CkBAIC03Niw3ICs4Myw3IEBAIGJvb2wgTWVkaWFTdHJlYW1UcmFjazo6ZW5hYmxl
ZCgpIGNvbnN0CiAKIHZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c2V0RW5hYmxlZChib29sIGVuYWJs
ZWQpCiB7Ci0gICAgaWYgKGVuYWJsZWQgPT0gbV9jb21wb25lbnQtPmVuYWJsZWQoKSkKKyAgICBp
ZiAobV9zdG9wcGVkIHx8IGVuYWJsZWQgPT0gbV9jb21wb25lbnQtPmVuYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgbV9jb21wb25lbnQtPnNldEVuYWJsZWQoZW5hYmxlZCk7CkBAIC04
NywxMSArOTQsNzIgQEAgdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzZXRFbmFibGVkKGJvb2wgZW5h
YmxlZCkKICAgICBNZWRpYVN0cmVhbUNlbnRlcjo6aW5zdGFuY2UoKS5kaWRTZXRNZWRpYVN0cmVh
bVRyYWNrRW5hYmxlZChtX3N0cmVhbURlc2NyaXB0b3IuZ2V0KCksIG1fY29tcG9uZW50LmdldCgp
KTsKIH0KIAorTWVkaWFTdHJlYW1UcmFjazo6UmVhZHlTdGF0ZSBNZWRpYVN0cmVhbVRyYWNrOjpy
ZWFkeVN0YXRlKCkgY29uc3QKK3sKKyAgICBpZiAobV9zdG9wcGVkKQorICAgICAgICByZXR1cm4g
RU5ERUQ7CisKKyAgICBzd2l0Y2ggKG1fY29tcG9uZW50LT5zb3VyY2UoKS0+cmVhZHlTdGF0ZSgp
KSB7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZUxpdmU6CisgICAgICAg
IHJldHVybiBMSVZFOworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGVNdXRl
ZDoKKyAgICAgICAgcmV0dXJuIE1VVEVEOworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlJl
YWR5U3RhdGVFbmRlZDoKKyAgICAgICAgcmV0dXJuIEVOREVEOworICAgIH0KKworICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBFTkRFRDsKK30KKwordm9pZCBNZWRpYVN0cmVh
bVRyYWNrOjpzb3VyY2VDaGFuZ2VkU3RhdGUoKQoreworICAgIGlmIChtX3N0b3BwZWQpCisgICAg
ICAgIHJldHVybjsKKworICAgIHN3aXRjaCAobV9jb21wb25lbnQtPnNvdXJjZSgpLT5yZWFkeVN0
YXRlKCkpIHsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpSZWFkeVN0YXRlTGl2ZToKKyAg
ICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS51bm11dGVFdmVu
dCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVkaWFTdHJlYW1T
b3VyY2U6OlJlYWR5U3RhdGVNdXRlZDoKKyAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5tdXRlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpSZWFkeVN0YXRlRW5kZWQ6CisgICAgICAg
IGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW5kZWRFdmVudCwgZmFs
c2UsIGZhbHNlKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwogTWVkaWFTdHJlYW1Db21w
b25lbnQqIE1lZGlhU3RyZWFtVHJhY2s6OmNvbXBvbmVudCgpCiB7CiAgICAgcmV0dXJuIG1fY29t
cG9uZW50LmdldCgpOwogfQogCit2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnN0b3AoKQoreworICAg
IG1fc3RvcHBlZCA9IHRydWU7Cit9CisKK2NvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTdHJlYW1U
cmFjazo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5p
bnRlcmZhY2VGb3JNZWRpYVN0cmVhbVRyYWNrOworfQorCitTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBNZWRpYVN0cmVhbVRyYWNrOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Cit9CisK
K0V2ZW50VGFyZ2V0RGF0YSogTWVkaWFTdHJlYW1UcmFjazo6ZXZlbnRUYXJnZXREYXRhKCkKK3sK
KyAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOworfQorCitFdmVudFRhcmdldERhdGEqIE1l
ZGlhU3RyZWFtVHJhY2s6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZt
X2V2ZW50VGFyZ2V0RGF0YTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKaW5kZXggYzQ1YmUxOGM3NGNhOGM0ZGY1
NDcwZTJlMDk0NWM3ZWY3YmE5M2NiZi4uNzI0YTEyMGRjYjMzYWYwNzk4NmVhOGNiZDcxMzA2YTk4
Y2FiYzgyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmgKQEAgLTI4LDcgKzI4LDEwIEBACiAKICNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQogCisjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXZl
bnRUYXJnZXQuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKKyNpbmNsdWRl
ICJNZWRpYVN0cmVhbVNvdXJjZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0zOCw5
ICs0MSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1lZGlhU3RyZWFtQ29tcG9u
ZW50OwogCi1jbGFzcyBNZWRpYVN0cmVhbVRyYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFT
dHJlYW1UcmFjaz4geworY2xhc3MgTWVkaWFTdHJlYW1UcmFjayA6IHB1YmxpYyBSZWZDb3VudGVk
PE1lZGlhU3RyZWFtVHJhY2s+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRU
YXJnZXQsIHB1YmxpYyBNZWRpYVN0cmVhbVNvdXJjZTo6T2JzZXJ2ZXIgewogcHVibGljOgotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtRGVzY3JpcHRvcj4sIE1lZGlhU3RyZWFtQ29tcG9uZW50Kik7CisgICAgZW51bSBS
ZWFkeVN0YXRlIHsKKyAgICAgICAgTElWRSA9IDAsCisgICAgICAgIE1VVEVEID0gMSwKKyAgICAg
ICAgRU5ERUQgPSAyCisgICAgfTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
VHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbURlc2NyaXB0b3I+LCBNZWRpYVN0cmVhbUNvbXBvbmVudCopOwogICAgIHZpcnR1YWwgfk1l
ZGlhU3RyZWFtVHJhY2soKTsKIAogICAgIFN0cmluZyBraW5kKCkgY29uc3Q7CkBAIC00OSwxMSAr
NTgsMzggQEAgcHVibGljOgogICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0
RW5hYmxlZChib29sKTsKIAorICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OworCisg
ICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihtdXRlKTsKKyAgICBERUZJTkVfQVRU
UklCVVRFX0VWRU5UX0xJU1RFTkVSKHVubXV0ZSk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUihlbmRlZCk7CisKICAgICBNZWRpYVN0cmVhbUNvbXBvbmVudCogY29tcG9uZW50
KCk7CiAKKyAgICAvLyBFdmVudFRhcmdldAorICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5n
JiBpbnRlcmZhY2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREU7CisK
KyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURF
OworCisgICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNrPjo6cmVmOworICAgIHVz
aW5nIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFjaz46OmRlcmVmOworCiBwcml2YXRlOgotICAg
IE1lZGlhU3RyZWFtVHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+LCBNZWRp
YVN0cmVhbUNvbXBvbmVudCopOworICAgIE1lZGlhU3RyZWFtVHJhY2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCosIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiwgTWVkaWFTdHJlYW1D
b21wb25lbnQqKTsKKworICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCBFdmVudFRhcmdl
dERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgRXZlbnRUYXJn
ZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lk
IGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IGRlcmVmKCk7IH0KKyAgICBFdmVudFRhcmdl
dERhdGEgbV9ldmVudFRhcmdldERhdGE7CisKKyAgICAvLyBNZWRpYVN0cmVhbVNvdXJjZU9ic2Vy
dmVyCisgICAgdmlydHVhbCB2b2lkIHNvdXJjZUNoYW5nZWRTdGF0ZSgpIE9WRVJSSURFOwogCisg
ICAgYm9vbCBtX3N0b3BwZWQ7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gbV9z
dHJlYW1EZXNjcmlwdG9yOwogICAgIFJlZlB0cjxNZWRpYVN0cmVhbUNvbXBvbmVudD4gbV9jb21w
b25lbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFjay5pZGwKaW5kZXggNzk4NzU5NzVlOTE3Y2JlNmVmOTkzMTgyOGQ1
OGMxYzk2OWY4ZWRlYi4uMDViODk3Mzg0NGZhNTdmMzZmZjA0ODk4YzdmNGZhZWE3MmJlZGFjYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2suaWRsCkBAIC0yNiwxMCArMjYsMzAgQEAgbW9kdWxlIGNvcmUgewogCiAgICAg
aW50ZXJmYWNlIFsKICAgICAgICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAorICAgICAgICBF
dmVudFRhcmdldAogICAgIF0gTWVkaWFTdHJlYW1UcmFjayB7CiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcga2luZDsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyBsYWJlbDsKICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gZW5hYmxlZDsK
KworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBMSVZFID0gMDsKKyAgICAgICAgY29uc3Qg
dW5zaWduZWQgc2hvcnQgTVVURUQgPSAxOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBF
TkRFRCA9IDI7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZWFk
eVN0YXRlOworCisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ubXV0ZTsKKyAgICAg
ICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb251bm11dGU7CisgICAgICAgIGF0dHJpYnV0ZSBF
dmVudExpc3RlbmVyIG9uZW5kZWQ7CisKKyAgICAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNl
CisgICAgICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVy
ZSk7CisgICAgICAgIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVu
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xl
YW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBl
dmVudCkKKyAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CiAgICAgfTsKIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCmluZGV4IGExNzJkNWU1YmVmZDU5NmY4ODA1OWZjYTE0ODA3NTg4OGFjNTc0
OGIuLmI1ZjQ0NTE1ZjYyNTk3NzhmZjNjNWUzYjE3YjJjNzYwMjE0MWQ4NjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTQ0Niw2ICs0NDYsNyBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtQ29tcG9uZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDBIYW5kbGVyLmgnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDBIYW5kbGVyQ2xpZW50LmgnLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudE5hbWVzLmgKaW5kZXggODM2ZTYzMDhiMGRhY2Y5ZGIxZjc3NWZmZjI5MzRmMWI3
NmRmYzE4YS4uM2ZjNmNlNTY5ODc5Zjg0ZGFlYzA3NTI3MzliMTQyODEwMmJjYWZiMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnROYW1lcy5oCkBAIC0yMTcsNiArMjE3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIG1hY3JvKHJlbW92ZXN0cmVhbSkgXAogICAgIG1hY3JvKHN0YXRlY2hhbmdlKSBcCiAg
ICAgbWFjcm8ocmVtb3ZldHJhY2spIFwKKyAgICBtYWNybyhtdXRlKSBcCisgICAgbWFjcm8odW5t
dXRlKSBcCiAgICAgXAogICAgIG1hY3JvKHNob3cpIFwKICAgICBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRleCA4MjE3MTdiMGQ3ZmU3NjUzYWFmM2Y2NWRhMzVl
YThlZjk1YmQwNGU0Li5jNTU4Y2Q1MzFmOTY1ZjMwM2VlYzRmYjZjOTU3NTIwM2FjMTk3MjFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KQEAgLTE3LDYgKzE3LDcg
QEAgSmF2YVNjcmlwdEF1ZGlvTm9kZSBjb25kaXRpb25hbD1XRUJfQVVESU8KIExvY2FsTWVkaWFT
dHJlYW0gY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBNZWRpYUNvbnRyb2xsZXIgY29uZGl0aW9u
YWw9VklERU8KIE1lZGlhU3RyZWFtIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQorTWVkaWFTdHJl
YW1UcmFjayBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIE1lZGlhU3RyZWFtVHJhY2tMaXN0IGNv
bmRpdGlvbmFsPU1FRElBX1NUUkVBTQogTWVzc2FnZVBvcnQKIE5ldHdvcmtJbmZvQ29ubmVjdGlv
biBjb25kaXRpb25hbD1ORVRXT1JLX0lORk8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1EZXNj
cmlwdG9yLmNwcAppbmRleCA4ZTdhM2E3ZTIyNTdiNjE2YjQzYzI0NDFiZThiMWYwZDE4N2VjZDFk
Li4zNmNjZTc0MzkxMzk1YjYwZGUzZjg3MDA3MjgyODFkZTUzMmVkMTZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhU3RyZWFtRGVz
Y3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9y
dC9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCkBAIC05MSwyMCArOTEsNiBAQCB2b2lkIFdl
Yk1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6c2V0RXh0cmFEYXRhKEV4dHJhRGF0YSogZXh0cmFEYXRh
KQogICAgIG1fcHJpdmF0ZS0+c2V0RXh0cmFEYXRhKGFkb3B0UmVmKG5ldyBFeHRyYURhdGFDb250
YWluZXIoZXh0cmFEYXRhKSkpOwogfQogCi0vLyBGSVhNRTogQ2xlYW51cCB3aGVuIHRoZSBjaHJv
bWl1bSBjb2RlIGhhcyBzd2l0Y2hlZCB0byB0aGUgc3BsaXQgc291cmNlcyBpbXBsZW1lbnRhdGlv
bi4KLXZvaWQgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpzb3VyY2VzKFdlYlZlY3RvcjxXZWJN
ZWRpYVN0cmVhbVNvdXJjZT4mIHdlYlNvdXJjZXMpIGNvbnN0Ci17Ci0gICAgc2l6ZV90IG51bWJl
ck9mQXVkaW9Tb3VyY2VzID0gbV9wcml2YXRlLT5udW1iZXJPZkF1ZGlvQ29tcG9uZW50cygpOwot
ICAgIHNpemVfdCBudW1iZXJPZlZpZGVvU291cmNlcyA9IG1fcHJpdmF0ZS0+bnVtYmVyT2ZWaWRl
b0NvbXBvbmVudHMoKTsKLSAgICBXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+IHJlc3Vs
dChudW1iZXJPZkF1ZGlvU291cmNlcyArIG51bWJlck9mVmlkZW9Tb3VyY2VzKTsKLSAgICBzaXpl
X3QgaSA9IDA7Ci0gICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBudW1iZXJPZkF1ZGlvU291cmNl
czsgKytpLCArK2opCi0gICAgICAgIHJlc3VsdFtpXSA9IG1fcHJpdmF0ZS0+YXVkaW9Db21wb25l
bnQoaiktPnNvdXJjZSgpOwotICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbnVtYmVyT2ZWaWRl
b1NvdXJjZXM7ICsraSwgKytqKQotICAgICAgICByZXN1bHRbaV0gPSBtX3ByaXZhdGUtPnZpZGVv
Q29tcG9uZW50KGopLT5zb3VyY2UoKTsKLSAgICB3ZWJTb3VyY2VzLnN3YXAocmVzdWx0KTsKLX0K
LQogdm9pZCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmF1ZGlvU291cmNlcyhXZWJWZWN0b3I8
V2ViTWVkaWFTdHJlYW1Db21wb25lbnQ+JiB3ZWJTb3VyY2VzKSBjb25zdAogewogICAgIHNpemVf
dCBudW1iZXJPZlNvdXJjZXMgPSBtX3ByaXZhdGUtPm51bWJlck9mQXVkaW9Db21wb25lbnRzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dl
Yk1lZGlhU3RyZWFtU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCmluZGV4IDNmODc3ZjU0YzczMGYwNTY3
MWEwOGViNDZjODIxMTY3NzExMmQwZjIuLjcwZWY3MDgwOTk0YTY3MDBkN2QwMDM5NDM0N2RmYjZh
OWRkN2E0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCkBAIC05Niw2ICs5
NiwxOCBAQCBXZWJTdHJpbmcgV2ViTWVkaWFTdHJlYW1Tb3VyY2U6Om5hbWUoKSBjb25zdAogICAg
IHJldHVybiBtX3ByaXZhdGUuZ2V0KCktPm5hbWUoKTsKIH0KIAordm9pZCBXZWJNZWRpYVN0cmVh
bVNvdXJjZTo6c2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlIHN0YXRlKQoreworICAgIEFTU0VSVCgh
bV9wcml2YXRlLmlzTnVsbCgpKTsKKyAgICBtX3ByaXZhdGUtPnNldFJlYWR5U3RhdGUoc3RhdGlj
X2Nhc3Q8TWVkaWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGU+KHN0YXRlKSk7Cit9CisKK1dlYk1l
ZGlhU3RyZWFtU291cmNlOjpSZWFkeVN0YXRlIFdlYk1lZGlhU3RyZWFtU291cmNlOjpyZWFkeVN0
YXRlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIW1fcHJpdmF0ZS5pc051bGwoKSk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFJlYWR5U3RhdGU+KG1fcHJpdmF0ZS0+cmVhZHlTdGF0ZSgpKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1Tb3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3MjA0ODdkYzEyNTRhNGMyMzQyNGNiMTAw
MWVhZjYyOWM5Mjg1MWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAKQEAgLTAsMCArMSw3NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNp
bmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bh
c3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IE1lZGlhU3RyZWFtU291cmNlOjpjcmVhdGUoY29u
c3QgU3RyaW5nJiBpZCwgVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFJlYWR5U3RhdGUg
cmVhZHlTdGF0ZSkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtU291cmNl
KGlkLCB0eXBlLCBuYW1lLCByZWFkeVN0YXRlKSk7Cit9CisKK01lZGlhU3RyZWFtU291cmNlOjpN
ZWRpYVN0cmVhbVNvdXJjZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKQorICAgIDogbV9pZChpZCkKKyAgICAsIG1f
dHlwZSh0eXBlKQorICAgICwgbV9uYW1lKG5hbWUpCisgICAgLCBtX3JlYWR5U3RhdGUocmVhZHlT
dGF0ZSkKK3sKK30KKwordm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6c2V0UmVhZHlTdGF0ZShSZWFk
eVN0YXRlIHJlYWR5U3RhdGUpCit7CisgICAgQVNTRVJUKG1fcmVhZHlTdGF0ZSAhPSBSZWFkeVN0
YXRlRW5kZWQpOworICAgIGlmIChtX3JlYWR5U3RhdGUgIT0gcmVhZHlTdGF0ZSkgeworICAgICAg
ICBtX3JlYWR5U3RhdGUgPSByZWFkeVN0YXRlOworICAgICAgICBmb3IgKFZlY3RvcjxPYnNlcnZl
cio+OjppdGVyYXRvciBpID0gbV9vYnNlcnZlcnMuYmVnaW4oKTsgaSAhPSBtX29ic2VydmVycy5l
bmQoKTsgKytpKQorICAgICAgICAgICAgKCppKS0+c291cmNlQ2hhbmdlZFN0YXRlKCk7CisgICAg
fQorfQorCit2b2lkIE1lZGlhU3RyZWFtU291cmNlOjphZGRPYnNlcnZlcihNZWRpYVN0cmVhbVNv
dXJjZTo6T2JzZXJ2ZXIqIG9ic2VydmVyKQoreworICAgIG1fb2JzZXJ2ZXJzLmFwcGVuZChvYnNl
cnZlcik7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Tb3VyY2U6OnJlbW92ZU9ic2VydmVyKE1lZGlh
U3RyZWFtU291cmNlOjpPYnNlcnZlciogb2JzZXJ2ZXIpCit7CisgICAgc2l6ZV90IHBvcyA9IG1f
b2JzZXJ2ZXJzLmZpbmQob2JzZXJ2ZXIpOworICAgIGlmIChwb3MgIT0gbm90Rm91bmQpCisgICAg
ICAgIG1fb2JzZXJ2ZXJzLnJlbW92ZShwb3MpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmgKaW5kZXggNzYz
NGU0MGE1ODI5Yjk5ODg2ZWJjYTNjZDU4MmNiZTgwOTQ3MDJjOC4uYzQ1YjU3MTQyMTQzNDRhNDQ3
ODU5NTU1MzE2ZDlmZjJkMTdjOGFiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oCkBAIC00MSwzNiArNDEsNDMg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBNZWRpYVN0cmVhbVNvdXJjZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtU291cmNlPiB7CiBwdWJsaWM6CisgICAgY2xhc3MgT2Jz
ZXJ2ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSB7IH0KKyAg
ICAgICAgdmlydHVhbCB2b2lkIHNvdXJjZUNoYW5nZWRTdGF0ZSgpID0gMDsKKyAgICB9OworCiAg
ICAgZW51bSBUeXBlIHsKICAgICAgICAgVHlwZUF1ZGlvLAogICAgICAgICBUeXBlVmlkZW8KICAg
ICB9OwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+IGNyZWF0ZShj
b25zdCBTdHJpbmcmIGlkLCBUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFTdHJlYW1Tb3VyY2UoaWQsIHR5cGUsIG5h
bWUpKTsKLSAgICB9CisgICAgZW51bSBSZWFkeVN0YXRlIHsKKyAgICAgICAgUmVhZHlTdGF0ZUxp
dmUgPSAwLAorICAgICAgICBSZWFkeVN0YXRlTXV0ZWQgPSAxLAorICAgICAgICBSZWFkeVN0YXRl
RW5kZWQgPSAyCisgICAgfTsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291
cmNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBS
ZWFkeVN0YXRlID0gUmVhZHlTdGF0ZUxpdmUpOwogCiAgICAgY29uc3QgU3RyaW5nJiBpZCgpIGNv
bnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGU7IH0KICAgICBjb25zdCBTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0K
IAotICAgIGJvb2wgbXV0ZWQoKSBjb25zdCB7IHJldHVybiBtX211dGVkOyB9Ci0gICAgdm9pZCBz
ZXRNdXRlZChib29sIG11dGVkKSB7IG1fbXV0ZWQgPSBtdXRlZDsgfQorICAgIHZvaWQgc2V0UmVh
ZHlTdGF0ZShSZWFkeVN0YXRlKTsKKyAgICBSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCB7
IHJldHVybiBtX3JlYWR5U3RhdGU7IH0KKworICAgIHZvaWQgYWRkT2JzZXJ2ZXIoT2JzZXJ2ZXIq
KTsKKyAgICB2b2lkIHJlbW92ZU9ic2VydmVyKE9ic2VydmVyKik7CiAKIHByaXZhdGU6Ci0gICAg
TWVkaWFTdHJlYW1Tb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSB0eXBlLCBjb25zdCBTdHJp
bmcmIG5hbWUpCi0gICAgICAgIDogbV9pZChpZCkKLSAgICAgICAgLCBtX3R5cGUodHlwZSkKLSAg
ICAgICAgLCBtX25hbWUobmFtZSkKLSAgICAgICAgLCBtX211dGVkKGZhbHNlKQotICAgIHsKLSAg
ICB9CisgICAgTWVkaWFTdHJlYW1Tb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSwgY29uc3Qg
U3RyaW5nJiBuYW1lLCBSZWFkeVN0YXRlKTsKIAogICAgIFN0cmluZyBtX2lkOwogICAgIFR5cGUg
bV90eXBlOwogICAgIFN0cmluZyBtX25hbWU7Ci0gICAgYm9vbCBtX211dGVkOworICAgIFJlYWR5
U3RhdGUgbV9yZWFkeVN0YXRlOworICAgIFZlY3RvcjxPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOwog
fTsKIAogdHlwZWRlZiBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiA+IE1lZGlhU3Ry
ZWFtU291cmNlVmVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vY2hyb21pdW0vTWVkaWFTdHJlYW1DZW50ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9NZWRpYVN0cmVhbUNlbnRlckNo
cm9taXVtLmNwcAppbmRleCAzYzgyZjVmOGJkMWU2ODAxYzZkMzVjZTI3NTc4MTk5ZjA3Nzk0ODkz
Li45MjU4MDc0NDIwYTgwZTM1ZDIzYzQ0NjQxZmIwMzFmNGEzMDdjMzViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9NZWRpYVN0cmVhbUNl
bnRlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9jaHJvbWl1bS9NZWRpYVN0cmVhbUNlbnRlckNocm9taXVtLmNwcApAQCAtNjgsOSArNjgsMTIg
QEAgTWVkaWFTdHJlYW1DZW50ZXJDaHJvbWl1bTo6fk1lZGlhU3RyZWFtQ2VudGVyQ2hyb21pdW0o
KQogCiB2b2lkIE1lZGlhU3RyZWFtQ2VudGVyQ2hyb21pdW06OnF1ZXJ5TWVkaWFTdHJlYW1Tb3Vy
Y2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2VzUXVlcnlDbGllbnQ+IGNsaWVudCkKIHsK
LSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgInNob3J0LWNpcmN1aXQiIGFuZCBmb3J3YXJkIHRv
IG1fcHJpdmF0ZSB3aGVuIENocm9tZSBhbmQgRHVtcFJlbmRlclRyZWUgaGFzIGltcGxlbWVudGVk
IFdlYk1lZGlhU3RyZWFtQ2VudGVyLgotICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1ZGlv
U291cmNlcywgdmlkZW9Tb3VyY2VzOwotICAgIGNsaWVudC0+ZGlkQ29tcGxldGVRdWVyeShhdWRp
b1NvdXJjZXMsIHZpZGVvU291cmNlcyk7CisgICAgaWYgKG1fcHJpdmF0ZSkKKyAgICAgICAgbV9w
cml2YXRlLT5xdWVyeU1lZGlhU3RyZWFtU291cmNlcyhjbGllbnQpOworICAgIGVsc2UgeworICAg
ICAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlczsK
KyAgICAgICAgY2xpZW50LT5kaWRDb21wbGV0ZVF1ZXJ5KGF1ZGlvU291cmNlcywgdmlkZW9Tb3Vy
Y2VzKTsKKyAgICB9CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW1DZW50ZXJDaHJvbWl1bTo6ZGlkU2V0
TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0sICBN
ZWRpYVN0cmVhbUNvbXBvbmVudCogY29tcG9uZW50KQpAQCAtMTAwLDkgKzEwMyw2IEBAIHZvaWQg
TWVkaWFTdHJlYW1DZW50ZXJDaHJvbWl1bTo6ZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFT
dHJlYW1EZXNjcmlwdG9yKiBzCiB2b2lkIE1lZGlhU3RyZWFtQ2VudGVyQ2hyb21pdW06OmRpZENy
ZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogc3RyZWFtKQogewogICAgIGlm
IChtX3ByaXZhdGUpIHsKLSAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB3aGVuIENocm9taXVtIGhh
dmUgc3dpdGNoZWQgdG8gdGhlIG5ldyBBUEkuCi0gICAgICAgIG1fcHJpdmF0ZS0+ZGlkQ29uc3Ry
dWN0TWVkaWFTdHJlYW0oc3RyZWFtKTsKLQogICAgICAgICBXZWJLaXQ6OldlYk1lZGlhU3RyZWFt
RGVzY3JpcHRvciB3ZWJTdHJlYW0oc3RyZWFtKTsKICAgICAgICAgbV9wcml2YXRlLT5kaWRDcmVh
dGVNZWRpYVN0cmVhbSh3ZWJTdHJlYW0pOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKaW5kZXggNzg5ZDFiNjIzN2IxYWZi
OTQ5OTNhNThiMTllNDAzNWJjMmVhYjhhMC4uNWYyNTAzNTFhOWU5MjAxOTE5MTdlMTRiOGJmZWNh
ZjdjNDFiN2VlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0
TWF0Y2hpbmdFbnVtcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0
TWF0Y2hpbmdFbnVtcy5jcHAKQEAgLTUzNyw2ICs1MzcsOSBAQCBDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKFdlYlBhZ2VWaXNpYmlsaXR5U3RhdGVQcmV2aWV3LCBQYWdlVmlzaWJpbGl0eVN0
YXRlUAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYk1lZGlhU3RyZWFtU291cmNlOjpUeXBlQXVkaW8sIE1lZGlhU3RyZWFtU291cmNlOjpU
eXBlQXVkaW8pOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVN0cmVhbVNv
dXJjZTo6VHlwZVZpZGVvLCBNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvKTsKK0NPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGVMaXZl
LCBNZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZUxpdmUpOworQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXZWJNZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZU11dGVkLCBNZWRpYVN0
cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZU11dGVkKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGVFbmRlZCwgTWVkaWFTdHJlYW1Tb3Vy
Y2U6OlJlYWR5U3RhdGVFbmRlZCk7CiAKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2Vi
SUNFT3B0aW9uczo6Q2FuZGlkYXRlVHlwZUFsbCwgSWNlT3B0aW9uczo6QUxMKTsKIENPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oV2ViSUNFT3B0aW9uczo6Q2FuZGlkYXRlVHlwZU5vUmVsYXks
IEljZU9wdGlvbnM6Ok5PX1JFTEFZKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCBiMzY3OWVjZThiNjJmNTMxOTRjODQzNDg3OTMwOGY2NDYzYzMw
NjQwLi5jMmFmMmQ0YzQ5OGI3NzU1NTIyMzYyOGI2MGE1NTVhNGJlZmMwZDQxIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAK
KzIwMTItMDctMjAgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAg
ICAgICAgTWVkaWFTdHJlYW0gQVBJOiBVcGRhdGUgTWVkaWFTdHJlYW1UcmFjayB0byBtYXRjaCB0
aGUgc3BlY2lmaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTAxODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRpbmcgYSBNb2NrIFdlYk1lZGlhU3RyZWFtQ2VudGVyIHRvIGVuYWJsZSBiZXR0
ZXIgTGF5b3V0VGVzdHMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJl
ZS5neXBpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJLaXRQbGF0
Zm9ybVN1cHBvcnQuY3BwOgorICAgICAgICAoTW9ja1dlYktpdFBsYXRmb3JtU3VwcG9ydDo6Y3Jl
YXRlTWVkaWFTdHJlYW1DZW50ZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L01vY2tXZWJNZWRpYVN0cmVhbUNlbnRlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6TW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpNb2NrV2ViTWVkaWFT
dHJlYW1DZW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6
OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYk1lZGlh
U3RyZWFtQ2VudGVyOjpkaWRFbmFibGVNZWRpYVN0cmVhbVRyYWNrKToKKyAgICAgICAgKFdlYktp
dDo6TW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpkaWREaXNhYmxlTWVkaWFTdHJlYW1UcmFjayk6
CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU3RvcExvY2Fs
TWVkaWFTdHJlYW0pOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6
OmRpZENyZWF0ZU1lZGlhU3RyZWFtKToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYk1lZGlhU3Ry
ZWFtQ2VudGVyOjpjb25zdHJ1Y3RTRFApOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL01vY2tXZWJNZWRpYVN0cmVhbUNlbnRlci5oOiBDb3BpZWQgZnJvbSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmNwcC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXIpOgorICAgICAgICAo
V2ViS2l0OjpNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6Ok1vY2tXZWJNZWRpYVN0cmVhbUNlbnRl
cik6CisKIDIwMTItMDctMjMgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJlbmFtZSBFTkFCTEVfTUVURVJfVEFHIGFuZCBFTkFCTEVfUFJPR1JFU1NfVEFHIHRv
IEVOQUJMRV9NRVRFUl9FTEVNRU5UIGFuZCBFTkFCTEVfUFJPR1JFU1NfRUxFTUVOVCByZXNwZWN0
aXZlbHkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5
cGkgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCmluZGV4IGUxMWY0
MGVjZDU4NmZhOWYyZGE0ODc3NGVmMjU5ZDliMjlkM2E1ZTkuLjdkZDVhMWVjNmY0NWM4NDA3NGQ2
ZjJhNmRjNGExNzcyMTU1YmZkMzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1
bXBSZW5kZXJUcmVlLmd5cGkKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRy
ZWUuZ3lwaQpAQCAtMTYsNiArMTYsOCBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tTcGVs
bENoZWNrLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJLaXRQbGF0Zm9ybVN1cHBv
cnQuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9Nb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0
LmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJNZWRpYVN0cmVhbUNlbnRlci5jcHAn
LAorICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJNZWRpYVN0cmVhbUNlbnRlci5oJywKICAg
ICAgICAgICAgICdjaHJvbWl1bS9Nb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydC5jcHAnLAogICAg
ICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJQcmVyZW5kZXJpbmdTdXBwb3J0LmgnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL01vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuY3BwJywKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJLaXRQbGF0Zm9ybVN1
cHBvcnQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYktpdFBsYXRm
b3JtU3VwcG9ydC5jcHAKaW5kZXggZDQ4N2I4OGFhMTI5MWIxZTA0MjM3MmRiMGEyODM4NzZlOGY0
Yjc2Mi4uMjU1NzE1NzZlZjAzZWYzMzcxMGNkMWYzYmY5YTZjYjg0NDE5NjNmMiAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYktpdFBsYXRmb3JtU3VwcG9y
dC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYktpdFBsYXRm
b3JtU3VwcG9ydC5jcHAKQEAgLTMxLDcgKzMxLDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJNb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCiAKKyNpbmNsdWRlICJNb2NrV2Vi
TWVkaWFTdHJlYW1DZW50ZXIuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTQ5
LDcgKzUxLDEwIEBAIHZvaWQgTW9ja1dlYktpdFBsYXRmb3JtU3VwcG9ydDo6Y3J5cHRvZ3JhcGhp
Y2FsbHlSYW5kb21WYWx1ZXModW5zaWduZWQgY2hhciosIHNpCiAgICAgQ1JBU0goKTsKIH0KIAot
V2ViTWVkaWFTdHJlYW1DZW50ZXIqIE1vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQ6OmNyZWF0ZU1l
ZGlhU3RyZWFtQ2VudGVyKFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50KikKK1dlYk1lZGlhU3Ry
ZWFtQ2VudGVyKiBNb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0OjpjcmVhdGVNZWRpYVN0cmVhbUNl
bnRlcihXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudCogY2xpZW50KQogewotICAgIHJldHVybiAw
OworICAgIGlmICghbV9tb2NrTWVkaWFTdHJlYW1DZW50ZXIpCisgICAgICAgIG1fbW9ja01lZGlh
U3RyZWFtQ2VudGVyID0gYWRvcHRQdHIobmV3IE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcihjbGll
bnQpKTsKKworICAgIHJldHVybiBtX21vY2tNZWRpYVN0cmVhbUNlbnRlci5nZXQoKTsKIH0KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJLaXRQbGF0Zm9y
bVN1cHBvcnQuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJLaXRQbGF0
Zm9ybVN1cHBvcnQuaAppbmRleCBjNWRhYTZmMGY1OTA3MWZhYzUyMjJlNjFjYzk4NjM5YTg4MDNj
MTE2Li4zNmY2MDRiYzA0ZWQxY2E2NWM2ZTBjYWM4YThhNTQ2ZmE0MmIzMTNhIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0
LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYktpdFBsYXRmb3Jt
U3VwcG9ydC5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIE1vY2tXZWJLaXRQbGF0Zm9ybVN1
cHBvcnRfaAogCiAjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL093
blB0ci5oPgogCiBjbGFzcyBNb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0IDogcHVibGljIFdlYktp
dDo6UGxhdGZvcm0gewogcHVibGljOgpAQCAtNDMsNiArNDQsOCBAQCBwdWJsaWM6CiAKIHByaXZh
dGU6CiAgICAgTW9ja1dlYktpdFBsYXRmb3JtU3VwcG9ydCgpOworCisgICAgT3duUHRyPFdlYktp
dDo6V2ViTWVkaWFTdHJlYW1DZW50ZXI+IG1fbW9ja01lZGlhU3RyZWFtQ2VudGVyOwogfTsKIAog
I2VuZGlmIC8vIE1vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnRfaApkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJNZWRpYVN0cmVhbUNlbnRlci5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzBiNTZmMWYxZTQ2YzE5NTJlM2ZlNzM3NGM1ODI5ZTJjMjllNWUzMwotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJNZWRp
YVN0cmVhbUNlbnRlci5jcHAKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICog
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIk1vY2tXZWJNZWRpYVN0cmVhbUNl
bnRlci5oIgorCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvci5o
IgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50LmgiCisjaW5j
bHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Db21wb25lbnQuaCIKKyNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJN
ZWRpYVN0cmVhbVNvdXJjZS5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291
cmNlc1JlcXVlc3QuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTZXNzaW9uRGVzY3JpcHRpb25E
ZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CisKK01vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6TW9ja1dlYk1lZGlh
U3RyZWFtQ2VudGVyKFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50KiBjbGllbnQpCit7Cit9CisK
K3ZvaWQgTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpxdWVyeU1lZGlhU3RyZWFtU291cmNlcyhj
b25zdCBXZWJNZWRpYVN0cmVhbVNvdXJjZXNSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIFdlYlZl
Y3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4gYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXM7Cisg
ICAgcmVxdWVzdC5kaWRDb21wbGV0ZVF1ZXJ5KGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKTsK
K30KKwordm9pZCBNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6OmRpZEVuYWJsZU1lZGlhU3RyZWFt
VHJhY2soY29uc3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJiwgY29uc3QgV2ViTWVkaWFTdHJl
YW1Db21wb25lbnQmIGNvbXBvbmVudCkKK3sKKyAgICBjb21wb25lbnQuc291cmNlKCkuc2V0UmVh
ZHlTdGF0ZShXZWJNZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZUxpdmUpOworfQorCit2b2lk
IE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkRGlzYWJsZU1lZGlhU3RyZWFtVHJhY2soY29u
c3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJiwgY29uc3QgV2ViTWVkaWFTdHJlYW1Db21wb25l
bnQmIGNvbXBvbmVudCkKK3sKKyAgICBjb21wb25lbnQuc291cmNlKCkuc2V0UmVhZHlTdGF0ZShX
ZWJNZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZU11dGVkKTsKK30KKwordm9pZCBNb2NrV2Vi
TWVkaWFTdHJlYW1DZW50ZXI6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKGNvbnN0IFdlYk1lZGlh
U3RyZWFtRGVzY3JpcHRvciYgc3RyZWFtKQoreworICAgIFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVh
bUNvbXBvbmVudD4gYXVkaW9Db21wb25lbnRzOworICAgIHN0cmVhbS5hdWRpb1NvdXJjZXMoYXVk
aW9Db21wb25lbnRzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF1ZGlvQ29tcG9uZW50
cy5zaXplKCk7ICsraSkKKyAgICAgICAgYXVkaW9Db21wb25lbnRzW2ldLnNvdXJjZSgpLnNldFJl
YWR5U3RhdGUoV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGVFbmRlZCk7CisKKyAgICBX
ZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Db21wb25lbnQ+IHZpZGVvQ29tcG9uZW50czsKKyAgICBz
dHJlYW0udmlkZW9Tb3VyY2VzKHZpZGVvQ29tcG9uZW50cyk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCB2aWRlb0NvbXBvbmVudHMuc2l6ZSgpOyArK2kpCisgICAgICAgIHZpZGVvQ29tcG9u
ZW50c1tpXS5zb3VyY2UoKS5zZXRSZWFkeVN0YXRlKFdlYk1lZGlhU3RyZWFtU291cmNlOjpSZWFk
eVN0YXRlRW5kZWQpOworfQorCit2b2lkIE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkQ3Jl
YXRlTWVkaWFTdHJlYW0oV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJikKK3sKK30KKworV2ViU3Ry
aW5nIE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6Y29uc3RydWN0U0RQKGNvbnN0IFdlYklDRUNh
bmRpZGF0ZURlc2NyaXB0b3ImIGljZUNhbmRpZGF0ZSkKK3sKKyAgICBzdHJpbmcxNiByZXN1bHQg
PSBpY2VDYW5kaWRhdGUubGFiZWwoKTsKKyAgICByZXN1bHQgKz0gV2ViU3RyaW5nKCI6Iik7Cisg
ICAgcmVzdWx0ICs9IGljZUNhbmRpZGF0ZS5jYW5kaWRhdGVMaW5lKCk7CisgICAgcmVzdWx0ICs9
IFdlYlN0cmluZygiOyIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1dlYlN0cmluZyBNb2Nr
V2ViTWVkaWFTdHJlYW1DZW50ZXI6OmNvbnN0cnVjdFNEUChjb25zdCBXZWJTZXNzaW9uRGVzY3Jp
cHRpb25EZXNjcmlwdG9yJiBzZXNzaW9uRGVzY3JpcHRpb24pCit7CisgICAgc3RyaW5nMTYgcmVz
dWx0ID0gc2Vzc2lvbkRlc2NyaXB0aW9uLmluaXRpYWxTRFAoKTsKKyAgICByZXN1bHQgKz0gV2Vi
U3RyaW5nKCI7Iik7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzZXNzaW9uRGVzY3JpcHRp
b24ubnVtYmVyT2ZBZGRlZENhbmRpZGF0ZXMoKTsgKytpKSB7CisgICAgICAgIHJlc3VsdCArPSBj
b25zdHJ1Y3RTRFAoc2Vzc2lvbkRlc2NyaXB0aW9uLmNhbmRpZGF0ZShpKSk7CisgICAgICAgIHJl
c3VsdCArPSBXZWJTdHJpbmcoIjsiKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXIuaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJNZWRpYVN0cmVhbUNlbnRlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJjZjE4YWNlYWViNzY3NDFmZTU1OWE0YTI1NTVjYmM0N2YwNTA5N2IKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViTWVkaWFTdHJlYW1DZW50
ZXIuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXJfaAor
I2RlZmluZSBNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXJfaAorCisjaW5jbHVkZSAicGxhdGZvcm0v
V2ViTWVkaWFTdHJlYW1DZW50ZXIuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJN
ZWRpYVN0cmVhbUNlbnRlckNsaWVudDsKK307CisKK2NsYXNzIE1vY2tXZWJNZWRpYVN0cmVhbUNl
bnRlciA6IHB1YmxpYyBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyIHsKK3B1YmxpYzoKKyAg
ICBleHBsaWNpdCBNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXIoV2ViS2l0OjpXZWJNZWRpYVN0cmVh
bUNlbnRlckNsaWVudCopOworCisgICAgdmlydHVhbCB2b2lkIHF1ZXJ5TWVkaWFTdHJlYW1Tb3Vy
Y2VzKGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdCYpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgdm9pZCBkaWRFbmFibGVNZWRpYVN0cmVhbVRyYWNrKGNvbnN0IFdlYktp
dDo6V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJiwgY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVh
bUNvbXBvbmVudCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWREaXNhYmxlTWVkaWFT
dHJlYW1UcmFjayhjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYsIGNvbnN0
IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Db21wb25lbnQmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVh
bURlc2NyaXB0b3ImKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlTWVkaWFT
dHJlYW0oV2ViS2l0OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImKSBPVkVSUklERTsKKyAgICB2
aXJ0dWFsIFdlYktpdDo6V2ViU3RyaW5nIGNvbnN0cnVjdFNEUChjb25zdCBXZWJLaXQ6OldlYklD
RUNhbmRpZGF0ZURlc2NyaXB0b3ImKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYktpdDo6V2Vi
U3RyaW5nIGNvbnN0cnVjdFNEUChjb25zdCBXZWJLaXQ6OldlYlNlc3Npb25EZXNjcmlwdGlvbkRl
c2NyaXB0b3ImKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBNb2NrV2ViTWVkaWFTdHJlYW1D
ZW50ZXIoKSB7IH0KK307CisKKyNlbmRpZiAvLyBNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXJfaAor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggZDc2NTkyYWRmMmVhYWRkMmQxNmZiZGJjN2VhY2RmMzcxMmI1MjU4My4uZjhiMWQ3
YzQzOGRmNWQxNTI3YjhlYzVkYWZmZjNkN2U0OTM5MzM3ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDEyLTA3LTIwICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisg
ICAgICAgIE1lZGlhU3RyZWFtIEFQSTogVXBkYXRlIE1lZGlhU3RyZWFtVHJhY2sgdG8gbWF0Y2gg
dGhlIHNwZWNpZmljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkwMTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaHRt
bDogQWRkZWQuCisKIDIwMTItMDctMjMgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIENvbXBvc2VkU2hhZG93VHJlZVdhbGtlciBzaG91bGQgc2tpcCBhbiBlbXB0
eSBpbnNlcnRpb24gcG9pbnRzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWZkNjQ2
MGFlMzM1YjgzOWU2ODk4YTVjMjM5Mjk1NTZhNmVmNjAwYQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMyBAQAorVGVzdHMgTWVkaWFTdHJlYW1UcmFjayBjYWxsYmFja3MuCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGdldFVzZXJNZWRpYSBzdWNjZWVkZWQu
CitQQVNTIFRyYWNrIG9ubXV0ZSBjYWxsYmFjayBzdWNjZWVkZWQuCitQQVNTIFRyYWNrIG9udW5t
dXRlIGNhbGxiYWNrIHN1Y2NlZWRlZC4KK1BBU1MgVHJhY2sgb25lbmRlZCBjYWxsYmFjayBzdWNj
ZWVkZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi43ZjViNmViN2RmZGVkNjhmYjUzODEzYzRiZGM2MWNlMGU0ZTc0ZDYx
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLmh0bWwKQEAgLTAsMCArMSw3MiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0cyBNZWRpYVN0cmVhbVRyYWNrIGNhbGxiYWNr
cy4iKTsKKworLy8gTm90ZSB0aGF0IHRoZSBiZWxvdyBiZWhhdmlvdXIgZG9lc24ndCByZWZsZWN0
IGhvdyBpdCB3b3JrcyBvdXRzaWRlIG9mIExheW91dFRlc3RzLgorLy8gVGhlIHVuZGVybHlpbmcg
bW9jayBpcyBtb2RpZmllZCB0byB0cmlnZ2VyIHRoZSBldmVudHMgd2hlbiBjZXJ0YWluIGZ1bmN0
aW9ucyBhcmUgY2FsbGVkLgorLy8gVGhpcyBtb2RpZmllZCBiZWhhdmlvdXIgYWxsb3dzIHVzIHRv
IHRlc3QgdGhlIE1lZGlhU3RyZWFtVHJhY2sgY2xhc3MgcHJvcGVybHkuCisKK3ZhciBzdHJlYW07
Cit2YXIgdHJhY2s7CisKK2Z1bmN0aW9uIGVycm9yKCkgeworICAgIHRlc3RGYWlsZWQoJ1N0cmVh
bSBnZW5lcmF0aW9uIGZhaWxlZC4nKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rp
b24gZ2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzLCBjYWxsYmFjaykgeworICAgIHRyeSB7CisgICAg
ICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoY29uc3RyYWludHMsIGNhbGxiYWNrLCBl
cnJvcik7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICB0ZXN0RmFpbGVkKCd3ZWJraXRHZXRV
c2VyTWVkaWEgdGhyZXcgZXhjZXB0aW9uIDonICsgZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgp
OworICAgIH0KK30KKworZnVuY3Rpb24gb25UcmFja0VuZGVkKCkgeworICAgIHRlc3RQYXNzZWQo
J1RyYWNrIG9uZW5kZWQgY2FsbGJhY2sgc3VjY2VlZGVkLicpOworCisgICAgZmluaXNoSlNUZXN0
KCk7Cit9CisKK2Z1bmN0aW9uIG9uVHJhY2tVbm11dGUoKSB7CisgICAgdGVzdFBhc3NlZCgnVHJh
Y2sgb251bm11dGUgY2FsbGJhY2sgc3VjY2VlZGVkLicpOworCisgICAgc3RyZWFtLnN0b3AoKTsK
K30KKworZnVuY3Rpb24gb25UcmFja011dGUoKSB7CisgICAgdGVzdFBhc3NlZCgnVHJhY2sgb25t
dXRlIGNhbGxiYWNrIHN1Y2NlZWRlZC4nKTsKKworICAgIHRyYWNrLmVuYWJsZWQgPSB0cnVlOwor
fQorCitmdW5jdGlvbiBnb3RTdHJlYW0ocykgeworICAgIHRlc3RQYXNzZWQoJ2dldFVzZXJNZWRp
YSBzdWNjZWVkZWQuJyk7CisKKyAgICBzdHJlYW0gPSBzOworICAgIHRyYWNrID0gc3RyZWFtLnZp
ZGVvVHJhY2tzWzBdOworCisgICAgdHJhY2sub251bm11dGUgPSBvblRyYWNrVW5tdXRlOworICAg
IHRyYWNrLm9ubXV0ZSA9IG9uVHJhY2tNdXRlOworICAgIHRyYWNrLm9uZW5kZWQgPSBvblRyYWNr
RW5kZWQ7CisKKyAgICB0cmFjay5lbmFibGVkID0gZmFsc2U7Cit9CisKK2dldFVzZXJNZWRpYSh7
YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbSk7CisKK3dpbmRvdy5qc1Rlc3RJc0Fz
eW5jID0gdHJ1ZTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+
Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154018</attachid>
            <date>2012-07-24 04:43:06 -0700</date>
            <delta_ts>2012-07-25 02:09:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90180-20120724134257.patch</filename>
            <type>text/plain</type>
            <size>43350</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNDM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA5ZWVmZDJiYjNkY2Iy
NjE1Yjc2NzIxMmEwYThmMzc4ZDhhYThkOTZiLi4zMGI1N2RmMWJjZGI0YjBiMzg1MzE1OTAxNmRk
OTkwOWIxMTkyZTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNy0yMCAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0
cmVhbSBBUEk6IFVwZGF0ZSBNZWRpYVN0cmVhbVRyYWNrIHRvIG1hdGNoIHRoZSBzcGVjaWZpY2F0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDE4
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY2hy
b21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oOgorICAgICAgICAoV2ViTWVk
aWFTdHJlYW1EZXNjcmlwdG9yKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFT
dHJlYW1Tb3VyY2UuaDoKKyAgICAgICAgKFdlYk1lZGlhU3RyZWFtU291cmNlKToKKwogMjAxMi0w
Ny0yMyAgRGF2ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBB
ZGQgZHJvcHBlZEZyYW1lQ291bnQgdG8gcmVuZGVyaW5nU3RhdHMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjg5
MjI1MDRkNmZmZTU4MmIyYTY0ZGE3MzNhZjVmMWYwZGIzNzg3NS4uMzZiNmMyYjhkYzAwNmJjYTZj
NDNkNGY0ZTE2YjU0NzVhNjE4YzdlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEy
LTA3LTIwICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAg
IE1lZGlhU3RyZWFtIEFQSTogVXBkYXRlIE1lZGlhU3RyZWFtVHJhY2sgdG8gbWF0Y2ggdGhlIHNw
ZWNpZmljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTkwMTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTWVkaWFTdHJlYW1UcmFja3MgYXJlIG5vdyByZXF1aXJlZCB0byBzaG93IHRoZSBzdGF0dXMg
b2YgdGhlIHVuZGVybHlpbmcgc291cmNlLAorICAgICAgICBhbmQgdHJpZ2dlciBldmVudHMgd2hl
biB0aGF0IHN0YXR1cyBjaGFuZ2VzLgorCisgICAgICAgIFRlc3Q6IGZhc3QvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay5odG1sCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgor
ICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW06Ok1lZGlhU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtOjphZGRUcmFjayk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpNZWRpYVN0cmVhbVRy
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6On5NZWRpYVN0cmVhbVRy
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnNldEVuYWJsZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6cmVhZHlTdGF0ZSk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OnNvdXJjZUNo
YW5nZWRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpzdG9wKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6OmludGVyZmFjZU5hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpldmVudFRhcmdldERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1UcmFjazo6ZW5zdXJlRXZlbnRUYXJnZXREYXRh
KToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaDoKKyAg
ICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsOgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbjoKKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJNZWRpYVN0cmVhbVNvdXJj
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFtU291cmNlOjpzZXRSZWFkeVN0
YXRlKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lZGlhU3RyZWFt
U291cmNlOjpyZWFkeVN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVNvdXJjZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmguCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTdHJlYW1Tb3VyY2U6Ok1lZGlhU3RyZWFtU291cmNlKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtU291cmNlOjpzZXRSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU3RyZWFtU291cmNlOjphZGRPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbVNvdXJjZTo6cmVtb3ZlT2JzZXJ2ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmg6CisgICAgICAgIChPYnNlcnZlcik6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6T2JzZXJ2ZXI6On5PYnNlcnZlcik6CisgICAg
ICAgIChNZWRpYVN0cmVhbVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNv
dXJjZTo6cmVhZHlTdGF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21p
dW0vTWVkaWFTdHJlYW1DZW50ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVN0cmVhbUNlbnRlckNocm9taXVtOjpxdWVyeU1lZGlhU3RyZWFtU291cmNlcyk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbUNlbnRlckNocm9taXVtOjpkaWRDcmVhdGVNZWRpYVN0cmVh
bSk6CisKIDIwMTItMDctMjQgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgW1F0XSBGaXggY29udmVyc2lvbiBmcm9tIEdyZWdvcmlhbkRhdGVUaW1lIHRv
IFFUaW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1l
ZGlhU3RyZWFtRGVzY3JpcHRvci5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9X
ZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaAppbmRleCBjMjVmNDJlMWI4ODkxNDIyMDYxOWI4NDgz
NjIzNTNkOWNkNDk5ZTIyLi5kMWIzODUzNjdkOTg3ZDU2NDJhMGFiN2NlMzhjN2VhYWE1M2M1MTM0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3Ry
ZWFtRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2Vi
TWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKQEAgLTY4LDkgKzY4LDYgQEAgcHVibGljOgogCiAgICAg
V0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgbGFiZWwoKSBjb25zdDsKIAotICAgIC8vIERFUFJFQ0FU
RUQKLSAgICBXRUJLSVRfRVhQT1JUIHZvaWQgc291cmNlcyhXZWJWZWN0b3I8V2ViTWVkaWFTdHJl
YW1Tb3VyY2U+JikgY29uc3Q7Ci0KICAgICBXRUJLSVRfRVhQT1JUIHZvaWQgYXVkaW9Tb3VyY2Vz
KFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbUNvbXBvbmVudD4mKSBjb25zdDsKICAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgdmlkZW9Tb3VyY2VzKFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbUNvbXBvbmVu
dD4mKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1Ymxp
Yy9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oCmluZGV4IDE0MmQ1OTg2NmU2YWM4NTgyYzI0OTM4MmQx
NTdkZDU2YjVmOGQ3NjcuLjAxYWE4Y2Y3Zjg1OTEwNTg1NjI0OTZkZmMzMjY4NWY2YTk1NWU0YTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJl
YW1Tb3VyY2UuaAorKysgYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1lZGlh
U3RyZWFtU291cmNlLmgKQEAgLTUwLDYgKzUwLDEyIEBAIHB1YmxpYzoKICAgICAgICAgVHlwZVZp
ZGVvCiAgICAgfTsKIAorICAgIGVudW0gUmVhZHlTdGF0ZSB7CisgICAgICAgIFJlYWR5U3RhdGVM
aXZlID0gMCwKKyAgICAgICAgUmVhZHlTdGF0ZU11dGVkID0gMSwKKyAgICAgICAgUmVhZHlTdGF0
ZUVuZGVkID0gMgorICAgIH07CisKICAgICBXZWJNZWRpYVN0cmVhbVNvdXJjZSgpIHsgfQogICAg
IFdlYk1lZGlhU3RyZWFtU291cmNlKGNvbnN0IFdlYk1lZGlhU3RyZWFtU291cmNlJiBvdGhlcikg
eyBhc3NpZ24ob3RoZXIpOyB9CiAgICAgfldlYk1lZGlhU3RyZWFtU291cmNlKCkgeyByZXNldCgp
OyB9CkBAIC03MCw2ICs3Niw5IEBAIHB1YmxpYzoKICAgICBXRUJLSVRfRVhQT1JUIFR5cGUgdHlw
ZSgpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIG5hbWUoKSBjb25zdDsKIAor
ICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzZXRSZWFkeVN0YXRlKFJlYWR5U3RhdGUpOworICAgIFdF
QktJVF9FWFBPUlQgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7CisKICNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KICAgICBXZWJNZWRpYVN0cmVhbVNvdXJjZShjb25zdCBXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U+Jik7CiAgICAgV2ViTWVkaWFTdHJlYW1T
b3VyY2UmIG9wZXJhdG9yPShXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZSopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggOTY5OGQ2ZjU4MGIwNDhmYzVjZmNjYzYyZGM5NjM4NGZl
YTMyZWZlYi4uODczYWNiY2Q5ZTA5YmVhNDYwYWVjODc3YTFlZWQ3ZmI0MjVhMmFmZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0zNTM1LDYgKzM1MzUsNyBAQCB3ZWJjb3JlX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtQ2VudGVyLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtQ29tcG9uZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtRGVzY3JpcHRvci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlc1F1ZXJ5Q2xpZW50LmggXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uMDBIYW5kbGVyLmNw
cCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0uY3BwCmluZGV4IGU0ZWZjNDliN2RkZmUyOWIxMDM5ZTJlNDk4OTg5NTRhMjJjOGJmYTkuLmNl
OGUyNjU1ZWU3ZjIzMzM5YWM5ZDlmZDRkMTg3ZGVjNDkxOTczY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCkBAIC05NCwxNCAr
OTQsMTQgQEAgTWVkaWFTdHJlYW06Ok1lZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0KICAgICBzaXplX3QgbnVtYmVyT2ZBdWRp
b1RyYWNrcyA9IG1fZGVzY3JpcHRvci0+bnVtYmVyT2ZBdWRpb0NvbXBvbmVudHMoKTsKICAgICBh
dWRpb1RyYWNrVmVjdG9yLnJlc2VydmVDYXBhY2l0eShudW1iZXJPZkF1ZGlvVHJhY2tzKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mQXVkaW9UcmFja3M7IGkrKykKLSAgICAg
ICAgYXVkaW9UcmFja1ZlY3Rvci5hcHBlbmQoTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKG1fZGVz
Y3JpcHRvciwgbV9kZXNjcmlwdG9yLT5hdWRpb0NvbXBvbmVudChpKSkpOworICAgICAgICBhdWRp
b1RyYWNrVmVjdG9yLmFwcGVuZChNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoY29udGV4dCwgbV9k
ZXNjcmlwdG9yLCBtX2Rlc2NyaXB0b3ItPmF1ZGlvQ29tcG9uZW50KGkpKSk7CiAgICAgbV9hdWRp
b1RyYWNrcyA9IE1lZGlhU3RyZWFtVHJhY2tMaXN0OjpjcmVhdGUodGhpcywgYXVkaW9UcmFja1Zl
Y3Rvcik7CiAKICAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIHZpZGVvVHJhY2tWZWN0b3I7CiAg
ICAgc2l6ZV90IG51bWJlck9mVmlkZW9UcmFja3MgPSBtX2Rlc2NyaXB0b3ItPm51bWJlck9mVmlk
ZW9Db21wb25lbnRzKCk7CiAgICAgdmlkZW9UcmFja1ZlY3Rvci5yZXNlcnZlQ2FwYWNpdHkobnVt
YmVyT2ZWaWRlb1RyYWNrcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlZp
ZGVvVHJhY2tzOyBpKyspCi0gICAgICAgIHZpZGVvVHJhY2tWZWN0b3IuYXBwZW5kKE1lZGlhU3Ry
ZWFtVHJhY2s6OmNyZWF0ZShtX2Rlc2NyaXB0b3IsIG1fZGVzY3JpcHRvci0+dmlkZW9Db21wb25l
bnQoaSkpKTsKKyAgICAgICAgdmlkZW9UcmFja1ZlY3Rvci5hcHBlbmQoTWVkaWFTdHJlYW1UcmFj
azo6Y3JlYXRlKGNvbnRleHQsIG1fZGVzY3JpcHRvciwgbV9kZXNjcmlwdG9yLT52aWRlb0NvbXBv
bmVudChpKSkpOwogICAgIG1fdmlkZW9UcmFja3MgPSBNZWRpYVN0cmVhbVRyYWNrTGlzdDo6Y3Jl
YXRlKHRoaXMsIHZpZGVvVHJhY2tWZWN0b3IpOwogfQogCkBAIC0xNTEsNyArMTUxLDcgQEAgRXZl
bnRUYXJnZXREYXRhKiBNZWRpYVN0cmVhbTo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKIAogdm9p
ZCBNZWRpYVN0cmVhbTo6YWRkVHJhY2soTWVkaWFTdHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCkK
IHsKLSAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2sgPSBNZWRpYVN0cmVhbVRyYWNr
OjpjcmVhdGUobV9kZXNjcmlwdG9yLCBjb21wb25lbnQpOworICAgIFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrPiB0cmFjayA9IE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIG1fZGVzY3JpcHRvciwgY29tcG9uZW50KTsKICAgICBFeGNlcHRpb25Db2RlIGVj
ID0gMDsKICAgICBzd2l0Y2ggKGNvbXBvbmVudC0+c291cmNlKCktPnR5cGUoKSkgewogICAgIGNh
c2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVBdWRpbzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCmluZGV4IGYyMjc3
NDk2YzEzNjE1ZDk5NGEzZGE2NWY1YzVmNWE1MmEzMGMwNjguLmZhMDcxZmVmMjliZTliYTM0OWYy
NTNjMmE3MmI4ZTBmODBhNjU2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcApAQCAtMjgsMjQgKzI4LDMxIEBA
CiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNs
dWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ29tcG9uZW50
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNr
PiBNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0
b3I+IHN0cmVhbURlc2NyaXB0b3IsIE1lZGlhU3RyZWFtQ29tcG9uZW50KiBjb21wb25lbnQpCitQ
YXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3Jp
cHRvcj4gc3RyZWFtRGVzY3JpcHRvciwgTWVkaWFTdHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtVHJhY2soc3RyZWFtRGVzY3Jp
cHRvciwgY29tcG9uZW50KSk7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0g
YWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtVHJhY2soY29udGV4dCwgc3RyZWFtRGVzY3JpcHRvciwg
Y29tcG9uZW50KSk7CisgICAgdHJhY2stPnN1c3BlbmRJZk5lZWRlZCgpOworICAgIHJldHVybiB0
cmFjay5yZWxlYXNlKCk7CiB9CiAKLU1lZGlhU3RyZWFtVHJhY2s6Ok1lZGlhU3RyZWFtVHJhY2so
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IHN0cmVhbURlc2NyaXB0b3IsIE1lZGlh
U3RyZWFtQ29tcG9uZW50KiBjb21wb25lbnQpCi0gICAgOiBtX3N0cmVhbURlc2NyaXB0b3Ioc3Ry
ZWFtRGVzY3JpcHRvcikKK01lZGlhU3RyZWFtVHJhY2s6Ok1lZGlhU3RyZWFtVHJhY2soU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0
b3I+IHN0cmVhbURlc2NyaXB0b3IsIE1lZGlhU3RyZWFtQ29tcG9uZW50KiBjb21wb25lbnQpCisg
ICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwgdGhpcykKKyAgICAsIG1fc3RvcHBlZChmYWxz
ZSkKKyAgICAsIG1fc3RyZWFtRGVzY3JpcHRvcihzdHJlYW1EZXNjcmlwdG9yKQogICAgICwgbV9j
b21wb25lbnQoY29tcG9uZW50KQogeworICAgIG1fY29tcG9uZW50LT5zb3VyY2UoKS0+YWRkT2Jz
ZXJ2ZXIodGhpcyk7CiB9CiAKIE1lZGlhU3RyZWFtVHJhY2s6On5NZWRpYVN0cmVhbVRyYWNrKCkK
IHsKKyAgICBtX2NvbXBvbmVudC0+c291cmNlKCktPnJlbW92ZU9ic2VydmVyKHRoaXMpOwogfQog
CiBTdHJpbmcgTWVkaWFTdHJlYW1UcmFjazo6a2luZCgpIGNvbnN0CkBAIC03Niw3ICs4Myw3IEBA
IGJvb2wgTWVkaWFTdHJlYW1UcmFjazo6ZW5hYmxlZCgpIGNvbnN0CiAKIHZvaWQgTWVkaWFTdHJl
YW1UcmFjazo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCiB7Ci0gICAgaWYgKGVuYWJsZWQgPT0g
bV9jb21wb25lbnQtPmVuYWJsZWQoKSkKKyAgICBpZiAobV9zdG9wcGVkIHx8IGVuYWJsZWQgPT0g
bV9jb21wb25lbnQtPmVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9jb21wb25l
bnQtPnNldEVuYWJsZWQoZW5hYmxlZCk7CkBAIC04NywxMSArOTQsNzIgQEAgdm9pZCBNZWRpYVN0
cmVhbVRyYWNrOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBNZWRpYVN0cmVhbUNlbnRl
cjo6aW5zdGFuY2UoKS5kaWRTZXRNZWRpYVN0cmVhbVRyYWNrRW5hYmxlZChtX3N0cmVhbURlc2Ny
aXB0b3IuZ2V0KCksIG1fY29tcG9uZW50LmdldCgpKTsKIH0KIAorTWVkaWFTdHJlYW1UcmFjazo6
UmVhZHlTdGF0ZSBNZWRpYVN0cmVhbVRyYWNrOjpyZWFkeVN0YXRlKCkgY29uc3QKK3sKKyAgICBp
ZiAobV9zdG9wcGVkKQorICAgICAgICByZXR1cm4gRU5ERUQ7CisKKyAgICBzd2l0Y2ggKG1fY29t
cG9uZW50LT5zb3VyY2UoKS0+cmVhZHlTdGF0ZSgpKSB7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNv
dXJjZTo6UmVhZHlTdGF0ZUxpdmU6CisgICAgICAgIHJldHVybiBMSVZFOworICAgIGNhc2UgTWVk
aWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGVNdXRlZDoKKyAgICAgICAgcmV0dXJuIE1VVEVEOwor
ICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGVFbmRlZDoKKyAgICAgICAgcmV0
dXJuIEVOREVEOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVy
biBFTkRFRDsKK30KKwordm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VDaGFuZ2VkU3RhdGUo
KQoreworICAgIGlmIChtX3N0b3BwZWQpCisgICAgICAgIHJldHVybjsKKworICAgIHN3aXRjaCAo
bV9jb21wb25lbnQtPnNvdXJjZSgpLT5yZWFkeVN0YXRlKCkpIHsKKyAgICBjYXNlIE1lZGlhU3Ry
ZWFtU291cmNlOjpSZWFkeVN0YXRlTGl2ZToKKyAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS51bm11dGVFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGVNdXRlZDoKKyAg
ICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5tdXRlRXZlbnQs
IGZhbHNlLCBmYWxzZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291
cmNlOjpSZWFkeVN0YXRlRW5kZWQ6CisgICAgICAgIGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkuZW5kZWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KK30KKwogTWVkaWFTdHJlYW1Db21wb25lbnQqIE1lZGlhU3RyZWFtVHJhY2s6OmNv
bXBvbmVudCgpCiB7CiAgICAgcmV0dXJuIG1fY29tcG9uZW50LmdldCgpOwogfQogCit2b2lkIE1l
ZGlhU3RyZWFtVHJhY2s6OnN0b3AoKQoreworICAgIG1fc3RvcHBlZCA9IHRydWU7Cit9CisKK2Nv
bnN0IEF0b21pY1N0cmluZyYgTWVkaWFTdHJlYW1UcmFjazo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JNZWRpYVN0cmVhbVRyYWNr
OworfQorCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBNZWRpYVN0cmVhbVRyYWNrOjpzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0Ojpz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogTWVkaWFTdHJl
YW1UcmFjazo6ZXZlbnRUYXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXRE
YXRhOworfQorCitFdmVudFRhcmdldERhdGEqIE1lZGlhU3RyZWFtVHJhY2s6OmVuc3VyZUV2ZW50
VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrLmgKaW5kZXggYzQ1YmUxOGM3NGNhOGM0ZGY1NDcwZTJlMDk0NWM3ZWY3YmE5M2NiZi4uNzI0
YTEyMGRjYjMzYWYwNzk4NmVhOGNiZDcxMzA2YTk4Y2FiYzgyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgKQEAgLTI4
LDcgKzI4LDEwIEBACiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCisjaW5jbHVkZSAiQWN0
aXZlRE9NT2JqZWN0LmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJNZWRp
YVN0cmVhbURlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC0zOCw5ICs0MSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIE1lZGlhU3RyZWFtQ29tcG9uZW50OwogCi1jbGFzcyBNZWRpYVN0cmVhbVRy
YWNrIDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFjaz4geworY2xhc3MgTWVkaWFT
dHJlYW1UcmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2s+LCBwdWJsaWMg
QWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBNZWRpYVN0cmVhbVNv
dXJjZTo6T2JzZXJ2ZXIgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4sIE1lZGlh
U3RyZWFtQ29tcG9uZW50Kik7CisgICAgZW51bSBSZWFkeVN0YXRlIHsKKyAgICAgICAgTElWRSA9
IDAsCisgICAgICAgIE1VVEVEID0gMSwKKyAgICAgICAgRU5ERUQgPSAyCisgICAgfTsKKworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+LCBNZWRpYVN0cmVh
bUNvbXBvbmVudCopOwogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtVHJhY2soKTsKIAogICAgIFN0
cmluZyBraW5kKCkgY29uc3Q7CkBAIC00OSwxMSArNTgsMzggQEAgcHVibGljOgogICAgIGJvb2wg
ZW5hYmxlZCgpIGNvbnN0OwogICAgIHZvaWQgc2V0RW5hYmxlZChib29sKTsKIAorICAgIFJlYWR5
U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0OworCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUihtdXRlKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHVubXV0
ZSk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihlbmRlZCk7CisKICAgICBN
ZWRpYVN0cmVhbUNvbXBvbmVudCogY29tcG9uZW50KCk7CiAKKyAgICAvLyBFdmVudFRhcmdldAor
ICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREU7CisKKyAgICAvLyBBY3RpdmVET01PYmplY3QKKyAg
ICB2aXJ0dWFsIHZvaWQgc3RvcCgpIE9WRVJSSURFOworCisgICAgdXNpbmcgUmVmQ291bnRlZDxN
ZWRpYVN0cmVhbVRyYWNrPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1U
cmFjaz46OmRlcmVmOworCiBwcml2YXRlOgotICAgIE1lZGlhU3RyZWFtVHJhY2soUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+LCBNZWRpYVN0cmVhbUNvbXBvbmVudCopOworICAgIE1l
ZGlhU3RyZWFtVHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8TWVkaWFT
dHJlYW1EZXNjcmlwdG9yPiwgTWVkaWFTdHJlYW1Db21wb25lbnQqKTsKKworICAgIC8vIEV2ZW50
VGFyZ2V0CisgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIE9W
RVJSSURFOworICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERh
dGEoKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklE
RSB7IHJlZigpOyB9CisgICAgdmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklE
RSB7IGRlcmVmKCk7IH0KKyAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7CisK
KyAgICAvLyBNZWRpYVN0cmVhbVNvdXJjZU9ic2VydmVyCisgICAgdmlydHVhbCB2b2lkIHNvdXJj
ZUNoYW5nZWRTdGF0ZSgpIE9WRVJSSURFOwogCisgICAgYm9vbCBtX3N0b3BwZWQ7CiAgICAgUmVm
UHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gbV9zdHJlYW1EZXNjcmlwdG9yOwogICAgIFJlZlB0
cjxNZWRpYVN0cmVhbUNvbXBvbmVudD4gbV9jb21wb25lbnQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwKaW5k
ZXggNzk4NzU5NzVlOTE3Y2JlNmVmOTkzMTgyOGQ1OGMxYzk2OWY4ZWRlYi4uMDViODk3Mzg0NGZh
NTdmMzZmZjA0ODk4YzdmNGZhZWE3MmJlZGFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsCkBAIC0yNiwxMCAr
MjYsMzAgQEAgbW9kdWxlIGNvcmUgewogCiAgICAgaW50ZXJmYWNlIFsKICAgICAgICAgQ29uZGl0
aW9uYWw9TUVESUFfU1RSRUFNLAorICAgICAgICBFdmVudFRhcmdldAogICAgIF0gTWVkaWFTdHJl
YW1UcmFjayB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcga2luZDsKICAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBsYWJlbDsKICAgICAgICAgICAgICAg
ICAgYXR0cmlidXRlIGJvb2xlYW4gZW5hYmxlZDsKKworICAgICAgICBjb25zdCB1bnNpZ25lZCBz
aG9ydCBMSVZFID0gMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTVVURUQgPSAxOwor
ICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBFTkRFRCA9IDI7CisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZWFkeVN0YXRlOworCisgICAgICAgIGF0dHJpYnV0
ZSBFdmVudExpc3RlbmVyIG9ubXV0ZTsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIg
b251bm11dGU7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZW5kZWQ7CisKKyAg
ICAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCisgICAgICAgIHZvaWQgYWRkRXZlbnRMaXN0
ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
IEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIHZvaWQgcmVtb3ZlRXZl
bnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIGJv
b2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldmVudCkKKyAgICAgICAgICAgIHJhaXNlcyhF
dmVudEV4Y2VwdGlvbik7CiAgICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGUyODY2MTVh
OWQ4MDc3ZmUwOTZmZGZhMDMzMjhmZjZjYmIzZmVkZDUuLjdlZWQzNmJhNTc2ZTYxZDU0MTlmNDlk
MDk0YmNmZjE0NTkwY2Q0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTQ0OCw2ICs0NDgsNyBAQAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ2VudGVyLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29tcG9uZW50Lmgn
LAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRv
ci5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJj
ZS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291
cmNlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
MDBIYW5kbGVyLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL21lZGlhc3RyZWFtL1BlZXJDb25u
ZWN0aW9uMDBIYW5kbGVyQ2xpZW50LmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKaW5kZXggODM2
ZTYzMDhiMGRhY2Y5ZGIxZjc3NWZmZjI5MzRmMWI3NmRmYzE4YS4uM2ZjNmNlNTY5ODc5Zjg0ZGFl
YzA3NTI3MzliMTQyODEwMmJjYWZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCkBAIC0yMTcs
NiArMjE3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIG1hY3JvKHJlbW92ZXN0cmVhbSkg
XAogICAgIG1hY3JvKHN0YXRlY2hhbmdlKSBcCiAgICAgbWFjcm8ocmVtb3ZldHJhY2spIFwKKyAg
ICBtYWNybyhtdXRlKSBcCisgICAgbWFjcm8odW5tdXRlKSBcCiAgICAgXAogICAgIG1hY3JvKHNo
b3cpIFwKICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRG
YWN0b3J5LmluIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgppbmRl
eCA4MjE3MTdiMGQ3ZmU3NjUzYWFmM2Y2NWRhMzVlYThlZjk1YmQwNGU0Li5jNTU4Y2Q1MzFmOTY1
ZjMwM2VlYzRmYjZjOTU3NTIwM2FjMTk3MjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRh
cmdldEZhY3RvcnkuaW4KQEAgLTE3LDYgKzE3LDcgQEAgSmF2YVNjcmlwdEF1ZGlvTm9kZSBjb25k
aXRpb25hbD1XRUJfQVVESU8KIExvY2FsTWVkaWFTdHJlYW0gY29uZGl0aW9uYWw9TUVESUFfU1RS
RUFNCiBNZWRpYUNvbnRyb2xsZXIgY29uZGl0aW9uYWw9VklERU8KIE1lZGlhU3RyZWFtIGNvbmRp
dGlvbmFsPU1FRElBX1NUUkVBTQorTWVkaWFTdHJlYW1UcmFjayBjb25kaXRpb25hbD1NRURJQV9T
VFJFQU0KIE1lZGlhU3RyZWFtVHJhY2tMaXN0IGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQogTWVz
c2FnZVBvcnQKIE5ldHdvcmtJbmZvQ29ubmVjdGlvbiBjb25kaXRpb25hbD1ORVRXT1JLX0lORk8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2Vi
TWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcAppbmRleCA4ZTdhM2E3ZTIy
NTdiNjE2YjQzYzI0NDFiZThiMWYwZDE4N2VjZDFkLi4zNmNjZTc0MzkxMzk1YjYwZGUzZjg3MDA3
MjgyODFkZTUzMmVkMTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9zdXBwb3J0L1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3Iu
Y3BwCkBAIC05MSwyMCArOTEsNiBAQCB2b2lkIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6c2V0
RXh0cmFEYXRhKEV4dHJhRGF0YSogZXh0cmFEYXRhKQogICAgIG1fcHJpdmF0ZS0+c2V0RXh0cmFE
YXRhKGFkb3B0UmVmKG5ldyBFeHRyYURhdGFDb250YWluZXIoZXh0cmFEYXRhKSkpOwogfQogCi0v
LyBGSVhNRTogQ2xlYW51cCB3aGVuIHRoZSBjaHJvbWl1bSBjb2RlIGhhcyBzd2l0Y2hlZCB0byB0
aGUgc3BsaXQgc291cmNlcyBpbXBsZW1lbnRhdGlvbi4KLXZvaWQgV2ViTWVkaWFTdHJlYW1EZXNj
cmlwdG9yOjpzb3VyY2VzKFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mIHdlYlNvdXJj
ZXMpIGNvbnN0Ci17Ci0gICAgc2l6ZV90IG51bWJlck9mQXVkaW9Tb3VyY2VzID0gbV9wcml2YXRl
LT5udW1iZXJPZkF1ZGlvQ29tcG9uZW50cygpOwotICAgIHNpemVfdCBudW1iZXJPZlZpZGVvU291
cmNlcyA9IG1fcHJpdmF0ZS0+bnVtYmVyT2ZWaWRlb0NvbXBvbmVudHMoKTsKLSAgICBXZWJWZWN0
b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+IHJlc3VsdChudW1iZXJPZkF1ZGlvU291cmNlcyArIG51
bWJlck9mVmlkZW9Tb3VyY2VzKTsKLSAgICBzaXplX3QgaSA9IDA7Ci0gICAgZm9yIChzaXplX3Qg
aiA9IDA7IGogPCBudW1iZXJPZkF1ZGlvU291cmNlczsgKytpLCArK2opCi0gICAgICAgIHJlc3Vs
dFtpXSA9IG1fcHJpdmF0ZS0+YXVkaW9Db21wb25lbnQoaiktPnNvdXJjZSgpOwotICAgIGZvciAo
c2l6ZV90IGogPSAwOyBqIDwgbnVtYmVyT2ZWaWRlb1NvdXJjZXM7ICsraSwgKytqKQotICAgICAg
ICByZXN1bHRbaV0gPSBtX3ByaXZhdGUtPnZpZGVvQ29tcG9uZW50KGopLT5zb3VyY2UoKTsKLSAg
ICB3ZWJTb3VyY2VzLnN3YXAocmVzdWx0KTsKLX0KLQogdm9pZCBXZWJNZWRpYVN0cmVhbURlc2Ny
aXB0b3I6OmF1ZGlvU291cmNlcyhXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Db21wb25lbnQ+JiB3
ZWJTb3VyY2VzKSBjb25zdAogewogICAgIHNpemVfdCBudW1iZXJPZlNvdXJjZXMgPSBtX3ByaXZh
dGUtPm51bWJlck9mQXVkaW9Db21wb25lbnRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhU3RyZWFtU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3Vy
Y2UuY3BwCmluZGV4IDNmODc3ZjU0YzczMGYwNTY3MWEwOGViNDZjODIxMTY3NzExMmQwZjIuLjcw
ZWY3MDgwOTk0YTY3MDBkN2QwMDM5NDM0N2RmYjZhOWRkN2E0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVk
aWFTdHJlYW1Tb3VyY2UuY3BwCkBAIC05Niw2ICs5NiwxOCBAQCBXZWJTdHJpbmcgV2ViTWVkaWFT
dHJlYW1Tb3VyY2U6Om5hbWUoKSBjb25zdAogICAgIHJldHVybiBtX3ByaXZhdGUuZ2V0KCktPm5h
bWUoKTsKIH0KIAordm9pZCBXZWJNZWRpYVN0cmVhbVNvdXJjZTo6c2V0UmVhZHlTdGF0ZShSZWFk
eVN0YXRlIHN0YXRlKQoreworICAgIEFTU0VSVCghbV9wcml2YXRlLmlzTnVsbCgpKTsKKyAgICBt
X3ByaXZhdGUtPnNldFJlYWR5U3RhdGUoc3RhdGljX2Nhc3Q8TWVkaWFTdHJlYW1Tb3VyY2U6OlJl
YWR5U3RhdGU+KHN0YXRlKSk7Cit9CisKK1dlYk1lZGlhU3RyZWFtU291cmNlOjpSZWFkeVN0YXRl
IFdlYk1lZGlhU3RyZWFtU291cmNlOjpyZWFkeVN0YXRlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
IW1fcHJpdmF0ZS5pc051bGwoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlYWR5U3RhdGU+
KG1fcHJpdmF0ZS0+cmVhZHlTdGF0ZSgpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE3MjA0ODdkYzEyNTRhNGMyMzQyNGNiMTAwMWVhZjYyOWM5Mjg1MWQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNv
dXJjZS5jcHAKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRy
aWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bhc3NSZWZQdHI8TWVkaWFTdHJlYW1Tb3VyY2U+
IE1lZGlhU3RyZWFtU291cmNlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSB0eXBlLCBj
b25zdCBTdHJpbmcmIG5hbWUsIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtU291cmNlKGlkLCB0eXBlLCBuYW1lLCByZWFkeVN0YXRl
KSk7Cit9CisKK01lZGlhU3RyZWFtU291cmNlOjpNZWRpYVN0cmVhbVNvdXJjZShjb25zdCBTdHJp
bmcmIGlkLCBUeXBlIHR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUmVhZHlTdGF0ZSByZWFkeVN0
YXRlKQorICAgIDogbV9pZChpZCkKKyAgICAsIG1fdHlwZSh0eXBlKQorICAgICwgbV9uYW1lKG5h
bWUpCisgICAgLCBtX3JlYWR5U3RhdGUocmVhZHlTdGF0ZSkKK3sKK30KKwordm9pZCBNZWRpYVN0
cmVhbVNvdXJjZTo6c2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlIHJlYWR5U3RhdGUpCit7CisgICAg
QVNTRVJUKG1fcmVhZHlTdGF0ZSAhPSBSZWFkeVN0YXRlRW5kZWQpOworICAgIGlmIChtX3JlYWR5
U3RhdGUgIT0gcmVhZHlTdGF0ZSkgeworICAgICAgICBtX3JlYWR5U3RhdGUgPSByZWFkeVN0YXRl
OworICAgICAgICBmb3IgKFZlY3RvcjxPYnNlcnZlcio+OjppdGVyYXRvciBpID0gbV9vYnNlcnZl
cnMuYmVnaW4oKTsgaSAhPSBtX29ic2VydmVycy5lbmQoKTsgKytpKQorICAgICAgICAgICAgKCpp
KS0+c291cmNlQ2hhbmdlZFN0YXRlKCk7CisgICAgfQorfQorCit2b2lkIE1lZGlhU3RyZWFtU291
cmNlOjphZGRPYnNlcnZlcihNZWRpYVN0cmVhbVNvdXJjZTo6T2JzZXJ2ZXIqIG9ic2VydmVyKQor
eworICAgIG1fb2JzZXJ2ZXJzLmFwcGVuZChvYnNlcnZlcik7Cit9CisKK3ZvaWQgTWVkaWFTdHJl
YW1Tb3VyY2U6OnJlbW92ZU9ic2VydmVyKE1lZGlhU3RyZWFtU291cmNlOjpPYnNlcnZlciogb2Jz
ZXJ2ZXIpCit7CisgICAgc2l6ZV90IHBvcyA9IG1fb2JzZXJ2ZXJzLmZpbmQob2JzZXJ2ZXIpOwor
ICAgIGlmIChwb3MgIT0gbm90Rm91bmQpCisgICAgICAgIG1fb2JzZXJ2ZXJzLnJlbW92ZShwb3Mp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFf
U1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1Tb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtU291cmNlLmgKaW5kZXggNzYzNGU0MGE1ODI5Yjk5ODg2ZWJjYTNjZDU4MmNi
ZTgwOTQ3MDJjOC4uYzQ1YjU3MTQyMTQzNDRhNDQ3ODU5NTU1MzE2ZDlmZjJkMTdjOGFiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1T
b3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVNvdXJjZS5oCkBAIC00MSwzNiArNDEsNDMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBNZWRpYVN0cmVhbVNvdXJjZSA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtU291
cmNlPiB7CiBwdWJsaWM6CisgICAgY2xhc3MgT2JzZXJ2ZXIgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIHNvdXJjZUNo
YW5nZWRTdGF0ZSgpID0gMDsKKyAgICB9OworCiAgICAgZW51bSBUeXBlIHsKICAgICAgICAgVHlw
ZUF1ZGlvLAogICAgICAgICBUeXBlVmlkZW8KICAgICB9OwogCi0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1Tb3VyY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGlkLCBUeXBlIHR5cGUs
IGNvbnN0IFN0cmluZyYgbmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
TWVkaWFTdHJlYW1Tb3VyY2UoaWQsIHR5cGUsIG5hbWUpKTsKLSAgICB9CisgICAgZW51bSBSZWFk
eVN0YXRlIHsKKyAgICAgICAgUmVhZHlTdGF0ZUxpdmUgPSAwLAorICAgICAgICBSZWFkeVN0YXRl
TXV0ZWQgPSAxLAorICAgICAgICBSZWFkeVN0YXRlRW5kZWQgPSAyCisgICAgfTsKKworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBp
ZCwgVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBSZWFkeVN0YXRlID0gUmVhZHlTdGF0ZUxpdmUp
OwogCiAgICAgY29uc3QgU3RyaW5nJiBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KICAgICBU
eXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KICAgICBjb25zdCBTdHJpbmcmIG5h
bWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KIAotICAgIGJvb2wgbXV0ZWQoKSBjb25zdCB7
IHJldHVybiBtX211dGVkOyB9Ci0gICAgdm9pZCBzZXRNdXRlZChib29sIG11dGVkKSB7IG1fbXV0
ZWQgPSBtdXRlZDsgfQorICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShSZWFkeVN0YXRlKTsKKyAgICBS
ZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3JlYWR5U3RhdGU7IH0KKwor
ICAgIHZvaWQgYWRkT2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKKyAgICB2b2lkIHJlbW92ZU9ic2VydmVy
KE9ic2VydmVyKik7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFTdHJlYW1Tb3VyY2UoY29uc3QgU3Ry
aW5nJiBpZCwgVHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUpCi0gICAgICAgIDogbV9pZChp
ZCkKLSAgICAgICAgLCBtX3R5cGUodHlwZSkKLSAgICAgICAgLCBtX25hbWUobmFtZSkKLSAgICAg
ICAgLCBtX211dGVkKGZhbHNlKQotICAgIHsKLSAgICB9CisgICAgTWVkaWFTdHJlYW1Tb3VyY2Uo
Y29uc3QgU3RyaW5nJiBpZCwgVHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBSZWFkeVN0YXRlKTsK
IAogICAgIFN0cmluZyBtX2lkOwogICAgIFR5cGUgbV90eXBlOwogICAgIFN0cmluZyBtX25hbWU7
Ci0gICAgYm9vbCBtX211dGVkOworICAgIFJlYWR5U3RhdGUgbV9yZWFkeVN0YXRlOworICAgIFZl
Y3RvcjxPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOwogfTsKIAogdHlwZWRlZiBWZWN0b3I8UmVmUHRy
PE1lZGlhU3RyZWFtU291cmNlPiA+IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vTWVkaWFTdHJl
YW1DZW50ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9jaHJvbWl1bS9NZWRpYVN0cmVhbUNlbnRlckNocm9taXVtLmNwcAppbmRleCAzYzgyZjVmOGJk
MWU2ODAxYzZkMzVjZTI3NTc4MTk5ZjA3Nzk0ODkzLi45MjU4MDc0NDIwYTgwZTM1ZDIzYzQ0NjQx
ZmIwMzFmNGEzMDdjMzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9jaHJvbWl1bS9NZWRpYVN0cmVhbUNlbnRlckNocm9taXVtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9jaHJvbWl1bS9NZWRpYVN0cmVhbUNlbnRl
ckNocm9taXVtLmNwcApAQCAtNjgsOSArNjgsMTIgQEAgTWVkaWFTdHJlYW1DZW50ZXJDaHJvbWl1
bTo6fk1lZGlhU3RyZWFtQ2VudGVyQ2hyb21pdW0oKQogCiB2b2lkIE1lZGlhU3RyZWFtQ2VudGVy
Q2hyb21pdW06OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1T
b3VyY2VzUXVlcnlDbGllbnQ+IGNsaWVudCkKIHsKLSAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMg
InNob3J0LWNpcmN1aXQiIGFuZCBmb3J3YXJkIHRvIG1fcHJpdmF0ZSB3aGVuIENocm9tZSBhbmQg
RHVtcFJlbmRlclRyZWUgaGFzIGltcGxlbWVudGVkIFdlYk1lZGlhU3RyZWFtQ2VudGVyLgotICAg
IE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzOwotICAg
IGNsaWVudC0+ZGlkQ29tcGxldGVRdWVyeShhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7Cisg
ICAgaWYgKG1fcHJpdmF0ZSkKKyAgICAgICAgbV9wcml2YXRlLT5xdWVyeU1lZGlhU3RyZWFtU291
cmNlcyhjbGllbnQpOworICAgIGVsc2UgeworICAgICAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3Rv
ciBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlczsKKyAgICAgICAgY2xpZW50LT5kaWRDb21wbGV0
ZVF1ZXJ5KGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKTsKKyAgICB9CiB9CiAKIHZvaWQgTWVk
aWFTdHJlYW1DZW50ZXJDaHJvbWl1bTo6ZGlkU2V0TWVkaWFTdHJlYW1UcmFja0VuYWJsZWQoTWVk
aWFTdHJlYW1EZXNjcmlwdG9yKiBzdHJlYW0sICBNZWRpYVN0cmVhbUNvbXBvbmVudCogY29tcG9u
ZW50KQpAQCAtMTAwLDkgKzEwMyw2IEBAIHZvaWQgTWVkaWFTdHJlYW1DZW50ZXJDaHJvbWl1bTo6
ZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oTWVkaWFTdHJlYW1EZXNjcmlwdG9yKiBzCiB2b2lkIE1l
ZGlhU3RyZWFtQ2VudGVyQ2hyb21pdW06OmRpZENyZWF0ZU1lZGlhU3RyZWFtKE1lZGlhU3RyZWFt
RGVzY3JpcHRvciogc3RyZWFtKQogewogICAgIGlmIChtX3ByaXZhdGUpIHsKLSAgICAgICAgLy8g
RklYTUU6IFJlbW92ZSB3aGVuIENocm9taXVtIGhhdmUgc3dpdGNoZWQgdG8gdGhlIG5ldyBBUEku
Ci0gICAgICAgIG1fcHJpdmF0ZS0+ZGlkQ29uc3RydWN0TWVkaWFTdHJlYW0oc3RyZWFtKTsKLQog
ICAgICAgICBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciB3ZWJTdHJlYW0oc3RyZWFt
KTsKICAgICAgICAgbV9wcml2YXRlLT5kaWRDcmVhdGVNZWRpYVN0cmVhbSh3ZWJTdHJlYW0pOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNo
aW5nRW51bXMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdF
bnVtcy5jcHAKaW5kZXggNzg5ZDFiNjIzN2IxYWZiOTQ5OTNhNThiMTllNDAzNWJjMmVhYjhhMC4u
NWYyNTAzNTFhOWU5MjAxOTE5MTdlMTRiOGJmZWNhZjdjNDFiN2VlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKQEAgLTUzNyw2
ICs1MzcsOSBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlBhZ2VWaXNpYmlsaXR5
U3RhdGVQcmV2aWV3LCBQYWdlVmlzaWJpbGl0eVN0YXRlUAogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhU3RyZWFtU291cmNlOjpU
eXBlQXVkaW8sIE1lZGlhU3RyZWFtU291cmNlOjpUeXBlQXVkaW8pOwogQ09NUElMRV9BU1NFUlRf
TUFUQ0hJTkdfRU5VTShXZWJNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvLCBNZWRpYVN0cmVh
bVNvdXJjZTo6VHlwZVZpZGVvKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVk
aWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGVMaXZlLCBNZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlT
dGF0ZUxpdmUpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVN0cmVhbVNv
dXJjZTo6UmVhZHlTdGF0ZU11dGVkLCBNZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZU11dGVk
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OlJl
YWR5U3RhdGVFbmRlZCwgTWVkaWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGVFbmRlZCk7CiAKIENP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSUNFT3B0aW9uczo6Q2FuZGlkYXRlVHlwZUFs
bCwgSWNlT3B0aW9uczo6QUxMKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViSUNF
T3B0aW9uczo6Q2FuZGlkYXRlVHlwZU5vUmVsYXksIEljZU9wdGlvbnM6Ok5PX1JFTEFZKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2OGUwM2U3
ZTY3ZDE2MGZjZDMzMTI4NGJiOTMyOTM3NzQ3Y2FjOWZlLi5kZjNjYjdmMWUyZTA5ZjVjYmZmMzA0
ZThhZDc0Zjc2MGFkNTU3MGMxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTItMDctMjAgIFRvbW15IFdpZGVuZmx5
Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBVcGRh
dGUgTWVkaWFTdHJlYW1UcmFjayB0byBtYXRjaCB0aGUgc3BlY2lmaWNhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAxODAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRpbmcgYSBNb2NrIFdlYk1l
ZGlhU3RyZWFtQ2VudGVyIHRvIGVuYWJsZSBiZXR0ZXIgTGF5b3V0VGVzdHMuCisKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL01vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQuY3BwOgorICAgICAgICAo
TW9ja1dlYktpdFBsYXRmb3JtU3VwcG9ydDo6Y3JlYXRlTWVkaWFTdHJlYW1DZW50ZXIpOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJNZWRpYVN0cmVhbUNlbnRlci5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYk1l
ZGlhU3RyZWFtQ2VudGVyOjpNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXIpOgorICAgICAgICAoV2Vi
S2l0OjpNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKToK
KyAgICAgICAgKFdlYktpdDo6TW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpkaWRFbmFibGVNZWRp
YVN0cmVhbVRyYWNrKToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVy
OjpkaWREaXNhYmxlTWVkaWFTdHJlYW1UcmFjayk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJN
ZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0pOgorICAgICAgICAoV2Vi
S2l0OjpNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6OmRpZENyZWF0ZU1lZGlhU3RyZWFtKToKKyAg
ICAgICAgKFdlYktpdDo6TW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpjb25zdHJ1Y3RTRFApOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJNZWRpYVN0cmVhbUNlbnRl
ci5oOiBDb3BpZWQgZnJvbSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViS2l0
UGxhdGZvcm1TdXBwb3J0LmNwcC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChNb2NrV2Vi
TWVkaWFTdHJlYW1DZW50ZXIpOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViTWVkaWFTdHJlYW1D
ZW50ZXI6Ok1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcik6CisKIDIwMTItMDctMjMgIERpcmsgUHJh
bmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGlu
ZyBvdXQgcjEyMzM2MC4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5k
ZXJUcmVlLmd5cGkgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCmlu
ZGV4IGUxMWY0MGVjZDU4NmZhOWYyZGE0ODc3NGVmMjU5ZDliMjlkM2E1ZTkuLjdkZDVhMWVjNmY0
NWM4NDA3NGQ2ZjJhNmRjNGExNzcyMTU1YmZkMzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVt
cFJlbmRlclRyZWUuZ3lwaQpAQCAtMTYsNiArMTYsOCBAQAogICAgICAgICAgICAgJ2Nocm9taXVt
L01vY2tTcGVsbENoZWNrLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJLaXRQbGF0
Zm9ybVN1cHBvcnQuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9Nb2NrV2ViS2l0UGxhdGZv
cm1TdXBwb3J0LmgnLAorICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJNZWRpYVN0cmVhbUNl
bnRlci5jcHAnLAorICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJNZWRpYVN0cmVhbUNlbnRl
ci5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9Nb2NrV2ViUHJlcmVuZGVyaW5nU3VwcG9ydC5j
cHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJQcmVyZW5kZXJpbmdTdXBwb3J0Lmgn
LAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIuY3Bw
JywKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJLaXRQ
bGF0Zm9ybVN1cHBvcnQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dl
YktpdFBsYXRmb3JtU3VwcG9ydC5jcHAKaW5kZXggMjNiNWFhN2RiMTc4NWNhMTNhMmNjZjFkMzMz
YTc0NGRkOTc1NmE5Yi4uMjJjZDRmZTJhYTMyOGMzNTM4MzM2MGViOWU2NjE2M2MwODgwNWIxOSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYktpdFBsYXRm
b3JtU3VwcG9ydC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dl
YktpdFBsYXRmb3JtU3VwcG9ydC5jcHAKQEAgLTMxLDcgKzMxLDkgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJNb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmgiCiAKKyNpbmNsdWRl
ICJNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXIuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CiAKQEAgLTUzLDcgKzU1LDEwIEBAIHZvaWQgTW9ja1dlYktpdFBsYXRmb3JtU3VwcG9ydDo6Y3J5
cHRvZ3JhcGhpY2FsbHlSYW5kb21WYWx1ZXModW5zaWduZWQgY2hhciosIHNpCiAgICAgQ1JBU0go
KTsKIH0KIAotV2ViTWVkaWFTdHJlYW1DZW50ZXIqIE1vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQ6
OmNyZWF0ZU1lZGlhU3RyZWFtQ2VudGVyKFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50KikKK1dl
Yk1lZGlhU3RyZWFtQ2VudGVyKiBNb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0OjpjcmVhdGVNZWRp
YVN0cmVhbUNlbnRlcihXZWJNZWRpYVN0cmVhbUNlbnRlckNsaWVudCogY2xpZW50KQogewotICAg
IHJldHVybiAwOworICAgIGlmICghbV9tb2NrTWVkaWFTdHJlYW1DZW50ZXIpCisgICAgICAgIG1f
bW9ja01lZGlhU3RyZWFtQ2VudGVyID0gYWRvcHRQdHIobmV3IE1vY2tXZWJNZWRpYVN0cmVhbUNl
bnRlcihjbGllbnQpKTsKKworICAgIHJldHVybiBtX21vY2tNZWRpYVN0cmVhbUNlbnRlci5nZXQo
KTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJL
aXRQbGF0Zm9ybVN1cHBvcnQuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tX
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaAppbmRleCA1ZTg5NzdkNTVlMWU2MzU5YTQ0ZTAwM2E2M2Yw
ZTgyMzM2YjYyYTVkLi4yYThjNTkzYjc2OWUyOWUwYzg5MDNjYzQ5ZWYwZmI3YjI0N2M0MTk3IDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViS2l0UGxhdGZv
cm1TdXBwb3J0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYktp
dFBsYXRmb3JtU3VwcG9ydC5oCkBAIC0zMiw2ICszMiw3IEBACiAjZGVmaW5lIE1vY2tXZWJLaXRQ
bGF0Zm9ybVN1cHBvcnRfaAogCiAjaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+CisjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIGNsYXNzIE1v
Y2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQgOiBwdWJsaWMgV2ViS2l0OjpQbGF0Zm9ybSB7CkBAIC00
NSw2ICs0Niw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBNb2NrV2ViS2l0UGxhdGZvcm1T
dXBwb3J0KCk7CisKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNlbnRlcj4gbV9t
b2NrTWVkaWFTdHJlYW1DZW50ZXI7CiB9OwogCiAjZW5kaWYgLy8gTW9ja1dlYktpdFBsYXRmb3Jt
U3VwcG9ydF9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2Nr
V2ViTWVkaWFTdHJlYW1DZW50ZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMGI1NmYxZjFlNDZjMTk1
MmUzZmU3Mzc0YzU4MjllMmMyOWU1ZTMzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyLmNwcApAQCAtMCwwICsx
LDEwNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisj
aW5jbHVkZSAiTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyLmgiCisKKyNpbmNsdWRlICJwbGF0Zm9y
bS9XZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVk
aWFTdHJlYW1DZW50ZXJDbGllbnQuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVh
bUNvbXBvbmVudC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRv
ci5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVk
ZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1Tb3VyY2VzUmVxdWVzdC5oIgorI2luY2x1ZGUgInBs
YXRmb3JtL1dlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJWZWN0b3IuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworTW9ja1dlYk1l
ZGlhU3RyZWFtQ2VudGVyOjpNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXIoV2ViTWVkaWFTdHJlYW1D
ZW50ZXJDbGllbnQqIGNsaWVudCkKK3sKK30KKwordm9pZCBNb2NrV2ViTWVkaWFTdHJlYW1DZW50
ZXI6OnF1ZXJ5TWVkaWFTdHJlYW1Tb3VyY2VzKGNvbnN0IFdlYk1lZGlhU3RyZWFtU291cmNlc1Jl
cXVlc3QmIHJlcXVlc3QpCit7CisgICAgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiBh
dWRpb1NvdXJjZXMsIHZpZGVvU291cmNlczsKKyAgICByZXF1ZXN0LmRpZENvbXBsZXRlUXVlcnko
YXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOworfQorCit2b2lkIE1vY2tXZWJNZWRpYVN0cmVh
bUNlbnRlcjo6ZGlkRW5hYmxlTWVkaWFTdHJlYW1UcmFjayhjb25zdCBXZWJNZWRpYVN0cmVhbURl
c2NyaXB0b3ImLCBjb25zdCBXZWJNZWRpYVN0cmVhbUNvbXBvbmVudCYgY29tcG9uZW50KQorewor
ICAgIGNvbXBvbmVudC5zb3VyY2UoKS5zZXRSZWFkeVN0YXRlKFdlYk1lZGlhU3RyZWFtU291cmNl
OjpSZWFkeVN0YXRlTGl2ZSk7Cit9CisKK3ZvaWQgTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpk
aWREaXNhYmxlTWVkaWFTdHJlYW1UcmFjayhjb25zdCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3Im
LCBjb25zdCBXZWJNZWRpYVN0cmVhbUNvbXBvbmVudCYgY29tcG9uZW50KQoreworICAgIGNvbXBv
bmVudC5zb3VyY2UoKS5zZXRSZWFkeVN0YXRlKFdlYk1lZGlhU3RyZWFtU291cmNlOjpSZWFkeVN0
YXRlTXV0ZWQpOworfQorCit2b2lkIE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU3RvcExv
Y2FsTWVkaWFTdHJlYW0oY29uc3QgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJiBzdHJlYW0pCit7
CisgICAgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50PiBhdWRpb0NvbXBvbmVudHM7
CisgICAgc3RyZWFtLmF1ZGlvU291cmNlcyhhdWRpb0NvbXBvbmVudHMpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgYXVkaW9Db21wb25lbnRzLnNpemUoKTsgKytpKQorICAgICAgICBhdWRp
b0NvbXBvbmVudHNbaV0uc291cmNlKCkuc2V0UmVhZHlTdGF0ZShXZWJNZWRpYVN0cmVhbVNvdXJj
ZTo6UmVhZHlTdGF0ZUVuZGVkKTsKKworICAgIFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbUNvbXBv
bmVudD4gdmlkZW9Db21wb25lbnRzOworICAgIHN0cmVhbS52aWRlb1NvdXJjZXModmlkZW9Db21w
b25lbnRzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZpZGVvQ29tcG9uZW50cy5zaXpl
KCk7ICsraSkKKyAgICAgICAgdmlkZW9Db21wb25lbnRzW2ldLnNvdXJjZSgpLnNldFJlYWR5U3Rh
dGUoV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGVFbmRlZCk7Cit9CisKK3ZvaWQgTW9j
a1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpkaWRDcmVhdGVNZWRpYVN0cmVhbShXZWJNZWRpYVN0cmVh
bURlc2NyaXB0b3ImKQoreworfQorCitXZWJTdHJpbmcgTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVy
Ojpjb25zdHJ1Y3RTRFAoY29uc3QgV2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvciYgaWNlQ2FuZGlk
YXRlKQoreworICAgIHN0cmluZzE2IHJlc3VsdCA9IGljZUNhbmRpZGF0ZS5sYWJlbCgpOworICAg
IHJlc3VsdCArPSBXZWJTdHJpbmcoIjoiKTsKKyAgICByZXN1bHQgKz0gaWNlQ2FuZGlkYXRlLmNh
bmRpZGF0ZUxpbmUoKTsKKyAgICByZXN1bHQgKz0gV2ViU3RyaW5nKCI7Iik7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworV2ViU3RyaW5nIE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6Y29uc3Ry
dWN0U0RQKGNvbnN0IFdlYlNlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3ImIHNlc3Npb25EZXNj
cmlwdGlvbikKK3sKKyAgICBzdHJpbmcxNiByZXN1bHQgPSBzZXNzaW9uRGVzY3JpcHRpb24uaW5p
dGlhbFNEUCgpOworICAgIHJlc3VsdCArPSBXZWJTdHJpbmcoIjsiKTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHNlc3Npb25EZXNjcmlwdGlvbi5udW1iZXJPZkFkZGVkQ2FuZGlkYXRlcygp
OyArK2kpIHsKKyAgICAgICAgcmVzdWx0ICs9IGNvbnN0cnVjdFNEUChzZXNzaW9uRGVzY3JpcHRp
b24uY2FuZGlkYXRlKGkpKTsKKyAgICAgICAgcmVzdWx0ICs9IFdlYlN0cmluZygiOyIpOworICAg
IH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJNZWRp
YVN0cmVhbUNlbnRlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYk1l
ZGlhU3RyZWFtQ2VudGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmNmMThhY2VhZWI3Njc0MWZlNTU5YTRhMjU1
NWNiYzQ3ZjA1MDk3YgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL01vY2tXZWJNZWRpYVN0cmVhbUNlbnRlci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcl9oCisjZGVmaW5lIE1vY2tXZWJNZWRpYVN0cmVhbUNl
bnRlcl9oCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNlbnRlci5oIgorCitu
YW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50OworfTsK
KworY2xhc3MgTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyIDogcHVibGljIFdlYktpdDo6V2ViTWVk
aWFTdHJlYW1DZW50ZXIgeworcHVibGljOgorICAgIGV4cGxpY2l0IE1vY2tXZWJNZWRpYVN0cmVh
bUNlbnRlcihXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50Kik7CisKKyAgICB2aXJ0
dWFsIHZvaWQgcXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMoY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0
cmVhbVNvdXJjZXNSZXF1ZXN0JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZEVuYWJs
ZU1lZGlhU3RyZWFtVHJhY2soY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3Im
LCBjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtQ29tcG9uZW50JikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGRpZERpc2FibGVNZWRpYVN0cmVhbVRyYWNrKGNvbnN0IFdlYktpdDo6V2Vi
TWVkaWFTdHJlYW1EZXNjcmlwdG9yJiwgY29uc3QgV2ViS2l0OjpXZWJNZWRpYVN0cmVhbUNvbXBv
bmVudCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBkaWRTdG9wTG9jYWxNZWRpYVN0cmVh
bShjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtRGVzY3JpcHRvciYpIE9WRVJSSURFOworICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVNZWRpYVN0cmVhbShXZWJLaXQ6OldlYk1lZGlhU3RyZWFt
RGVzY3JpcHRvciYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJTdHJpbmcgY29u
c3RydWN0U0RQKGNvbnN0IFdlYktpdDo6V2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvciYpIE9WRVJS
SURFOworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJTdHJpbmcgY29uc3RydWN0U0RQKGNvbnN0IFdl
YktpdDo6V2ViU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvciYpIE9WRVJSSURFOworCitwcml2
YXRlOgorICAgIE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcigpIHsgfQorfTsKKworI2VuZGlmIC8v
IE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcl9oCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwZGJhNDAxYmJiOGE2MWEzNzli
Yzg2ZWZmOGQ2NGJjYTQyM2UxNjUzLi5kMGRhZTE5YmFhYTFmZTRiZDM1MmQ0MDVhNDJlY2M3ZGM1
NTY1NjA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDctMjAgIFRvbW15IFdpZGVuZmx5
Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBVcGRh
dGUgTWVkaWFTdHJlYW1UcmFjayB0byBtYXRjaCB0aGUgc3BlY2lmaWNhdGlvbgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTAxODAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFjay1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5odG1sOiBBZGRlZC4KKwogMjAxMi0wNy0yNCAgQXJr
byBTYWhhICA8YXJrb0Btb3Rvcm9sYS5jb20+CiAKICAgICAgICAgTWljcm9kYXRhOiBJbXBsZW1l
bnQgUHJvcGVydHlOb2RlTGlzdCBpbnRlcmZhY2UuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hZmQ2NDYwYWUzMzViODM5ZTY4OThhNWMyMzkyOTU1NmE2ZWY2MDBhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUZXN0cyBNZWRpYVN0cmVhbVRyYWNrIGNhbGxi
YWNrcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZ2V0VXNlck1lZGlh
IHN1Y2NlZWRlZC4KK1BBU1MgVHJhY2sgb25tdXRlIGNhbGxiYWNrIHN1Y2NlZWRlZC4KK1BBU1Mg
VHJhY2sgb251bm11dGUgY2FsbGJhY2sgc3VjY2VlZGVkLgorUEFTUyBUcmFjayBvbmVuZGVkIGNh
bGxiYWNrIHN1Y2NlZWRlZC4KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2suaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFjay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmNWI2ZWI3ZGZkZWQ2OGZiNTM4MTNjNGJkYzYx
Y2UwZTRlNzRkNjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2suaHRtbApAQCAtMCwwICsxLDcyIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3Mi
PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIE1lZGlhU3RyZWFtVHJh
Y2sgY2FsbGJhY2tzLiIpOworCisvLyBOb3RlIHRoYXQgdGhlIGJlbG93IGJlaGF2aW91ciBkb2Vz
bid0IHJlZmxlY3QgaG93IGl0IHdvcmtzIG91dHNpZGUgb2YgTGF5b3V0VGVzdHMuCisvLyBUaGUg
dW5kZXJseWluZyBtb2NrIGlzIG1vZGlmaWVkIHRvIHRyaWdnZXIgdGhlIGV2ZW50cyB3aGVuIGNl
cnRhaW4gZnVuY3Rpb25zIGFyZSBjYWxsZWQuCisvLyBUaGlzIG1vZGlmaWVkIGJlaGF2aW91ciBh
bGxvd3MgdXMgdG8gdGVzdCB0aGUgTWVkaWFTdHJlYW1UcmFjayBjbGFzcyBwcm9wZXJseS4KKwor
dmFyIHN0cmVhbTsKK3ZhciB0cmFjazsKKworZnVuY3Rpb24gZXJyb3IoKSB7CisgICAgdGVzdEZh
aWxlZCgnU3RyZWFtIGdlbmVyYXRpb24gZmFpbGVkLicpOworICAgIGZpbmlzaEpTVGVzdCgpOwor
fQorCitmdW5jdGlvbiBnZXRVc2VyTWVkaWEoY29uc3RyYWludHMsIGNhbGxiYWNrKSB7CisgICAg
dHJ5IHsKKyAgICAgICAgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYShjb25zdHJhaW50cywg
Y2FsbGJhY2ssIGVycm9yKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIHRlc3RGYWlsZWQo
J3dlYmtpdEdldFVzZXJNZWRpYSB0aHJldyBleGNlcHRpb24gOicgKyBlKTsKKyAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CisgICAgfQorfQorCitmdW5jdGlvbiBvblRyYWNrRW5kZWQoKSB7CisgICAg
dGVzdFBhc3NlZCgnVHJhY2sgb25lbmRlZCBjYWxsYmFjayBzdWNjZWVkZWQuJyk7CisKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gb25UcmFja1VubXV0ZSgpIHsKKyAgICB0ZXN0
UGFzc2VkKCdUcmFjayBvbnVubXV0ZSBjYWxsYmFjayBzdWNjZWVkZWQuJyk7CisKKyAgICBzdHJl
YW0uc3RvcCgpOworfQorCitmdW5jdGlvbiBvblRyYWNrTXV0ZSgpIHsKKyAgICB0ZXN0UGFzc2Vk
KCdUcmFjayBvbm11dGUgY2FsbGJhY2sgc3VjY2VlZGVkLicpOworCisgICAgdHJhY2suZW5hYmxl
ZCA9IHRydWU7Cit9CisKK2Z1bmN0aW9uIGdvdFN0cmVhbShzKSB7CisgICAgdGVzdFBhc3NlZCgn
Z2V0VXNlck1lZGlhIHN1Y2NlZWRlZC4nKTsKKworICAgIHN0cmVhbSA9IHM7CisgICAgdHJhY2sg
PSBzdHJlYW0udmlkZW9UcmFja3NbMF07CisKKyAgICB0cmFjay5vbnVubXV0ZSA9IG9uVHJhY2tV
bm11dGU7CisgICAgdHJhY2sub25tdXRlID0gb25UcmFja011dGU7CisgICAgdHJhY2sub25lbmRl
ZCA9IG9uVHJhY2tFbmRlZDsKKworICAgIHRyYWNrLmVuYWJsZWQgPSBmYWxzZTsKK30KKworZ2V0
VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtKTsKKword2luZG93
LmpzVGVzdElzQXN5bmMgPSB0cnVlOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7
Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0Lmpz
Ij48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154298</attachid>
            <date>2012-07-25 02:09:36 -0700</date>
            <delta_ts>2012-07-25 09:53:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90180-20120725110925.patch</filename>
            <type>text/plain</type>
            <size>44164</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzNTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA0N2M4ZmE2MDJkNDQ1
ZDZjNmNjMzcyNTFkMGE3YTMyZTI0Nzg4YTQ1Li5iMTIxMjE3ZTMxNjNhMjUzYWQxZTQ4MzY2Njdk
YWExNDZiZDU5NGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wNy0yMCAg
VG9tbXkgV2lkZW5mbHljaHQgIDx0b21teXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0
cmVhbSBBUEk6IFVwZGF0ZSBNZWRpYVN0cmVhbVRyYWNrIHRvIG1hdGNoIHRoZSBzcGVjaWZpY2F0
aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDE4
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogY2hy
b21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oOgorICAgICAgICAoV2ViTWVk
aWFTdHJlYW1EZXNjcmlwdG9yKToKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFT
dHJlYW1Tb3VyY2UuaDoKKyAgICAgICAgKFdlYk1lZGlhU3RyZWFtU291cmNlKToKKwogMjAxMi0w
Ny0yNCAgRGF2ZSBUdSAgPGR0dUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBB
ZGQgdGltZSBzcGVudCBwYWludGluZyB0byBHUFUgYmVuY2htYXJraW5nIHJlbmRlcmluZ1N0YXRz
KCkgQVBJLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IGNmNzQ0YWY0M2FkZDQ0NmY5MmM1YjQ3MTcyMTJkOWQwM2Jh
ZWI0MWQuLjkzNjMxZWUxYjA0YmRiYjUyNzdiMGIzZmJiYzRmN2Q1ZjJlMjdmZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSw1OSBAQAorMjAxMi0wNy0yMCAgVG9tbXkgV2lkZW5mbHljaHQgIDx0b21t
eXdAZ29vZ2xlLmNvbT4KKworICAgICAgICBNZWRpYVN0cmVhbSBBUEk6IFVwZGF0ZSBNZWRpYVN0
cmVhbVRyYWNrIHRvIG1hdGNoIHRoZSBzcGVjaWZpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDE4MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lZGlhU3RyZWFtVHJhY2tzIGFyZSBub3cgcmVx
dWlyZWQgdG8gc2hvdyB0aGUgc3RhdHVzIG9mIHRoZSB1bmRlcmx5aW5nIHNvdXJjZSwKKyAgICAg
ICAgYW5kIHRyaWdnZXIgZXZlbnRzIHdoZW4gdGhhdCBzdGF0dXMgY2hhbmdlcy4KKworICAgICAg
ICBUZXN0OiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaHRtbAorCisgICAgICAg
ICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpNZWRpYVN0cmVh
bSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6YWRkVHJhY2spOgorICAgICAgICAq
IE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW1UcmFjazo6TWVkaWFTdHJlYW1UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbVRyYWNrOjp+TWVkaWFTdHJlYW1UcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbVRyYWNrOjpzZXRFbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJh
Y2s6OnJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYVN0cmVhbVRyYWNrOjpzb3VyY2VDaGFuZ2VkU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW1UcmFjazo6c3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVRy
YWNrOjppbnRlcmZhY2VOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJhY2s6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1U
cmFjazo6ZXZlbnRUYXJnZXREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtVHJh
Y2s6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmg6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmlkbDoKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6CisgICAgICAgICogZG9t
L0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGRvbS9FdmVudFRh
cmdldEZhY3RvcnkuaW46CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJN
ZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZWRp
YVN0cmVhbVNvdXJjZTo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJNZWRpYVN0cmVhbVNvdXJjZTo6cmVhZHlTdGF0ZSk6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtU291cmNlOjpNZWRpYVN0cmVh
bVNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6c2V0UmVhZHlT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZTo6YWRkT2JzZXJ2ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6OnJlbW92ZU9ic2VydmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oOgorICAg
ICAgICAoT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6Ok9i
c2VydmVyOjp+T2JzZXJ2ZXIpOgorICAgICAgICAoTWVkaWFTdHJlYW1Tb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1Tb3VyY2U6OnJlYWR5U3RhdGUpOgorICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL01lZGlhU3RyZWFtQ2VudGVyQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXJDaHJvbWl1bTo6cXVlcnlNZWRp
YVN0cmVhbVNvdXJjZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1DZW50ZXJDaHJv
bWl1bTo6ZGlkQ3JlYXRlTWVkaWFTdHJlYW0pOgorCiAyMDEyLTA3LTI1ICBaZW5vIEFsYmlzc2Vy
ICA8emVub0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF1bV0syXSBEaXNhYmxlIENvcHlUb1Rl
eHR1cmUgZm9yIEdyYXBoaWNzU3VyZmFjZU1hYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9QbGF0Zm9y
bS9jaHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmggYi9Tb3VyY2UvUGxh
dGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oCmluZGV4IGMy
NWY0MmUxYjg4OTE0MjIwNjE5Yjg0ODM2MjM1M2Q5Y2Q0OTllMjIuLmQxYjM4NTM2N2Q5ODdkNTY0
MmEwYWI3Y2UzOGM3ZWFhYTUzYzUxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmgKKysrIGIvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuaApAQCAtNjgsOSAr
NjgsNiBAQCBwdWJsaWM6CiAKICAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBsYWJlbCgpIGNv
bnN0OwogCi0gICAgLy8gREVQUkVDQVRFRAotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBzb3VyY2Vz
KFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbVNvdXJjZT4mKSBjb25zdDsKLQogICAgIFdFQktJVF9F
WFBPUlQgdm9pZCBhdWRpb1NvdXJjZXMoV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50
PiYpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgdm9pZCB2aWRlb1NvdXJjZXMoV2ViVmVjdG9y
PFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50PiYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtU291cmNlLmggYi9Tb3VyY2Uv
UGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYk1lZGlhU3RyZWFtU291cmNlLmgKaW5kZXggMTQy
ZDU5ODY2ZTZhYzg1ODJjMjQ5MzgyZDE1N2RkNTZiNWY4ZDc2Ny4uMDFhYThjZjdmODU5MTA1ODU2
MjQ5NmRmYzMyNjg1ZjZhOTU1ZTRhMSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9t
aXVtL3B1YmxpYy9XZWJNZWRpYVN0cmVhbVNvdXJjZS5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViTWVkaWFTdHJlYW1Tb3VyY2UuaApAQCAtNTAsNiArNTAsMTIgQEAg
cHVibGljOgogICAgICAgICBUeXBlVmlkZW8KICAgICB9OwogCisgICAgZW51bSBSZWFkeVN0YXRl
IHsKKyAgICAgICAgUmVhZHlTdGF0ZUxpdmUgPSAwLAorICAgICAgICBSZWFkeVN0YXRlTXV0ZWQg
PSAxLAorICAgICAgICBSZWFkeVN0YXRlRW5kZWQgPSAyCisgICAgfTsKKwogICAgIFdlYk1lZGlh
U3RyZWFtU291cmNlKCkgeyB9CiAgICAgV2ViTWVkaWFTdHJlYW1Tb3VyY2UoY29uc3QgV2ViTWVk
aWFTdHJlYW1Tb3VyY2UmIG90aGVyKSB7IGFzc2lnbihvdGhlcik7IH0KICAgICB+V2ViTWVkaWFT
dHJlYW1Tb3VyY2UoKSB7IHJlc2V0KCk7IH0KQEAgLTcwLDYgKzc2LDkgQEAgcHVibGljOgogICAg
IFdFQktJVF9FWFBPUlQgVHlwZSB0eXBlKCkgY29uc3Q7CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJT
dHJpbmcgbmFtZSgpIGNvbnN0OwogCisgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNldFJlYWR5U3Rh
dGUoUmVhZHlTdGF0ZSk7CisgICAgV0VCS0lUX0VYUE9SVCBSZWFkeVN0YXRlIHJlYWR5U3RhdGUo
KSBjb25zdDsKKwogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogICAgIFdlYk1lZGlhU3RyZWFt
U291cmNlKGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpNZWRpYVN0cmVhbVNvdXJjZT4m
KTsKICAgICBXZWJNZWRpYVN0cmVhbVNvdXJjZSYgb3BlcmF0b3I9KFdlYkNvcmU6Ok1lZGlhU3Ry
ZWFtU291cmNlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBjNTE3N2MwMmU0
ZTJkMjNhZjA3OTIxOTVlZmFjZGFiOTE1ZjY5OTk1Li41ZjFjNDdiMmM4MTRjMGE3NzEyMDc2Mzlk
YjkyM2E5MjAyMmY5ZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5s
aXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTM1NDUs
NiArMzU0NSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1DZW50ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db21wb25lbnQuaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmggXAorCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuaCBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2Vz
UXVlcnlDbGllbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUGVl
ckNvbm5lY3Rpb24wMEhhbmRsZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAKaW5kZXggZTRlZmM0OWI3ZGRmZTI5YjEwMzll
MmU0OTg5ODk1NGEyMmM4YmZhOS4uY2U4ZTI2NTVlZTdmMjMzMzlhYzlkOWZkNGQxODdkZWM0OTE5
NzNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbS5jcHAKQEAgLTk0LDE0ICs5NCwxNCBAQCBNZWRpYVN0cmVhbTo6TWVkaWFTdHJlYW0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbQog
ICAgIHNpemVfdCBudW1iZXJPZkF1ZGlvVHJhY2tzID0gbV9kZXNjcmlwdG9yLT5udW1iZXJPZkF1
ZGlvQ29tcG9uZW50cygpOwogICAgIGF1ZGlvVHJhY2tWZWN0b3IucmVzZXJ2ZUNhcGFjaXR5KG51
bWJlck9mQXVkaW9UcmFja3MpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZB
dWRpb1RyYWNrczsgaSsrKQotICAgICAgICBhdWRpb1RyYWNrVmVjdG9yLmFwcGVuZChNZWRpYVN0
cmVhbVRyYWNrOjpjcmVhdGUobV9kZXNjcmlwdG9yLCBtX2Rlc2NyaXB0b3ItPmF1ZGlvQ29tcG9u
ZW50KGkpKSk7CisgICAgICAgIGF1ZGlvVHJhY2tWZWN0b3IuYXBwZW5kKE1lZGlhU3RyZWFtVHJh
Y2s6OmNyZWF0ZShjb250ZXh0LCBtX2Rlc2NyaXB0b3IsIG1fZGVzY3JpcHRvci0+YXVkaW9Db21w
b25lbnQoaSkpKTsKICAgICBtX2F1ZGlvVHJhY2tzID0gTWVkaWFTdHJlYW1UcmFja0xpc3Q6OmNy
ZWF0ZSh0aGlzLCBhdWRpb1RyYWNrVmVjdG9yKTsKIAogICAgIE1lZGlhU3RyZWFtVHJhY2tWZWN0
b3IgdmlkZW9UcmFja1ZlY3RvcjsKICAgICBzaXplX3QgbnVtYmVyT2ZWaWRlb1RyYWNrcyA9IG1f
ZGVzY3JpcHRvci0+bnVtYmVyT2ZWaWRlb0NvbXBvbmVudHMoKTsKICAgICB2aWRlb1RyYWNrVmVj
dG9yLnJlc2VydmVDYXBhY2l0eShudW1iZXJPZlZpZGVvVHJhY2tzKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG51bWJlck9mVmlkZW9UcmFja3M7IGkrKykKLSAgICAgICAgdmlkZW9UcmFj
a1ZlY3Rvci5hcHBlbmQoTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKG1fZGVzY3JpcHRvciwgbV9k
ZXNjcmlwdG9yLT52aWRlb0NvbXBvbmVudChpKSkpOworICAgICAgICB2aWRlb1RyYWNrVmVjdG9y
LmFwcGVuZChNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoY29udGV4dCwgbV9kZXNjcmlwdG9yLCBt
X2Rlc2NyaXB0b3ItPnZpZGVvQ29tcG9uZW50KGkpKSk7CiAgICAgbV92aWRlb1RyYWNrcyA9IE1l
ZGlhU3RyZWFtVHJhY2tMaXN0OjpjcmVhdGUodGhpcywgdmlkZW9UcmFja1ZlY3Rvcik7CiB9CiAK
QEAgLTE1MSw3ICsxNTEsNyBAQCBFdmVudFRhcmdldERhdGEqIE1lZGlhU3RyZWFtOjplbnN1cmVF
dmVudFRhcmdldERhdGEoKQogCiB2b2lkIE1lZGlhU3RyZWFtOjphZGRUcmFjayhNZWRpYVN0cmVh
bUNvbXBvbmVudCogY29tcG9uZW50KQogewotICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0
cmFjayA9IE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShtX2Rlc2NyaXB0b3IsIGNvbXBvbmVudCk7
CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0gTWVkaWFTdHJlYW1UcmFjazo6
Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV9kZXNjcmlwdG9yLCBjb21wb25lbnQp
OwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHN3aXRjaCAoY29tcG9uZW50LT5zb3Vy
Y2UoKS0+dHlwZSgpKSB7CiAgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZUF1ZGlvOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFjay5jcHAKaW5kZXggZjIyNzc0OTZjMTM2MTVkOTk0YTNkYTY1ZjVjNWY1YTUyYTMwYzA2
OC4uZmEwNzFmZWYyOWJlOWJhMzQ5ZjI1M2MyYTcyYjhlMGY4MGE2NTZjOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2su
Y3BwCkBAIC0yOCwyNCArMjgsMzEgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKKyNp
bmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyLmgiCiAjaW5jbHVk
ZSAiTWVkaWFTdHJlYW1Db21wb25lbnQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNz
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gc3RyZWFtRGVzY3JpcHRvciwgTWVkaWFTdHJlYW1D
b21wb25lbnQqIGNvbXBvbmVudCkKK1Bhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gTWVkaWFT
dHJlYW1UcmFjazo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBzdHJlYW1EZXNjcmlwdG9yLCBNZWRpYVN0cmVh
bUNvbXBvbmVudCogY29tcG9uZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVkaWFT
dHJlYW1UcmFjayhzdHJlYW1EZXNjcmlwdG9yLCBjb21wb25lbnQpKTsKKyAgICBSZWZQdHI8TWVk
aWFTdHJlYW1UcmFjaz4gdHJhY2sgPSBhZG9wdFJlZihuZXcgTWVkaWFTdHJlYW1UcmFjayhjb250
ZXh0LCBzdHJlYW1EZXNjcmlwdG9yLCBjb21wb25lbnQpKTsKKyAgICB0cmFjay0+c3VzcGVuZElm
TmVlZGVkKCk7CisgICAgcmV0dXJuIHRyYWNrLnJlbGVhc2UoKTsKIH0KIAotTWVkaWFTdHJlYW1U
cmFjazo6TWVkaWFTdHJlYW1UcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4g
c3RyZWFtRGVzY3JpcHRvciwgTWVkaWFTdHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCkKLSAgICA6
IG1fc3RyZWFtRGVzY3JpcHRvcihzdHJlYW1EZXNjcmlwdG9yKQorTWVkaWFTdHJlYW1UcmFjazo6
TWVkaWFTdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gc3RyZWFtRGVzY3JpcHRvciwgTWVkaWFTdHJlYW1D
b21wb25lbnQqIGNvbXBvbmVudCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlz
KQorICAgICwgbV9zdG9wcGVkKGZhbHNlKQorICAgICwgbV9zdHJlYW1EZXNjcmlwdG9yKHN0cmVh
bURlc2NyaXB0b3IpCiAgICAgLCBtX2NvbXBvbmVudChjb21wb25lbnQpCiB7CisgICAgbV9jb21w
b25lbnQtPnNvdXJjZSgpLT5hZGRPYnNlcnZlcih0aGlzKTsKIH0KIAogTWVkaWFTdHJlYW1UcmFj
azo6fk1lZGlhU3RyZWFtVHJhY2soKQogeworICAgIG1fY29tcG9uZW50LT5zb3VyY2UoKS0+cmVt
b3ZlT2JzZXJ2ZXIodGhpcyk7CiB9CiAKIFN0cmluZyBNZWRpYVN0cmVhbVRyYWNrOjpraW5kKCkg
Y29uc3QKQEAgLTc2LDcgKzgzLDcgQEAgYm9vbCBNZWRpYVN0cmVhbVRyYWNrOjplbmFibGVkKCkg
Y29uc3QKIAogdm9pZCBNZWRpYVN0cmVhbVRyYWNrOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkK
IHsKLSAgICBpZiAoZW5hYmxlZCA9PSBtX2NvbXBvbmVudC0+ZW5hYmxlZCgpKQorICAgIGlmICht
X3N0b3BwZWQgfHwgZW5hYmxlZCA9PSBtX2NvbXBvbmVudC0+ZW5hYmxlZCgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBtX2NvbXBvbmVudC0+c2V0RW5hYmxlZChlbmFibGVkKTsKQEAgLTg3LDEx
ICs5NCw3MiBAQCB2b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVk
KQogICAgIE1lZGlhU3RyZWFtQ2VudGVyOjppbnN0YW5jZSgpLmRpZFNldE1lZGlhU3RyZWFtVHJh
Y2tFbmFibGVkKG1fc3RyZWFtRGVzY3JpcHRvci5nZXQoKSwgbV9jb21wb25lbnQuZ2V0KCkpOwog
fQogCitNZWRpYVN0cmVhbVRyYWNrOjpSZWFkeVN0YXRlIE1lZGlhU3RyZWFtVHJhY2s6OnJlYWR5
U3RhdGUoKSBjb25zdAoreworICAgIGlmIChtX3N0b3BwZWQpCisgICAgICAgIHJldHVybiBFTkRF
RDsKKworICAgIHN3aXRjaCAobV9jb21wb25lbnQtPnNvdXJjZSgpLT5yZWFkeVN0YXRlKCkpIHsK
KyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpSZWFkeVN0YXRlTGl2ZToKKyAgICAgICAgcmV0
dXJuIExJVkU7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZU11dGVkOgor
ICAgICAgICByZXR1cm4gTVVURUQ7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlT
dGF0ZUVuZGVkOgorICAgICAgICByZXR1cm4gRU5ERUQ7CisgICAgfQorCisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIEVOREVEOworfQorCit2b2lkIE1lZGlhU3RyZWFtVHJh
Y2s6OnNvdXJjZUNoYW5nZWRTdGF0ZSgpCit7CisgICAgaWYgKG1fc3RvcHBlZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgc3dpdGNoIChtX2NvbXBvbmVudC0+c291cmNlKCktPnJlYWR5U3RhdGUo
KSkgeworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGVMaXZlOgorICAgICAg
ICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnVubXV0ZUV2ZW50LCBm
YWxzZSwgZmFsc2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJj
ZTo6UmVhZHlTdGF0ZU11dGVkOgorICAgICAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
ZXZlbnROYW1lcygpLm11dGVFdmVudCwgZmFsc2UsIGZhbHNlKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGVFbmRlZDoKKyAgICAgICAgZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50LCBmYWxzZSwg
ZmFsc2UpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCiBNZWRpYVN0cmVhbUNvbXBvbmVu
dCogTWVkaWFTdHJlYW1UcmFjazo6Y29tcG9uZW50KCkKIHsKICAgICByZXR1cm4gbV9jb21wb25l
bnQuZ2V0KCk7CiB9CiAKK3ZvaWQgTWVkaWFTdHJlYW1UcmFjazo6c3RvcCgpCit7CisgICAgbV9z
dG9wcGVkID0gdHJ1ZTsKK30KKworY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVN0cmVhbVRyYWNr
OjppbnRlcmZhY2VOYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnROYW1lcygpLmludGVy
ZmFjZUZvck1lZGlhU3RyZWFtVHJhY2s7Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE1l
ZGlhU3RyZWFtVHJhY2s6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIHJl
dHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKK30KKworRXZl
bnRUYXJnZXREYXRhKiBNZWRpYVN0cmVhbVRyYWNrOjpldmVudFRhcmdldERhdGEoKQoreworICAg
IHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogTWVkaWFT
dHJlYW1UcmFjazo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKK3sKKyAgICByZXR1cm4gJm1fZXZl
bnRUYXJnZXREYXRhOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoTUVESUFfU1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaAppbmRleCBjNDViZTE4Yzc0Y2E4YzRkZjU0NzBl
MmUwOTQ1YzdlZjdiYTkzY2JmLi43MjRhMTIwZGNiMzNhZjA3OTg2ZWE4Y2JkNzEzMDZhOThjYWJj
ODIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2suaApAQCAtMjgsNyArMjgsMTAgQEAKIAogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJFdmVudFRh
cmdldC5oIgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtU291cmNlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTM4LDkgKzQx
LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVkaWFTdHJlYW1Db21wb25lbnQ7
CiAKLWNsYXNzIE1lZGlhU3RyZWFtVHJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVh
bVRyYWNrPiB7CitjbGFzcyBNZWRpYVN0cmVhbVRyYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8TWVk
aWFTdHJlYW1UcmFjaz4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdl
dCwgcHVibGljIE1lZGlhU3RyZWFtU291cmNlOjpPYnNlcnZlciB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8TWVkaWFT
dHJlYW1EZXNjcmlwdG9yPiwgTWVkaWFTdHJlYW1Db21wb25lbnQqKTsKKyAgICBlbnVtIFJlYWR5
U3RhdGUgeworICAgICAgICBMSVZFID0gMCwKKyAgICAgICAgTVVURUQgPSAxLAorICAgICAgICBF
TkRFRCA9IDIKKyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
az4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
RGVzY3JpcHRvcj4sIE1lZGlhU3RyZWFtQ29tcG9uZW50Kik7CiAgICAgdmlydHVhbCB+TWVkaWFT
dHJlYW1UcmFjaygpOwogCiAgICAgU3RyaW5nIGtpbmQoKSBjb25zdDsKQEAgLTQ5LDExICs1OCwz
OCBAQCBwdWJsaWM6CiAgICAgYm9vbCBlbmFibGVkKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRFbmFi
bGVkKGJvb2wpOwogCisgICAgUmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Q7CisKKyAgICBE
RUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKG11dGUpOworICAgIERFRklORV9BVFRSSUJV
VEVfRVZFTlRfTElTVEVORVIodW5tdXRlKTsKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKGVuZGVkKTsKKwogICAgIE1lZGlhU3RyZWFtQ29tcG9uZW50KiBjb21wb25lbnQoKTsK
IAorICAgIC8vIEV2ZW50VGFyZ2V0CisgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGlu
dGVyZmFjZU5hbWUoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERTsKKworICAg
IC8vIEFjdGl2ZURPTU9iamVjdAorICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZFUlJJREU7CisK
KyAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2s+OjpyZWY7CisgICAgdXNpbmcg
UmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNrPjo6ZGVyZWY7CisKIHByaXZhdGU6Ci0gICAgTWVk
aWFTdHJlYW1UcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4sIE1lZGlhU3Ry
ZWFtQ29tcG9uZW50Kik7CisgICAgTWVkaWFTdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+LCBNZWRpYVN0cmVhbUNvbXBv
bmVudCopOworCisgICAgLy8gRXZlbnRUYXJnZXQKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0
YSogZXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7CisgICAgdmlydHVhbCBFdmVudFRhcmdldERh
dGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBy
ZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGVy
ZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVyZWYoKTsgfQorICAgIEV2ZW50VGFyZ2V0RGF0
YSBtX2V2ZW50VGFyZ2V0RGF0YTsKKworICAgIC8vIE1lZGlhU3RyZWFtU291cmNlT2JzZXJ2ZXIK
KyAgICB2aXJ0dWFsIHZvaWQgc291cmNlQ2hhbmdlZFN0YXRlKCkgT1ZFUlJJREU7CiAKKyAgICBi
b29sIG1fc3RvcHBlZDsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBtX3N0cmVh
bURlc2NyaXB0b3I7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtQ29tcG9uZW50PiBtX2NvbXBvbmVu
dDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2suaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrLmlkbAppbmRleCA3OTg3NTk3NWU5MTdjYmU2ZWY5OTMxODI4ZDU4YzFj
OTY5ZjhlZGViLi5lMTAzY2UyM2IzNWU3OGFiNmFiZmEwMzUxNGRkNDEyYzBmMGQyNDY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2suaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFjay5pZGwKQEAgLTI2LDEwICsyNiwzMSBAQCBtb2R1bGUgY29yZSB7CiAKICAgICBpbnRl
cmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1NRURJQV9TVFJFQU0sCisgICAgICAgIEV2ZW50
VGFyZ2V0LAorICAgICAgICBBY3RpdmVET01PYmplY3QKICAgICBdIE1lZGlhU3RyZWFtVHJhY2sg
ewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGtpbmQ7CiAgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7CiAgICAgICAgICAgICAgICAgIGF0dHJp
YnV0ZSBib29sZWFuIGVuYWJsZWQ7CisKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTElW
RSA9IDA7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE1VVEVEID0gMTsKKyAgICAgICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgRU5ERUQgPSAyOworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgc2hvcnQgcmVhZHlTdGF0ZTsKKworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRM
aXN0ZW5lciBvbm11dGU7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9udW5tdXRl
OworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVuZGVkOworCisgICAgICAgIC8v
IEV2ZW50VGFyZ2V0IGludGVyZmFjZQorICAgICAgICB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4g
RE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExp
c3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09wdGlv
bmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICB2b2lkIHJlbW92ZUV2ZW50TGlzdGVu
ZXIoaW4gRE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOworICAgICAgICBib29sZWFuIGRp
c3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZlbnQpCisgICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNl
cHRpb24pOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBkZjdjZDBhOTM1YTNjNmY0
NWU2ZDhkMmY1MjMyNTQzMDlkOGU4YzJiLi5kM2U4MzVhMDYwYjkzZWU3ZjYwMjZjYmFhNjkwOWIy
NmM1Njk2ZWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC00NDcsNiArNDQ3LDcgQEAKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNlbnRlci5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbXBvbmVudC5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuaCcsCisg
ICAgICAgICAgICAncGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3BwJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVNvdXJjZS5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAwSGFuZGxl
ci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbjAw
SGFuZGxlckNsaWVudC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5h
bWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCmluZGV4IDk4M2RmMjllOGJm
MmVjNzAyNzZkNjY4NTQ1MzU5YzA5NGY2ZThkYzMuLmIwZWZiZTc2NTA4YzhlYjI1NGRmMjk2MmJi
ZTg5ZGM2MjcxNzE0MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudE5hbWVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaApAQCAtMjE5LDYgKzIxOSw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhyZW1vdmVzdHJlYW0pIFwKICAgICBt
YWNybyhzdGF0ZWNoYW5nZSkgXAogICAgIG1hY3JvKHJlbW92ZXRyYWNrKSBcCisgICAgbWFjcm8o
bXV0ZSkgXAorICAgIG1hY3JvKHVubXV0ZSkgXAogICAgIFwKICAgICBtYWNybyhzaG93KSBcCiAg
ICAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5p
biBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggN2YyNWQz
MDJhYjM5MTgwNGUwY2YyZjhhZjQxNTYyNTJiNzAyMGZiOC4uOWMyYmQ5YmViMGQ0YjQ0NzBhYzA4
ZjJlMmE4ZjBkODNhYzJkYzQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0
b3J5LmluCkBAIC0xNyw2ICsxNyw3IEBAIEphdmFTY3JpcHRBdWRpb05vZGUgY29uZGl0aW9uYWw9
V0VCX0FVRElPCiBMb2NhbE1lZGlhU3RyZWFtIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQogTWVk
aWFDb250cm9sbGVyIGNvbmRpdGlvbmFsPVZJREVPCiBNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1N
RURJQV9TVFJFQU0KK01lZGlhU3RyZWFtVHJhY2sgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBN
ZWRpYVN0cmVhbVRyYWNrTGlzdCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIE1lc3NhZ2VQb3J0
CiBOZXR3b3JrSW5mb0Nvbm5lY3Rpb24gY29uZGl0aW9uYWw9TkVUV09SS19JTkZPCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhU3Ry
ZWFtRGVzY3JpcHRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5jcHAKaW5kZXggOGU3YTNhN2UyMjU3YjYxNmI0
M2MyNDQxYmU4YjFmMGQxODdlY2QxZC4uMzZjY2U3NDM5MTM5NWI2MGRlM2Y4NzAwNzI4MjgxZGU1
MzJlZDE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3Vw
cG9ydC9XZWJNZWRpYVN0cmVhbURlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmNwcApAQCAt
OTEsMjAgKzkxLDYgQEAgdm9pZCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnNldEV4dHJhRGF0
YShFeHRyYURhdGEqIGV4dHJhRGF0YSkKICAgICBtX3ByaXZhdGUtPnNldEV4dHJhRGF0YShhZG9w
dFJlZihuZXcgRXh0cmFEYXRhQ29udGFpbmVyKGV4dHJhRGF0YSkpKTsKIH0KIAotLy8gRklYTUU6
IENsZWFudXAgd2hlbiB0aGUgY2hyb21pdW0gY29kZSBoYXMgc3dpdGNoZWQgdG8gdGhlIHNwbGl0
IHNvdXJjZXMgaW1wbGVtZW50YXRpb24uCi12b2lkIFdlYk1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6
c291cmNlcyhXZWJWZWN0b3I8V2ViTWVkaWFTdHJlYW1Tb3VyY2U+JiB3ZWJTb3VyY2VzKSBjb25z
dAotewotICAgIHNpemVfdCBudW1iZXJPZkF1ZGlvU291cmNlcyA9IG1fcHJpdmF0ZS0+bnVtYmVy
T2ZBdWRpb0NvbXBvbmVudHMoKTsKLSAgICBzaXplX3QgbnVtYmVyT2ZWaWRlb1NvdXJjZXMgPSBt
X3ByaXZhdGUtPm51bWJlck9mVmlkZW9Db21wb25lbnRzKCk7Ci0gICAgV2ViVmVjdG9yPFdlYk1l
ZGlhU3RyZWFtU291cmNlPiByZXN1bHQobnVtYmVyT2ZBdWRpb1NvdXJjZXMgKyBudW1iZXJPZlZp
ZGVvU291cmNlcyk7Ci0gICAgc2l6ZV90IGkgPSAwOwotICAgIGZvciAoc2l6ZV90IGogPSAwOyBq
IDwgbnVtYmVyT2ZBdWRpb1NvdXJjZXM7ICsraSwgKytqKQotICAgICAgICByZXN1bHRbaV0gPSBt
X3ByaXZhdGUtPmF1ZGlvQ29tcG9uZW50KGopLT5zb3VyY2UoKTsKLSAgICBmb3IgKHNpemVfdCBq
ID0gMDsgaiA8IG51bWJlck9mVmlkZW9Tb3VyY2VzOyArK2ksICsraikKLSAgICAgICAgcmVzdWx0
W2ldID0gbV9wcml2YXRlLT52aWRlb0NvbXBvbmVudChqKS0+c291cmNlKCk7Ci0gICAgd2ViU291
cmNlcy5zd2FwKHJlc3VsdCk7Ci19Ci0KIHZvaWQgV2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yOjph
dWRpb1NvdXJjZXMoV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtQ29tcG9uZW50PiYgd2ViU291cmNl
cykgY29uc3QKIHsKICAgICBzaXplX3QgbnVtYmVyT2ZTb3VyY2VzID0gbV9wcml2YXRlLT5udW1i
ZXJPZkF1ZGlvQ29tcG9uZW50cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vc3VwcG9ydC9XZWJNZWRpYVN0cmVhbVNvdXJjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhU3RyZWFtU291cmNlLmNwcApp
bmRleCAzZjg3N2Y1NGM3MzBmMDU2NzFhMDhlYjQ2YzgyMTE2NzcxMTJkMGYyLi43MGVmNzA4MDk5
NGE2NzAwZDdkMDAzOTQzNDdkZmI2YTlkZDdhNDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhU3RyZWFtU291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYk1lZGlhU3RyZWFt
U291cmNlLmNwcApAQCAtOTYsNiArOTYsMTggQEAgV2ViU3RyaW5nIFdlYk1lZGlhU3RyZWFtU291
cmNlOjpuYW1lKCkgY29uc3QKICAgICByZXR1cm4gbV9wcml2YXRlLmdldCgpLT5uYW1lKCk7CiB9
CiAKK3ZvaWQgV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OnNldFJlYWR5U3RhdGUoUmVhZHlTdGF0ZSBz
dGF0ZSkKK3sKKyAgICBBU1NFUlQoIW1fcHJpdmF0ZS5pc051bGwoKSk7CisgICAgbV9wcml2YXRl
LT5zZXRSZWFkeVN0YXRlKHN0YXRpY19jYXN0PE1lZGlhU3RyZWFtU291cmNlOjpSZWFkeVN0YXRl
PihzdGF0ZSkpOworfQorCitXZWJNZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZSBXZWJNZWRp
YVN0cmVhbVNvdXJjZTo6cmVhZHlTdGF0ZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX3ByaXZh
dGUuaXNOdWxsKCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxSZWFkeVN0YXRlPihtX3ByaXZh
dGUtPnJlYWR5U3RhdGUoKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzIw
NDg3ZGMxMjU0YTRjMjM0MjRjYjEwMDFlYWY2MjljOTI4NTFkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3VyY2UuY3Bw
CkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMK
KyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20gdGhpcworICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlPiBNZWRpYVN0
cmVhbVNvdXJjZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUgdHlwZSwgY29uc3QgU3Ry
aW5nJiBuYW1lLCBSZWFkeVN0YXRlIHJlYWR5U3RhdGUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBNZWRpYVN0cmVhbVNvdXJjZShpZCwgdHlwZSwgbmFtZSwgcmVhZHlTdGF0ZSkpOworfQor
CitNZWRpYVN0cmVhbVNvdXJjZTo6TWVkaWFTdHJlYW1Tb3VyY2UoY29uc3QgU3RyaW5nJiBpZCwg
VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIG5hbWUsIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKKyAg
ICA6IG1faWQoaWQpCisgICAgLCBtX3R5cGUodHlwZSkKKyAgICAsIG1fbmFtZShuYW1lKQorICAg
ICwgbV9yZWFkeVN0YXRlKHJlYWR5U3RhdGUpCit7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW1Tb3Vy
Y2U6OnNldFJlYWR5U3RhdGUoUmVhZHlTdGF0ZSByZWFkeVN0YXRlKQoreworICAgIEFTU0VSVCht
X3JlYWR5U3RhdGUgIT0gUmVhZHlTdGF0ZUVuZGVkKTsKKyAgICBpZiAobV9yZWFkeVN0YXRlICE9
IHJlYWR5U3RhdGUpIHsKKyAgICAgICAgbV9yZWFkeVN0YXRlID0gcmVhZHlTdGF0ZTsKKyAgICAg
ICAgZm9yIChWZWN0b3I8T2JzZXJ2ZXIqPjo6aXRlcmF0b3IgaSA9IG1fb2JzZXJ2ZXJzLmJlZ2lu
KCk7IGkgIT0gbV9vYnNlcnZlcnMuZW5kKCk7ICsraSkKKyAgICAgICAgICAgICgqaSktPnNvdXJj
ZUNoYW5nZWRTdGF0ZSgpOworICAgIH0KK30KKwordm9pZCBNZWRpYVN0cmVhbVNvdXJjZTo6YWRk
T2JzZXJ2ZXIoTWVkaWFTdHJlYW1Tb3VyY2U6Ok9ic2VydmVyKiBvYnNlcnZlcikKK3sKKyAgICBt
X29ic2VydmVycy5hcHBlbmQob2JzZXJ2ZXIpOworfQorCit2b2lkIE1lZGlhU3RyZWFtU291cmNl
OjpyZW1vdmVPYnNlcnZlcihNZWRpYVN0cmVhbVNvdXJjZTo6T2JzZXJ2ZXIqIG9ic2VydmVyKQor
eworICAgIHNpemVfdCBwb3MgPSBtX29ic2VydmVycy5maW5kKG9ic2VydmVyKTsKKyAgICBpZiAo
cG9zICE9IG5vdEZvdW5kKQorICAgICAgICBtX29ic2VydmVycy5yZW1vdmUocG9zKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVNvdXJjZS5oCmluZGV4IDc2MzRlNDBhNTgyOWI5OTg4NmViY2EzY2Q1ODJjYmU4MDk0NzAy
YzguLmM0NWI1NzE0MjE0MzQ0YTQ0Nzg1OTU1NTMxNmQ5ZmYyZDE3YzhhYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtU291cmNlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Tb3Vy
Y2UuaApAQCAtNDEsMzYgKzQxLDQzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgTWVk
aWFTdHJlYW1Tb3VyY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVNvdXJjZT4gewog
cHVibGljOgorICAgIGNsYXNzIE9ic2VydmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1
YWwgfk9ic2VydmVyKCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VDaGFuZ2VkU3Rh
dGUoKSA9IDA7CisgICAgfTsKKwogICAgIGVudW0gVHlwZSB7CiAgICAgICAgIFR5cGVBdWRpbywK
ICAgICAgICAgVHlwZVZpZGVvCiAgICAgfTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtU291cmNlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBpZCwgVHlwZSB0eXBlLCBjb25zdCBT
dHJpbmcmIG5hbWUpCi0gICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE1lZGlhU3Ry
ZWFtU291cmNlKGlkLCB0eXBlLCBuYW1lKSk7Ci0gICAgfQorICAgIGVudW0gUmVhZHlTdGF0ZSB7
CisgICAgICAgIFJlYWR5U3RhdGVMaXZlID0gMCwKKyAgICAgICAgUmVhZHlTdGF0ZU11dGVkID0g
MSwKKyAgICAgICAgUmVhZHlTdGF0ZUVuZGVkID0gMgorICAgIH07CisKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbVNvdXJjZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgaWQsIFR5cGUs
IGNvbnN0IFN0cmluZyYgbmFtZSwgUmVhZHlTdGF0ZSA9IFJlYWR5U3RhdGVMaXZlKTsKIAogICAg
IGNvbnN0IFN0cmluZyYgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAgVHlwZSB0eXBl
KCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9uYW1lOyB9CiAKLSAgICBib29sIG11dGVkKCkgY29uc3QgeyByZXR1cm4g
bV9tdXRlZDsgfQotICAgIHZvaWQgc2V0TXV0ZWQoYm9vbCBtdXRlZCkgeyBtX211dGVkID0gbXV0
ZWQ7IH0KKyAgICB2b2lkIHNldFJlYWR5U3RhdGUoUmVhZHlTdGF0ZSk7CisgICAgUmVhZHlTdGF0
ZSByZWFkeVN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFkeVN0YXRlOyB9CisKKyAgICB2b2lk
IGFkZE9ic2VydmVyKE9ic2VydmVyKik7CisgICAgdm9pZCByZW1vdmVPYnNlcnZlcihPYnNlcnZl
ciopOwogCiBwcml2YXRlOgotICAgIE1lZGlhU3RyZWFtU291cmNlKGNvbnN0IFN0cmluZyYgaWQs
IFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBuYW1lKQotICAgICAgICA6IG1faWQoaWQpCi0gICAg
ICAgICwgbV90eXBlKHR5cGUpCi0gICAgICAgICwgbV9uYW1lKG5hbWUpCi0gICAgICAgICwgbV9t
dXRlZChmYWxzZSkKLSAgICB7Ci0gICAgfQorICAgIE1lZGlhU3RyZWFtU291cmNlKGNvbnN0IFN0
cmluZyYgaWQsIFR5cGUsIGNvbnN0IFN0cmluZyYgbmFtZSwgUmVhZHlTdGF0ZSk7CiAKICAgICBT
dHJpbmcgbV9pZDsKICAgICBUeXBlIG1fdHlwZTsKICAgICBTdHJpbmcgbV9uYW1lOwotICAgIGJv
b2wgbV9tdXRlZDsKKyAgICBSZWFkeVN0YXRlIG1fcmVhZHlTdGF0ZTsKKyAgICBWZWN0b3I8T2Jz
ZXJ2ZXIqPiBtX29ic2VydmVyczsKIH07CiAKIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxNZWRpYVN0
cmVhbVNvdXJjZT4gPiBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2Nocm9taXVtL01lZGlhU3RyZWFtQ2VudGVy
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21p
dW0vTWVkaWFTdHJlYW1DZW50ZXJDaHJvbWl1bS5jcHAKaW5kZXggM2M4MmY1ZjhiZDFlNjgwMWM2
ZDM1Y2UyNzU3ODE5OWYwNzc5NDg5My4uOTI1ODA3NDQyMGE4MGUzNWQyM2M0NDY0MWZiMDMxZjRh
MzA3YzM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Y2hyb21pdW0vTWVkaWFTdHJlYW1DZW50ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vY2hyb21pdW0vTWVkaWFTdHJlYW1DZW50ZXJDaHJvbWl1
bS5jcHAKQEAgLTY4LDkgKzY4LDEyIEBAIE1lZGlhU3RyZWFtQ2VudGVyQ2hyb21pdW06On5NZWRp
YVN0cmVhbUNlbnRlckNocm9taXVtKCkKIAogdm9pZCBNZWRpYVN0cmVhbUNlbnRlckNocm9taXVt
OjpxdWVyeU1lZGlhU3RyZWFtU291cmNlcyhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtU291cmNlc1F1
ZXJ5Q2xpZW50PiBjbGllbnQpCiB7Ci0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzICJzaG9ydC1j
aXJjdWl0IiBhbmQgZm9yd2FyZCB0byBtX3ByaXZhdGUgd2hlbiBDaHJvbWUgYW5kIER1bXBSZW5k
ZXJUcmVlIGhhcyBpbXBsZW1lbnRlZCBXZWJNZWRpYVN0cmVhbUNlbnRlci4KLSAgICBNZWRpYVN0
cmVhbVNvdXJjZVZlY3RvciBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlczsKLSAgICBjbGllbnQt
PmRpZENvbXBsZXRlUXVlcnkoYXVkaW9Tb3VyY2VzLCB2aWRlb1NvdXJjZXMpOworICAgIGlmICht
X3ByaXZhdGUpCisgICAgICAgIG1fcHJpdmF0ZS0+cXVlcnlNZWRpYVN0cmVhbVNvdXJjZXMoY2xp
ZW50KTsKKyAgICBlbHNlIHsKKyAgICAgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgYXVkaW9T
b3VyY2VzLCB2aWRlb1NvdXJjZXM7CisgICAgICAgIGNsaWVudC0+ZGlkQ29tcGxldGVRdWVyeShh
dWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7CisgICAgfQogfQogCiB2b2lkIE1lZGlhU3RyZWFt
Q2VudGVyQ2hyb21pdW06OmRpZFNldE1lZGlhU3RyZWFtVHJhY2tFbmFibGVkKE1lZGlhU3RyZWFt
RGVzY3JpcHRvciogc3RyZWFtLCAgTWVkaWFTdHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCkKQEAg
LTEwMCw5ICsxMDMsNiBAQCB2b2lkIE1lZGlhU3RyZWFtQ2VudGVyQ2hyb21pdW06OmRpZFN0b3BM
b2NhbE1lZGlhU3RyZWFtKE1lZGlhU3RyZWFtRGVzY3JpcHRvciogcwogdm9pZCBNZWRpYVN0cmVh
bUNlbnRlckNocm9taXVtOjpkaWRDcmVhdGVNZWRpYVN0cmVhbShNZWRpYVN0cmVhbURlc2NyaXB0
b3IqIHN0cmVhbSkKIHsKICAgICBpZiAobV9wcml2YXRlKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBS
ZW1vdmUgd2hlbiBDaHJvbWl1bSBoYXZlIHN3aXRjaGVkIHRvIHRoZSBuZXcgQVBJLgotICAgICAg
ICBtX3ByaXZhdGUtPmRpZENvbnN0cnVjdE1lZGlhU3RyZWFtKHN0cmVhbSk7Ci0KICAgICAgICAg
V2ViS2l0OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3Igd2ViU3RyZWFtKHN0cmVhbSk7CiAgICAg
ICAgIG1fcHJpdmF0ZS0+ZGlkQ3JlYXRlTWVkaWFTdHJlYW0od2ViU3RyZWFtKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1z
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3Bw
CmluZGV4IDc4OWQxYjYyMzdiMWFmYjk0OTkzYTU4YjE5ZTQwMzViYzJlYWI4YTAuLjVmMjUwMzUx
YTllOTIwMTkxOTE3ZTE0YjhiZmVjYWY3YzQxYjdlZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCkBAIC01MzcsNiArNTM3LDkg
QEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJQYWdlVmlzaWJpbGl0eVN0YXRlUHJl
dmlldywgUGFnZVZpc2liaWxpdHlTdGF0ZVAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZUF1ZGlv
LCBNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZUF1ZGlvKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVWaWRlbywgTWVkaWFTdHJlYW1Tb3VyY2U6
OlR5cGVWaWRlbyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhU3RyZWFt
U291cmNlOjpSZWFkeVN0YXRlTGl2ZSwgTWVkaWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGVMaXZl
KTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViTWVkaWFTdHJlYW1Tb3VyY2U6OlJl
YWR5U3RhdGVNdXRlZCwgTWVkaWFTdHJlYW1Tb3VyY2U6OlJlYWR5U3RhdGVNdXRlZCk7CitDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYk1lZGlhU3RyZWFtU291cmNlOjpSZWFkeVN0YXRl
RW5kZWQsIE1lZGlhU3RyZWFtU291cmNlOjpSZWFkeVN0YXRlRW5kZWQpOwogCiBDT01QSUxFX0FT
U0VSVF9NQVRDSElOR19FTlVNKFdlYklDRU9wdGlvbnM6OkNhbmRpZGF0ZVR5cGVBbGwsIEljZU9w
dGlvbnM6OkFMTCk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYklDRU9wdGlvbnM6
OkNhbmRpZGF0ZVR5cGVOb1JlbGF5LCBJY2VPcHRpb25zOjpOT19SRUxBWSk7CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWJhYTY4ZDUyMmU5OWJh
N2ViMWYxNzBiMDNhNWUwMGUzMDlhYzQ1Ny4uZDg5YTk3YTU4MGNlZjAxNDM1MjUxNzEyNGYyZGJh
OGI1MTZmYzA3MyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA3LTIwICBUb21teSBXaWRlbmZseWNodCAgPHRv
bW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogVXBkYXRlIE1lZGlh
U3RyZWFtVHJhY2sgdG8gbWF0Y2ggdGhlIHNwZWNpZmljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMTgwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaW5nIGEgTW9jayBXZWJNZWRpYVN0cmVh
bUNlbnRlciB0byBlbmFibGUgYmV0dGVyIExheW91dFRlc3RzLgorCisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9Nb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmNwcDoKKyAgICAgICAgKE1vY2tXZWJL
aXRQbGF0Zm9ybVN1cHBvcnQ6OmNyZWF0ZU1lZGlhU3RyZWFtQ2VudGVyKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJNZWRpYVN0cmVh
bUNlbnRlcjo6TW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyKToKKyAgICAgICAgKFdlYktpdDo6TW9j
a1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpxdWVyeU1lZGlhU3RyZWFtU291cmNlcyk6CisgICAgICAg
IChXZWJLaXQ6Ok1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkRW5hYmxlTWVkaWFTdHJlYW1U
cmFjayk6CisgICAgICAgIChXZWJLaXQ6Ok1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkRGlz
YWJsZU1lZGlhU3RyZWFtVHJhY2spOgorICAgICAgICAoV2ViS2l0OjpNb2NrV2ViTWVkaWFTdHJl
YW1DZW50ZXI6OmRpZFN0b3BMb2NhbE1lZGlhU3RyZWFtKToKKyAgICAgICAgKFdlYktpdDo6TW9j
a1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpkaWRDcmVhdGVNZWRpYVN0cmVhbSk6CisgICAgICAgIChX
ZWJLaXQ6Ok1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6Y29uc3RydWN0U0RQKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXIuaDogQ29w
aWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYktpdFBsYXRmb3Jt
U3VwcG9ydC5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoTW9ja1dlYk1lZGlhU3Ry
ZWFtQ2VudGVyKToKKyAgICAgICAgKFdlYktpdDo6TW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpN
b2NrV2ViTWVkaWFTdHJlYW1DZW50ZXIpOgorCiAyMDEyLTA3LTI1ICBNaWtoYWlsIFBvemRueWFr
b3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0g
QWRkIGV3a19tYWluLntjcHAsaH0gdG8gRUZMIFdLMgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLmd5cGkKaW5kZXggZTExZjQwZWNkNTg2ZmE5ZjJkYTQ4Nzc0ZWYyNTlkOWIyOWQz
YTVlOS4uN2RkNWExZWM2ZjQ1Yzg0MDc0ZDZmMmE2ZGM0YTE3NzIxNTViZmQzOSAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCkBAIC0xNiw2ICsxNiw4IEBACiAgICAg
ICAgICAgICAnY2hyb21pdW0vTW9ja1NwZWxsQ2hlY2suaCcsCiAgICAgICAgICAgICAnY2hyb21p
dW0vTW9ja1dlYktpdFBsYXRmb3JtU3VwcG9ydC5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L01vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCcsCisgICAgICAgICAgICAnY2hyb21pdW0vTW9j
a1dlYk1lZGlhU3RyZWFtQ2VudGVyLmNwcCcsCisgICAgICAgICAgICAnY2hyb21pdW0vTW9ja1dl
Yk1lZGlhU3RyZWFtQ2VudGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL01vY2tXZWJQcmVy
ZW5kZXJpbmdTdXBwb3J0LmNwcCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vTW9ja1dlYlByZXJl
bmRlcmluZ1N1cHBvcnQuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vTW9ja1dlYlNwZWVjaElu
cHV0Q29udHJvbGxlci5jcHAnLApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTW9ja1dlYktpdFBsYXRmb3JtU3VwcG9ydC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9Nb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmNwcAppbmRleCAyM2I1YWE3ZGIx
Nzg1Y2ExM2EyY2NmMWQzMzNhNzQ0ZGQ5NzU2YTliLi4wYThiMjk1MDdlYTliNWU1ZDM1ODkxMzUx
YjYzNjgzNTBkODRlMmNiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9Nb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9Nb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0LmNwcApAQCAtMzEsMTMgKzMxLDE1
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTW9ja1dlYktpdFBsYXRmb3JtU3Vw
cG9ydC5oIgogCisjaW5jbHVkZSAiTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyLmgiCiAjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBQYXNzT3duUHRyPE1vY2tXZWJLaXRQbGF0Zm9ybVN1cHBv
cnQ+IE1vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQ6OmNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIFdU
Rjo6YWRvcHRQdHIobmV3IE1vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKSk7CisgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBNb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0KCkpOwogfQogCiBNb2NrV2Vi
S2l0UGxhdGZvcm1TdXBwb3J0OjpNb2NrV2ViS2l0UGxhdGZvcm1TdXBwb3J0KCkKQEAgLTUzLDcg
KzU1LDEyIEBAIHZvaWQgTW9ja1dlYktpdFBsYXRmb3JtU3VwcG9ydDo6Y3J5cHRvZ3JhcGhpY2Fs
bHlSYW5kb21WYWx1ZXModW5zaWduZWQgY2hhciosIHNpCiAgICAgQ1JBU0goKTsKIH0KIAotV2Vi
TWVkaWFTdHJlYW1DZW50ZXIqIE1vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQ6OmNyZWF0ZU1lZGlh
U3RyZWFtQ2VudGVyKFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50KikKKyNpZiBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorV2ViTWVkaWFTdHJlYW1DZW50ZXIqIE1vY2tXZWJLaXRQbGF0Zm9ybVN1cHBv
cnQ6OmNyZWF0ZU1lZGlhU3RyZWFtQ2VudGVyKFdlYk1lZGlhU3RyZWFtQ2VudGVyQ2xpZW50KiBj
bGllbnQpCiB7Ci0gICAgcmV0dXJuIDA7CisgICAgaWYgKCFtX21vY2tNZWRpYVN0cmVhbUNlbnRl
cikKKyAgICAgICAgbV9tb2NrTWVkaWFTdHJlYW1DZW50ZXIgPSBhZG9wdFB0cihuZXcgTW9ja1dl
Yk1lZGlhU3RyZWFtQ2VudGVyKGNsaWVudCkpOworCisgICAgcmV0dXJuIG1fbW9ja01lZGlhU3Ry
ZWFtQ2VudGVyLmdldCgpOwogfQorI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViS2l0UGxhdGZvcm1T
dXBwb3J0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViS2l0UGxhdGZv
cm1TdXBwb3J0LmgKaW5kZXggNWU4OTc3ZDU1ZTFlNjM1OWE0NGUwMDNhNjNmMGU4MjMzNmI2MmE1
ZC4uMWM5ZDMwYjljYzRjMDQyNWI4YWRmYWZkMjZjNzczMTQwMDQyZmY2NCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYktpdFBsYXRmb3JtU3VwcG9ydC5o
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJLaXRQbGF0Zm9ybVN1
cHBvcnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2RlZmluZSBNb2NrV2ViS2l0UGxhdGZvcm1TdXBw
b3J0X2gKIAogI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBjbGFzcyBNb2NrV2ViS2l0UGxh
dGZvcm1TdXBwb3J0IDogcHVibGljIFdlYktpdDo6UGxhdGZvcm0gewpAQCAtNDEsMTAgKzQyLDE2
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZh
bHVlcyh1bnNpZ25lZCBjaGFyKiBidWZmZXIsIHNpemVfdCBsZW5ndGgpIE9WRVJSSURFOwogCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViTWVkaWFTdHJl
YW1DZW50ZXIqIGNyZWF0ZU1lZGlhU3RyZWFtQ2VudGVyKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1D
ZW50ZXJDbGllbnQqKSBPVkVSUklERTsKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQog
CiBwcml2YXRlOgogICAgIE1vY2tXZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKTsKKworI2lmIEVOQUJM
RShNRURJQV9TVFJFQU0pCisgICAgT3duUHRyPFdlYktpdDo6V2ViTWVkaWFTdHJlYW1DZW50ZXI+
IG1fbW9ja01lZGlhU3RyZWFtQ2VudGVyOworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0p
CiB9OwogCiAjZW5kaWYgLy8gTW9ja1dlYktpdFBsYXRmb3JtU3VwcG9ydF9oCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXIu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYk1lZGlhU3RyZWFtQ2Vu
dGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zMGI1NmYxZjFlNDZjMTk1MmUzZmU3Mzc0YzU4MjllMmMyOWU1
ZTMzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9j
a1dlYk1lZGlhU3RyZWFtQ2VudGVyLmNwcApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRp
b24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisg
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiTW9ja1dlYk1lZGlh
U3RyZWFtQ2VudGVyLmgiCisKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJJQ0VDYW5kaWRhdGVEZXNj
cmlwdG9yLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQu
aCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJNZWRpYVN0cmVhbUNvbXBvbmVudC5oIgorI2luY2x1
ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtRGVzY3JpcHRvci5oIgorI2luY2x1ZGUgInBsYXRm
b3JtL1dlYk1lZGlhU3RyZWFtU291cmNlLmgiCisjaW5jbHVkZSAicGxhdGZvcm0vV2ViTWVkaWFT
dHJlYW1Tb3VyY2VzUmVxdWVzdC5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNlc3Npb25EZXNj
cmlwdGlvbkRlc2NyaXB0b3IuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9XZWJWZWN0b3IuaCIKKwor
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpNb2Nr
V2ViTWVkaWFTdHJlYW1DZW50ZXIoV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQqIGNsaWVudCkK
K3sKK30KKwordm9pZCBNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXI6OnF1ZXJ5TWVkaWFTdHJlYW1T
b3VyY2VzKGNvbnN0IFdlYk1lZGlhU3RyZWFtU291cmNlc1JlcXVlc3QmIHJlcXVlc3QpCit7Cisg
ICAgV2ViVmVjdG9yPFdlYk1lZGlhU3RyZWFtU291cmNlPiBhdWRpb1NvdXJjZXMsIHZpZGVvU291
cmNlczsKKyAgICByZXF1ZXN0LmRpZENvbXBsZXRlUXVlcnkoYXVkaW9Tb3VyY2VzLCB2aWRlb1Nv
dXJjZXMpOworfQorCit2b2lkIE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkRW5hYmxlTWVk
aWFTdHJlYW1UcmFjayhjb25zdCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImLCBjb25zdCBXZWJN
ZWRpYVN0cmVhbUNvbXBvbmVudCYgY29tcG9uZW50KQoreworICAgIGNvbXBvbmVudC5zb3VyY2Uo
KS5zZXRSZWFkeVN0YXRlKFdlYk1lZGlhU3RyZWFtU291cmNlOjpSZWFkeVN0YXRlTGl2ZSk7Cit9
CisKK3ZvaWQgTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpkaWREaXNhYmxlTWVkaWFTdHJlYW1U
cmFjayhjb25zdCBXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImLCBjb25zdCBXZWJNZWRpYVN0cmVh
bUNvbXBvbmVudCYgY29tcG9uZW50KQoreworICAgIGNvbXBvbmVudC5zb3VyY2UoKS5zZXRSZWFk
eVN0YXRlKFdlYk1lZGlhU3RyZWFtU291cmNlOjpSZWFkeVN0YXRlTXV0ZWQpOworfQorCit2b2lk
IE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6ZGlkU3RvcExvY2FsTWVkaWFTdHJlYW0oY29uc3Qg
V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJiBzdHJlYW0pCit7CisgICAgV2ViVmVjdG9yPFdlYk1l
ZGlhU3RyZWFtQ29tcG9uZW50PiBhdWRpb0NvbXBvbmVudHM7CisgICAgc3RyZWFtLmF1ZGlvU291
cmNlcyhhdWRpb0NvbXBvbmVudHMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXVkaW9D
b21wb25lbnRzLnNpemUoKTsgKytpKQorICAgICAgICBhdWRpb0NvbXBvbmVudHNbaV0uc291cmNl
KCkuc2V0UmVhZHlTdGF0ZShXZWJNZWRpYVN0cmVhbVNvdXJjZTo6UmVhZHlTdGF0ZUVuZGVkKTsK
KworICAgIFdlYlZlY3RvcjxXZWJNZWRpYVN0cmVhbUNvbXBvbmVudD4gdmlkZW9Db21wb25lbnRz
OworICAgIHN0cmVhbS52aWRlb1NvdXJjZXModmlkZW9Db21wb25lbnRzKTsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHZpZGVvQ29tcG9uZW50cy5zaXplKCk7ICsraSkKKyAgICAgICAgdmlk
ZW9Db21wb25lbnRzW2ldLnNvdXJjZSgpLnNldFJlYWR5U3RhdGUoV2ViTWVkaWFTdHJlYW1Tb3Vy
Y2U6OlJlYWR5U3RhdGVFbmRlZCk7Cit9CisKK3ZvaWQgTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVy
OjpkaWRDcmVhdGVNZWRpYVN0cmVhbShXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImKQoreworfQor
CitXZWJTdHJpbmcgTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyOjpjb25zdHJ1Y3RTRFAoY29uc3Qg
V2ViSUNFQ2FuZGlkYXRlRGVzY3JpcHRvciYgaWNlQ2FuZGlkYXRlKQoreworICAgIHN0cmluZzE2
IHJlc3VsdCA9IGljZUNhbmRpZGF0ZS5sYWJlbCgpOworICAgIHJlc3VsdCArPSBXZWJTdHJpbmco
IjoiKTsKKyAgICByZXN1bHQgKz0gaWNlQ2FuZGlkYXRlLmNhbmRpZGF0ZUxpbmUoKTsKKyAgICBy
ZXN1bHQgKz0gV2ViU3RyaW5nKCI7Iik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworV2ViU3Ry
aW5nIE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcjo6Y29uc3RydWN0U0RQKGNvbnN0IFdlYlNlc3Np
b25EZXNjcmlwdGlvbkRlc2NyaXB0b3ImIHNlc3Npb25EZXNjcmlwdGlvbikKK3sKKyAgICBzdHJp
bmcxNiByZXN1bHQgPSBzZXNzaW9uRGVzY3JpcHRpb24uaW5pdGlhbFNEUCgpOworICAgIHJlc3Vs
dCArPSBXZWJTdHJpbmcoIjsiKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNlc3Npb25E
ZXNjcmlwdGlvbi5udW1iZXJPZkFkZGVkQ2FuZGlkYXRlcygpOyArK2kpIHsKKyAgICAgICAgcmVz
dWx0ICs9IGNvbnN0cnVjdFNEUChzZXNzaW9uRGVzY3JpcHRpb24uY2FuZGlkYXRlKGkpKTsKKyAg
ICAgICAgcmVzdWx0ICs9IFdlYlN0cmluZygiOyIpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0
OworfQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJNZWRpYVN0cmVhbUNlbnRlci5oIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNzViYWYyNDdhMjk5YmYzNjU4Y2NmM2ZiMjQwYTY2ODY2NWFiYTcyNAotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tXZWJNZWRpYVN0
cmVhbUNlbnRlci5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIE1vY2tXZWJNZWRpYVN0cmVhbUNl
bnRlcl9oCisjZGVmaW5lIE1vY2tXZWJNZWRpYVN0cmVhbUNlbnRlcl9oCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKQorI2luY2x1ZGUgInBsYXRmb3JtL1dlYk1lZGlhU3RyZWFtQ2VudGVyLmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQ7
Cit9OworCitjbGFzcyBNb2NrV2ViTWVkaWFTdHJlYW1DZW50ZXIgOiBwdWJsaWMgV2ViS2l0OjpX
ZWJNZWRpYVN0cmVhbUNlbnRlciB7CitwdWJsaWM6CisgICAgZXhwbGljaXQgTW9ja1dlYk1lZGlh
U3RyZWFtQ2VudGVyKFdlYktpdDo6V2ViTWVkaWFTdHJlYW1DZW50ZXJDbGllbnQqKTsKKworICAg
IHZpcnR1YWwgdm9pZCBxdWVyeU1lZGlhU3RyZWFtU291cmNlcyhjb25zdCBXZWJLaXQ6OldlYk1l
ZGlhU3RyZWFtU291cmNlc1JlcXVlc3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
RW5hYmxlTWVkaWFTdHJlYW1UcmFjayhjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFtRGVzY3Jp
cHRvciYsIGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1Db21wb25lbnQmKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzYWJsZU1lZGlhU3RyZWFtVHJhY2soY29uc3QgV2ViS2l0
OjpXZWJNZWRpYVN0cmVhbURlc2NyaXB0b3ImLCBjb25zdCBXZWJLaXQ6OldlYk1lZGlhU3RyZWFt
Q29tcG9uZW50JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZFN0b3BMb2NhbE1lZGlh
U3RyZWFtKGNvbnN0IFdlYktpdDo6V2ViTWVkaWFTdHJlYW1EZXNjcmlwdG9yJikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZU1lZGlhU3RyZWFtKFdlYktpdDo6V2ViTWVkaWFT
dHJlYW1EZXNjcmlwdG9yJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJLaXQ6OldlYlN0cmlu
ZyBjb25zdHJ1Y3RTRFAoY29uc3QgV2ViS2l0OjpXZWJJQ0VDYW5kaWRhdGVEZXNjcmlwdG9yJikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJLaXQ6OldlYlN0cmluZyBjb25zdHJ1Y3RTRFAoY29u
c3QgV2ViS2l0OjpXZWJTZXNzaW9uRGVzY3JpcHRpb25EZXNjcmlwdG9yJikgT1ZFUlJJREU7CisK
K3ByaXZhdGU6CisgICAgTW9ja1dlYk1lZGlhU3RyZWFtQ2VudGVyKCkgeyB9Cit9OworCisjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNlbmRpZiAvLyBNb2NrV2ViTWVkaWFTdHJlYW1D
ZW50ZXJfaAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggMjA2MjM0NThmNmQxY2U1NzYxNzU5MzRiYmNkZjU2Yzk5NjQ2YWJh
Ni4uMWFjMWRjODM3MGJmZTdkZTRkOWUwYWU4Y2JhYTMwM2I1NDg4OGI3YSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDEyLTA3LTIwICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUu
Y29tPgorCisgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogVXBkYXRlIE1lZGlhU3RyZWFtVHJhY2sg
dG8gbWF0Y2ggdGhlIHNwZWNpZmljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkwMTgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2stZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2suaHRtbDogQWRkZWQuCisKIDIwMTItMDctMjUgIFphbiBEb2JlcnNlayAgPHphbmRvYmVy
c2VrQGdtYWlsLmNvbT4KIAogICAgICAgICBmYXN0L2V2ZW50cy9wYW5TY3JvbGwtY2xpY2staHlw
ZXJsaW5rLmh0bWwgdGVzdCBzaG91bGQgYmUgcHV0IGluIHBsYXRmb3JtL3dpbgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYWZkNjQ2MGFlMzM1YjgzOWU2ODk4YTVjMjM5Mjk1NTZhNmVm
NjAwYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGVzdHMgTWVkaWFT
dHJlYW1UcmFjayBjYWxsYmFja3MuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIGdldFVzZXJNZWRpYSBzdWNjZWVkZWQuCitQQVNTIFRyYWNrIG9ubXV0ZSBjYWxsYmFjayBz
dWNjZWVkZWQuCitQQVNTIFRyYWNrIG9udW5tdXRlIGNhbGxiYWNrIHN1Y2NlZWRlZC4KK1BBU1Mg
VHJhY2sgb25lbmRlZCBjYWxsYmFjayBzdWNjZWVkZWQuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNl
ZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZjViNmViN2RmZGVk
NjhmYjUzODEzYzRiZGM2MWNlMGU0ZTc0ZDYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmh0bWwKQEAgLTAsMCArMSw3MiBA
QAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+
Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwv
cD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJUZXN0
cyBNZWRpYVN0cmVhbVRyYWNrIGNhbGxiYWNrcy4iKTsKKworLy8gTm90ZSB0aGF0IHRoZSBiZWxv
dyBiZWhhdmlvdXIgZG9lc24ndCByZWZsZWN0IGhvdyBpdCB3b3JrcyBvdXRzaWRlIG9mIExheW91
dFRlc3RzLgorLy8gVGhlIHVuZGVybHlpbmcgbW9jayBpcyBtb2RpZmllZCB0byB0cmlnZ2VyIHRo
ZSBldmVudHMgd2hlbiBjZXJ0YWluIGZ1bmN0aW9ucyBhcmUgY2FsbGVkLgorLy8gVGhpcyBtb2Rp
ZmllZCBiZWhhdmlvdXIgYWxsb3dzIHVzIHRvIHRlc3QgdGhlIE1lZGlhU3RyZWFtVHJhY2sgY2xh
c3MgcHJvcGVybHkuCisKK3ZhciBzdHJlYW07Cit2YXIgdHJhY2s7CisKK2Z1bmN0aW9uIGVycm9y
KCkgeworICAgIHRlc3RGYWlsZWQoJ1N0cmVhbSBnZW5lcmF0aW9uIGZhaWxlZC4nKTsKKyAgICBm
aW5pc2hKU1Rlc3QoKTsKK30KKworZnVuY3Rpb24gZ2V0VXNlck1lZGlhKGNvbnN0cmFpbnRzLCBj
YWxsYmFjaykgeworICAgIHRyeSB7CisgICAgICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVk
aWEoY29uc3RyYWludHMsIGNhbGxiYWNrLCBlcnJvcik7CisgICAgfSBjYXRjaCAoZSkgeworICAg
ICAgICB0ZXN0RmFpbGVkKCd3ZWJraXRHZXRVc2VyTWVkaWEgdGhyZXcgZXhjZXB0aW9uIDonICsg
ZSk7CisgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgIH0KK30KKworZnVuY3Rpb24gb25UcmFj
a0VuZGVkKCkgeworICAgIHRlc3RQYXNzZWQoJ1RyYWNrIG9uZW5kZWQgY2FsbGJhY2sgc3VjY2Vl
ZGVkLicpOworCisgICAgZmluaXNoSlNUZXN0KCk7Cit9CisKK2Z1bmN0aW9uIG9uVHJhY2tVbm11
dGUoKSB7CisgICAgdGVzdFBhc3NlZCgnVHJhY2sgb251bm11dGUgY2FsbGJhY2sgc3VjY2VlZGVk
LicpOworCisgICAgc3RyZWFtLnN0b3AoKTsKK30KKworZnVuY3Rpb24gb25UcmFja011dGUoKSB7
CisgICAgdGVzdFBhc3NlZCgnVHJhY2sgb25tdXRlIGNhbGxiYWNrIHN1Y2NlZWRlZC4nKTsKKwor
ICAgIHRyYWNrLmVuYWJsZWQgPSB0cnVlOworfQorCitmdW5jdGlvbiBnb3RTdHJlYW0ocykgewor
ICAgIHRlc3RQYXNzZWQoJ2dldFVzZXJNZWRpYSBzdWNjZWVkZWQuJyk7CisKKyAgICBzdHJlYW0g
PSBzOworICAgIHRyYWNrID0gc3RyZWFtLnZpZGVvVHJhY2tzWzBdOworCisgICAgdHJhY2sub251
bm11dGUgPSBvblRyYWNrVW5tdXRlOworICAgIHRyYWNrLm9ubXV0ZSA9IG9uVHJhY2tNdXRlOwor
ICAgIHRyYWNrLm9uZW5kZWQgPSBvblRyYWNrRW5kZWQ7CisKKyAgICB0cmFjay5lbmFibGVkID0g
ZmFsc2U7Cit9CisKK2dldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0
cmVhbSk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3dpbmRvdy5zdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>