<?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>41165</bug_id>
          
          <creation_ts>2010-06-24 10:17:18 -0700</creation_ts>
          <short_desc>FrameLoader cleanup : Remove m_URL member</short_desc>
          <delta_ts>2011-01-27 17:22:40 -0800</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>PC</rep_platform>
          <op_sys>OS X 10.5</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>41166</dependson>
    
    <dependson>45115</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dinu.jacob</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>242568</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-06-24 10:17:18 -0700</bug_when>
    <thetext>FrameLoader::url() should always be the same as Document::url(), so it&apos;s redundant.  There appears to be one corner case in initialization of Documents where this isn&apos;t the case, but once that is resolved this variable should be able to be deleted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269319</commentid>
    <comment_count>1</comment_count>
      <attachid>65432</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-08-25 10:17:49 -0700</bug_when>
    <thetext>Created attachment 65432
patch

This change is large, but all mechanical except for FrameLoader and Document::Document().

There are a couple of places in FrameLoader where we&apos;re logging the url, but the document might be detached, so there are some null checks that need to happen that weren&apos;t necessary previously.  Also, ordering of setting variables needed to change in a couple of places.

The changes in Document&apos;s constructor are tweaking the handling of about:blank.  I went for full backwards compatibility as defined by the existing layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269326</commentid>
    <comment_count>2</comment_count>
      <attachid>65432</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-25 10:29:50 -0700</bug_when>
    <thetext>Comment on attachment 65432
patch

Great idea to do this!

Unlike loader(), there is a tiny window where a frame can have 0 for document(). I’m hoping we won’t introduce any new null-dereference problems with this change.

It seems to me that could have been done in two steps. One step would be about removing FrameLoader::m_URL, and a separate step would be removing FrameLoader::url. This would make one patch have all the substantive changes, and another just the mechanical step of calling directly through document() instead of through loader(), making it easier to review.

&gt; +    // We need to be careful about initializing the url in the case where we&apos;re passed an empty url.
&gt; +    // Specifically, we don&apos;t want to set about:blank for the initial empty document unless it&apos;s not the main frame.
&gt; +    if (!url.isEmpty() || (frame &amp;&amp; (!frame-&gt;loader()-&gt;stateMachine()-&gt;creatingInitialEmptyDocument() || frame-&gt;tree()-&gt;parent())))
&gt;          setURL(url);

This comment should be replaced by one that says why we don&apos;t want to set about:blank for the initial empty document on the main frame.

Comments should focus on why the code does something, not what the code does. The code itself should be written so that it&apos;s clear what it does. he code already says what the comment says -- don&apos;t set the URL to the empty URL if it&apos;s an initial empty document for the main frame -- so we don&apos;t need to repeat that. What we need from the comment is the information *not* contained in the code.

I do not like the phrase &quot;be careful&quot; here, or frankly ever in discussions of computer software. We should always be careful! ;-)

The word is &quot;URL&quot; not &quot;url&quot; in plain language, despite the fact that we use &quot;url&quot; in variable names.

Otherwise, the patch seems good.

r=me, but I’m not going to set commit-queue+ because I’d like to see the comment replaced by a substantive one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269556</commentid>
    <comment_count>3</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-08-25 15:44:39 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 65432 [details])
&gt; Great idea to do this!
&gt; 
&gt; Unlike loader(), there is a tiny window where a frame can have 0 for document(). I’m hoping we won’t introduce any new null-dereference problems with this change.

I wasn&apos;t able to find any cases of null documents other than the ones I mentioned in passing in comment #1.

&gt; 
&gt; It seems to me that could have been done in two steps. One step would be about removing FrameLoader::m_URL, and a separate step would be removing FrameLoader::url. This would make one patch have all the substantive changes, and another just the mechanical step of calling directly through document() instead of through loader(), making it easier to review.

I think I may end up doing that after all (see below)

&gt; 
&gt; &gt; +    // We need to be careful about initializing the url in the case where we&apos;re passed an empty url.
&gt; &gt; +    // Specifically, we don&apos;t want to set about:blank for the initial empty document unless it&apos;s not the main frame.
&gt; &gt; +    if (!url.isEmpty() || (frame &amp;&amp; (!frame-&gt;loader()-&gt;stateMachine()-&gt;creatingInitialEmptyDocument() || frame-&gt;tree()-&gt;parent())))
&gt; &gt;          setURL(url);
&gt; 
&gt; This comment should be replaced by one that says why we don&apos;t want to set about:blank for the initial empty document on the main frame.
&gt; 
&gt; Comments should focus on why the code does something, not what the code does. The code itself should be written so that it&apos;s clear what it does. he code already says what the comment says -- don&apos;t set the URL to the empty URL if it&apos;s an initial empty document for the main frame -- so we don&apos;t need to repeat that. What we need from the comment is the information *not* contained in the code.


So part of the reason the comment was light on details on the &apos;why&apos; of the change was that there is some voodoo to this code that I don&apos;t fully understand.  I think part of it is that I can&apos;t decide whether the initial empty document created in FrameLoader::init() should have an empty or about:blank url.  Either way, I have one failing test that needs to be resolved.

If it should be empty, then we either need both of the checks I added in Document&apos;s constructor or we need the isCreatingInitialDocument() check and fast/dom/early-frame-url.html needs to be rewritten (I think the test is not right in its current state, since it appears to be busy-waiting expecting the url to change and not letting the stack unwind so the navigation can occur).

If it should be about:blank, then we end up hitting an assert (http://trac.webkit.org/browser/trunk/WebCore/loader/HistoryController.cpp#L102) in http://trac.webkit.org/browser/trunk/LayoutTests/fast/dom/location-new-window-no-crash.html, apparently because it is dependent on the url of a created window starting as empty (if it&apos;s about:blank, it does some navigations synchronously because they&apos;re the same document and the test has already outputted some FAIL messages before the assert is hit).


I&apos;m inclined to say the right answer is that the initial empty document should have an empty url and early-frame-url.html needs rewriting, but I&apos;m quite willing to be persuaded otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270028</commentid>
    <comment_count>4</comment_count>
      <attachid>65597</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-08-26 12:28:30 -0700</bug_when>
    <thetext>Created attachment 65597
split patch - remove m_URL and have FrameLoader::url() call Document::url()

This splits the patch into 2 as Darin suggested.

The main reason I&apos;m doing this is to check my thinking on the rules of initializing the url in the Document constructor and that my layout test rewriting seems sane (see my previous comment for my pontification on the topic).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272594</commentid>
    <comment_count>5</comment_count>
      <attachid>65597</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-31 19:58:16 -0700</bug_when>
    <thetext>Comment on attachment 65597
split patch - remove m_URL and have FrameLoader::url() call Document::url()

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

&gt; WebCore/loader/FrameLoader.cpp:519
&gt; +    m_workingURL = url;
&gt; +    if (m_workingURL.protocolInHTTPFamily() &amp;&amp; !m_workingURL.host().isEmpty() &amp;&amp; m_workingURL.path().isEmpty())
&gt; +        m_workingURL.setPath(&quot;/&quot;);
It seems like m_URL no longer has this modification applied.  Does this code actually do anything?  I would have expected KURL to normalize empty paths to include &quot;/&quot;...

&gt; WebCore/loader/FrameLoader.cpp:724
&gt;              if (!iconDatabase()-&gt;iconDataKnownForIconURL(urlString)) {
&gt;                  LOG(IconDatabase, &quot;Told not to load icon %s but icon data is not yet available - registering for notification and requesting load from disk&quot;, urlString.ascii().data());
&gt;                  m_client-&gt;registerForIconNotification();
&gt; -                iconDatabase()-&gt;iconForPageURL(m_URL.string(), IntSize(0, 0));
&gt; +                iconDatabase()-&gt;iconForPageURL(m_frame-&gt;document()-&gt;url().string(), IntSize(0, 0));
why not url() in all these places?

&gt; WebCore/loader/FrameLoader.cpp:1829
&gt; -    LOG(PageCache, &quot;WebCoreLoading %s: About to commit provisional load from previous URL &apos;%s&apos; to new URL &apos;%s&apos;&quot;, m_frame-&gt;tree()-&gt;name().string().utf8().data(), m_URL.string().utf8().data(), 
&gt; +    LOG(PageCache, &quot;WebCoreLoading %s: About to commit provisional load from previous URL &apos;%s&apos; to new URL &apos;%s&apos;&quot;, m_frame-&gt;tree()-&gt;name().string().utf8().data(), 
&gt; +        m_frame-&gt;document() ? m_frame-&gt;document()-&gt;url().string().utf8().data() : &quot;&quot;, 
I presume you checked that document can actually be null here.

&gt; WebCore/loader/FrameLoader.cpp:1870
&gt; -    LOG(Loading, &quot;WebCoreLoading %s: Finished committing provisional load to URL %s&quot;, m_frame-&gt;tree()-&gt;name().string().utf8().data(), m_URL.string().utf8().data());
&gt; +    LOG(Loading, &quot;WebCoreLoading %s: Finished committing provisional load to URL %s&quot;, m_frame-&gt;tree()-&gt;name().string().utf8().data(),
&gt; +        m_frame-&gt;document() ? m_frame-&gt;document()-&gt;url().string().utf8().data() : &quot;&quot;);
and here.

&gt; WebCore/loader/FrameLoader.cpp:2113
&gt;      m_workingURL = url;
By the way, m_workingURL seems wrong too.  Shouldn&apos;t that state be held in the DocumentLoader?

&gt; LayoutTests/fast/dom/resources/a.html:9
&gt; +    else if (window.layoutTestController)
&gt; +	layoutTestController.notifyDone();
Indent issue?

&gt; LayoutTests/ChangeLog:6
&gt; +        Update a test that busy-waits when it shouldn&apos;t.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=41165.
This doesn&apos;t appear to belong to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>272828</commentid>
    <comment_count>6</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-09-01 09:04:38 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 65597 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=65597&amp;action=prettypatch
&gt; 
&gt; &gt; WebCore/loader/FrameLoader.cpp:519
&gt; &gt; +    m_workingURL = url;
&gt; &gt; +    if (m_workingURL.protocolInHTTPFamily() &amp;&amp; !m_workingURL.host().isEmpty() &amp;&amp; m_workingURL.path().isEmpty())
&gt; &gt; +        m_workingURL.setPath(&quot;/&quot;);
&gt; It seems like m_URL no longer has this modification applied.  Does this code actually do anything?  I would have expected KURL to normalize empty paths to include &quot;/&quot;...

No idea, I&apos;ll check.

&gt; 
&gt; &gt; WebCore/loader/FrameLoader.cpp:724
&gt; &gt;              if (!iconDatabase()-&gt;iconDataKnownForIconURL(urlString)) {
&gt; &gt;                  LOG(IconDatabase, &quot;Told not to load icon %s but icon data is not yet available - registering for notification and requesting load from disk&quot;, urlString.ascii().data());
&gt; &gt;                  m_client-&gt;registerForIconNotification();
&gt; &gt; -                iconDatabase()-&gt;iconForPageURL(m_URL.string(), IntSize(0, 0));
&gt; &gt; +                iconDatabase()-&gt;iconForPageURL(m_frame-&gt;document()-&gt;url().string(), IntSize(0, 0));
&gt; why not url() in all these places?

No good reason, just leftover from the previous version.

&gt; 
&gt; &gt; WebCore/loader/FrameLoader.cpp:1829
&gt; &gt; -    LOG(PageCache, &quot;WebCoreLoading %s: About to commit provisional load from previous URL &apos;%s&apos; to new URL &apos;%s&apos;&quot;, m_frame-&gt;tree()-&gt;name().string().utf8().data(), m_URL.string().utf8().data(), 
&gt; &gt; +    LOG(PageCache, &quot;WebCoreLoading %s: About to commit provisional load from previous URL &apos;%s&apos; to new URL &apos;%s&apos;&quot;, m_frame-&gt;tree()-&gt;name().string().utf8().data(), 
&gt; &gt; +        m_frame-&gt;document() ? m_frame-&gt;document()-&gt;url().string().utf8().data() : &quot;&quot;, 
&gt; I presume you checked that document can actually be null here.
&gt; 
&gt; &gt; WebCore/loader/FrameLoader.cpp:1870
&gt; &gt; -    LOG(Loading, &quot;WebCoreLoading %s: Finished committing provisional load to URL %s&quot;, m_frame-&gt;tree()-&gt;name().string().utf8().data(), m_URL.string().utf8().data());
&gt; &gt; +    LOG(Loading, &quot;WebCoreLoading %s: Finished committing provisional load to URL %s&quot;, m_frame-&gt;tree()-&gt;name().string().utf8().data(),
&gt; &gt; +        m_frame-&gt;document() ? m_frame-&gt;document()-&gt;url().string().utf8().data() : &quot;&quot;);
&gt; and here.

Yes to both.

&gt; 
&gt; &gt; WebCore/loader/FrameLoader.cpp:2113
&gt; &gt;      m_workingURL = url;
&gt; By the way, m_workingURL seems wrong too.  Shouldn&apos;t that state be held in the DocumentLoader?

Agreed.  I fooled around with it briefly a couple days ago, but it wasn&apos;t trivial.  I&apos;m planning on playing with it more at a later date.

&gt; 
&gt; &gt; LayoutTests/fast/dom/resources/a.html:9
&gt; &gt; +    else if (window.layoutTestController)
&gt; &gt; +	layoutTestController.notifyDone();
&gt; Indent issue?
&gt; 
&gt; &gt; LayoutTests/ChangeLog:6
&gt; &gt; +        Update a test that busy-waits when it shouldn&apos;t.
&gt; &gt; +        https://bugs.webkit.org/show_bug.cgi?id=41165.
&gt; This doesn&apos;t appear to belong to this patch.

That was intentional, but probably a poorly written ChangeLog :)  That test makes ordering assumptions that appear to be no longer valid.  See Comment #3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273420</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-02 09:48:38 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/66671 might have broken Qt Linux Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273445</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-09-02 10:45:49 -0700</bug_when>
    <thetext>&gt; I think the test is not right in its current state

Did the test use to pass in other browsers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273447</commentid>
    <comment_count>9</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-09-02 10:49:08 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; I think the test is not right in its current state
&gt; 
&gt; Did the test use to pass in other browsers?

I&apos;ll double-check, the patch is currently in the rollout queue because it broke a different test on a bunch of platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274939</commentid>
    <comment_count>10</comment_count>
      <attachid>65432</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-07 03:20:35 -0700</bug_when>
    <thetext>Comment on attachment 65432
patch

Cleared Darin Adler&apos;s review+ from obsolete attachment 65432 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279669</commentid>
    <comment_count>11</comment_count>
    <who name="Dinu Jacob">dinu.jacob</who>
    <bug_when>2010-09-15 13:21:35 -0700</bug_when>
    <thetext>Hi Nate,

I have a bug (41155) that is hold until this patch is landed to determine whether the issue reported in 41155 will be fixed by your changes. Do you know how long it will take to land your patch? 
Thanks, Dinu</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279671</commentid>
    <comment_count>12</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-09-15 13:25:25 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Hi Nate,
&gt; 
&gt; I have a bug (41155) that is hold until this patch is landed to determine whether the issue reported in 41155 will be fixed by your changes. Do you know how long it will take to land your patch? 
&gt; Thanks, Dinu

It may be a while.  There&apos;s a corner case that breaks with the version I committed and reverted, and I haven&apos;t figured out how to resolve it.  I got frustrated and decided to work on something else for a while, so it&apos;s fairly unlikely I&apos;ll resolve this in the next 2 weeks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>279673</commentid>
    <comment_count>13</comment_count>
    <who name="Dinu Jacob">dinu.jacob</who>
    <bug_when>2010-09-15 13:26:33 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; Hi Nate,
&gt; &gt; 
&gt; &gt; I have a bug (41155) that is hold until this patch is landed to determine whether the issue reported in 41155 will be fixed by your changes. Do you know how long it will take to land your patch? 
&gt; &gt; Thanks, Dinu
&gt; 
&gt; It may be a while.  There&apos;s a corner case that breaks with the version I committed and reverted, and I haven&apos;t figured out how to resolve it.  I got frustrated and decided to work on something else for a while, so it&apos;s fairly unlikely I&apos;ll resolve this in the next 2 weeks.

Thanks Nate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337939</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-21 01:37:58 -0800</bug_when>
    <thetext>3-month ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338084</commentid>
    <comment_count>15</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-01-21 09:04:06 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; 3-month ping?

I looked at this again a couple of weeks ago and wasn&apos;t able to get it working.  There&apos;s still a corner case where we&apos;re failing. :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340312</commentid>
    <comment_count>16</comment_count>
      <attachid>80201</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-01-26 09:34:35 -0800</bug_when>
    <thetext>Created attachment 80201
patch without any test changes

The only substantive code change from the previous patch is the check of frame-&gt;ownerElement() in Document::Document() and the comment explain it.  This patch passes all existing layout tests as-is, unlike previous iterations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340339</commentid>
    <comment_count>17</comment_count>
      <attachid>80201</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-26 10:32:36 -0800</bug_when>
    <thetext>Comment on attachment 80201
patch without any test changes

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

Yay!  Thanks for coming back to this patch.

&gt; Source/WebCore/dom/Document.cpp:453
&gt; -    if (frame || !url.isEmpty())
&gt; +    // We depend on the url getting immediately set in subframes, but we
&gt; +    // also depend on the url NOT getting immediately set in opened windows.
&gt; +    // See fast/dom/early-frame-url.html
&gt; +    // and fast/dom/location-new-window-no-crash.html, respectively.
&gt; +    // FIXME: Can/should we unify this behavior?
&gt; +    if ((frame &amp;&amp; frame-&gt;ownerElement()) || !url.isEmpty())
&gt;          setURL(url);

Crazy!

&gt; Source/WebCore/loader/FrameLoader.cpp:-541
&gt; -    if (m_frame-&gt;document()-&gt;url() != blankURL())
&gt; -        m_URL = m_frame-&gt;document()-&gt;url();

Woah.  This old code was wrong!

&gt; Source/WebCore/loader/FrameLoader.cpp:650
&gt;      KURL ref(url);
&gt;      ref.setUser(String());
&gt;      ref.setPass(String());
&gt;      ref.removeFragmentIdentifier();
&gt;      m_outgoingReferrer = ref.string();

ref is kind of a silly name for this variable.  Maybe &quot;outgoingReferrer&quot; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340340</commentid>
    <comment_count>18</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-01-26 10:35:54 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 80201 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=80201&amp;action=review
&gt; 
&gt; Yay!  Thanks for coming back to this patch.
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:453
&gt; &gt; -    if (frame || !url.isEmpty())
&gt; &gt; +    // We depend on the url getting immediately set in subframes, but we
&gt; &gt; +    // also depend on the url NOT getting immediately set in opened windows.
&gt; &gt; +    // See fast/dom/early-frame-url.html
&gt; &gt; +    // and fast/dom/location-new-window-no-crash.html, respectively.
&gt; &gt; +    // FIXME: Can/should we unify this behavior?
&gt; &gt; +    if ((frame &amp;&amp; frame-&gt;ownerElement()) || !url.isEmpty())
&gt; &gt;          setURL(url);
&gt; 
&gt; Crazy!
&gt; 
&gt; &gt; Source/WebCore/loader/FrameLoader.cpp:-541
&gt; &gt; -    if (m_frame-&gt;document()-&gt;url() != blankURL())
&gt; &gt; -        m_URL = m_frame-&gt;document()-&gt;url();
&gt; 
&gt; Woah.  This old code was wrong!
&gt; 
&gt; &gt; Source/WebCore/loader/FrameLoader.cpp:650
&gt; &gt;      KURL ref(url);
&gt; &gt;      ref.setUser(String());
&gt; &gt;      ref.setPass(String());
&gt; &gt;      ref.removeFragmentIdentifier();
&gt; &gt;      m_outgoingReferrer = ref.string();
&gt; 
&gt; ref is kind of a silly name for this variable.  Maybe &quot;outgoingReferrer&quot; ?

outgoingReferrer sounds good.  Will fix up on landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340360</commentid>
    <comment_count>19</comment_count>
      <attachid>80201</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-01-26 11:38:46 -0800</bug_when>
    <thetext>Comment on attachment 80201
patch without any test changes

Landed: http://trac.webkit.org/changeset/76702

Leaving this bug open, since we still need to get rid of FrameLoader::url().  That patch is next on my list.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340395</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-26 12:19:37 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/76702 might have broken Leopard Intel Release (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340445</commentid>
    <comment_count>21</comment_count>
      <attachid>80231</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-01-26 13:52:27 -0800</bug_when>
    <thetext>Created attachment 80231
Remove FrameLoader:url()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340472</commentid>
    <comment_count>22</comment_count>
      <attachid>80231</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-26 14:28:59 -0800</bug_when>
    <thetext>Comment on attachment 80231
Remove FrameLoader:url()

Rejecting attachment 80231 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=eseidel-cq-sl&apos;, &apos;bu...&quot; exit_code: 2

Last 500 characters of output:
e/WebCore.build/Objects-normal/x86_64/DOMHTMLStyleElement.o /Projects/CommitQueue/WebKitBuild/Release/DerivedSources/WebCore/DOMHTMLStyleElement.mm normal x86_64 objective-c++ com.apple.compilers.gcc.4_2
	CompileC /Projects/CommitQueue/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/DOMHTMLTableCaptionElement.o /Projects/CommitQueue/WebKitBuild/Release/DerivedSources/WebCore/DOMHTMLTableCaptionElement.mm normal x86_64 objective-c++ com.apple.compilers.gcc.4_2
(2 failures)


Full output: http://queues.webkit.org/results/7548370</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340476</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-26 14:34:03 -0800</bug_when>
    <thetext>Attachment 80231 did not build on gtk:
Build output: http://queues.webkit.org/results/7509347</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340482</commentid>
    <comment_count>24</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-01-26 14:44:39 -0800</bug_when>
    <thetext>Attachment 80231 did not build on qt:
Build output: http://queues.webkit.org/results/7614356</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340504</commentid>
    <comment_count>25</comment_count>
      <attachid>80245</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2011-01-26 15:07:08 -0800</bug_when>
    <thetext>Created attachment 80245
Fix qt and gtk issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341156</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-27 17:19:39 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 80245:

http/tests/xmlhttprequest/cross-origin-authorization.html bug 52398 (author: ap@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341160</commentid>
    <comment_count>27</comment_count>
      <attachid>80245</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-27 17:22:34 -0800</bug_when>
    <thetext>Comment on attachment 80245
Fix qt and gtk issues

Clearing flags on attachment: 80245

Committed r76872: &lt;http://trac.webkit.org/changeset/76872&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341162</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-27 17:22:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65432</attachid>
            <date>2010-08-25 10:17:49 -0700</date>
            <delta_ts>2010-09-07 03:20:35 -0700</delta_ts>
            <desc>patch</desc>
            <filename>frameloaderurl.txt</filename>
            <type>text/plain</type>
            <size>40949</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjYwMTgpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDgtMjUgIE5hdGUg
Q2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgRnJhbWVMb2FkZXI6OnVybCgpIGFuZCBjaGFu
Z2UgYWxsIGNhbGxzaXRlcyB0byBEb2N1bWVudDo6dXJsKCkuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMTY1CisKKyAgICAgICAgKiBzcmMvV2Vi
UGFnZVNlcmlhbGl6ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVNlcmlhbGl6
ZXJJbXBsOjpzZXJpYWxpemUpOgorCiAyMDEwLTA4LTI1ICBTYXRpc2ggU2FtcGF0aCAgPHNhdGlz
aEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpJbmRl
eDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdlU2VyaWFsaXplckltcGwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXJJbXBsLmNwcAkocmV2
aXNpb24gNjU3MzYpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBhZ2VTZXJpYWxpemVySW1w
bC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5Nyw3ICs0OTcsNyBAQAogICAgICAgICBjb2xsZWN0
VGFyZ2V0RnJhbWVzKCk7CiAgICAgYm9vbCBkaWRTZXJpYWxpemF0aW9uID0gZmFsc2U7CiAgICAg
Ly8gR2V0IEtVUkwgZm9yIG1haW4gZnJhbWUuCi0gICAgS1VSTCBtYWluUGFnZVVSTCA9IG1fc3Bl
Y2lmaWVkV2ViRnJhbWVJbXBsLT5mcmFtZSgpLT5sb2FkZXIoKS0+dXJsKCk7CisgICAgS1VSTCBt
YWluUGFnZVVSTCA9IG1fc3BlY2lmaWVkV2ViRnJhbWVJbXBsLT5mcmFtZSgpLT5kb2N1bWVudCgp
LT51cmwoKTsKIAogICAgIC8vIEdvIHRocm91Z2ggYWxsIGZyYW1lcyBmb3Igc2VyaWFsaXppbmcg
RE9NIGZvciB3aG9sZSBwYWdlLCBpbmNsdWRlCiAgICAgLy8gc3ViLWZyYW1lcy4KQEAgLTUwNyw3
ICs1MDcsNyBAQAogICAgICAgICAvLyBHZXQgY3VycmVudCB1c2luZyBkb2N1bWVudC4KICAgICAg
ICAgRG9jdW1lbnQqIGN1cnJlbnREb2MgPSBjdXJyZW50RnJhbWUtPmZyYW1lKCktPmRvY3VtZW50
KCk7CiAgICAgICAgIC8vIEdldCBjdXJyZW50IGZyYW1lJ3MgVVJMLgotICAgICAgICBjb25zdCBL
VVJMJiBjdXJyZW50RnJhbWVVUkwgPSBjdXJyZW50RnJhbWUtPmZyYW1lKCktPmxvYWRlcigpLT51
cmwoKTsKKyAgICAgICAgY29uc3QgS1VSTCYgY3VycmVudEZyYW1lVVJMID0gY3VycmVudEZyYW1l
LT5mcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKTsKIAogICAgICAgICAvLyBDaGVjayB3aGV0aGVy
IHdlIGhhdmUgZG9uZSB0aGlzIGRvY3VtZW50LgogICAgICAgICBpZiAoY3VycmVudEZyYW1lVVJM
LmlzVmFsaWQoKSAmJiBtX2xvY2FsTGlua3MuY29udGFpbnMoY3VycmVudEZyYW1lVVJMLnN0cmlu
ZygpKSkgewpJbmRleDogV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
cXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NjAxOCkKKysrIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wOC0yNSAgTmF0ZSBDaGFwaW4gIDxq
YXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlbW92ZSBGcmFtZUxvYWRlcjo6dXJsKCkgYW5kIGNoYW5nZSBhbGwgY2Fs
bHNpdGVzIHRvIERvY3VtZW50Ojp1cmwoKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDExNjUKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3Bw
OgorICAgICAgICAoUVdlYkZyYW1lOjp1cmwpOgorICAgICAgICAoUVdlYkZyYW1lOjppY29uKToK
KwogMjAxMC0wOC0yNSAgR2Fib3IgTG9raSAgPGxva2lAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KSW5kZXg6IFdlYktpdC9xdC9BcGkvcXdlYmZy
YW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAJKHJldmlz
aW9uIDY1NzM2KQorKysgV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02MzAsNyArNjMwLDcgQEAKIAogUVVybCBRV2ViRnJhbWU6OnVybCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGQtPmZyYW1lLT5sb2FkZXIoKS0+dXJsKCk7CisgICAgcmV0dXJuIGQtPmZyYW1l
LT5kb2N1bWVudCgpLT51cmwoKTsKIH0KIAogLyohCkBAIC02ODYsNyArNjg2LDcgQEAKIAogUUlj
b24gUVdlYkZyYW1lOjppY29uKCkgY29uc3QKIHsKLSAgICByZXR1cm4gUVdlYlNldHRpbmdzOjpp
Y29uRm9yVXJsKGQtPmZyYW1lLT5sb2FkZXIoKS0+dXJsKCkpOworICAgIHJldHVybiBRV2ViU2V0
dGluZ3M6Omljb25Gb3JVcmwoZC0+ZnJhbWUtPmRvY3VtZW50KCktPnVybCgpKTsKIH0KIAogLyoh
CkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmNwcAkocmV2aXNpb24gNjU3MzYpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjkzLDcgKzY5Myw3
IEBACiB7CiAgICAgV2ViS2l0V2ViRnJhbWVQcml2YXRlKiBwcml2ID0gbV9mcmFtZS0+cHJpdjsK
ICAgICBnX2ZyZWUocHJpdi0+dXJpKTsKLSAgICBwcml2LT51cmkgPSBnX3N0cmR1cChjb3JlKG1f
ZnJhbWUpLT5sb2FkZXIoKS0+dXJsKCkucHJldHR5VVJMKCkudXRmOCgpLmRhdGEoKSk7CisgICAg
cHJpdi0+dXJpID0gZ19zdHJkdXAoY29yZShtX2ZyYW1lKS0+ZG9jdW1lbnQoKS0+dXJsKCkucHJl
dHR5VVJMKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKG1f
ZnJhbWUpLCAidXJpIik7CiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IGdldFZpZXdGcm9t
RnJhbWUobV9mcmFtZSk7CiAgICAgaWYgKG1fZnJhbWUgPT0gd2Via2l0X3dlYl92aWV3X2dldF9t
YWluX2ZyYW1lKHdlYlZpZXcpKQpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJ
KHJldmlzaW9uIDY1NzM2KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2MzIsNyArNDYzMiw3IEBACiAgICAgZ19yZXR1cm5fdmFsX2lm
X2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBOVUxMKTsKIAogICAgIFBhZ2UqIGNv
cmVQYWdlID0gY29yZSh3ZWJWaWV3KTsKLSAgICBTdHJpbmcgaWNvblVSTCA9IGljb25EYXRhYmFz
ZSgpLT5pY29uVVJMRm9yUGFnZVVSTChjb3JlUGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT51
cmwoKS5wcmV0dHlVUkwoKSk7CisgICAgU3RyaW5nIGljb25VUkwgPSBpY29uRGF0YWJhc2UoKS0+
aWNvblVSTEZvclBhZ2VVUkwoY29yZVBhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpLT51cmwo
KS5wcmV0dHlVUkwoKSk7CiAKICAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZp
ZXctPnByaXY7CiAgICAgZ19mcmVlKHByaXYtPmljb25VUkkpOwpJbmRleDogV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDY2
MDE4KQorKysgV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NiBAQAorMjAxMC0wOC0yNSAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBGcmFt
ZUxvYWRlcjo6dXJsKCkgYW5kIGNoYW5nZSBhbGwgY2FsbHNpdGVzIHRvIERvY3VtZW50Ojp1cmwo
KS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDEx
NjUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlTG9j
YXRpb25XaXRoaW5QYWdlKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6Cisg
ICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2ljb25fdXJpKToKKwogMjAxMC0wOC0yNCAgWGFu
IExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGlu
IFJvYmluc29uLgpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDY2MDE4KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wOC0yNSAgTmF0ZSBDaGFw
aW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFJlbW92ZSBGcmFtZUxvYWRlcjo6dXJsKCkgYW5kIGNoYW5nZSBh
bGwgY2FsbHNpdGVzIHRvIERvY3VtZW50Ojp1cmwoKS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDExNjUKKworICAgICAgICAqIFdlYkZyYW1lLmNw
cDoKKyAgICAgICAgKFdlYkZyYW1lOjp1cmwpOgorCiAyMDEwLTA4LTI0ICBBZGEgQ2hhbiAgPGFk
YWNoYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFN0ZXZlIEZhbGtlbmJ1cmcu
CkluZGV4OiBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2lu
L1dlYkZyYW1lLmNwcAkocmV2aXNpb24gNjU3MzYpCisrKyBXZWJLaXQvd2luL1dlYkZyYW1lLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjkwLDcgKzY5MCw3IEBACiAgICAgaWYgKCFjb3JlRnJhbWUp
CiAgICAgICAgIHJldHVybiBLVVJMKCk7CiAKLSAgICByZXR1cm4gY29yZUZyYW1lLT5sb2FkZXIo
KS0+dXJsKCk7CisgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiB9CiAK
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViRnJhbWU6OnN0b3BMb2FkaW5nKCB2b2lkKQpJ
bmRleDogV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5j
cHAJKHJldmlzaW9uIDY1NzM2KQorKysgV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRXeC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMCw3ICszMjAsNyBAQAogICAgIGlm
IChtX3dlYlZpZXcpIHsKICAgICAgICAgd3hXZWJWaWV3TG9hZEV2ZW50IHdrRXZlbnQobV93ZWJW
aWV3KTsKICAgICAgICAgd2tFdmVudC5TZXRTdGF0ZSh3eFdFQlZJRVdfTE9BRF9ET0NfQ09NUExF
VEVEKTsKLSAgICAgICAgd2tFdmVudC5TZXRVUkwobV9mcmFtZS0+bG9hZGVyKCktPnVybCgpLnN0
cmluZygpKTsKKyAgICAgICAgd2tFdmVudC5TZXRVUkwobV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJs
KCkuc3RyaW5nKCkpOwogICAgICAgICBtX3dlYlZpZXctPkdldEV2ZW50SGFuZGxlcigpLT5Qcm9j
ZXNzRXZlbnQod2tFdmVudCk7CiAgICAgfQogfQpAQCAtMzk0LDcgKzM5NCw3IEBACiAgICAgaWYg
KG1fd2ViVmlldykgewogICAgICAgICB3eFdlYlZpZXdMb2FkRXZlbnQgd2tFdmVudChtX3dlYlZp
ZXcpOwogICAgICAgICB3a0V2ZW50LlNldFN0YXRlKHd4V0VCVklFV19MT0FEX0RMX0NPTVBMRVRF
RCk7Ci0gICAgICAgIHdrRXZlbnQuU2V0VVJMKG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKS5zdHJp
bmcoKSk7CisgICAgICAgIHdrRXZlbnQuU2V0VVJMKG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgp
LnN0cmluZygpKTsKICAgICAgICAgbV93ZWJWaWV3LT5HZXRFdmVudEhhbmRsZXIoKS0+UHJvY2Vz
c0V2ZW50KHdrRXZlbnQpOwogICAgIH0KIH0KSW5kZXg6IFdlYktpdC93eC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3d4L0NoYW5nZUxvZwkocmV2aXNpb24gNjYwMTgpCisrKyBXZWJL
aXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDgt
MjUgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgRnJhbWVMb2FkZXI6OnVybCgp
IGFuZCBjaGFuZ2UgYWxsIGNhbGxzaXRlcyB0byBEb2N1bWVudDo6dXJsKCkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMTY1CisKKyAgICAgICAg
KiBXZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRXeDo6cG9zdFByb2dyZXNzRmluaXNo
ZWROb3RpZmljYXRpb24pOgorCiAyMDEwLTA4LTE2ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0
aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIFt3eF0gQnVpbGQgZml4LCBkbyBub3QgYnVpbGQg
V2ViQ29yZSBhcyBhIGNvbnZlbmllbmNlIGxpYnJhcnkgYXMgdGhpcyBsZWFkcyB0bwpJbmRleDog
V2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDY2MDE4KQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNCBAQAorMjAxMC0wOC0yNSAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbW92ZSBGcmFtZUxvYWRlcjo6dXJsKCkgYW5kIGNoYW5nZSBhbGwgY2FsbHNpdGVzIHRvIERv
Y3VtZW50Ojp1cmwoKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDExNjUKKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAg
KC1bV2ViVmlldyBfZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbkZyb21XZWJGcmFtZTpdKToKKwogMjAx
MC0wOC0yNCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQWRhbSBCYXJ0aC4KSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA2NTcz
NikKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01
NTg4LDcgKzU1ODgsNyBAQAogCiAgICAgV2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlv
bkNhY2hlKiBjYWNoZSA9ICZfcHJpdmF0ZS0+ZnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlv
bnM7CiAgICAgaWYgKGNhY2hlLT5kaWRSZWNlaXZlSWNvbkZvckZyYW1lRnVuYykgewotICAgICAg
ICBJbWFnZSogaW1hZ2UgPSBpY29uRGF0YWJhc2UoKS0+aWNvbkZvclBhZ2VVUkwoY29yZSh3ZWJG
cmFtZSktPmxvYWRlcigpLT51cmwoKS5zdHJpbmcoKSwgSW50U2l6ZSgxNiwgMTYpKTsKKyAgICAg
ICAgSW1hZ2UqIGltYWdlID0gaWNvbkRhdGFiYXNlKCktPmljb25Gb3JQYWdlVVJMKGNvcmUod2Vi
RnJhbWUpLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSwgSW50U2l6ZSgxNiwgMTYpKTsKICAg
ICAgICAgaWYgKE5TSW1hZ2UgKmljb24gPSB3ZWJHZXROU0ltYWdlKGltYWdlLCBOU01ha2VTaXpl
KDE2LCAxNikpKQogICAgICAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGNhY2hlLT5kaWRS
ZWNlaXZlSWNvbkZvckZyYW1lRnVuYywgc2VsZiwgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkUmVjZWl2
ZUljb246Zm9yRnJhbWU6KSwgaWNvbiwgd2ViRnJhbWUpOwogICAgIH0KSW5kZXg6IFdlYktpdC9o
YWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5j
cHAJKHJldmlzaW9uIDY1NzM2KQorKysgV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50SGFpa3UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjEsNyArMjYxLDcgQEAK
IHsKICAgICBpZiAobV93ZWJWaWV3KSB7CiAgICAgICAgIEJNZXNzYWdlIG1lc3NhZ2UoTE9BRF9E
T0NfQ09NUExFVEVEKTsKLSAgICAgICAgbWVzc2FnZS5BZGRTdHJpbmcoInVybCIsIG1fZnJhbWUt
PmxvYWRlcigpLT51cmwoKS5zdHJpbmcoKSk7CisgICAgICAgIG1lc3NhZ2UuQWRkU3RyaW5nKCJ1
cmwiLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSk7CiAgICAgICAgIG1fbWVz
c2VuZ2VyLT5TZW5kTWVzc2FnZSgmbWVzc2FnZSk7CiAgICAgfQogfQpAQCAtMzIzLDcgKzMyMyw3
IEBACiB7CiAgICAgaWYgKG1fd2ViVmlldykgewogICAgICAgICBCTWVzc2FnZSBtZXNzYWdlKExP
QURfRExfQ09NUExFVEVEKTsKLSAgICAgICAgbWVzc2FnZS5BZGRTdHJpbmcoInVybCIsIG1fZnJh
bWUtPmxvYWRlcigpLT51cmwoKS5zdHJpbmcoKSk7CisgICAgICAgIG1lc3NhZ2UuQWRkU3RyaW5n
KCJ1cmwiLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSk7CiAgICAgICAgIG1f
bWVzc2VuZ2VyLT5TZW5kTWVzc2FnZSgmbWVzc2FnZSk7CiAgICAgfQogfQpJbmRleDogV2ViS2l0
L2hhaWt1L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA2NjAxOCkKKysrIFdlYktpdC9oYWlrdS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNSBAQAorMjAxMC0wOC0yNSAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFJlbW92ZSBGcmFtZUxvYWRlcjo6dXJsKCkgYW5kIGNoYW5nZSBhbGwgY2FsbHNpdGVzIHRvIERv
Y3VtZW50Ojp1cmwoKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDExNjUKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50SGFpa3UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6
ZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXJDbGllbnRIYWlrdTo6cG9zdFByb2dyZXNzRmluaXNoZWROb3RpZmljYXRpb24pOgorCiAy
MDEwLTA4LTA2ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSdWJiZXIgc3RhbXBlZCBieSBTYW0gV2VpbmlnCkluZGV4OiBXZWJLaXQvZWZsL2V3
ay9ld2tfZnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5j
cHAJKHJldmlzaW9uIDY1NzM2KQorKysgV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTkyMyw3ICsxOTIzLDcgQEAKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VU
X09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7Ci0gICAgV1RGOjpDU3RyaW5nIHVyaShz
ZC0+ZnJhbWUtPmxvYWRlcigpLT51cmwoKS5wcmV0dHlVUkwoKS51dGY4KCkpOworICAgIFdURjo6
Q1N0cmluZyB1cmkoc2QtPmZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5wcmV0dHlVUkwoKS51dGY4
KCkpOwogCiAgICAgSU5GKCJ1cmk9JXMiLCB1cmkuZGF0YSgpKTsKICAgICBpZiAoIXVyaS5kYXRh
KCkpIHsKSW5kZXg6IFdlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9l
ZmwvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NjAxOCkKKysrIFdlYktpdC9lZmwvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDgtMjUgIE5hdGUgQ2hhcGluICA8
amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW1vdmUgRnJhbWVMb2FkZXI6OnVybCgpIGFuZCBjaGFuZ2UgYWxsIGNh
bGxzaXRlcyB0byBEb2N1bWVudDo6dXJsKCkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMTY1CisKKyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNw
cDoKKyAgICAgICAgKGV3a19mcmFtZV91cmlfY2hhbmdlZCk6CisKIDIwMTAtMDgtMjUgIFJhZmFl
bCBBbnRvZ25vbGxpICA8YW50b2dub2xsaUBwcm9mdXNpb24ubW9iaT4KIAogICAgICAgICBVbnJl
dmlld2VkIGJ1aWxkIGZpeC4KSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDY1NzM2KQorKysgV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MTgsNyArNDE4LDkgQEAK
IAogICAgIG1fZnJhbWUgPSBmcmFtZTsKIAotICAgIGlmIChmcmFtZSB8fCAhdXJsLmlzRW1wdHko
KSkKKyAgICAvLyBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgYWJvdXQgaW5pdGlhbGl6aW5nIHRoZSB1
cmwgaW4gdGhlIGNhc2Ugd2hlcmUgd2UncmUgcGFzc2VkIGFuIGVtcHR5IHVybC4KKyAgICAvLyBT
cGVjaWZpY2FsbHksIHdlIGRvbid0IHdhbnQgdG8gc2V0IGFib3V0OmJsYW5rIGZvciB0aGUgaW5p
dGlhbCBlbXB0eSBkb2N1bWVudCB1bmxlc3MgaXQncyBub3QgdGhlIG1haW4gZnJhbWUuCisgICAg
aWYgKCF1cmwuaXNFbXB0eSgpIHx8IChmcmFtZSAmJiAoIWZyYW1lLT5sb2FkZXIoKS0+c3RhdGVN
YWNoaW5lKCktPmNyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSB8fCBmcmFtZS0+dHJlZSgp
LT5wYXJlbnQoKSkpKQogICAgICAgICBzZXRVUkwodXJsKTsKIAogICAgIG1fYXhPYmplY3RDYWNo
ZSA9IDA7CkBAIC0yNDIzLDcgKzI0MjUsNyBAQAogICAgICAgICBTdHJpbmcgdXJsOwogICAgICAg
ICBpZiAoZnJhbWUgJiYgcGFyc2VIVFRQUmVmcmVzaChjb250ZW50LCB0cnVlLCBkZWxheSwgdXJs
KSkgewogICAgICAgICAgICAgaWYgKHVybC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgdXJs
ID0gZnJhbWUtPmxvYWRlcigpLT51cmwoKS5zdHJpbmcoKTsKKyAgICAgICAgICAgICAgICB1cmwg
PSBtX3VybC5zdHJpbmcoKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB1cmwg
PSBjb21wbGV0ZVVSTCh1cmwpLnN0cmluZygpOwogICAgICAgICAgICAgZnJhbWUtPnJlZGlyZWN0
U2NoZWR1bGVyKCktPnNjaGVkdWxlUmVkaXJlY3QoZGVsYXksIHVybCk7CkBAIC0yNzAzLDcgKzI3
MDUsNyBAQAogICAgICAgICBwYXJzZXItPmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hl
ZXRzKCk7CiAKICAgICBpZiAoIW1fcGVuZGluZ1N0eWxlc2hlZXRzICYmIG1fZ290b0FuY2hvck5l
ZWRlZEFmdGVyU3R5bGVzaGVldHNMb2FkICYmIHZpZXcoKSkKLSAgICAgICAgdmlldygpLT5zY3Jv
bGxUb0ZyYWdtZW50KG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKSk7CisgICAgICAgIHZpZXcoKS0+
c2Nyb2xsVG9GcmFnbWVudChtX3VybCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZVN0eWxl
U2VsZWN0b3IoKQpAQCAtNDgwMiw5ICs0ODA0LDggQEAKICAgICBpZiAoIWYpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIC8vIEZJWE1FOiBFbGltaW5hdGUgdGhpcyByZWR1bmRhbmN5LgogICAgIHNl
dFVSTCh1cmwpOwotICAgIGYtPmxvYWRlcigpLT5zZXRVUkwodXJsKTsKKyAgICBmLT5sb2FkZXIo
KS0+c2V0T3V0Z29pbmdSZWZlcnJlcih1cmwpOwogICAgIGYtPmxvYWRlcigpLT5kb2N1bWVudExv
YWRlcigpLT5yZXBsYWNlUmVxdWVzdFVSTEZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24odXJsKTsK
IH0KIApJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDY2MDE4KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwzNCBAQAorMjAxMC0wOC0yNSAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZSBGcmFtZUxvYWRlcjo6dXJsKCkgYW5kIGNoYW5nZSBhbGwgY2FsbHNpdGVzIHRv
IERvY3VtZW50Ojp1cmwoKS4KKyAgICAgICAgQWxzbywgYmUgYSBiaXQgbW9yZSBjYXJlZnVsIGFi
b3V0IHVybCBpbml0aWFsaXphdGlvbiBpbiBEb2N1bWVudCdzCisgICAgICAgIGNvbnN0cnVjdG9y
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTE2
NQorCisgICAgICAgIFJlZmFjdG9yIG9ubHksIHNvIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAq
IGJpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0xvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3Rv
bS5jcHA6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpEb2N1bWVudCk6IEJlIG1vcmUgY2FyZWZ1bCBhYm91dCBjb252ZXJ0aW5nIGFuIGVt
cHR5IHVybCB0byBhYm91dDpibGFuay4KKyAgICAgICAgKiBoaXN0b3J5L0NhY2hlZEZyYW1lLmNw
cDoKKyAgICAgICAgKiBoaXN0b3J5L1BhZ2VDYWNoZS5jcHA6CisgICAgICAgICogaHRtbC9IVE1M
RnJhbWVFbGVtZW50QmFzZS5jcHA6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNw
cDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOiBEZXBlbmQgb24gdGhlIGRvY3Vt
ZW50J3MgdXJsIHdoZW4gd2UgbmVlZCB0aGUgY3VycmVudCB1cmwuCisgICAgICAgICogbG9hZGVy
L0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKiBsb2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIuY3BwOgorICAgICAgICAqIHBhZ2Uv
RnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmNwcDoKKyAgICAgICAgKiBw
YWdlL1BhZ2UuY3BwOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJFbWJlZGRlZE9iamVjdC5j
cHA6CisKIDIwMTAtMDgtMjUgIERhd2l0IEFsZW1heWVodSAgPGFkYXdpdEBrZGUub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFyaXlhIEhpZGF5YXQuCkluZGV4OiBXZWJDb3JlL2hpc3Rvcnkv
UGFnZUNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNw
cAkocmV2aXNpb24gNjU3MzYpCisrKyBXZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTA3LDcgKzEwNyw3IEBACiAgICAgICAgICAgICBQQ0xPRygiICAgLUZy
YW1lIGNvbnRhaW5zIHBsdWdpbnMiKTsKICAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsK
ICAgICAgICAgfQotICAgICAgICBpZiAoZnJhbWUtPmxvYWRlcigpLT51cmwoKS5wcm90b2NvbElz
KCJodHRwcyIpKSB7CisgICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkucHJvdG9j
b2xJcygiaHR0cHMiKSkgewogICAgICAgICAgICAgUENMT0coIiAgIC1GcmFtZSBpcyBIVFRQUyIp
OwogICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOwogICAgICAgICB9CkBAIC0yNDgsNyAr
MjQ4LDcgQEAKICAgICAgICAgLy8gdGhleSB3b3VsZCBuZWVkIHRvIGJlIGRlc3Ryb3llZCBhbmQg
dGhlbiByZWNyZWF0ZWQsIGFuZCB0aGVyZSBpcyBubyB3YXkgdGhhdCB3ZSBjYW4gcmVjcmVhdGUK
ICAgICAgICAgLy8gdGhlIHJpZ2h0IE5QT2JqZWN0cy4gU2VlIDxyZGFyOi8vcHJvYmxlbS81MTk3
MDQxPiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgJiYgIWZyYW1lLT5sb2FkZXIoKS0+
c3ViZnJhbWVMb2FkZXIoKS0+Y29udGFpbnNQbHVnaW5zKCkKLSAgICAgICAgJiYgIWZyYW1lLT5s
b2FkZXIoKS0+dXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKQorICAgICAgICAmJiAhZnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpLnByb3RvY29sSXMoImh0dHBzIikKICAgICAgICAgJiYgKCFmcmFtZS0+
ZG9tV2luZG93KCkgfHwgIWZyYW1lLT5kb21XaW5kb3coKS0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZl
bnROYW1lcygpLnVubG9hZEV2ZW50KSkKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAgICAgICAgICYm
ICFmcmFtZS0+ZG9jdW1lbnQoKS0+aGFzT3BlbkRhdGFiYXNlcygpCkluZGV4OiBXZWJDb3JlL2hp
c3RvcnkvQ2FjaGVkRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaGlzdG9yeS9DYWNo
ZWRGcmFtZS5jcHAJKHJldmlzaW9uIDY1NzM2KQorKysgV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZy
YW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjMsNyArNjMsNyBAQAogICAgICwgbV9kb2N1bWVu
dExvYWRlcihmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkpCiAgICAgLCBtX3ZpZXco
ZnJhbWUtPnZpZXcoKSkKICAgICAsIG1fbW91c2VQcmVzc05vZGUoZnJhbWUtPmV2ZW50SGFuZGxl
cigpLT5tb3VzZVByZXNzTm9kZSgpKQotICAgICwgbV91cmwoZnJhbWUtPmxvYWRlcigpLT51cmwo
KSkKKyAgICAsIG1fdXJsKGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSkKICAgICAsIG1faXNNYWlu
RnJhbWUoIWZyYW1lLT50cmVlKCktPnBhcmVudCgpKQogewogfQpJbmRleDogV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJ
KHJldmlzaW9uIDY1NzM2KQorKysgV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE4NjAsNyArMTg2MCw3IEBACiAgICAgLy8gdG8gZGVmaW5lIHdoZW4gY29udHJv
bHMgZ2V0IHRoZSB0aW50IGFuZCB0byBjYWxsIHRoaXMgZnVuY3Rpb24gd2hlbiB0aGF0IGNoYW5n
ZXMuCiAgICAgCiAgICAgLy8gT3B0aW1pemUgdGhlIGNvbW1vbiBjYXNlIHdoZXJlIHdlIGJyaW5n
IGEgd2luZG93IHRvIHRoZSBmcm9udCB3aGlsZSBpdCdzIHN0aWxsIGVtcHR5LgotICAgIGlmICgh
bV9mcmFtZSB8fCBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkuaXNFbXB0eSgpKQorICAgIGlmICgh
bV9mcmFtZSB8fCBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmICgobV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCkgJiYgbV9mcmFt
ZS0+Y29udGVudFJlbmRlcmVyKCktPnRoZW1lKCktPnN1cHBvcnRzQ29udHJvbFRpbnRzKCkpIHx8
IGhhc0N1c3RvbVNjcm9sbGJhcnMoKSkgIHsKSW5kZXg6IFdlYkNvcmUvcGFnZS9QYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHJldmlzaW9uIDY1NzM2KQorKysg
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTIsNyArMzUyLDcgQEAK
IAogI2lmIEVOQUJMRShEQVRBQkFTRSkKICAgICAgICAgLy8gSWYgd2UncmUgbmF2aWdhdGluZyB0
aGUgaGlzdG9yeSB2aWEgYSBmcmFnbWVudCBvbiB0aGUgc2FtZSBkb2N1bWVudCwgdGhlbiB3ZSBk
byBub3Qgd2FudCB0byBzdG9wIGRhdGFiYXNlcy4KLSAgICAgICAgY29uc3QgS1VSTCYgY3VycmVu
dFVSTCA9IG1fbWFpbkZyYW1lLT5sb2FkZXIoKS0+dXJsKCk7CisgICAgICAgIGNvbnN0IEtVUkwm
IGN1cnJlbnRVUkwgPSBtX21haW5GcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgICAgIGNv
bnN0IEtVUkwmIG5ld1VSTCA9IGl0ZW0tPnVybCgpOwogICAgIAogICAgICAgICBpZiAobmV3VVJM
Lmhhc0ZyYWdtZW50SWRlbnRpZmllcigpICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZp
ZXIoY3VycmVudFVSTCwgbmV3VVJMKSkKSW5kZXg6IFdlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAkocmV2aXNpb24gNjU3MzYp
CisrKyBXZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1
MCw3IEBACiB7CiAgICAgQVNTRVJUKG1fZnJhbWUpOwogCi0gICAgY29uc3QgS1VSTCYgdXJsID0g
bV9mcmFtZS0+bG9hZGVyKCktPnVybCgpOworICAgIGNvbnN0IEtVUkwmIHVybCA9IG1fZnJhbWUt
PmRvY3VtZW50KCktPnVybCgpOwogICAgIGlmICghdXJsLmlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuIGJsYW5rVVJMKCk7ICAvLyBVc2UgImFib3V0OmJsYW5rIiB3aGlsZSB0aGUgcGFnZSBpcyBz
dGlsbCBsb2FkaW5nIChiZWZvcmUgd2UgaGF2ZSBhIGZyYW1lKS4KIApJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5jcHAJKHJldmlzaW9uIDY1NzM2KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDcgKzQ2LDcgQEAKIAogU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNj
cmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBTaG91bGRB
bGxvd1hTUyBzaG91bGRBbGxvd1hTUykKIHsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdChTY3Jp
cHRTb3VyY2VDb2RlKHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSA/IEtVUkwoKSA6IG1fZnJhbWUt
PmxvYWRlcigpLT51cmwoKSksIHNob3VsZEFsbG93WFNTKTsKKyAgICByZXR1cm4gZXhlY3V0ZVNj
cmlwdChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSA/IEtVUkwoKSA6
IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpKSwgc2hvdWxkQWxsb3dYU1MpOwogfQogCiBTY3Jp
cHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJj
ZUNvZGUmIHNvdXJjZUNvZGUsIFNob3VsZEFsbG93WFNTIHNob3VsZEFsbG93WFNTKQpJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiA2NTczNikK
KysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIxNCw3ICsyMTQsNyBAQAogICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+ZnJhbWUo
KTsKICAgICBBU1NFUlQoZnJhbWUpOwogCi0gICAgS1VSTCB1cmwgPSBmcmFtZS0+bG9hZGVyKCkt
PnVybCgpOworICAgIEtVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIGlm
ICghdXJsLnNldFByb3RvY29sKHVzdHJpbmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhleGVjKSkp
KSB7CiAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBTWU5UQVhfRVJSKTsKICAgICAgICAg
cmV0dXJuOwpAQCAtMjI4LDcgKzIyOCw3IEBACiAgICAgRnJhbWUqIGZyYW1lID0gaW1wbCgpLT5m
cmFtZSgpOwogICAgIEFTU0VSVChmcmFtZSk7CiAKLSAgICBLVVJMIHVybCA9IGZyYW1lLT5sb2Fk
ZXIoKS0+dXJsKCk7CisgICAgS1VSTCB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAg
ICAgdXJsLnNldEhvc3RBbmRQb3J0KHVzdHJpbmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhleGVj
KSkpOwogCiAgICAgbmF2aWdhdGVJZkFsbG93ZWQoZXhlYywgZnJhbWUsIHVybCwgIWZyYW1lLT5z
Y3JpcHQoKS0+YW55UGFnZUlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCksIGZhbHNlKTsKQEAgLTIz
OSw3ICsyMzksNyBAQAogICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+ZnJhbWUoKTsKICAgICBB
U1NFUlQoZnJhbWUpOwogCi0gICAgS1VSTCB1cmwgPSBmcmFtZS0+bG9hZGVyKCktPnVybCgpOwor
ICAgIEtVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRIb3N0
KHVzdHJpbmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhleGVjKSkpOwogCiAgICAgbmF2aWdhdGVJ
ZkFsbG93ZWQoZXhlYywgZnJhbWUsIHVybCwgIWZyYW1lLT5zY3JpcHQoKS0+YW55UGFnZUlzUHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKCksIGZhbHNlKTsKQEAgLTI1MCw3ICsyNTAsNyBAQAogICAgIEZy
YW1lKiBmcmFtZSA9IGltcGwoKS0+ZnJhbWUoKTsKICAgICBBU1NFUlQoZnJhbWUpOwogCi0gICAg
S1VSTCB1cmwgPSBmcmFtZS0+bG9hZGVyKCktPnVybCgpOworICAgIEtVUkwgdXJsID0gZnJhbWUt
PmRvY3VtZW50KCktPnVybCgpOwogICAgIC8vIEZJWE1FOiBDb3VsZCBtYWtlIHRoaXMgYSBsaXR0
bGUgbGVzcyB1Z2x5IGlmIFN0cmluZyBwcm92aWRlZCBhIHRvVW5zaWduZWRTaG9ydCBmdW5jdGlv
bi4KICAgICBjb25zdCBVU3RyaW5nJiBwb3J0U3RyaW5nID0gdmFsdWUudG9TdHJpbmcoZXhlYyk7
CiAgICAgaW50IHBvcnQgPSBjaGFyYWN0ZXJzVG9JbnQocG9ydFN0cmluZy5jaGFyYWN0ZXJzKCks
IHBvcnRTdHJpbmcubGVuZ3RoKCkpOwpAQCAtMjY3LDcgKzI2Nyw3IEBACiAgICAgRnJhbWUqIGZy
YW1lID0gaW1wbCgpLT5mcmFtZSgpOwogICAgIEFTU0VSVChmcmFtZSk7CiAKLSAgICBLVVJMIHVy
bCA9IGZyYW1lLT5sb2FkZXIoKS0+dXJsKCk7CisgICAgS1VSTCB1cmwgPSBmcmFtZS0+ZG9jdW1l
bnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldFBhdGgodXN0cmluZ1RvU3RyaW5nKHZhbHVlLnRvU3Ry
aW5nKGV4ZWMpKSk7CiAKICAgICBuYXZpZ2F0ZUlmQWxsb3dlZChleGVjLCBmcmFtZSwgdXJsLCAh
ZnJhbWUtPnNjcmlwdCgpLT5hbnlQYWdlSXNQcm9jZXNzaW5nVXNlckdlc3R1cmUoKSwgZmFsc2Up
OwpAQCAtMjc4LDcgKzI3OCw3IEBACiAgICAgRnJhbWUqIGZyYW1lID0gaW1wbCgpLT5mcmFtZSgp
OwogICAgIEFTU0VSVChmcmFtZSk7CiAKLSAgICBLVVJMIHVybCA9IGZyYW1lLT5sb2FkZXIoKS0+
dXJsKCk7CisgICAgS1VSTCB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJs
LnNldFF1ZXJ5KHVzdHJpbmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhleGVjKSkpOwogCiAgICAg
bmF2aWdhdGVJZkFsbG93ZWQoZXhlYywgZnJhbWUsIHVybCwgIWZyYW1lLT5zY3JpcHQoKS0+YW55
UGFnZUlzUHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCksIGZhbHNlKTsKQEAgLTI4OSw3ICsyODksNyBA
QAogICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+ZnJhbWUoKTsKICAgICBBU1NFUlQoZnJhbWUp
OwogCi0gICAgS1VSTCB1cmwgPSBmcmFtZS0+bG9hZGVyKCktPnVybCgpOworICAgIEtVUkwgdXJs
ID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIFN0cmluZyBvbGRGcmFnbWVudElkZW50
aWZpZXIgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgU3RyaW5nIHN0ciA9IHVzdHJp
bmdUb1N0cmluZyh2YWx1ZS50b1N0cmluZyhleGVjKSk7CiAgICAgaWYgKHN0ci5zdGFydHNXaXRo
KCIjIikpCkBAIC0zMjQsNyArMzI0LDcgQEAKICAgICBpZiAoIWZyYW1lIHx8ICFhbGxvd3NBY2Nl
c3NGcm9tRnJhbWUoZXhlYywgZnJhbWUpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
IAotICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQoZnJhbWUtPmxvYWRlcigpLT51cmwoKSkp
CisgICAgaWYgKCFwcm90b2NvbElzSmF2YVNjcmlwdChmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkp
KQogICAgICAgICBmcmFtZS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+c2NoZWR1bGVSZWZyZXNoKHBy
b2Nlc3NpbmdVc2VyR2VzdHVyZSgpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KSW5k
ZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNjU3
MzYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MDAsNyArNTAwLDcgQEAKIAogU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxl
cjo6ZXhlY3V0ZVNjcmlwdEluV29ybGQoRE9NV3JhcHBlcldvcmxkKiB3b3JsZCwgY29uc3QgU3Ry
aW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgU2hvdWxkQWxsb3dYU1Mgc2hvdWxk
QWxsb3dYU1MpCiB7Ci0gICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlwdCwgZm9y
Y2VVc2VyR2VzdHVyZSA/IEtVUkwoKSA6IG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKSk7CisgICAg
U2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSA/IEtV
UkwoKSA6IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpKTsKIAogICAgIGlmICghY2FuRXhlY3V0
ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3JpcHQpIHx8IGlzUGF1c2VkKCkpCiAgICAgICAgIHJl
dHVybiBTY3JpcHRWYWx1ZSgpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhM
b2NhdGlvbkN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDY1NzM2KQorKysgV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcw
LDcgKzcwLDcgQEAKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJM
IHVybCA9IGZyYW1lLT5sb2FkZXIoKS0+dXJsKCk7CisgICAgS1VSTCB1cmwgPSBmcmFtZS0+ZG9j
dW1lbnQoKS0+dXJsKCk7CiAgICAgU3RyaW5nIG9sZFJlZiA9IHVybC5mcmFnbWVudElkZW50aWZp
ZXIoKTsKIAogICAgIGlmIChoYXNoLnN0YXJ0c1dpdGgoIiMiKSkKQEAgLTk4LDcgKzk4LDcgQEAK
ICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBLVVJMIHVybCA9IGZyYW1l
LT5sb2FkZXIoKS0+dXJsKCk7CisgICAgS1VSTCB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJs
KCk7CiAgICAgU3RyaW5nIG5ld0hvc3QgPSBob3N0LmxlZnQoaG9zdC5maW5kKCI6IikpOwogICAg
IFN0cmluZyBuZXdQb3J0ID0gaG9zdC5zdWJzdHJpbmcoaG9zdC5maW5kKCI6IikgKyAxKTsKICAg
ICB1cmwuc2V0SG9zdChuZXdIb3N0KTsKQEAgLTExOCw3ICsxMTgsNyBAQAogICAgIGlmICghZnJh
bWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgdXJsID0gZnJhbWUtPmxvYWRlcigpLT51
cmwoKTsKKyAgICBLVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICB1cmwu
c2V0SG9zdChob3N0bmFtZSk7CiAKICAgICBuYXZpZ2F0ZUlmQWxsb3dlZChmcmFtZSwgdXJsLCBm
YWxzZSwgZmFsc2UpOwpAQCAtMTU1LDcgKzE1NSw3IEBACiAgICAgaWYgKCFmcmFtZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgS1VSTCB1cmwgPSBmcmFtZS0+bG9hZGVyKCktPnVybCgpOworICAg
IEtVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRQYXRoKHBh
dGhuYW1lKTsKIAogICAgIG5hdmlnYXRlSWZBbGxvd2VkKGZyYW1lLCB1cmwsIGZhbHNlLCBmYWxz
ZSk7CkBAIC0xNzIsNyArMTcyLDcgQEAKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47
CiAKLSAgICBLVVJMIHVybCA9IGZyYW1lLT5sb2FkZXIoKS0+dXJsKCk7CisgICAgS1VSTCB1cmwg
PSBmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldFBvcnQocG9ydC50b1VJbnQo
KSk7CiAKICAgICBuYXZpZ2F0ZUlmQWxsb3dlZChmcmFtZSwgdXJsLCBmYWxzZSwgZmFsc2UpOwpA
QCAtMTg5LDcgKzE4OSw3IEBACiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgS1VSTCB1cmwgPSBmcmFtZS0+bG9hZGVyKCktPnVybCgpOworICAgIEtVUkwgdXJsID0gZnJh
bWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIGlmICghdXJsLnNldFByb3RvY29sKHByb3RvY29s
KSkgewogICAgICAgICB0aHJvd0Vycm9yKCJDYW4ndCBzZXQgcHJvdG9jb2wiLCBWOFByb3h5OjpT
eW50YXhFcnJvcik7CiAgICAgICAgIHJldHVybjsKQEAgLTIwOSw3ICsyMDksNyBAQAogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEtVUkwgdXJsID0gZnJhbWUtPmxvYWRl
cigpLT51cmwoKTsKKyAgICBLVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAg
ICB1cmwuc2V0UXVlcnkocXVlcnkpOwogCiAgICAgbmF2aWdhdGVJZkFsbG93ZWQoZnJhbWUsIHVy
bCwgZmFsc2UsIGZhbHNlKTsKQEAgLTI4Miw3ICsyODIsNyBAQAogICAgIGlmICghZnJhbWUgfHwg
IVNjcmlwdENvbnRyb2xsZXI6OmlzU2FmZVNjcmlwdChmcmFtZSkpCiAgICAgICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7CiAKLSAgICBpZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KGZyYW1lLT5s
b2FkZXIoKS0+dXJsKCkpKQorICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQoZnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpKSkKICAgICAgICAgZnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNj
aGVkdWxlUmVmcmVzaChwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSk7CiAgICAgcmV0dXJuIHY4OjpV
bmRlZmluZWQoKTsKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGcmFtZUVsZW1lbnRCYXNlLmNwcAko
cmV2aXNpb24gNjU3MzYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBACiAgICAgLy8gQnV0IHdlIGRvbid0IGFs
bG93IG1vcmUgdGhhbiBvbmUuCiAgICAgYm9vbCBmb3VuZFNlbGZSZWZlcmVuY2UgPSBmYWxzZTsK
ICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7IGZyYW1lOyBmcmFt
ZSA9IGZyYW1lLT50cmVlKCktPnBhcmVudCgpKSB7Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5n
RnJhZ21lbnRJZGVudGlmaWVyKGZyYW1lLT5sb2FkZXIoKS0+dXJsKCksIGNvbXBsZXRlVVJMKSkg
eworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihmcmFtZS0+ZG9j
dW1lbnQoKS0+dXJsKCksIGNvbXBsZXRlVVJMKSkgewogICAgICAgICAgICAgaWYgKGZvdW5kU2Vs
ZlJlZmVyZW5jZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBm
b3VuZFNlbGZSZWZlcmVuY2UgPSB0cnVlOwpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDY1NzM2KQorKysgV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5MSw3ICs0OTEsNyBA
QAogICAgICAgICBtX3RpbWVsaW5lQWdlbnQtPnJlc2V0RnJvbnRlbmRQcm94eU9iamVjdChtX3Jl
bW90ZUZyb250ZW5kLmdldCgpKTsKIAogICAgIC8vIEluaXRpYWxpemUgV2ViIEluc3BlY3RvciB0
aXRsZS4KLSAgICBtX3JlbW90ZUZyb250ZW5kLT5pbnNwZWN0ZWRVUkxDaGFuZ2VkKG1faW5zcGVj
dGVkUGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT51cmwoKS5zdHJpbmcoKSk7CisgICAgbV9y
ZW1vdGVGcm9udGVuZC0+aW5zcGVjdGVkVVJMQ2hhbmdlZChtX2luc3BlY3RlZFBhZ2UtPm1haW5G
cmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSk7CiAKICAgICBwb3B1bGF0ZVNjcmlw
dE9iamVjdHMoKTsKIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRW1iZWRkZWRPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVtYmVkZGVkT2Jq
ZWN0LmNwcAkocmV2aXNpb24gNjU3MzYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbWJl
ZGRlZE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiw3ICsxMTIsNyBAQAogICAgIEtV
UkwgY29tcGxldGVVUkwgPSBkb2MtPmNvbXBsZXRlVVJMKHVybCk7CiAgICAgYm9vbCBmb3VuZFNl
bGZSZWZlcmVuY2UgPSBmYWxzZTsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IGRvYy0+ZnJhbWUo
KTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpIHsKLSAgICAgICAgaWYg
KGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoZnJhbWUtPmxvYWRlcigpLT51cmwoKSwg
Y29tcGxldGVVUkwpKSB7CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlm
aWVyKGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgY29tcGxldGVVUkwpKSB7CiAgICAgICAgICAg
ICBpZiAoZm91bmRTZWxmUmVmZXJlbmNlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIGZvdW5kU2VsZlJlZmVyZW5jZSA9IHRydWU7CkluZGV4OiBXZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCShyZXZpc2lvbiA2NTczNikKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDc2LDE1ICs0NzYsMTYgQEAKICAgICAgICAgcmV0dXJu
IEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pY29uVVJMKCkpOwog
CiAgICAgLy8gRG9uJ3QgcmV0dXJuIGEgZmF2aWNvbiBpY29uVVJMIHVubGVzcyB3ZSdyZSBodHRw
IG9yIGh0dHBzCi0gICAgaWYgKCFtX1VSTC5wcm90b2NvbEluSFRUUEZhbWlseSgpKQorICAgIEtV
UkwgZG9jdW1lbnRVUkwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICBpZiAoIWRv
Y3VtZW50VVJMLnByb3RvY29sSW5IVFRQRmFtaWx5KCkpCiAgICAgICAgIHJldHVybiBLVVJMKCk7
CiAKICAgICBLVVJMIHVybDsKLSAgICBib29sIGNvdWxkU2V0UHJvdG9jb2wgPSB1cmwuc2V0UHJv
dG9jb2wobV9VUkwucHJvdG9jb2woKSk7CisgICAgYm9vbCBjb3VsZFNldFByb3RvY29sID0gdXJs
LnNldFByb3RvY29sKGRvY3VtZW50VVJMLnByb3RvY29sKCkpOwogICAgIEFTU0VSVF9VTlVTRUQo
Y291bGRTZXRQcm90b2NvbCwgY291bGRTZXRQcm90b2NvbCk7Ci0gICAgdXJsLnNldEhvc3QobV9V
UkwuaG9zdCgpKTsKLSAgICBpZiAobV9VUkwuaGFzUG9ydCgpKQotICAgICAgICB1cmwuc2V0UG9y
dChtX1VSTC5wb3J0KCkpOworICAgIHVybC5zZXRIb3N0KGRvY3VtZW50VVJMLmhvc3QoKSk7Cisg
ICAgaWYgKGRvY3VtZW50VVJMLmhhc1BvcnQoKSkKKyAgICAgICAgdXJsLnNldFBvcnQoZG9jdW1l
bnRVUkwucG9ydCgpKTsKICAgICB1cmwuc2V0UGF0aCgiL2Zhdmljb24uaWNvIik7CiAgICAgcmV0
dXJuIHVybDsKIH0KQEAgLTUxMywxMCArNTE0LDkgQEAKICAgICAgICAgICAgIHdpbmRvdy0+c2V0
RGVmYXVsdFN0YXR1cyhTdHJpbmcoKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgbV9VUkwgPSB1
cmw7Ci0gICAgaWYgKG1fVVJMLnByb3RvY29sSW5IVFRQRmFtaWx5KCkgJiYgIW1fVVJMLmhvc3Qo
KS5pc0VtcHR5KCkgJiYgbV9VUkwucGF0aCgpLmlzRW1wdHkoKSkKLSAgICAgICAgbV9VUkwuc2V0
UGF0aCgiLyIpOwotICAgIG1fd29ya2luZ1VSTCA9IG1fVVJMOworICAgIG1fd29ya2luZ1VSTCA9
IHVybDsKKyAgICBpZiAobV93b3JraW5nVVJMLnByb3RvY29sSW5IVFRQRmFtaWx5KCkgJiYgIW1f
d29ya2luZ1VSTC5ob3N0KCkuaXNFbXB0eSgpICYmIG1fd29ya2luZ1VSTC5wYXRoKCkuaXNFbXB0
eSgpKQorICAgICAgICBtX3dvcmtpbmdVUkwuc2V0UGF0aCgiLyIpOwogCiAgICAgc3RhcnRlZCgp
OwogCkBAIC01MzYsOSArNTM2LDcgQEAKICAgICAvLyBmcm9tIGEgc3Vic2VxdWVudCB3aW5kb3cu
ZG9jdW1lbnQub3BlbiAvIHdpbmRvdy5kb2N1bWVudC53cml0ZSBjYWxsLiAKICAgICAvLyBDYW5j
ZWxpbmcgcmVkaXJlY3Rpb24gaGVyZSB3b3JrcyBmb3IgYWxsIGNhc2VzIGJlY2F1c2UgZG9jdW1l
bnQub3BlbiAKICAgICAvLyBpbXBsaWNpdGx5IHByZWNlZGVzIGRvY3VtZW50LndyaXRlLgotICAg
IG1fZnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPmNhbmNlbCgpOyAKLSAgICBpZiAobV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+dXJsKCkgIT0gYmxhbmtVUkwoKSkKLSAgICAgICAgbV9VUkwgPSBtX2Zy
YW1lLT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICBtX2ZyYW1lLT5yZWRpcmVjdFNjaGVkdWxlcigp
LT5jYW5jZWwoKTsKIH0KIAogCkBAIC02MjksMjEgKzYyNywyMCBAQAogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKLSAgICAgICAgdXJsID0gbV9VUkwuc3RyaW5nKCk7
CisgICAgICAgIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpOwogICAg
IGVsc2UKICAgICAgICAgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJs
KS5zdHJpbmcoKTsKIAogICAgIG1fZnJhbWUtPnJlZGlyZWN0U2NoZWR1bGVyKCktPnNjaGVkdWxl
UmVkaXJlY3QoZGVsYXksIHVybCk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnNldFVSTChjb25z
dCBLVVJMJiB1cmwpCit2b2lkIEZyYW1lTG9hZGVyOjpzZXRPdXRnb2luZ1JlZmVycmVyKGNvbnN0
IEtVUkwmIHVybCkKIHsKICAgICBLVVJMIHJlZih1cmwpOwogICAgIHJlZi5zZXRVc2VyKFN0cmlu
ZygpKTsKICAgICByZWYuc2V0UGFzcyhTdHJpbmcoKSk7CiAgICAgcmVmLnJlbW92ZUZyYWdtZW50
SWRlbnRpZmllcigpOwogICAgIG1fb3V0Z29pbmdSZWZlcnJlciA9IHJlZi5zdHJpbmcoKTsKLSAg
ICBtX1VSTCA9IHVybDsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6ZGlkQmVnaW5Eb2N1bWVudChi
b29sIGRpc3BhdGNoKQpAQCAtNzE4LDcgKzcxNSw3IEBACiAgICAgICAgICAgICBpZiAoIWljb25E
YXRhYmFzZSgpLT5pY29uRGF0YUtub3duRm9ySWNvblVSTCh1cmxTdHJpbmcpKSB7CiAgICAgICAg
ICAgICAgICAgTE9HKEljb25EYXRhYmFzZSwgIlRvbGQgbm90IHRvIGxvYWQgaWNvbiAlcyBidXQg
aWNvbiBkYXRhIGlzIG5vdCB5ZXQgYXZhaWxhYmxlIC0gcmVnaXN0ZXJpbmcgZm9yIG5vdGlmaWNh
dGlvbiBhbmQgcmVxdWVzdGluZyBsb2FkIGZyb20gZGlzayIsIHVybFN0cmluZy5hc2NpaSgpLmRh
dGEoKSk7CiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPnJlZ2lzdGVyRm9ySWNvbk5vdGlmaWNh
dGlvbigpOwotICAgICAgICAgICAgICAgIGljb25EYXRhYmFzZSgpLT5pY29uRm9yUGFnZVVSTCht
X1VSTC5zdHJpbmcoKSwgSW50U2l6ZSgwLCAwKSk7CisgICAgICAgICAgICAgICAgaWNvbkRhdGFi
YXNlKCktPmljb25Gb3JQYWdlVVJMKG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygp
LCBJbnRTaXplKDAsIDApKTsKICAgICAgICAgICAgICAgICBpY29uRGF0YWJhc2UoKS0+aWNvbkZv
clBhZ2VVUkwob3JpZ2luYWxSZXF1ZXN0VVJMKCkuc3RyaW5nKCksIEludFNpemUoMCwgMCkpOwog
ICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlk
UmVjZWl2ZUljb24oKTsKQEAgLTc1NSw4ICs3NTIsOCBAQAogdm9pZCBGcmFtZUxvYWRlcjo6Y29t
bWl0SWNvblVSTFRvSWNvbkRhdGFiYXNlKGNvbnN0IEtVUkwmIGljb24pCiB7CiAgICAgQVNTRVJU
KGljb25EYXRhYmFzZSgpKTsKLSAgICBMT0coSWNvbkRhdGFiYXNlLCAiQ29tbWl0dGluZyBpY29u
VVJMICVzIHRvIGRhdGFiYXNlIGZvciBwYWdlVVJMcyAlcyBhbmQgJXMiLCBpY29uLnN0cmluZygp
LmFzY2lpKCkuZGF0YSgpLCBtX1VSTC5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgb3JpZ2luYWxS
ZXF1ZXN0VVJMKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwotICAgIGljb25EYXRhYmFzZSgp
LT5zZXRJY29uVVJMRm9yUGFnZVVSTChpY29uLnN0cmluZygpLCBtX1VSTC5zdHJpbmcoKSk7Cisg
ICAgTE9HKEljb25EYXRhYmFzZSwgIkNvbW1pdHRpbmcgaWNvblVSTCAlcyB0byBkYXRhYmFzZSBm
b3IgcGFnZVVSTHMgJXMgYW5kICVzIiwgaWNvbi5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG9yaWdpbmFs
UmVxdWVzdFVSTCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKKyAgICBpY29uRGF0YWJhc2Uo
KS0+c2V0SWNvblVSTEZvclBhZ2VVUkwoaWNvbi5zdHJpbmcoKSwgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+dXJsKCkuc3RyaW5nKCkpOwogICAgIGljb25EYXRhYmFzZSgpLT5zZXRJY29uVVJMRm9yUGFn
ZVVSTChpY29uLnN0cmluZygpLCBvcmlnaW5hbFJlcXVlc3RVUkwoKS5zdHJpbmcoKSk7CiB9CiAK
QEAgLTc4Miw3ICs3NzksNyBAQAogICAgIC8vIENoZWNrIGlmIHRoZSBzY3JvbGxiYXJzIGFyZSBy
ZWFsbHkgbmVlZGVkIGZvciB0aGUgY29udGVudC4KICAgICAvLyBJZiBub3QsIHJlbW92ZSB0aGVt
LCByZWxheW91dCwgYW5kIHJlcGFpbnQuCiAgICAgbV9mcmFtZS0+dmlldygpLT5yZXN0b3JlU2Ny
b2xsYmFyKCk7Ci0gICAgbV9mcmFtZS0+dmlldygpLT5zY3JvbGxUb0ZyYWdtZW50KG1fVVJMKTsK
KyAgICBtX2ZyYW1lLT52aWV3KCktPnNjcm9sbFRvRnJhZ21lbnQobV9mcmFtZS0+ZG9jdW1lbnQo
KS0+dXJsKCkpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkRG9uZSgpCkBAIC0xMDA2LDcg
KzEwMDMsNyBAQAogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgbWVzc2FnZSA9IFN0cmlu
Zzo6Zm9ybWF0KCJUaGUgcGFnZSBhdCAlcyBkaXNwbGF5ZWQgaW5zZWN1cmUgY29udGVudCBmcm9t
ICVzLlxuIiwKLSAgICAgICAgbV9VUkwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdXJsLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAgICAg
bV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShIVE1MTWVzc2FnZVNv
dXJjZSwgTG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDEsIFN0
cmluZygpKTsKIAogICAgIG1fY2xpZW50LT5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7CkBA
IC0xMDE4LDcgKzEwMTUsNyBAQAogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgbWVzc2Fn
ZSA9IFN0cmluZzo6Zm9ybWF0KCJUaGUgcGFnZSBhdCAlcyByYW4gaW5zZWN1cmUgY29udGVudCBm
cm9tICVzLlxuIiwKLSAgICAgICAgbV9VUkwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdXJsLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAg
ICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShIVE1MTWVzc2Fn
ZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDEs
IFN0cmluZygpKTsKIAogICAgIG1fY2xpZW50LT5kaWRSdW5JbnNlY3VyZUNvbnRlbnQoY29udGV4
dCk7CkBAIC0xMTAyLDcgKzEwOTksNyBAQAogICAgIGlmIChtX2ZyYW1lLT50cmVlKCktPnBhcmVu
dCgpKQogICAgICAgICBzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhtX2ZyYW1lLT50cmVlKCktPnBh
cmVudCgpLT5kb2N1bWVudCgpLT5maXJzdFBhcnR5Rm9yQ29va2llcygpKTsKICAgICBlbHNlCi0g
ICAgICAgIHNldEZpcnN0UGFydHlGb3JDb29raWVzKG1fVVJMKTsKKyAgICAgICAgc2V0Rmlyc3RQ
YXJ0eUZvckNvb2tpZXMobV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpOwogfQogCiB2b2lkIEZy
YW1lTG9hZGVyOjpzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhjb25zdCBLVVJMJiB1cmwpCkBAIC0x
MTIwLDYgKzExMTcsNyBAQAogICAgIEFTU0VSVCghc3RhdGVPYmplY3QgfHwgKHN0YXRlT2JqZWN0
ICYmICFpc05ld05hdmlnYXRpb24pKTsKIAogICAgIC8vIFVwZGF0ZSB0aGUgZGF0YSBzb3VyY2Un
cyByZXF1ZXN0IHdpdGggdGhlIG5ldyBVUkwgdG8gZmFrZSB0aGUgVVJMIGNoYW5nZQorICAgIEtV
Ukwgb2xkVVJMID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+c2V0VVJMKHVybCk7CiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+cmVwbGFjZVJlcXVl
c3RVUkxGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKHVybCk7CiAgICAgaWYgKGlzTmV3TmF2aWdh
dGlvbiAmJiAhc2hvdWxkVHJlYXRVUkxBc1NhbWVBc0N1cnJlbnQodXJsKSAmJiAhc3RhdGVPYmpl
Y3QpIHsKQEAgLTExMzcsMTEgKzExMzUsOCBAQAogICAgICAgICBoaXN0b3J5KCktPnVwZGF0ZUJh
Y2tGb3J3YXJkTGlzdEZvckZyYWdtZW50U2Nyb2xsKCk7CiAgICAgfQogICAgIAotICAgIFN0cmlu
ZyBvbGRVUkw7Ci0gICAgYm9vbCBoYXNoQ2hhbmdlID0gZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRl
bnRpZmllcih1cmwsIG1fVVJMKSAmJiB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkgIT0gbV9VUkwu
ZnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgb2xkVVJMID0gbV9VUkw7CisgICAgYm9vbCBoYXNo
Q2hhbmdlID0gZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwsIG9sZFVSTCkgJiYg
dXJsLmZyYWdtZW50SWRlbnRpZmllcigpICE9IG9sZFVSTC5mcmFnbWVudElkZW50aWZpZXIoKTsK
ICAgICAKLSAgICBtX1VSTCA9IHVybDsKICAgICBoaXN0b3J5KCktPnVwZGF0ZUZvclNhbWVEb2N1
bWVudE5hdmlnYXRpb24oKTsKIAogICAgIC8vIElmIHdlIHdlcmUgaW4gdGhlIGF1dG9zY3JvbGwv
cGFuU2Nyb2xsIG1vZGUgd2Ugd2FudCB0byBzdG9wIGl0IGJlZm9yZSBmb2xsb3dpbmcgdGhlIGxp
bmsgdG8gdGhlIGFuY2hvcgpAQCAtMTE1NSw3ICsxMTUwLDcgQEAKICAgICAvLyBXZSBuZWVkIHRv
IHNjcm9sbCB0byB0aGUgZnJhZ21lbnQgd2hldGhlciBvciBub3QgYSBoYXNoIGNoYW5nZSBvY2N1
cnJlZCwgc2luY2UKICAgICAvLyB0aGUgdXNlciBtaWdodCBoYXZlIHNjcm9sbGVkIHNpbmNlIHRo
ZSBwcmV2aW91cyBuYXZpZ2F0aW9uLgogICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1l
LT52aWV3KCkpCi0gICAgICAgIHZpZXctPnNjcm9sbFRvRnJhZ21lbnQobV9VUkwpOworICAgICAg
ICB2aWV3LT5zY3JvbGxUb0ZyYWdtZW50KHVybCk7CiAgICAgCiAgICAgbV9pc0NvbXBsZXRlID0g
ZmFsc2U7CiAgICAgY2hlY2tDb21wbGV0ZWQoKTsKQEAgLTE4MjQsNyArMTgxOSw4IEBACiAgICAg
UmVmUHRyPENhY2hlZFBhZ2U+IGNhY2hlZFBhZ2UgPSBtX2xvYWRpbmdGcm9tQ2FjaGVkUGFnZSA/
IHBhZ2VDYWNoZSgpLT5nZXQoaGlzdG9yeSgpLT5wcm92aXNpb25hbEl0ZW0oKSkgOiAwOwogICAg
IFJlZlB0cjxEb2N1bWVudExvYWRlcj4gcGRsID0gbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVy
OwogCi0gICAgTE9HKFBhZ2VDYWNoZSwgIldlYkNvcmVMb2FkaW5nICVzOiBBYm91dCB0byBjb21t
aXQgcHJvdmlzaW9uYWwgbG9hZCBmcm9tIHByZXZpb3VzIFVSTCAnJXMnIHRvIG5ldyBVUkwgJyVz
JyIsIG1fZnJhbWUtPnRyZWUoKS0+bmFtZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1fVVJM
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIAorICAgIExPRyhQYWdlQ2FjaGUsICJXZWJDb3JlTG9h
ZGluZyAlczogQWJvdXQgdG8gY29tbWl0IHByb3Zpc2lvbmFsIGxvYWQgZnJvbSBwcmV2aW91cyBV
UkwgJyVzJyB0byBuZXcgVVJMICclcyciLCBtX2ZyYW1lLT50cmVlKCktPm5hbWUoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpLCAKKyAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKSA/IG1fZnJhbWUt
PmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkgOiAiIiwgCiAgICAgICAg
IHBkbCA/IHBkbC0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSA6ICI8bm8gcHJvdmlzaW9u
YWwgRG9jdW1lbnRMb2FkZXI+Iik7CiAKICAgICAvLyBDaGVjayB0byBzZWUgaWYgd2UgbmVlZCB0
byBjYWNoZSB0aGUgcGFnZSB3ZSBhcmUgbmF2aWdhdGluZyBhd2F5IGZyb20gaW50byB0aGUgYmFj
ay9mb3J3YXJkIGNhY2hlLgpAQCAtMTg2NCw3ICsxODYwLDggQEAKICAgICAgICAgZGlkT3BlblVS
TCh1cmwpOwogICAgIH0KIAotICAgIExPRyhMb2FkaW5nLCAiV2ViQ29yZUxvYWRpbmcgJXM6IEZp
bmlzaGVkIGNvbW1pdHRpbmcgcHJvdmlzaW9uYWwgbG9hZCB0byBVUkwgJXMiLCBtX2ZyYW1lLT50
cmVlKCktPm5hbWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX1VSTC5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpKTsKKyAgICBMT0coTG9hZGluZywgIldlYkNvcmVMb2FkaW5nICVzOiBGaW5pc2hl
ZCBjb21taXR0aW5nIHByb3Zpc2lvbmFsIGxvYWQgdG8gVVJMICVzIiwgbV9mcmFtZS0+dHJlZSgp
LT5uYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwKKyAgICAgICAgbV9mcmFtZS0+ZG9jdW1l
bnQoKSA/IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkg
OiAiIik7CiAKICAgICBpZiAobV9sb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBlU3RhbmRhcmQgJiYg
bV9kb2N1bWVudExvYWRlci0+aXNDbGllbnRSZWRpcmVjdCgpKQogICAgICAgICBoaXN0b3J5KCkt
PnVwZGF0ZUZvckNsaWVudFJlZGlyZWN0KCk7CkBAIC0yMTA3LDcgKzIxMDQsNiBAQAogICAgIGlm
ICh1cmwucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSAmJiAhdXJsLmhvc3QoKS5pc0VtcHR5KCkgJiYg
dXJsLnBhdGgoKS5pc0VtcHR5KCkpCiAgICAgICAgIHVybC5zZXRQYXRoKCIvIik7CiAgICAgCi0g
ICAgbV9VUkwgPSB1cmw7CiAgICAgbV93b3JraW5nVVJMID0gdXJsOwogCiAgICAgc3RhcnRlZCgp
OwpAQCAtMjg1MSw3ICsyODQ3LDcgQEAKICAgICAgICAgJiYgbG9hZFR5cGUgIT0gRnJhbWVMb2Fk
VHlwZVJlbG9hZAogICAgICAgICAmJiBsb2FkVHlwZSAhPSBGcmFtZUxvYWRUeXBlUmVsb2FkRnJv
bU9yaWdpbgogICAgICAgICAmJiBsb2FkVHlwZSAhPSBGcmFtZUxvYWRUeXBlU2FtZQotICAgICAg
ICAmJiAhc2hvdWxkUmVsb2FkKHRoaXMtPnVybCgpLCB1cmwpCisgICAgICAgICYmICFzaG91bGRS
ZWxvYWQobV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCksIHVybCkKICAgICAgICAgLy8gV2UgZG9u
J3Qgd2FudCB0byBqdXN0IHNjcm9sbCBpZiBhIGxpbmsgZnJvbSB3aXRoaW4gYQogICAgICAgICAv
LyBmcmFtZXNldCBpcyB0cnlpbmcgdG8gcmVsb2FkIHRoZSBmcmFtZXNldCBpbnRvIF90b3AuCiAg
ICAgICAgICYmICFtX2ZyYW1lLT5kb2N1bWVudCgpLT5pc0ZyYW1lU2V0KCk7CkluZGV4OiBXZWJD
b3JlL2xvYWRlci9SZWRpcmVjdFNjaGVkdWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9s
b2FkZXIvUmVkaXJlY3RTY2hlZHVsZXIuY3BwCShyZXZpc2lvbiA2NTczNikKKysrIFdlYkNvcmUv
bG9hZGVyL1JlZGlyZWN0U2NoZWR1bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU4LDcgKzE1
OCw3IEBACiAgICAgICAgIEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBmcmFtZS0+bG9hZGVyKCk7CiAg
ICAgICAgIGlmICghbV9oaXN0b3J5U3RlcHMpIHsKICAgICAgICAgICAgIC8vIFNwZWNpYWwgY2Fz
ZSBmb3IgZ28oMCkgZnJvbSBhIGZyYW1lIC0+IHJlbG9hZCBvbmx5IHRoZSBmcmFtZQotICAgICAg
ICAgICAgbG9hZGVyLT51cmxTZWxlY3RlZChsb2FkZXItPnVybCgpLCAiIiwgMCwgbG9ja0hpc3Rv
cnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpLCBmYWxzZSwgU2VuZFJlZmVycmVyKTsKKyAgICAg
ICAgICAgIGxvYWRlci0+dXJsU2VsZWN0ZWQoZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLCAiIiwg
MCwgbG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpLCBmYWxzZSwgU2VuZFJlZmVy
cmVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAvLyBnbyhpIT0w
KSBmcm9tIGEgZnJhbWUgbmF2aWdhdGVzIGludG8gdGhlIGhpc3Rvcnkgb2YgdGhlIGZyYW1lIG9u
bHksCkBAIC0yODUsOCArMjg1LDggQEAKICAgICAvLyBJZiB0aGUgVVJMIHdlJ3JlIGdvaW5nIHRv
IG5hdmlnYXRlIHRvIGlzIHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IG9uZSwgZXhjZXB0IGZvciB0
aGUKICAgICAvLyBmcmFnbWVudCBwYXJ0LCB3ZSBkb24ndCBuZWVkIHRvIHNjaGVkdWxlIHRoZSBs
b2NhdGlvbiBjaGFuZ2UuCiAgICAgS1VSTCBwYXJzZWRVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwp
OwotICAgIGlmIChwYXJzZWRVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgJiYgZXF1YWxJZ25v
cmluZ0ZyYWdtZW50SWRlbnRpZmllcihsb2FkZXItPnVybCgpLCBwYXJzZWRVUkwpKSB7Ci0gICAg
ICAgIGxvYWRlci0+Y2hhbmdlTG9jYXRpb24obG9hZGVyLT5jb21wbGV0ZVVSTCh1cmwpLCByZWZl
cnJlciwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIHdhc1VzZXJHZXN0dXJlKTsK
KyAgICBpZiAocGFyc2VkVVJMLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpICYmIGVxdWFsSWdub3Jp
bmdGcmFnbWVudElkZW50aWZpZXIobV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCksIHBhcnNlZFVS
TCkpIHsKKyAgICAgICAgbG9hZGVyLT5jaGFuZ2VMb2NhdGlvbihtX2ZyYW1lLT5kb2N1bWVudCgp
LT5jb21wbGV0ZVVSTCh1cmwpLCByZWZlcnJlciwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2Fy
ZExpc3QsIHdhc1VzZXJHZXN0dXJlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzIx
LDcgKzMyMSw3IEBACiB7CiAgICAgaWYgKCFtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAgIHJldHVy
bjsKLSAgICBjb25zdCBLVVJMJiB1cmwgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCk7CisgICAg
Y29uc3QgS1VSTCYgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgaWYgKHVy
bC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogV2ViQ29yZS9sb2FkZXIvSGlz
dG9yeUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0hpc3RvcnlD
b250cm9sbGVyLmNwcAkocmV2aXNpb24gNjU3MzYpCisrKyBXZWJDb3JlL2xvYWRlci9IaXN0b3J5
Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNiw3ICszMDYsNyBAQAogICAgICAg
ICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAgICAgIGFkZFZpc2l0
ZWRMaW5rKHBhZ2UsIGhpc3RvcnlVUkwpOwogCi0gICAgICAgIGlmICghZnJhbWVMb2FkZXItPmRv
Y3VtZW50TG9hZGVyKCktPmRpZENyZWF0ZUdsb2JhbEhpc3RvcnlFbnRyeSgpICYmIGZyYW1lTG9h
ZGVyLT5kb2N1bWVudExvYWRlcigpLT51bnJlYWNoYWJsZVVSTCgpLmlzRW1wdHkoKSAmJiAhZnJh
bWVMb2FkZXItPnVybCgpLmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKCFmcmFtZUxvYWRlci0+ZG9j
dW1lbnRMb2FkZXIoKS0+ZGlkQ3JlYXRlR2xvYmFsSGlzdG9yeUVudHJ5KCkgJiYgZnJhbWVMb2Fk
ZXItPmRvY3VtZW50TG9hZGVyKCktPnVucmVhY2hhYmxlVVJMKCkuaXNFbXB0eSgpICYmICFtX2Zy
YW1lLT5kb2N1bWVudCgpLT51cmwoKS5pc0VtcHR5KCkpCiAgICAgICAgICAgICBmcmFtZUxvYWRl
ci0+Y2xpZW50KCktPnVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCk7CiAgICAgfQog
fQpAQCAtMzUwLDcgKzM1MCw3IEBACiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+
cGFnZSgpKQogICAgICAgICAgICAgYWRkVmlzaXRlZExpbmsocGFnZSwgaGlzdG9yeVVSTCk7CiAK
LSAgICAgICAgaWYgKCFtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+ZGlkQ3Jl
YXRlR2xvYmFsSGlzdG9yeUVudHJ5KCkgJiYgbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9h
ZGVyKCktPnVucmVhY2hhYmxlVVJMKCkuaXNFbXB0eSgpICYmICFtX2ZyYW1lLT5sb2FkZXIoKS0+
dXJsKCkuaXNFbXB0eSgpKQorICAgICAgICBpZiAoIW1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVu
dExvYWRlcigpLT5kaWRDcmVhdGVHbG9iYWxIaXN0b3J5RW50cnkoKSAmJiBtX2ZyYW1lLT5sb2Fk
ZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+dW5yZWFjaGFibGVVUkwoKS5pc0VtcHR5KCkgJiYgIW1f
ZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLmlzRW1wdHkoKSkKICAgICAgICAgICAgIG1fZnJhbWUt
PmxvYWRlcigpLT5jbGllbnQoKS0+dXBkYXRlR2xvYmFsSGlzdG9yeVJlZGlyZWN0TGlua3MoKTsK
ICAgICB9CiB9CkBAIC00MDIsNyArNDAyLDcgQEAKIAogdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6
dXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbigpCiB7Ci0gICAgaWYgKG1fZnJhbWUtPmxv
YWRlcigpLT51cmwoKS5pc0VtcHR5KCkpCisgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCktPnVy
bCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU2V0dGluZ3MqIHNldHRpbmdz
ID0gbV9mcmFtZS0+c2V0dGluZ3MoKTsKQEAgLTQxMyw3ICs0MTMsNyBAQAogICAgIGlmICghcGFn
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYWRkVmlzaXRlZExpbmsocGFnZSwgbV9mcmFtZS0+
bG9hZGVyKCktPnVybCgpKTsKKyAgICBhZGRWaXNpdGVkTGluayhwYWdlLCBtX2ZyYW1lLT5kb2N1
bWVudCgpLT51cmwoKSk7CiB9CiAKIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvckZy
YW1lTG9hZENvbXBsZXRlZCgpCkluZGV4OiBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCShyZXZp
c2lvbiA2NTczNikKKysrIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBAQAogdm9pZCBEb2N1bWVudFdyaXRlcjo6cmVwbGFjZURv
Y3VtZW50KGNvbnN0IFN0cmluZyYgc291cmNlKQogewogICAgIG1fZnJhbWUtPmxvYWRlcigpLT5z
dG9wQWxsTG9hZGVycygpOwotICAgIGJlZ2luKG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKSwgdHJ1
ZSwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgYmVnaW4obV9m
cmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCksIHRydWUsIG1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCkpOwogCiAgICAgaWYgKCFzb3VyY2UuaXNOdWxsKCkpIHsKICAgICAgICAgaWYg
KCFtX3JlY2VpdmVkRGF0YSkgewpAQCAtMTI2LDcgKzEyNiw3IEBACiAgICAgaWYgKHJlc2V0U2Ny
aXB0aW5nKQogICAgICAgICBtX2ZyYW1lLT5zY3JpcHQoKS0+dXBkYXRlUGxhdGZvcm1TY3JpcHRP
YmplY3RzKCk7CiAKLSAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+c2V0VVJMKHVybCk7CisgICAgbV9m
cmFtZS0+bG9hZGVyKCktPnNldE91dGdvaW5nUmVmZXJyZXIodXJsKTsKICAgICBtX2ZyYW1lLT5z
ZXREb2N1bWVudChkb2N1bWVudCk7CiAKICAgICBpZiAobV9kZWNvZGVyKQpAQCAtMjQ1LDcgKzI0
NSw3IEBACiAKIFN0cmluZyBEb2N1bWVudFdyaXRlcjo6ZGVwcmVjYXRlZEZyYW1lRW5jb2Rpbmco
KSBjb25zdAogewotICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkuaXNFbXB0eSgp
ID8gbV9lbmNvZGluZyA6IGVuY29kaW5nKCk7CisgICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50
KCktPnVybCgpLmlzRW1wdHkoKSA/IG1fZW5jb2RpbmcgOiBlbmNvZGluZygpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDY1NzM2
KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjY2
LDExICsyNjYsOCBAQAogCiAgICAgdm9pZCBmcmFtZURldGFjaGVkKCk7CiAKLSAgICBjb25zdCBL
VVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX1VSTDsgfQorICAgIHZvaWQgc2V0T3V0Z29pbmdS
ZWZlcnJlcihjb25zdCBLVVJMJik7CiAKLSAgICAvLyBzZXRVUkwgaXMgYSBsb3ctbGV2ZWwgc2V0
dGVyIGFuZCBkb2VzIG5vdCB0cmlnZ2VyIGxvYWRpbmcuCi0gICAgdm9pZCBzZXRVUkwoY29uc3Qg
S1VSTCYpOwotCiAgICAgdm9pZCBsb2FkRG9uZSgpOwogICAgIHZvaWQgZmluaXNoZWRQYXJzaW5n
KCk7CiAgICAgdm9pZCBjaGVja0NvbXBsZXRlZCgpOwpAQCAtNDY4LDcgKzQ2NSw2IEBACiAKICAg
ICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX3BlbmRpbmdTdGF0ZU9iamVjdDsKIAot
ICAgIEtVUkwgbV9VUkw7CiAgICAgS1VSTCBtX3dvcmtpbmdVUkw7CiAKICAgICBPd25QdHI8SWNv
bkxvYWRlcj4gbV9pY29uTG9hZGVyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65597</attachid>
            <date>2010-08-26 12:28:30 -0700</date>
            <delta_ts>2011-01-26 09:34:35 -0800</delta_ts>
            <desc>split patch - remove m_URL and have FrameLoader::url() call Document::url()</desc>
            <filename>flurl.txt</filename>
            <type>text/plain</type>
            <size>14652</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgkocmV2aXNpb24gNjU5MDkpCisrKyBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3
b3JraW5nIGNvcHkpCkBAIC04NTYsNiArODU2LDcgQEAKIF9fWk5LN1dlYkNvcmUxMUZyYW1lTG9h
ZGVyMTZvdXRnb2luZ1JlZmVycmVyRXYKIF9fWk5LN1dlYkNvcmUxMUZyYW1lTG9hZGVyMjBhY3Rp
dmVEb2N1bWVudExvYWRlckV2CiBfX1pOSzdXZWJDb3JlMTFGcmFtZUxvYWRlcjI3bnVtUGVuZGlu
Z09yTG9hZGluZ1JlcXVlc3RzRWIKK19fWk5LN1dlYkNvcmUxMUZyYW1lTG9hZGVyM3VybEV2CiBf
X1pOSzdXZWJDb3JlMTFGcmFtZUxvYWRlcjhsb2FkVHlwZUV2CiBfX1pOSzdXZWJDb3JlMTFIaXN0
b3J5SXRlbTEwdmlzaXRDb3VudEV2CiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRlbTExaGFzQ2hp
bGRyZW5FdgpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gNjU5MDkpCisrKyBXZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNyw3ICs0MTcsNyBAQAogCiAgICAgbV9m
cmFtZSA9IGZyYW1lOwogCi0gICAgaWYgKGZyYW1lIHx8ICF1cmwuaXNFbXB0eSgpKQorICAgIGlm
ICghdXJsLmlzRW1wdHkoKSB8fCAoZnJhbWUgJiYgIWZyYW1lLT5sb2FkZXIoKS0+c3RhdGVNYWNo
aW5lKCktPmNyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSkpCiAgICAgICAgIHNldFVSTCh1
cmwpOwogCiAgICAgbV9heE9iamVjdENhY2hlID0gMDsKQEAgLTQzMjAsOSArNDMyMCw4IEBACiAg
ICAgaWYgKCFmKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogRWxpbWluYXRlIHRo
aXMgcmVkdW5kYW5jeS4KICAgICBzZXRVUkwodXJsKTsKLSAgICBmLT5sb2FkZXIoKS0+c2V0VVJM
KHVybCk7CisgICAgZi0+bG9hZGVyKCktPnNldE91dGdvaW5nUmVmZXJyZXIodXJsKTsKICAgICBm
LT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+cmVwbGFjZVJlcXVlc3RVUkxGb3JTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uKHVybCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NTkxMSkKKysrIFdlYkNvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTAtMDgtMjYgIE5h
dGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgbV9VUkwgZnJvbSBGcmFtZUxvYWRlciBh
bmQgaW5zdGVhZCBkZXBlbmQgb24gRG9jdW1lbnQncyB1cmwuCisgICAgICAgIEZyYW1lTG9hZGVy
Ojp1cmwoKSB3aWxsIGJlIHJlbW92ZWQgaW4gYSBsYXRlciBwYXRjaC4KKworICAgICAgICBodHRw
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTE2NQorCisgICAgICAgIE5vIG5l
dyB0ZXN0cywgc2luY2UgdGhpcyBwcmVkb21pbmFudGx5IGEgcmVmYWN0b3IuIFVwZGF0aW5nCisg
ICAgICAgIGZhc3QvZG9tL2Vhcmx5LWZyYW1lLXVybC5odG1sLgorCisgICAgICAgICogV2ViQ29y
ZS5leHAuaW46CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpEb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRl
VVJMRm9yUHVzaE9yUmVwbGFjZVN0YXRlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRXcml0
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXI6OmJlZ2luKToKKyAgICAg
ICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2Fk
ZXI6Omljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZE9wZW5VUkwp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZEV4cGxpY2l0T3Blbik6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OnVybCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6c2V0T3V0Z29pbmdSZWZlcnJlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
c3RhcnRJY29uTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb21taXRJ
Y29uVVJMVG9JY29uRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmZp
bmlzaGVkUGFyc2luZyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tJZkRp
c3BsYXlJbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNo
ZWNrSWZSdW5JbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnVwZGF0ZUZpcnN0UGFydHlGb3JDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkSW5TYW1lRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2hvdWxkU2Nyb2xsVG9BbmNo
b3IpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorCiAyMDEwLTA4LTI0ICBOYXRl
IENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4KSW5k
ZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDY1OTA5KQorKysgV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzYsMTUgKzQ3NiwxNiBAQAog
ICAgICAgICByZXR1cm4gS1VSTChQYXJzZWRVUkxTdHJpbmcsIG1fZnJhbWUtPmRvY3VtZW50KCkt
Pmljb25VUkwoKSk7CiAKICAgICAvLyBEb24ndCByZXR1cm4gYSBmYXZpY29uIGljb25VUkwgdW5s
ZXNzIHdlJ3JlIGh0dHAgb3IgaHR0cHMKLSAgICBpZiAoIW1fVVJMLnByb3RvY29sSW5IVFRQRmFt
aWx5KCkpCisgICAgS1VSTCBkb2N1bWVudFVSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgp
OworICAgIGlmICghZG9jdW1lbnRVUkwucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSkKICAgICAgICAg
cmV0dXJuIEtVUkwoKTsKIAogICAgIEtVUkwgdXJsOwotICAgIGJvb2wgY291bGRTZXRQcm90b2Nv
bCA9IHVybC5zZXRQcm90b2NvbChtX1VSTC5wcm90b2NvbCgpKTsKKyAgICBib29sIGNvdWxkU2V0
UHJvdG9jb2wgPSB1cmwuc2V0UHJvdG9jb2woZG9jdW1lbnRVUkwucHJvdG9jb2woKSk7CiAgICAg
QVNTRVJUX1VOVVNFRChjb3VsZFNldFByb3RvY29sLCBjb3VsZFNldFByb3RvY29sKTsKLSAgICB1
cmwuc2V0SG9zdChtX1VSTC5ob3N0KCkpOwotICAgIGlmIChtX1VSTC5oYXNQb3J0KCkpCi0gICAg
ICAgIHVybC5zZXRQb3J0KG1fVVJMLnBvcnQoKSk7CisgICAgdXJsLnNldEhvc3QoZG9jdW1lbnRV
UkwuaG9zdCgpKTsKKyAgICBpZiAoZG9jdW1lbnRVUkwuaGFzUG9ydCgpKQorICAgICAgICB1cmwu
c2V0UG9ydChkb2N1bWVudFVSTC5wb3J0KCkpOwogICAgIHVybC5zZXRQYXRoKCIvZmF2aWNvbi5p
Y28iKTsKICAgICByZXR1cm4gdXJsOwogfQpAQCAtNTEzLDEwICs1MTQsOSBAQAogICAgICAgICAg
ICAgd2luZG93LT5zZXREZWZhdWx0U3RhdHVzKFN0cmluZygpKTsKICAgICAgICAgfQogICAgIH0K
LSAgICBtX1VSTCA9IHVybDsKLSAgICBpZiAobV9VUkwucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSAm
JiAhbV9VUkwuaG9zdCgpLmlzRW1wdHkoKSAmJiBtX1VSTC5wYXRoKCkuaXNFbXB0eSgpKQotICAg
ICAgICBtX1VSTC5zZXRQYXRoKCIvIik7Ci0gICAgbV93b3JraW5nVVJMID0gbV9VUkw7CisgICAg
bV93b3JraW5nVVJMID0gdXJsOworICAgIGlmIChtX3dvcmtpbmdVUkwucHJvdG9jb2xJbkhUVFBG
YW1pbHkoKSAmJiAhbV93b3JraW5nVVJMLmhvc3QoKS5pc0VtcHR5KCkgJiYgbV93b3JraW5nVVJM
LnBhdGgoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fd29ya2luZ1VSTC5zZXRQYXRoKCIvIik7CiAK
ICAgICBzdGFydGVkKCk7CiAKQEAgLTUzNiw5ICs1MzYsNyBAQAogICAgIC8vIGZyb20gYSBzdWJz
ZXF1ZW50IHdpbmRvdy5kb2N1bWVudC5vcGVuIC8gd2luZG93LmRvY3VtZW50LndyaXRlIGNhbGwu
IAogICAgIC8vIENhbmNlbGluZyByZWRpcmVjdGlvbiBoZXJlIHdvcmtzIGZvciBhbGwgY2FzZXMg
YmVjYXVzZSBkb2N1bWVudC5vcGVuIAogICAgIC8vIGltcGxpY2l0bHkgcHJlY2VkZXMgZG9jdW1l
bnQud3JpdGUuCi0gICAgbV9mcmFtZS0+cmVkaXJlY3RTY2hlZHVsZXIoKS0+Y2FuY2VsKCk7IAot
ICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSAhPSBibGFua1VSTCgpKQotICAgICAg
ICBtX1VSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOworICAgIG1fZnJhbWUtPnJlZGly
ZWN0U2NoZWR1bGVyKCktPmNhbmNlbCgpOwogfQogCiAKQEAgLTYyOSwyMSArNjI3LDI2IEBACiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmICh1cmwuaXNFbXB0eSgpKQotICAgICAgICB1cmwgPSBt
X1VSTC5zdHJpbmcoKTsKKyAgICAgICAgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCku
c3RyaW5nKCk7CiAgICAgZWxzZQogICAgICAgICB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5j
b21wbGV0ZVVSTCh1cmwpLnN0cmluZygpOwogCiAgICAgbV9mcmFtZS0+cmVkaXJlY3RTY2hlZHVs
ZXIoKS0+c2NoZWR1bGVSZWRpcmVjdChkZWxheSwgdXJsKTsKIH0KIAotdm9pZCBGcmFtZUxvYWRl
cjo6c2V0VVJMKGNvbnN0IEtVUkwmIHVybCkKK2NvbnN0IEtVUkwmIEZyYW1lTG9hZGVyOjp1cmwo
KSBjb25zdAogeworICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICByZXR1cm4g
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXI6OnNldE91
dGdvaW5nUmVmZXJyZXIoY29uc3QgS1VSTCYgdXJsKQorewogICAgIEtVUkwgcmVmKHVybCk7CiAg
ICAgcmVmLnNldFVzZXIoU3RyaW5nKCkpOwogICAgIHJlZi5zZXRQYXNzKFN0cmluZygpKTsKICAg
ICByZWYucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgbV9vdXRnb2luZ1JlZmVycmVy
ID0gcmVmLnN0cmluZygpOwotICAgIG1fVVJMID0gdXJsOwogfQogCiB2b2lkIEZyYW1lTG9hZGVy
OjpkaWRCZWdpbkRvY3VtZW50KGJvb2wgZGlzcGF0Y2gpCkBAIC03MTgsNyArNzIxLDcgQEAKICAg
ICAgICAgICAgIGlmICghaWNvbkRhdGFiYXNlKCktPmljb25EYXRhS25vd25Gb3JJY29uVVJMKHVy
bFN0cmluZykpIHsKICAgICAgICAgICAgICAgICBMT0coSWNvbkRhdGFiYXNlLCAiVG9sZCBub3Qg
dG8gbG9hZCBpY29uICVzIGJ1dCBpY29uIGRhdGEgaXMgbm90IHlldCBhdmFpbGFibGUgLSByZWdp
c3RlcmluZyBmb3Igbm90aWZpY2F0aW9uIGFuZCByZXF1ZXN0aW5nIGxvYWQgZnJvbSBkaXNrIiwg
dXJsU3RyaW5nLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgICAgICAgICBtX2NsaWVudC0+cmVn
aXN0ZXJGb3JJY29uTm90aWZpY2F0aW9uKCk7Ci0gICAgICAgICAgICAgICAgaWNvbkRhdGFiYXNl
KCktPmljb25Gb3JQYWdlVVJMKG1fVVJMLnN0cmluZygpLCBJbnRTaXplKDAsIDApKTsKKyAgICAg
ICAgICAgICAgICBpY29uRGF0YWJhc2UoKS0+aWNvbkZvclBhZ2VVUkwobV9mcmFtZS0+ZG9jdW1l
bnQoKS0+dXJsKCkuc3RyaW5nKCksIEludFNpemUoMCwgMCkpOwogICAgICAgICAgICAgICAgIGlj
b25EYXRhYmFzZSgpLT5pY29uRm9yUGFnZVVSTChvcmlnaW5hbFJlcXVlc3RVUkwoKS5zdHJpbmco
KSwgSW50U2l6ZSgwLCAwKSk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBt
X2NsaWVudC0+ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwpAQCAtNzU1LDggKzc1OCw4IEBACiB2
b2lkIEZyYW1lTG9hZGVyOjpjb21taXRJY29uVVJMVG9JY29uRGF0YWJhc2UoY29uc3QgS1VSTCYg
aWNvbikKIHsKICAgICBBU1NFUlQoaWNvbkRhdGFiYXNlKCkpOwotICAgIExPRyhJY29uRGF0YWJh
c2UsICJDb21taXR0aW5nIGljb25VUkwgJXMgdG8gZGF0YWJhc2UgZm9yIHBhZ2VVUkxzICVzIGFu
ZCAlcyIsIGljb24uc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1fVVJMLnN0cmluZygpLmFzY2lp
KCkuZGF0YSgpLCBvcmlnaW5hbFJlcXVlc3RVUkwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7
Ci0gICAgaWNvbkRhdGFiYXNlKCktPnNldEljb25VUkxGb3JQYWdlVVJMKGljb24uc3RyaW5nKCks
IG1fVVJMLnN0cmluZygpKTsKKyAgICBMT0coSWNvbkRhdGFiYXNlLCAiQ29tbWl0dGluZyBpY29u
VVJMICVzIHRvIGRhdGFiYXNlIGZvciBwYWdlVVJMcyAlcyBhbmQgJXMiLCBpY29uLnN0cmluZygp
LmFzY2lpKCkuZGF0YSgpLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKS5hc2Np
aSgpLmRhdGEoKSwgb3JpZ2luYWxSZXF1ZXN0VVJMKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkp
OworICAgIGljb25EYXRhYmFzZSgpLT5zZXRJY29uVVJMRm9yUGFnZVVSTChpY29uLnN0cmluZygp
LCBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSk7CiAgICAgaWNvbkRhdGFiYXNl
KCktPnNldEljb25VUkxGb3JQYWdlVVJMKGljb24uc3RyaW5nKCksIG9yaWdpbmFsUmVxdWVzdFVS
TCgpLnN0cmluZygpKTsKIH0KIApAQCAtNzgyLDcgKzc4NSw3IEBACiAgICAgLy8gQ2hlY2sgaWYg
dGhlIHNjcm9sbGJhcnMgYXJlIHJlYWxseSBuZWVkZWQgZm9yIHRoZSBjb250ZW50LgogICAgIC8v
IElmIG5vdCwgcmVtb3ZlIHRoZW0sIHJlbGF5b3V0LCBhbmQgcmVwYWludC4KICAgICBtX2ZyYW1l
LT52aWV3KCktPnJlc3RvcmVTY3JvbGxiYXIoKTsKLSAgICBtX2ZyYW1lLT52aWV3KCktPnNjcm9s
bFRvRnJhZ21lbnQobV9VUkwpOworICAgIG1fZnJhbWUtPnZpZXcoKS0+c2Nyb2xsVG9GcmFnbWVu
dChtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWREb25lKCkKQEAgLTEwMDYsNyArMTAwOSw3IEBACiAgICAgICAgIHJldHVybjsKIAogICAgIFN0
cmluZyBtZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlRoZSBwYWdlIGF0ICVzIGRpc3BsYXllZCBp
bnNlY3VyZSBjb250ZW50IGZyb20gJXMuXG4iLAotICAgICAgICBtX1VSTC5zdHJpbmcoKS51dGY4
KCkuZGF0YSgpLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIG1fZnJhbWUt
PmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHVybC5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRN
ZXNzYWdlKEhUTUxNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgV2FybmluZ01lc3NhZ2VM
ZXZlbCwgbWVzc2FnZSwgMSwgU3RyaW5nKCkpOwogCiAgICAgbV9jbGllbnQtPmRpZERpc3BsYXlJ
bnNlY3VyZUNvbnRlbnQoKTsKQEAgLTEwMTgsNyArMTAyMSw3IEBACiAgICAgICAgIHJldHVybjsK
IAogICAgIFN0cmluZyBtZXNzYWdlID0gU3RyaW5nOjpmb3JtYXQoIlRoZSBwYWdlIGF0ICVzIHJh
biBpbnNlY3VyZSBjb250ZW50IGZyb20gJXMuXG4iLAotICAgICAgICBtX1VSTC5zdHJpbmcoKS51
dGY4KCkuZGF0YSgpLCB1cmwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIG1fZnJh
bWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIHVybC5zdHJpbmco
KS51dGY4KCkuZGF0YSgpKTsKICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5h
ZGRNZXNzYWdlKEhUTUxNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgV2FybmluZ01lc3Nh
Z2VMZXZlbCwgbWVzc2FnZSwgMSwgU3RyaW5nKCkpOwogCiAgICAgbV9jbGllbnQtPmRpZFJ1bklu
c2VjdXJlQ29udGVudChjb250ZXh0KTsKQEAgLTExMDIsNyArMTEwNSw3IEBACiAgICAgaWYgKG1f
ZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpCiAgICAgICAgIHNldEZpcnN0UGFydHlGb3JDb29raWVz
KG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCktPmRvY3VtZW50KCktPmZpcnN0UGFydHlGb3JDb29r
aWVzKCkpOwogICAgIGVsc2UKLSAgICAgICAgc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMobV9VUkwp
OworICAgICAgICBzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhtX2ZyYW1lLT5kb2N1bWVudCgpLT51
cmwoKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnNldEZpcnN0UGFydHlGb3JDb29raWVzKGNv
bnN0IEtVUkwmIHVybCkKQEAgLTExMjAsNiArMTEyMyw3IEBACiAgICAgQVNTRVJUKCFzdGF0ZU9i
amVjdCB8fCAoc3RhdGVPYmplY3QgJiYgIWlzTmV3TmF2aWdhdGlvbikpOwogCiAgICAgLy8gVXBk
YXRlIHRoZSBkYXRhIHNvdXJjZSdzIHJlcXVlc3Qgd2l0aCB0aGUgbmV3IFVSTCB0byBmYWtlIHRo
ZSBVUkwgY2hhbmdlCisgICAgS1VSTCBvbGRVUkwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwo
KTsKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXRVUkwodXJsKTsKICAgICBkb2N1bWVudExv
YWRlcigpLT5yZXBsYWNlUmVxdWVzdFVSTEZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24odXJsKTsK
ICAgICBpZiAoaXNOZXdOYXZpZ2F0aW9uICYmICFzaG91bGRUcmVhdFVSTEFzU2FtZUFzQ3VycmVu
dCh1cmwpICYmICFzdGF0ZU9iamVjdCkgewpAQCAtMTEzNywxMSArMTE0MSw4IEBACiAgICAgICAg
IGhpc3RvcnkoKS0+dXBkYXRlQmFja0ZvcndhcmRMaXN0Rm9yRnJhZ21lbnRTY3JvbGwoKTsKICAg
ICB9CiAgICAgCi0gICAgU3RyaW5nIG9sZFVSTDsKLSAgICBib29sIGhhc2hDaGFuZ2UgPSBlcXVh
bElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKHVybCwgbV9VUkwpICYmIHVybC5mcmFnbWVudElk
ZW50aWZpZXIoKSAhPSBtX1VSTC5mcmFnbWVudElkZW50aWZpZXIoKTsKLSAgICBvbGRVUkwgPSBt
X1VSTDsKKyAgICBib29sIGhhc2hDaGFuZ2UgPSBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlm
aWVyKHVybCwgb2xkVVJMKSAmJiB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkgIT0gb2xkVVJMLmZy
YWdtZW50SWRlbnRpZmllcigpOwogICAgIAotICAgIG1fVVJMID0gdXJsOwogICAgIGhpc3Rvcnko
KS0+dXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbigpOwogCiAgICAgLy8gSWYgd2Ugd2Vy
ZSBpbiB0aGUgYXV0b3Njcm9sbC9wYW5TY3JvbGwgbW9kZSB3ZSB3YW50IHRvIHN0b3AgaXQgYmVm
b3JlIGZvbGxvd2luZyB0aGUgbGluayB0byB0aGUgYW5jaG9yCkBAIC0xMTU1LDcgKzExNTYsNyBA
QAogICAgIC8vIFdlIG5lZWQgdG8gc2Nyb2xsIHRvIHRoZSBmcmFnbWVudCB3aGV0aGVyIG9yIG5v
dCBhIGhhc2ggY2hhbmdlIG9jY3VycmVkLCBzaW5jZQogICAgIC8vIHRoZSB1c2VyIG1pZ2h0IGhh
dmUgc2Nyb2xsZWQgc2luY2UgdGhlIHByZXZpb3VzIG5hdmlnYXRpb24uCiAgICAgaWYgKEZyYW1l
VmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKSkKLSAgICAgICAgdmlldy0+c2Nyb2xsVG9GcmFn
bWVudChtX1VSTCk7CisgICAgICAgIHZpZXctPnNjcm9sbFRvRnJhZ21lbnQodXJsKTsKICAgICAK
ICAgICBtX2lzQ29tcGxldGUgPSBmYWxzZTsKICAgICBjaGVja0NvbXBsZXRlZCgpOwpAQCAtMTgy
NCw3ICsxODI1LDggQEAKICAgICBSZWZQdHI8Q2FjaGVkUGFnZT4gY2FjaGVkUGFnZSA9IG1fbG9h
ZGluZ0Zyb21DYWNoZWRQYWdlID8gcGFnZUNhY2hlKCktPmdldChoaXN0b3J5KCktPnByb3Zpc2lv
bmFsSXRlbSgpKSA6IDA7CiAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBwZGwgPSBtX3Byb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXI7CiAKLSAgICBMT0coUGFnZUNhY2hlLCAiV2ViQ29yZUxvYWRp
bmcgJXM6IEFib3V0IHRvIGNvbW1pdCBwcm92aXNpb25hbCBsb2FkIGZyb20gcHJldmlvdXMgVVJM
ICclcycgdG8gbmV3IFVSTCAnJXMnIiwgbV9mcmFtZS0+dHJlZSgpLT5uYW1lKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwgbV9VUkwuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgCisgICAgTE9HKFBh
Z2VDYWNoZSwgIldlYkNvcmVMb2FkaW5nICVzOiBBYm91dCB0byBjb21taXQgcHJvdmlzaW9uYWwg
bG9hZCBmcm9tIHByZXZpb3VzIFVSTCAnJXMnIHRvIG5ldyBVUkwgJyVzJyIsIG1fZnJhbWUtPnRy
ZWUoKS0+bmFtZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIAorICAgICAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpID8gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSA6ICIiLCAKICAgICAgICAgcGRsID8gcGRsLT51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0
YSgpIDogIjxubyBwcm92aXNpb25hbCBEb2N1bWVudExvYWRlcj4iKTsKIAogICAgIC8vIENoZWNr
IHRvIHNlZSBpZiB3ZSBuZWVkIHRvIGNhY2hlIHRoZSBwYWdlIHdlIGFyZSBuYXZpZ2F0aW5nIGF3
YXkgZnJvbSBpbnRvIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUuCkBAIC0xODY0LDcgKzE4NjYsOCBA
QAogICAgICAgICBkaWRPcGVuVVJMKHVybCk7CiAgICAgfQogCi0gICAgTE9HKExvYWRpbmcsICJX
ZWJDb3JlTG9hZGluZyAlczogRmluaXNoZWQgY29tbWl0dGluZyBwcm92aXNpb25hbCBsb2FkIHRv
IFVSTCAlcyIsIG1fZnJhbWUtPnRyZWUoKS0+bmFtZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCks
IG1fVVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIExPRyhMb2FkaW5nLCAiV2ViQ29y
ZUxvYWRpbmcgJXM6IEZpbmlzaGVkIGNvbW1pdHRpbmcgcHJvdmlzaW9uYWwgbG9hZCB0byBVUkwg
JXMiLCBtX2ZyYW1lLT50cmVlKCktPm5hbWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAorICAg
ICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpID8gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKIAogICAgIGlmIChtX2xvYWRUeXBlID09IEZyYW1l
TG9hZFR5cGVTdGFuZGFyZCAmJiBtX2RvY3VtZW50TG9hZGVyLT5pc0NsaWVudFJlZGlyZWN0KCkp
CiAgICAgICAgIGhpc3RvcnkoKS0+dXBkYXRlRm9yQ2xpZW50UmVkaXJlY3QoKTsKQEAgLTIxMDcs
NyArMjExMCw2IEBACiAgICAgaWYgKHVybC5wcm90b2NvbEluSFRUUEZhbWlseSgpICYmICF1cmwu
aG9zdCgpLmlzRW1wdHkoKSAmJiB1cmwucGF0aCgpLmlzRW1wdHkoKSkKICAgICAgICAgdXJsLnNl
dFBhdGgoIi8iKTsKICAgICAKLSAgICBtX1VSTCA9IHVybDsKICAgICBtX3dvcmtpbmdVUkwgPSB1
cmw7CiAKICAgICBzdGFydGVkKCk7CkBAIC0yODUxLDcgKzI4NTMsNyBAQAogICAgICAgICAmJiBs
b2FkVHlwZSAhPSBGcmFtZUxvYWRUeXBlUmVsb2FkCiAgICAgICAgICYmIGxvYWRUeXBlICE9IEZy
YW1lTG9hZFR5cGVSZWxvYWRGcm9tT3JpZ2luCiAgICAgICAgICYmIGxvYWRUeXBlICE9IEZyYW1l
TG9hZFR5cGVTYW1lCi0gICAgICAgICYmICFzaG91bGRSZWxvYWQodGhpcy0+dXJsKCksIHVybCkK
KyAgICAgICAgJiYgIXNob3VsZFJlbG9hZChtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgdXJs
KQogICAgICAgICAvLyBXZSBkb24ndCB3YW50IHRvIGp1c3Qgc2Nyb2xsIGlmIGEgbGluayBmcm9t
IHdpdGhpbiBhCiAgICAgICAgIC8vIGZyYW1lc2V0IGlzIHRyeWluZyB0byByZWxvYWQgdGhlIGZy
YW1lc2V0IGludG8gX3RvcC4KICAgICAgICAgJiYgIW1fZnJhbWUtPmRvY3VtZW50KCktPmlzRnJh
bWVTZXQoKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAJKHJldmlzaW9uIDY1OTA5
KQorKysgV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjYsNyArMTI2LDcgQEAKICAgICBpZiAocmVzZXRTY3JpcHRpbmcpCiAgICAgICAgIG1fZnJh
bWUtPnNjcmlwdCgpLT51cGRhdGVQbGF0Zm9ybVNjcmlwdE9iamVjdHMoKTsKIAotICAgIG1fZnJh
bWUtPmxvYWRlcigpLT5zZXRVUkwodXJsKTsKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+c2V0T3V0
Z29pbmdSZWZlcnJlcih1cmwpOwogICAgIG1fZnJhbWUtPnNldERvY3VtZW50KGRvY3VtZW50KTsK
IAogICAgIGlmIChtX2RlY29kZXIpCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDY1
OTEwKQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MjY2LDExICsyNjYsOSBAQAogCiAgICAgdm9pZCBmcmFtZURldGFjaGVkKCk7CiAKLSAgICBjb25z
dCBLVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX1VSTDsgfQorICAgIGNvbnN0IEtVUkwmIHVy
bCgpIGNvbnN0OworICAgIHZvaWQgc2V0T3V0Z29pbmdSZWZlcnJlcihjb25zdCBLVVJMJik7CiAK
LSAgICAvLyBzZXRVUkwgaXMgYSBsb3ctbGV2ZWwgc2V0dGVyIGFuZCBkb2VzIG5vdCB0cmlnZ2Vy
IGxvYWRpbmcuCi0gICAgdm9pZCBzZXRVUkwoY29uc3QgS1VSTCYpOwotCiAgICAgdm9pZCBsb2Fk
RG9uZSgpOwogICAgIHZvaWQgZmluaXNoZWRQYXJzaW5nKCk7CiAgICAgdm9pZCBjaGVja0NvbXBs
ZXRlZCgpOwpAQCAtNDcwLDcgKzQ2OCw2IEBACiAKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBtX3BlbmRpbmdTdGF0ZU9iamVjdDsKIAotICAgIEtVUkwgbV9VUkw7CiAgICAgS1VS
TCBtX3dvcmtpbmdVUkw7CiAKICAgICBPd25QdHI8SWNvbkxvYWRlcj4gbV9pY29uTG9hZGVyOwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vcmVzb3VyY2VzL2EuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9yZXNvdXJjZXMvYS5odG1sCShyZXZpc2lvbiA2NTkwOSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3Jlc291cmNlcy9hLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTEsOSArMSwxMiBAQAogPEhUTUw+CiA8SEVBRD4KIDxTQ1JJUFQ+Ci1mdW5jdGlvbiB3cml0
ZURvdCgpCitmdW5jdGlvbiBjaGVja1VSTCgpCiB7Ci0gICAgd2hpbGUoIXBhcmVudC5mcmFtZXNb
MV0uZG9jdW1lbnQuVVJMKSB7IH0KKyAgICBpZiAoIXBhcmVudC5mcmFtZXNbMV0uZG9jdW1lbnQu
VVJMKQorICAgICAgICBzZXRUaW1lb3V0KGNoZWNrVVJMLCAwKTsKKyAgICBlbHNlIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisJbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOwogfQogPC9TQ1JJUFQ+CiA8L0hFQUQ+CkBAIC0xMiw5ICsxNSw3IEBACiB2YWx1ZSBvciAi
YWJvdXQ6YmxhbmsiIGZvciBmcmFtZXMuIFRoZSByaWdodCBhbnN3ZXIgaXMKICJhYm91dDpibGFu
ayIuIElmIGl0IGlzIGVtcHR5LCB0aGVuIHRoaXMgdGVzdCB3aWxsIGhhbmcuCiAJPHNjcmlwdD4K
LQl3cml0ZURvdCgpOwotCWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0JICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKwljaGVja1VSTCgpOwogCTwvc2NyaXB0
PgogPC9CT0RZPgogPC9IVE1MPgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjYxMTUpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMC0wOC0y
NiAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBhIHRlc3QgdGhhdCBidXN5LXdh
aXRzIHdoZW4gaXQgc2hvdWxkbid0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NDExNjUuCisKKyAgICAgICAgKiBmYXN0L2RvbS9yZXNvdXJjZXMvYS5o
dG1sOgorCiAyMDEwLTA4LTI2ICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyIGFuZCBNYWNpZWogU3RhY2hvd2lh
ay4K
</data>
<flag name="review"
          id="54413"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="54414"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80201</attachid>
            <date>2011-01-26 09:34:35 -0800</date>
            <delta_ts>2011-01-26 11:38:46 -0800</delta_ts>
            <desc>patch without any test changes</desc>
            <filename>flurl.txt</filename>
            <type>text/plain</type>
            <size>13865</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA3NjYyMCkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC05NzEsNiArOTcxLDcgQEAKIF9f
Wk5LN1dlYkNvcmUxMUZyYW1lTG9hZGVyMTduZXR3b3JraW5nQ29udGV4dEV2CiBfX1pOSzdXZWJD
b3JlMTFGcmFtZUxvYWRlcjIwYWN0aXZlRG9jdW1lbnRMb2FkZXJFdgogX19aTks3V2ViQ29yZTEx
RnJhbWVMb2FkZXIyN251bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0c0ViCitfX1pOSzdXZWJDb3Jl
MTFGcmFtZUxvYWRlcjN1cmxFdgogX19aTks3V2ViQ29yZTExRnJhbWVMb2FkZXI4bG9hZFR5cGVF
dgogX19aTks3V2ViQ29yZTExSGlzdG9yeUl0ZW0xMHZpc2l0Q291bnRFdgogX19aTks3V2ViQ29y
ZTExSGlzdG9yeUl0ZW0xMWhhc0NoaWxkcmVuRXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAkocmV2aXNpb24gNzY2MjApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NDQsNyArNDQ0LDEyIEBACiAKICAgICBtX2ZyYW1lID0gZnJhbWU7
CiAKLSAgICBpZiAoZnJhbWUgfHwgIXVybC5pc0VtcHR5KCkpCisgICAgLy8gV2UgZGVwZW5kIG9u
IHRoZSB1cmwgZ2V0dGluZyBpbW1lZGlhdGVseSBzZXQgaW4gc3ViZnJhbWVzLCBidXQgd2UKKyAg
ICAvLyBhbHNvIGRlcGVuZCBvbiB0aGUgdXJsIE5PVCBnZXR0aW5nIGltbWVkaWF0ZWx5IHNldCBp
biBvcGVuZWQgd2luZG93cy4KKyAgICAvLyBTZWUgZmFzdC9kb20vZWFybHktZnJhbWUtdXJsLmh0
bWwKKyAgICAvLyBhbmQgZmFzdC9kb20vbG9jYXRpb24tbmV3LXdpbmRvdy1uby1jcmFzaC5odG1s
LCByZXNwZWN0aXZlbHkuCisgICAgLy8gRklYTUU6IENhbi9zaG91bGQgd2UgdW5pZnkgdGhpcyBi
ZWhhdmlvcj8KKyAgICBpZiAoKGZyYW1lICYmIGZyYW1lLT5vd25lckVsZW1lbnQoKSkgfHwgIXVy
bC5pc0VtcHR5KCkpCiAgICAgICAgIHNldFVSTCh1cmwpOwogCiAgICAgLy8gU2V0dGluZyBvZiBt
X2Jhc2VVUkwgbmVlZHMgdG8gaGFwcGVuIGFmdGVyIHRoZSBzZXRVUkwgY2FsbCwgc2luY2UgdGhh
dApAQCAtNDU2Nyw5ICs0NTcyLDggQEAKICAgICBpZiAoIWYpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIC8vIEZJWE1FOiBFbGltaW5hdGUgdGhpcyByZWR1bmRhbmN5LgogICAgIHNldFVSTCh1cmwp
OwotICAgIGYtPmxvYWRlcigpLT5zZXRVUkwodXJsKTsKKyAgICBmLT5sb2FkZXIoKS0+c2V0T3V0
Z29pbmdSZWZlcnJlcih1cmwpOwogICAgIGYtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5y
ZXBsYWNlUmVxdWVzdFVSTEZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24odXJsKTsKIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gNzY2OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzOCBAQAorMjAxMS0wMS0yNiAgTmF0ZSBDaGFwaW4g
IDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlbW92ZSBtX1VSTCBmcm9tIEZyYW1lTG9hZGVyIGFuZCBkZXBlbmQg
b24gRG9jdW1lbnQ6OnVybCgpCisgICAgICAgIGluc3RlYWQuIEZyYW1lTG9hZGVyOjp1cmwoKSB3
aWxsIGJlIHJlbW92ZWQgaW4gYSBmb2xsb3d1cCBwYXRjaC4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMTY1CisKKyAgICAgICAgUmVmYWN0b3Igb25s
eSwgbm8gbmV3IHRlc3RzLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICog
ZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlVVJMRm9yUHVzaE9yUmVwbGFjZVN0
YXRlKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRXcml0ZXI6OmJlZ2luKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6Omljb25VUkwpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZE9wZW5VUkwpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OmRpZEV4cGxpY2l0T3Blbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnVybCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2V0T3V0Z29pbmdSZWZlcnJl
cik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3RhcnRJY29uTG9hZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb21taXRJY29uVVJMVG9JY29uRGF0YWJhc2Up
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmZpbmlzaGVkUGFyc2luZyk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tJZkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNoZWNrSWZSdW5JbnNlY3VyZUNvbnRl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnVwZGF0ZUZpcnN0UGFydHlGb3JD
b29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkSW5TYW1lRG9jdW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9h
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6b3Blbik6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6c2hvdWxkU2Nyb2xsVG9BbmNob3IpOgorICAgICAgICAqIGxvYWRl
ci9GcmFtZUxvYWRlci5oOiBSZW5hbWUgc2V0VVJMKCkgdG8gc2V0T3V0Z29pbmdSZWZlcnJlcigp
LgorCiAyMDExLTAxLTI2ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNzY2MjApCisrKyBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzYsMTUgKzQ3NiwxNiBA
QAogICAgICAgICByZXR1cm4gS1VSTChQYXJzZWRVUkxTdHJpbmcsIG1fZnJhbWUtPmRvY3VtZW50
KCktPmljb25VUkwoKSk7CiAKICAgICAvLyBEb24ndCByZXR1cm4gYSBmYXZpY29uIGljb25VUkwg
dW5sZXNzIHdlJ3JlIGh0dHAgb3IgaHR0cHMKLSAgICBpZiAoIW1fVVJMLnByb3RvY29sSW5IVFRQ
RmFtaWx5KCkpCisgICAgS1VSTCBkb2N1bWVudFVSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVy
bCgpOworICAgIGlmICghZG9jdW1lbnRVUkwucHJvdG9jb2xJbkhUVFBGYW1pbHkoKSkKICAgICAg
ICAgcmV0dXJuIEtVUkwoKTsKIAogICAgIEtVUkwgdXJsOwotICAgIGJvb2wgY291bGRTZXRQcm90
b2NvbCA9IHVybC5zZXRQcm90b2NvbChtX1VSTC5wcm90b2NvbCgpKTsKKyAgICBib29sIGNvdWxk
U2V0UHJvdG9jb2wgPSB1cmwuc2V0UHJvdG9jb2woZG9jdW1lbnRVUkwucHJvdG9jb2woKSk7CiAg
ICAgQVNTRVJUX1VOVVNFRChjb3VsZFNldFByb3RvY29sLCBjb3VsZFNldFByb3RvY29sKTsKLSAg
ICB1cmwuc2V0SG9zdChtX1VSTC5ob3N0KCkpOwotICAgIGlmIChtX1VSTC5oYXNQb3J0KCkpCi0g
ICAgICAgIHVybC5zZXRQb3J0KG1fVVJMLnBvcnQoKSk7CisgICAgdXJsLnNldEhvc3QoZG9jdW1l
bnRVUkwuaG9zdCgpKTsKKyAgICBpZiAoZG9jdW1lbnRVUkwuaGFzUG9ydCgpKQorICAgICAgICB1
cmwuc2V0UG9ydChkb2N1bWVudFVSTC5wb3J0KCkpOwogICAgIHVybC5zZXRQYXRoKCIvZmF2aWNv
bi5pY28iKTsKICAgICByZXR1cm4gdXJsOwogfQpAQCAtNTEzLDEwICs1MTQsOSBAQAogICAgICAg
ICAgICAgd2luZG93LT5zZXREZWZhdWx0U3RhdHVzKFN0cmluZygpKTsKICAgICAgICAgfQogICAg
IH0KLSAgICBtX1VSTCA9IHVybDsKLSAgICBpZiAobV9VUkwucHJvdG9jb2xJbkhUVFBGYW1pbHko
KSAmJiAhbV9VUkwuaG9zdCgpLmlzRW1wdHkoKSAmJiBtX1VSTC5wYXRoKCkuaXNFbXB0eSgpKQot
ICAgICAgICBtX1VSTC5zZXRQYXRoKCIvIik7Ci0gICAgbV93b3JraW5nVVJMID0gbV9VUkw7Cisg
ICAgbV93b3JraW5nVVJMID0gdXJsOworICAgIGlmIChtX3dvcmtpbmdVUkwucHJvdG9jb2xJbkhU
VFBGYW1pbHkoKSAmJiAhbV93b3JraW5nVVJMLmhvc3QoKS5pc0VtcHR5KCkgJiYgbV93b3JraW5n
VVJMLnBhdGgoKS5pc0VtcHR5KCkpCisgICAgICAgIG1fd29ya2luZ1VSTC5zZXRQYXRoKCIvIik7
CiAKICAgICBzdGFydGVkKCk7CiAKQEAgLTUzNiw5ICs1MzYsNyBAQAogICAgIC8vIGZyb20gYSBz
dWJzZXF1ZW50IHdpbmRvdy5kb2N1bWVudC5vcGVuIC8gd2luZG93LmRvY3VtZW50LndyaXRlIGNh
bGwuIAogICAgIC8vIENhbmNlbGluZyByZWRpcmVjdGlvbiBoZXJlIHdvcmtzIGZvciBhbGwgY2Fz
ZXMgYmVjYXVzZSBkb2N1bWVudC5vcGVuIAogICAgIC8vIGltcGxpY2l0bHkgcHJlY2VkZXMgZG9j
dW1lbnQud3JpdGUuCi0gICAgbV9mcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLT5jYW5jZWwo
KTsgCi0gICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpICE9IGJsYW5rVVJMKCkpCi0g
ICAgICAgIG1fVVJMID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgbV9mcmFtZS0+
bmF2aWdhdGlvblNjaGVkdWxlcigpLT5jYW5jZWwoKTsKIH0KIAogCkBAIC02MzAsMjEgKzYyOCwy
NiBAQAogICAgICAgICByZXR1cm47CiAKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKLSAgICAgICAg
dXJsID0gbV9VUkwuc3RyaW5nKCk7CisgICAgICAgIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCkt
PnVybCgpLnN0cmluZygpOwogICAgIGVsc2UKICAgICAgICAgdXJsID0gbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+Y29tcGxldGVVUkwodXJsKS5zdHJpbmcoKTsKIAogICAgIG1fZnJhbWUtPm5hdmlnYXRp
b25TY2hlZHVsZXIoKS0+c2NoZWR1bGVSZWRpcmVjdChkZWxheSwgdXJsKTsKIH0KIAotdm9pZCBG
cmFtZUxvYWRlcjo6c2V0VVJMKGNvbnN0IEtVUkwmIHVybCkKK2NvbnN0IEtVUkwmIEZyYW1lTG9h
ZGVyOjp1cmwoKSBjb25zdAogeworICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKKyAg
ICByZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2Fk
ZXI6OnNldE91dGdvaW5nUmVmZXJyZXIoY29uc3QgS1VSTCYgdXJsKQorewogICAgIEtVUkwgcmVm
KHVybCk7CiAgICAgcmVmLnNldFVzZXIoU3RyaW5nKCkpOwogICAgIHJlZi5zZXRQYXNzKFN0cmlu
ZygpKTsKICAgICByZWYucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAgICAgbV9vdXRnb2lu
Z1JlZmVycmVyID0gcmVmLnN0cmluZygpOwotICAgIG1fVVJMID0gdXJsOwogfQogCiB2b2lkIEZy
YW1lTG9hZGVyOjpkaWRCZWdpbkRvY3VtZW50KGJvb2wgZGlzcGF0Y2gpCkBAIC03MjAsNyArNzIz
LDcgQEAKICAgICAgICAgICAgIGlmICghaWNvbkRhdGFiYXNlKCktPmljb25EYXRhS25vd25Gb3JJ
Y29uVVJMKHVybFN0cmluZykpIHsKICAgICAgICAgICAgICAgICBMT0coSWNvbkRhdGFiYXNlLCAi
VG9sZCBub3QgdG8gbG9hZCBpY29uICVzIGJ1dCBpY29uIGRhdGEgaXMgbm90IHlldCBhdmFpbGFi
bGUgLSByZWdpc3RlcmluZyBmb3Igbm90aWZpY2F0aW9uIGFuZCByZXF1ZXN0aW5nIGxvYWQgZnJv
bSBkaXNrIiwgdXJsU3RyaW5nLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgICAgICAgICBtX2Ns
aWVudC0+cmVnaXN0ZXJGb3JJY29uTm90aWZpY2F0aW9uKCk7Ci0gICAgICAgICAgICAgICAgaWNv
bkRhdGFiYXNlKCktPmljb25Gb3JQYWdlVVJMKG1fVVJMLnN0cmluZygpLCBJbnRTaXplKDAsIDAp
KTsKKyAgICAgICAgICAgICAgICBpY29uRGF0YWJhc2UoKS0+aWNvbkZvclBhZ2VVUkwobV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCksIEludFNpemUoMCwgMCkpOwogICAgICAgICAg
ICAgICAgIGljb25EYXRhYmFzZSgpLT5pY29uRm9yUGFnZVVSTChvcmlnaW5hbFJlcXVlc3RVUkwo
KS5zdHJpbmcoKSwgSW50U2l6ZSgwLCAwKSk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwpAQCAtNzU3LDggKzc2
MCw4IEBACiB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRJY29uVVJMVG9JY29uRGF0YWJhc2UoY29u
c3QgS1VSTCYgaWNvbikKIHsKICAgICBBU1NFUlQoaWNvbkRhdGFiYXNlKCkpOwotICAgIExPRyhJ
Y29uRGF0YWJhc2UsICJDb21taXR0aW5nIGljb25VUkwgJXMgdG8gZGF0YWJhc2UgZm9yIHBhZ2VV
UkxzICVzIGFuZCAlcyIsIGljb24uc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1fVVJMLnN0cmlu
ZygpLmFzY2lpKCkuZGF0YSgpLCBvcmlnaW5hbFJlcXVlc3RVUkwoKS5zdHJpbmcoKS5hc2NpaSgp
LmRhdGEoKSk7Ci0gICAgaWNvbkRhdGFiYXNlKCktPnNldEljb25VUkxGb3JQYWdlVVJMKGljb24u
c3RyaW5nKCksIG1fVVJMLnN0cmluZygpKTsKKyAgICBMT0coSWNvbkRhdGFiYXNlLCAiQ29tbWl0
dGluZyBpY29uVVJMICVzIHRvIGRhdGFiYXNlIGZvciBwYWdlVVJMcyAlcyBhbmQgJXMiLCBpY29u
LnN0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJp
bmcoKS5hc2NpaSgpLmRhdGEoKSwgb3JpZ2luYWxSZXF1ZXN0VVJMKCkuc3RyaW5nKCkuYXNjaWko
KS5kYXRhKCkpOworICAgIGljb25EYXRhYmFzZSgpLT5zZXRJY29uVVJMRm9yUGFnZVVSTChpY29u
LnN0cmluZygpLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSk7CiAgICAgaWNv
bkRhdGFiYXNlKCktPnNldEljb25VUkxGb3JQYWdlVVJMKGljb24uc3RyaW5nKCksIG9yaWdpbmFs
UmVxdWVzdFVSTCgpLnN0cmluZygpKTsKIH0KIApAQCAtNzg0LDcgKzc4Nyw3IEBACiAgICAgLy8g
Q2hlY2sgaWYgdGhlIHNjcm9sbGJhcnMgYXJlIHJlYWxseSBuZWVkZWQgZm9yIHRoZSBjb250ZW50
LgogICAgIC8vIElmIG5vdCwgcmVtb3ZlIHRoZW0sIHJlbGF5b3V0LCBhbmQgcmVwYWludC4KICAg
ICBtX2ZyYW1lLT52aWV3KCktPnJlc3RvcmVTY3JvbGxiYXIoKTsKLSAgICBtX2ZyYW1lLT52aWV3
KCktPnNjcm9sbFRvRnJhZ21lbnQobV9VUkwpOworICAgIG1fZnJhbWUtPnZpZXcoKS0+c2Nyb2xs
VG9GcmFnbWVudChtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSk7CiB9CiAKIHZvaWQgRnJhbWVM
b2FkZXI6OmxvYWREb25lKCkKQEAgLTEwMjMsNyArMTAyNiw3IEBACiAgICAgaWYgKCFpc01peGVk
Q29udGVudChjb250ZXh0LCB1cmwpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgbWVz
c2FnZSA9IG1ha2VTdHJpbmcoIlRoZSBwYWdlIGF0ICIsIG1fVVJMLnN0cmluZygpLCAiIGRpc3Bs
YXllZCBpbnNlY3VyZSBjb250ZW50IGZyb20gIiwgdXJsLnN0cmluZygpLCAiLlxuIik7CisgICAg
U3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgcGFnZSBhdCAiLCBtX2ZyYW1lLT5kb2N1
bWVudCgpLT51cmwoKS5zdHJpbmcoKSwgIiBkaXNwbGF5ZWQgaW5zZWN1cmUgY29udGVudCBmcm9t
ICIsIHVybC5zdHJpbmcoKSwgIi5cbiIpOwogICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25z
b2xlKCktPmFkZE1lc3NhZ2UoSFRNTE1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBXYXJu
aW5nTWVzc2FnZUxldmVsLCBtZXNzYWdlLCAxLCBTdHJpbmcoKSk7CiAKICAgICBtX2NsaWVudC0+
ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpOwpAQCAtMTAzNCw3ICsxMDM3LDcgQEAKICAgICBp
ZiAoIWlzTWl4ZWRDb250ZW50KGNvbnRleHQsIHVybCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiVGhlIHBhZ2UgYXQgIiwgbV9VUkwuc3RyaW5n
KCksICIgcmFuIGluc2VjdXJlIGNvbnRlbnQgZnJvbSAiLCB1cmwuc3RyaW5nKCksICIuXG4iKTsK
KyAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoIlRoZSBwYWdlIGF0ICIsIG1fZnJhbWUt
PmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpLCAiIHJhbiBpbnNlY3VyZSBjb250ZW50IGZyb20g
IiwgdXJsLnN0cmluZygpLCAiLlxuIik7CiAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNv
bGUoKS0+YWRkTWVzc2FnZShIVE1MTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIFdhcm5p
bmdNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDEsIFN0cmluZygpKTsKIAogICAgIG1fY2xpZW50LT5k
aWRSdW5JbnNlY3VyZUNvbnRlbnQoY29udGV4dCk7CkBAIC0xMTExLDcgKzExMTQsNyBAQAogICAg
IGlmIChtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgpKQogICAgICAgICBzZXRGaXJzdFBhcnR5Rm9y
Q29va2llcyhtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgpLT5kb2N1bWVudCgpLT5maXJzdFBhcnR5
Rm9yQ29va2llcygpKTsKICAgICBlbHNlCi0gICAgICAgIHNldEZpcnN0UGFydHlGb3JDb29raWVz
KG1fVVJMKTsKKyAgICAgICAgc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMobV9mcmFtZS0+ZG9jdW1l
bnQoKS0+dXJsKCkpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpzZXRGaXJzdFBhcnR5Rm9yQ29v
a2llcyhjb25zdCBLVVJMJiB1cmwpCkBAIC0xMTI5LDYgKzExMzIsNyBAQAogICAgIEFTU0VSVCgh
c3RhdGVPYmplY3QgfHwgKHN0YXRlT2JqZWN0ICYmICFpc05ld05hdmlnYXRpb24pKTsKIAogICAg
IC8vIFVwZGF0ZSB0aGUgZGF0YSBzb3VyY2UncyByZXF1ZXN0IHdpdGggdGhlIG5ldyBVUkwgdG8g
ZmFrZSB0aGUgVVJMIGNoYW5nZQorICAgIEtVUkwgb2xkVVJMID0gbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+dXJsKCk7CiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0VVJMKHVybCk7CiAgICAgZG9j
dW1lbnRMb2FkZXIoKS0+cmVwbGFjZVJlcXVlc3RVUkxGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
KHVybCk7CiAgICAgaWYgKGlzTmV3TmF2aWdhdGlvbiAmJiAhc2hvdWxkVHJlYXRVUkxBc1NhbWVB
c0N1cnJlbnQodXJsKSAmJiAhc3RhdGVPYmplY3QpIHsKQEAgLTExNDYsMTEgKzExNTAsOCBAQAog
ICAgICAgICBoaXN0b3J5KCktPnVwZGF0ZUJhY2tGb3J3YXJkTGlzdEZvckZyYWdtZW50U2Nyb2xs
KCk7CiAgICAgfQogICAgIAotICAgIFN0cmluZyBvbGRVUkw7Ci0gICAgYm9vbCBoYXNoQ2hhbmdl
ID0gZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcih1cmwsIG1fVVJMKSAmJiB1cmwuZnJh
Z21lbnRJZGVudGlmaWVyKCkgIT0gbV9VUkwuZnJhZ21lbnRJZGVudGlmaWVyKCk7Ci0gICAgb2xk
VVJMID0gbV9VUkw7CisgICAgYm9vbCBoYXNoQ2hhbmdlID0gZXF1YWxJZ25vcmluZ0ZyYWdtZW50
SWRlbnRpZmllcih1cmwsIG9sZFVSTCkgJiYgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpICE9IG9s
ZFVSTC5mcmFnbWVudElkZW50aWZpZXIoKTsKICAgICAKLSAgICBtX1VSTCA9IHVybDsKICAgICBo
aXN0b3J5KCktPnVwZGF0ZUZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24oKTsKIAogICAgIC8vIElm
IHdlIHdlcmUgaW4gdGhlIGF1dG9zY3JvbGwvcGFuU2Nyb2xsIG1vZGUgd2Ugd2FudCB0byBzdG9w
IGl0IGJlZm9yZSBmb2xsb3dpbmcgdGhlIGxpbmsgdG8gdGhlIGFuY2hvcgpAQCAtMTE2NCw3ICsx
MTY1LDcgQEAKICAgICAvLyBXZSBuZWVkIHRvIHNjcm9sbCB0byB0aGUgZnJhZ21lbnQgd2hldGhl
ciBvciBub3QgYSBoYXNoIGNoYW5nZSBvY2N1cnJlZCwgc2luY2UKICAgICAvLyB0aGUgdXNlciBt
aWdodCBoYXZlIHNjcm9sbGVkIHNpbmNlIHRoZSBwcmV2aW91cyBuYXZpZ2F0aW9uLgogICAgIGlm
IChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLT52aWV3KCkpCi0gICAgICAgIHZpZXctPnNjcm9s
bFRvRnJhZ21lbnQobV9VUkwpOworICAgICAgICB2aWV3LT5zY3JvbGxUb0ZyYWdtZW50KHVybCk7
CiAgICAgCiAgICAgbV9pc0NvbXBsZXRlID0gZmFsc2U7CiAgICAgY2hlY2tDb21wbGV0ZWQoKTsK
QEAgLTE4NDksNyArMTg1MCw4IEBACiAgICAgUmVmUHRyPENhY2hlZFBhZ2U+IGNhY2hlZFBhZ2Ug
PSBtX2xvYWRpbmdGcm9tQ2FjaGVkUGFnZSA/IHBhZ2VDYWNoZSgpLT5nZXQoaGlzdG9yeSgpLT5w
cm92aXNpb25hbEl0ZW0oKSkgOiAwOwogICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gcGRsID0g
bV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyOwogCi0gICAgTE9HKFBhZ2VDYWNoZSwgIldlYkNv
cmVMb2FkaW5nICVzOiBBYm91dCB0byBjb21taXQgcHJvdmlzaW9uYWwgbG9hZCBmcm9tIHByZXZp
b3VzIFVSTCAnJXMnIHRvIG5ldyBVUkwgJyVzJyIsIG1fZnJhbWUtPnRyZWUoKS0+dW5pcXVlTmFt
ZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1fVVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCks
IAorICAgIExPRyhQYWdlQ2FjaGUsICJXZWJDb3JlTG9hZGluZyAlczogQWJvdXQgdG8gY29tbWl0
IHByb3Zpc2lvbmFsIGxvYWQgZnJvbSBwcmV2aW91cyBVUkwgJyVzJyB0byBuZXcgVVJMICclcyci
LCBtX2ZyYW1lLT50cmVlKCktPnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAor
ICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpID8gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCku
c3RyaW5nKCkudXRmOCgpLmRhdGEoKSA6ICIiLCAKICAgICAgICAgcGRsID8gcGRsLT51cmwoKS5z
dHJpbmcoKS51dGY4KCkuZGF0YSgpIDogIjxubyBwcm92aXNpb25hbCBEb2N1bWVudExvYWRlcj4i
KTsKIAogICAgIC8vIENoZWNrIHRvIHNlZSBpZiB3ZSBuZWVkIHRvIGNhY2hlIHRoZSBwYWdlIHdl
IGFyZSBuYXZpZ2F0aW5nIGF3YXkgZnJvbSBpbnRvIHRoZSBiYWNrL2ZvcndhcmQgY2FjaGUuCkBA
IC0xOTAzLDcgKzE5MDUsOCBAQAogICAgICAgICBkaWRPcGVuVVJMKHVybCk7CiAgICAgfQogCi0g
ICAgTE9HKExvYWRpbmcsICJXZWJDb3JlTG9hZGluZyAlczogRmluaXNoZWQgY29tbWl0dGluZyBw
cm92aXNpb25hbCBsb2FkIHRvIFVSTCAlcyIsIG1fZnJhbWUtPnRyZWUoKS0+dW5pcXVlTmFtZSgp
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1fVVJMLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgIExPRyhMb2FkaW5nLCAiV2ViQ29yZUxvYWRpbmcgJXM6IEZpbmlzaGVkIGNvbW1pdHRpbmcg
cHJvdmlzaW9uYWwgbG9hZCB0byBVUkwgJXMiLCBtX2ZyYW1lLT50cmVlKCktPnVuaXF1ZU5hbWUo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAorICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpID8g
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSA6ICIiKTsK
IAogICAgIGlmIChtX2xvYWRUeXBlID09IEZyYW1lTG9hZFR5cGVTdGFuZGFyZCAmJiBtX2RvY3Vt
ZW50TG9hZGVyLT5pc0NsaWVudFJlZGlyZWN0KCkpCiAgICAgICAgIGhpc3RvcnkoKS0+dXBkYXRl
Rm9yQ2xpZW50UmVkaXJlY3QoKTsKQEAgLTIxMzYsNyArMjEzOSw2IEBACiAgICAgaWYgKHVybC5w
cm90b2NvbEluSFRUUEZhbWlseSgpICYmICF1cmwuaG9zdCgpLmlzRW1wdHkoKSAmJiB1cmwucGF0
aCgpLmlzRW1wdHkoKSkKICAgICAgICAgdXJsLnNldFBhdGgoIi8iKTsKICAgICAKLSAgICBtX1VS
TCA9IHVybDsKICAgICBtX3dvcmtpbmdVUkwgPSB1cmw7CiAKICAgICBzdGFydGVkKCk7CkBAIC0y
ODYyLDcgKzI4NjQsNyBAQAogICAgICAgICAmJiBsb2FkVHlwZSAhPSBGcmFtZUxvYWRUeXBlUmVs
b2FkCiAgICAgICAgICYmIGxvYWRUeXBlICE9IEZyYW1lTG9hZFR5cGVSZWxvYWRGcm9tT3JpZ2lu
CiAgICAgICAgICYmIGxvYWRUeXBlICE9IEZyYW1lTG9hZFR5cGVTYW1lCi0gICAgICAgICYmICFz
aG91bGRSZWxvYWQodGhpcy0+dXJsKCksIHVybCkKKyAgICAgICAgJiYgIXNob3VsZFJlbG9hZCht
X2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgdXJsKQogICAgICAgICAvLyBXZSBkb24ndCB3YW50
IHRvIGp1c3Qgc2Nyb2xsIGlmIGEgbGluayBmcm9tIHdpdGhpbiBhCiAgICAgICAgIC8vIGZyYW1l
c2V0IGlzIHRyeWluZyB0byByZWxvYWQgdGhlIGZyYW1lc2V0IGludG8gX3RvcC4KICAgICAgICAg
JiYgIW1fZnJhbWUtPmRvY3VtZW50KCktPmlzRnJhbWVTZXQoKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAkocmV2aXNpb24gNzY2MjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYs
NyArMTI2LDcgQEAKICAgICBpZiAocmVzZXRTY3JpcHRpbmcpCiAgICAgICAgIG1fZnJhbWUtPnNj
cmlwdCgpLT51cGRhdGVQbGF0Zm9ybVNjcmlwdE9iamVjdHMoKTsKIAotICAgIG1fZnJhbWUtPmxv
YWRlcigpLT5zZXRVUkwodXJsKTsKKyAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+c2V0T3V0Z29pbmdS
ZWZlcnJlcih1cmwpOwogICAgIG1fZnJhbWUtPnNldERvY3VtZW50KGRvY3VtZW50KTsKIAogICAg
IGlmIChtX2RlY29kZXIpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2
aXNpb24gNzY2MjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMjY3LDExICsyNjcsOSBAQAogCiAgICAgdm9pZCBmcmFtZURldGFjaGVk
KCk7CiAKLSAgICBjb25zdCBLVVJMJiB1cmwoKSBjb25zdCB7IHJldHVybiBtX1VSTDsgfQorICAg
IGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0OworICAgIHZvaWQgc2V0T3V0Z29pbmdSZWZlcnJlcihj
b25zdCBLVVJMJik7CiAKLSAgICAvLyBzZXRVUkwgaXMgYSBsb3ctbGV2ZWwgc2V0dGVyIGFuZCBk
b2VzIG5vdCB0cmlnZ2VyIGxvYWRpbmcuCi0gICAgdm9pZCBzZXRVUkwoY29uc3QgS1VSTCYpOwot
CiAgICAgdm9pZCBsb2FkRG9uZSgpOwogICAgIHZvaWQgZmluaXNoZWRQYXJzaW5nKCk7CiAgICAg
dm9pZCBjaGVja0NvbXBsZXRlZCgpOwpAQCAtNDY4LDcgKzQ2Niw2IEBACiAKICAgICBSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX3BlbmRpbmdTdGF0ZU9iamVjdDsKIAotICAgIEtVUkwg
bV9VUkw7CiAgICAgS1VSTCBtX3dvcmtpbmdVUkw7CiAKICAgICBPd25QdHI8SWNvbkxvYWRlcj4g
bV9pY29uTG9hZGVyOwo=
</data>
<flag name="review"
          id="71668"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80231</attachid>
            <date>2011-01-26 13:52:27 -0800</date>
            <delta_ts>2011-01-26 15:07:08 -0800</delta_ts>
            <desc>Remove FrameLoader:url()</desc>
            <filename>flurl.txt</filename>
            <type>text/plain</type>
            <size>30605</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NjcxMykKKysrIFNvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDEtMjYgIE5h
dGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgRG9jdW1lbnQ6OnVybCgpIGluc3RlYWQgb2Yg
RnJhbWVMb2FkZXI6OnVybCgpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDExNjUKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAg
ICAoUVdlYkZyYW1lOjp1cmwpOgorCiAyMDExLTAxLTI0ICBDaHJpcyBNYXJyaW4gIDxjbWFycmlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAkocmV2aXNpb24gNzY3MDEpCisrKyBTb3VyY2UvV2Vi
S2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NTcsNyArNzU3LDcg
QEAKIAogUVVybCBRV2ViRnJhbWU6OnVybCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGQtPmZyYW1l
LT5sb2FkZXIoKS0+dXJsKCk7CisgICAgcmV0dXJuIGQtPmZyYW1lLT5kb2N1bWVudCgpLT51cmwo
KTsKIH0KIAogLyohCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZp
ZXcuY3BwCShyZXZpc2lvbiA3NjcwMSkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA1MSw3ICs1MDUxLDcgQEAKIEdfQ09O
U1RfUkVUVVJOIGdjaGFyKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2ljb25fdXJpKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcpCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9W
SUVXKHdlYlZpZXcpLCAwKTsKLSAgICBTdHJpbmcgaWNvblVSTCA9IGljb25EYXRhYmFzZSgpLT5p
Y29uVVJMRm9yUGFnZVVSTChjb3JlKHdlYlZpZXcpLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPnVy
bCgpLnByZXR0eVVSTCgpKTsKKyAgICBTdHJpbmcgaWNvblVSTCA9IGljb25EYXRhYmFzZSgpLT5p
Y29uVVJMRm9yUGFnZVVSTChjb3JlKHdlYlZpZXcpLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+
dXJsKCkucHJldHR5VVJMKCkpOwogICAgIHdlYlZpZXctPnByaXYtPmljb25VUkkgPSBpY29uVVJM
LnV0ZjgoKTsKICAgICByZXR1cm4gd2ViVmlldy0+cHJpdi0+aWNvblVSSS5kYXRhKCk7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NjcxMykKKysrIFNvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTAxLTI2ICBO
YXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIERvY3VtZW50Ojp1cmwoKSBpbnN0ZWFkIG9m
IEZyYW1lTG9hZGVyOjp1cmwoKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQxMTY1CisKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2ljb25fdXJpKToKKwogMjAxMS0wMS0yMSAg
Q2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24g
NzY3MTMpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxMyBAQAorMjAxMS0wMS0yNiAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVz
ZSBEb2N1bWVudDo6dXJsKCkgaW5zdGVhZCBvZiBGcmFtZUxvYWRlcjo6dXJsKCkuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTE2NQorCisgICAgICAg
ICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OnVybCk6CisKIDIwMTEtMDEtMjUg
IFN0ZXZlIEZhbGtlbmJ1cmcgIDxzZmFsa2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBXaW5kb3dz
IHByb2R1Y3Rpb24gYnVpbGQgZml4LgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkocmV2aXNp
b24gNzY3MDEpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcwMyw3ICs3MDMsNyBAQAogICAgIGlmICghY29yZUZyYW1lKQogICAgICAgICByZXR1
cm4gS1VSTCgpOwogCi0gICAgcmV0dXJuIGNvcmVGcmFtZS0+bG9hZGVyKCktPnVybCgpOworICAg
IHJldHVybiBjb3JlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogfQogCiBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIFdlYkZyYW1lOjpzdG9wTG9hZGluZyggdm9pZCkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5j
cHAJKHJldmlzaW9uIDc2NzAxKQorKysgU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50V3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjAsNyArMzIwLDcgQEAK
ICAgICBpZiAobV93ZWJWaWV3KSB7CiAgICAgICAgIHd4V2ViVmlld0xvYWRFdmVudCB3a0V2ZW50
KG1fd2ViVmlldyk7CiAgICAgICAgIHdrRXZlbnQuU2V0U3RhdGUod3hXRUJWSUVXX0xPQURfRE9D
X0NPTVBMRVRFRCk7Ci0gICAgICAgIHdrRXZlbnQuU2V0VVJMKG1fZnJhbWUtPmxvYWRlcigpLT51
cmwoKS5zdHJpbmcoKSk7CisgICAgICAgIHdrRXZlbnQuU2V0VVJMKG1fZnJhbWUtPmRvY3VtZW50
KCktPnVybCgpLnN0cmluZygpKTsKICAgICAgICAgbV93ZWJWaWV3LT5HZXRFdmVudEhhbmRsZXIo
KS0+UHJvY2Vzc0V2ZW50KHdrRXZlbnQpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
d3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA3NjcxMykKKysrIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDEtMjYgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVc2UgRG9jdW1lbnQ6OnVybCgpIGluc3RlYWQgb2YgRnJhbWVMb2FkZXI6OnVybCgpLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDExNjUKKwor
ICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4OjpkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50
TG9hZCk6CisKIDIwMTEtMDEtMTQgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZwkocmV2aXNpb24gNzY3MTMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMS0yNiAgTmF0ZSBDaGFwaW4gIDxqYXBo
ZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFVzZSBEb2N1bWVudDo6dXJsKCkgaW5zdGVhZCBvZiBGcmFtZUxvYWRlcjo6dXJs
KCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTE2
NQorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9k
aXNwYXRjaERpZFJlY2VpdmVJY29uRnJvbVdlYkZyYW1lOl0pOgorCiAyMDExLTAxLTI1ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMg
Q2FybHNzb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lv
biA3NjcwMSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNTgzNCw3ICs1ODM0LDcgQEAKIAogICAgIFdlYkZyYW1lTG9hZERlbGVnYXRl
SW1wbGVtZW50YXRpb25DYWNoZSogY2FjaGUgPSAmX3ByaXZhdGUtPmZyYW1lTG9hZERlbGVnYXRl
SW1wbGVtZW50YXRpb25zOwogICAgIGlmIChjYWNoZS0+ZGlkUmVjZWl2ZUljb25Gb3JGcmFtZUZ1
bmMpIHsKLSAgICAgICAgSW1hZ2UqIGltYWdlID0gaWNvbkRhdGFiYXNlKCktPmljb25Gb3JQYWdl
VVJMKGNvcmUod2ViRnJhbWUpLT5sb2FkZXIoKS0+dXJsKCkuc3RyaW5nKCksIEludFNpemUoMTYs
IDE2KSk7CisgICAgICAgIEltYWdlKiBpbWFnZSA9IGljb25EYXRhYmFzZSgpLT5pY29uRm9yUGFn
ZVVSTChjb3JlKHdlYkZyYW1lKS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCksIEludFNpemUo
MTYsIDE2KSk7CiAgICAgICAgIGlmIChOU0ltYWdlICppY29uID0gd2ViR2V0TlNJbWFnZShpbWFn
ZSwgTlNNYWtlU2l6ZSgxNiwgMTYpKSkKICAgICAgICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0
ZShjYWNoZS0+ZGlkUmVjZWl2ZUljb25Gb3JGcmFtZUZ1bmMsIHNlbGYsIEBzZWxlY3Rvcih3ZWJW
aWV3OmRpZFJlY2VpdmVJY29uOmZvckZyYW1lOiksIGljb24sIHdlYkZyYW1lKTsKICAgICB9Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
SGFpa3UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHAJKHJldmlzaW9uIDc2NzAxKQorKysgU291cmNl
L1dlYktpdC9oYWlrdS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYxLDcgKzI2MSw3IEBACiB7CiAgICAgaWYgKG1fd2ViVmlldykg
ewogICAgICAgICBCTWVzc2FnZSBtZXNzYWdlKExPQURfRE9DX0NPTVBMRVRFRCk7Ci0gICAgICAg
IG1lc3NhZ2UuQWRkU3RyaW5nKCJ1cmwiLCBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkuc3RyaW5n
KCkpOworICAgICAgICBtZXNzYWdlLkFkZFN0cmluZygidXJsIiwgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+dXJsKCkuc3RyaW5nKCkpOwogICAgICAgICBtX21lc3Nlbmdlci0+U2VuZE1lc3NhZ2UoJm1l
c3NhZ2UpOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCShyZXZpc2lvbiA3Njcx
MykKKysrIFNvdXJjZS9XZWJLaXQvaGFpa3UvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTEtMDEtMjYgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2Ug
RG9jdW1lbnQ6OnVybCgpIGluc3RlYWQgb2YgRnJhbWVMb2FkZXI6OnVybCgpLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDExNjUKKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFpa3UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXJDbGllbnRIYWlrdTo6ZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExv
YWQpOgorCiAyMDEwLTEyLTIyICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Zy
YW1lLmNwcAkocmV2aXNpb24gNzY3MDEpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2Zy
YW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAwOCw3ICsyMDA4LDcgQEAKIHsKICAgICBFV0tf
RlJBTUVfU0RfR0VUX09SX1JFVFVSTihvLCBzZCwgRUlOQV9GQUxTRSk7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHNkLT5mcmFtZSwgRUlOQV9GQUxTRSk7Ci0gICAgV1RGOjpD
U3RyaW5nIHVyaShzZC0+ZnJhbWUtPmxvYWRlcigpLT51cmwoKS5wcmV0dHlVUkwoKS51dGY4KCkp
OworICAgIFdURjo6Q1N0cmluZyB1cmkoc2QtPmZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5wcmV0
dHlVUkwoKS51dGY4KCkpOwogCiAgICAgSU5GKCJ1cmk9JXMiLCB1cmkuZGF0YSgpKTsKICAgICBp
ZiAoIXVyaS5kYXRhKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2NzEzKQor
KysgU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTEtMDEtMjYgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgRG9jdW1l
bnQ6OnVybCgpIGluc3RlYWQgb2YgRnJhbWVMb2FkZXI6OnVybCgpLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDExNjUKKworICAgICAgICAqIGV3ay9l
d2tfZnJhbWUuY3BwOgorICAgICAgICAoZXdrX2ZyYW1lX3VyaV9jaGFuZ2VkKToKKwogMjAxMS0w
MS0xNCAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLiBUcnkgdG8gZml4IEVGTCBidWlsZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CShyZXZpc2lvbiA3NjcwMikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC05NzEsNyArOTcxLDYgQEAKIF9fWk5LN1dlYkNvcmUxMUZyYW1lTG9hZGVy
MTduZXR3b3JraW5nQ29udGV4dEV2CiBfX1pOSzdXZWJDb3JlMTFGcmFtZUxvYWRlcjIwYWN0aXZl
RG9jdW1lbnRMb2FkZXJFdgogX19aTks3V2ViQ29yZTExRnJhbWVMb2FkZXIyN251bVBlbmRpbmdP
ckxvYWRpbmdSZXF1ZXN0c0ViCi1fX1pOSzdXZWJDb3JlMTFGcmFtZUxvYWRlcjN1cmxFdgogX19a
Tks3V2ViQ29yZTExRnJhbWVMb2FkZXI4bG9hZFR5cGVFdgogX19aTks3V2ViQ29yZTExSGlzdG9y
eUl0ZW0xMHZpc2l0Q291bnRFdgogX19aTks3V2ViQ29yZTExSGlzdG9yeUl0ZW0xMWhhc0NoaWxk
cmVuRXYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gNzY3MDIpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjQ2LDcg
KzI2NDYsNyBAQAogICAgICAgICBTdHJpbmcgdXJsOwogICAgICAgICBpZiAoZnJhbWUgJiYgcGFy
c2VIVFRQUmVmcmVzaChjb250ZW50LCB0cnVlLCBkZWxheSwgdXJsKSkgewogICAgICAgICAgICAg
aWYgKHVybC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgdXJsID0gZnJhbWUtPmxvYWRlcigp
LT51cmwoKS5zdHJpbmcoKTsKKyAgICAgICAgICAgICAgICB1cmwgPSBtX3VybC5zdHJpbmcoKTsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB1cmwgPSBjb21wbGV0ZVVSTCh1cmwp
LnN0cmluZygpOwogICAgICAgICAgICAgZnJhbWUtPm5hdmlnYXRpb25TY2hlZHVsZXIoKS0+c2No
ZWR1bGVSZWRpcmVjdChkZWxheSwgdXJsKTsKQEAgLTI5MjcsNyArMjkyNyw3IEBACiAgICAgICAg
IHBhcnNlci0+ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKTsKIAogICAgIGlm
IChtX2dvdG9BbmNob3JOZWVkZWRBZnRlclN0eWxlc2hlZXRzTG9hZCAmJiB2aWV3KCkpCi0gICAg
ICAgIHZpZXcoKS0+c2Nyb2xsVG9GcmFnbWVudChtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkpOwor
ICAgICAgICB2aWV3KCktPnNjcm9sbFRvRnJhZ21lbnQobV91cmwpOwogfQogCiB2b2lkIERvY3Vt
ZW50OjpzdHlsZVNlbGVjdG9yQ2hhbmdlZChTdHlsZVNlbGVjdG9yVXBkYXRlRmxhZyB1cGRhdGVG
bGFnKQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNzY3MTMpCisrKyBTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1OCBAQAorMjAxMS0wMS0yNiAgTmF0
ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBGcmFtZUxvYWRlcjo6dXJsKCkgYW5kIHVw
ZGF0ZSBjYWxsZXJzIHRvIHVzZQorICAgICAgICBEb2N1bWVudDo6dXJsKCkuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTE2NQorCisgICAgICAgIFJl
ZmFjdG9yLCBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAg
ICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnByb2Nl
c3NIdHRwRXF1aXYpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlbW92ZVBlbmRpbmdT
aGVldCk6CisgICAgICAgICogaGlzdG9yeS9DYWNoZWRGcmFtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRGcmFtZUJhc2U6OkNhY2hlZEZyYW1lQmFzZSk6CisgICAgICAgICogaGlzdG9y
eS9QYWdlQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9nQ2FuQ2FjaGVGcmFtZURlY2lz
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VDYWNoZTo6Y2FuQ2FjaGVQYWdlQ29udGFpbmlu
Z1RoaXNGcmFtZSk6CisgICAgICAgICogaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVFbGVtZW50QmFzZTo6aXNVUkxBbGxvd2VkKToKKyAg
ICAgICAgKiBodG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6YWxsb3dlZFRvTG9hZEZyYW1lVVJMKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQWdlbnQ6Omluc3BlY3RlZFVSTCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JGcmFt
ZSk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50V3JpdGVyOjpyZXBsYWNlRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnRXcml0ZXI6OmRlcHJlY2F0ZWRGcmFtZUVuY29kaW5nKToKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAg
ICAgICAqIGxvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
aXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU3RhbmRhcmRMb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9y
d2FyZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZv
clNhbWVEb2N1bWVudE5hdmlnYXRpb24pOgorICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2No
ZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEhpc3RvcnlOYXZpZ2F0aW9u
OjpmaXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxl
TG9jYXRpb25DaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6
c2NoZWR1bGVSZWZyZXNoKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZUNvbnRyb2xUaW50cyk6CisgICAgICAgICogcGFn
ZS9Mb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6dXJsKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQcm90b2NvbCk6CisgICAgICAgIChXZWJDb3JlOjpM
b2NhdGlvbjo6c2V0SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2V0SG9zdG5h
bWUpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldFBvcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6TG9jYXRpb246OnNldFBhdGhuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9u
OjpzZXRTZWFyY2gpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldEhhc2gpOgorICAg
ICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnJlbG9hZCk6CisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmdvVG9JdGVtKToKKwogMjAxMS0wMS0yNiAgVG9u
eSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCShyZXZpc2lvbiA3NjcwMSkKKysrIFNv
dXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEx
LDcgKzExMSw3IEBACiAgICAgICAgICAgICBQQ0xPRygiICAgLUZyYW1lIGNvbnRhaW5zIHBsdWdp
bnMiKTsKICAgICAgICAgICAgIGNhbm5vdENhY2hlID0gdHJ1ZTsKICAgICAgICAgfQotICAgICAg
ICBpZiAoZnJhbWUtPmxvYWRlcigpLT51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpKSB7CisgICAg
ICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSkgewog
ICAgICAgICAgICAgUENMT0coIiAgIC1GcmFtZSBpcyBIVFRQUyIpOwogICAgICAgICAgICAgY2Fu
bm90Q2FjaGUgPSB0cnVlOwogICAgICAgICB9CkBAIC0yNjAsNyArMjYwLDcgQEAKICAgICAgICAg
Ly8gdGhleSB3b3VsZCBuZWVkIHRvIGJlIGRlc3Ryb3llZCBhbmQgdGhlbiByZWNyZWF0ZWQsIGFu
ZCB0aGVyZSBpcyBubyB3YXkgdGhhdCB3ZSBjYW4gcmVjcmVhdGUKICAgICAgICAgLy8gdGhlIHJp
Z2h0IE5QT2JqZWN0cy4gU2VlIDxyZGFyOi8vcHJvYmxlbS81MTk3MDQxPiBmb3IgbW9yZSBpbmZv
cm1hdGlvbi4KICAgICAgICAgJiYgIWZyYW1lLT5sb2FkZXIoKS0+c3ViZnJhbWVMb2FkZXIoKS0+
Y29udGFpbnNQbHVnaW5zKCkKLSAgICAgICAgJiYgIWZyYW1lLT5sb2FkZXIoKS0+dXJsKCkucHJv
dG9jb2xJcygiaHR0cHMiKQorICAgICAgICAmJiAhZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnBy
b3RvY29sSXMoImh0dHBzIikKICAgICAgICAgJiYgKCFmcmFtZS0+ZG9tV2luZG93KCkgfHwgIWZy
YW1lLT5kb21XaW5kb3coKS0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnVubG9hZEV2
ZW50KSkKICNpZiBFTkFCTEUoREFUQUJBU0UpCiAgICAgICAgICYmICFmcmFtZS0+ZG9jdW1lbnQo
KS0+aGFzT3BlbkRhdGFiYXNlcygpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hl
ZEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZy
YW1lLmNwcAkocmV2aXNpb24gNzY3MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hl
ZEZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjUsNyArNjUsNyBAQAogICAgICwgbV9kb2N1
bWVudExvYWRlcihmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkpCiAgICAgLCBtX3Zp
ZXcoZnJhbWUtPnZpZXcoKSkKICAgICAsIG1fbW91c2VQcmVzc05vZGUoZnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5tb3VzZVByZXNzTm9kZSgpKQotICAgICwgbV91cmwoZnJhbWUtPmxvYWRlcigpLT51
cmwoKSkKKyAgICAsIG1fdXJsKGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSkKICAgICAsIG1faXNN
YWluRnJhbWUoIWZyYW1lLT50cmVlKCktPnBhcmVudCgpKQogewogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gNzY3MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwOTMsNyArMjA5Myw3IEBACiAgICAg
Ly8gdG8gZGVmaW5lIHdoZW4gY29udHJvbHMgZ2V0IHRoZSB0aW50IGFuZCB0byBjYWxsIHRoaXMg
ZnVuY3Rpb24gd2hlbiB0aGF0IGNoYW5nZXMuCiAgICAgCiAgICAgLy8gT3B0aW1pemUgdGhlIGNv
bW1vbiBjYXNlIHdoZXJlIHdlIGJyaW5nIGEgd2luZG93IHRvIHRoZSBmcm9udCB3aGlsZSBpdCdz
IHN0aWxsIGVtcHR5LgotICAgIGlmICghbV9mcmFtZSB8fCBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJs
KCkuaXNFbXB0eSgpKQorICAgIGlmICghbV9mcmFtZSB8fCBtX2ZyYW1lLT5kb2N1bWVudCgpLT51
cmwoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICgobV9mcmFtZS0+Y29u
dGVudFJlbmRlcmVyKCkgJiYgbV9mcmFtZS0+Y29udGVudFJlbmRlcmVyKCktPnRoZW1lKCktPnN1
cHBvcnRzQ29udHJvbFRpbnRzKCkpIHx8IGhhc0N1c3RvbVNjcm9sbGJhcnMoKSkgIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAkocmV2aXNpb24gNzY3MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzksNyArMzM5LDcgQEAKIAogI2lmIEVOQUJM
RShEQVRBQkFTRSkKICAgICAgICAgLy8gSWYgd2UncmUgbmF2aWdhdGluZyB0aGUgaGlzdG9yeSB2
aWEgYSBmcmFnbWVudCBvbiB0aGUgc2FtZSBkb2N1bWVudCwgdGhlbiB3ZSBkbyBub3Qgd2FudCB0
byBzdG9wIGRhdGFiYXNlcy4KLSAgICAgICAgY29uc3QgS1VSTCYgY3VycmVudFVSTCA9IG1fbWFp
bkZyYW1lLT5sb2FkZXIoKS0+dXJsKCk7CisgICAgICAgIGNvbnN0IEtVUkwmIGN1cnJlbnRVUkwg
PSBtX21haW5GcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgICAgIGNvbnN0IEtVUkwmIG5l
d1VSTCA9IGl0ZW0tPnVybCgpOwogICAgIAogICAgICAgICBpZiAobmV3VVJMLmhhc0ZyYWdtZW50
SWRlbnRpZmllcigpICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoY3VycmVudFVS
TCwgbmV3VVJMKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCShyZXZpc2lvbiA3Njcw
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MSw3ICs1MSw3IEBACiB7CiAgICAgQVNTRVJUKG1fZnJhbWUpOwogCi0gICAgY29uc3QgS1VS
TCYgdXJsID0gbV9mcmFtZS0+bG9hZGVyKCktPnVybCgpOworICAgIGNvbnN0IEtVUkwmIHVybCA9
IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIGlmICghdXJsLmlzVmFsaWQoKSkKICAg
ICAgICAgcmV0dXJuIGJsYW5rVVJMKCk7IC8vIFVzZSAiYWJvdXQ6YmxhbmsiIHdoaWxlIHRoZSBw
YWdlIGlzIHN0aWxsIGxvYWRpbmcgKGJlZm9yZSB3ZSBoYXZlIGEgZnJhbWUpLgogCkBAIC0xNjcs
NyArMTY3LDcgQEAKIHsKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBL
VVJMIHVybCA9IG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKTsKKyAgICBLVVJMIHVybCA9IG1fZnJh
bWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIGlmICghdXJsLnNldFByb3RvY29sKHByb3RvY29s
KSkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybjsKQEAgLTE3OSw3
ICsxNzksNyBAQAogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIEtV
UkwgdXJsID0gbV9mcmFtZS0+bG9hZGVyKCktPnVybCgpOworICAgIEtVUkwgdXJsID0gbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldEhvc3RBbmRQb3J0KGhvc3QpOwogICAg
IG1fZnJhbWUtPmRvbVdpbmRvdygpLT5zZXRMb2NhdGlvbih1cmwuc3RyaW5nKCksIGFjdGl2ZVdp
bmRvdywgZmlyc3RXaW5kb3cpOwogfQpAQCAtMTg4LDcgKzE4OCw3IEBACiB7CiAgICAgaWYgKCFt
X2ZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgS1VSTCB1cmwgPSBtX2ZyYW1lLT5sb2FkZXIo
KS0+dXJsKCk7CisgICAgS1VSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAg
ICB1cmwuc2V0SG9zdChob3N0bmFtZSk7CiAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPnNldExv
Y2F0aW9uKHVybC5zdHJpbmcoKSwgYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdyk7CiB9CkBAIC0x
OTcsNyArMTk3LDcgQEAKIHsKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAg
ICBLVVJMIHVybCA9IG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKTsKKyAgICBLVVJMIHVybCA9IG1f
ZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIGludCBwb3J0ID0gcG9ydFN0cmluZy50b0lu
dCgpOwogICAgIGlmIChwb3J0IDwgMCB8fCBwb3J0ID4gMHhGRkZGKQogICAgICAgICB1cmwucmVt
b3ZlUG9ydCgpOwpAQCAtMjEwLDcgKzIxMCw3IEBACiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAg
ICAgICByZXR1cm47Ci0gICAgS1VSTCB1cmwgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCk7Cisg
ICAgS1VSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICB1cmwuc2V0UGF0
aChwYXRobmFtZSk7CiAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPnNldExvY2F0aW9uKHVybC5z
dHJpbmcoKSwgYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdyk7CiB9CkBAIC0yMTksNyArMjE5LDcg
QEAKIHsKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBLVVJMIHVybCA9
IG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKTsKKyAgICBLVVJMIHVybCA9IG1fZnJhbWUtPmRvY3Vt
ZW50KCktPnVybCgpOwogICAgIHVybC5zZXRRdWVyeShzZWFyY2gpOwogICAgIG1fZnJhbWUtPmRv
bVdpbmRvdygpLT5zZXRMb2NhdGlvbih1cmwuc3RyaW5nKCksIGFjdGl2ZVdpbmRvdywgZmlyc3RX
aW5kb3cpOwogfQpAQCAtMjI4LDcgKzIyOCw3IEBACiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAg
ICAgICByZXR1cm47Ci0gICAgS1VSTCB1cmwgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCk7Cisg
ICAgS1VSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBTdHJpbmcgb2xk
RnJhZ21lbnRJZGVudGlmaWVyID0gdXJsLmZyYWdtZW50SWRlbnRpZmllcigpOwogICAgIFN0cmlu
ZyBuZXdGcmFnbWVudElkZW50aWZpZXIgPSBoYXNoOwogICAgIGlmIChoYXNoWzBdID09ICcjJykK
QEAgLTI2OCw3ICsyNjgsNyBAQAogICAgICAgICB0YXJnZXRXaW5kb3ctPnByaW50RXJyb3JNZXNz
YWdlKHRhcmdldFdpbmRvdy0+Y3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3NhZ2UoYWN0aXZlV2lu
ZG93KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKHByb3RvY29sSXNKYXZhU2Ny
aXB0KG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKSkpCisgICAgaWYgKHByb3RvY29sSXNKYXZhU2Ny
aXB0KG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1f
ZnJhbWUtPm5hdmlnYXRpb25TY2hlZHVsZXIoKS0+c2NoZWR1bGVSZWZyZXNoKCk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDc2NzAxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQAogICAgIEtVUkwgY29tcGxl
dGVVUkwgPSBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpOwogICAgIGJvb2wgZm91bmRTZWxm
UmVmZXJlbmNlID0gZmFsc2U7CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5m
cmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkgewotICAgICAg
ICBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihmcmFtZS0+bG9hZGVyKCktPnVy
bCgpLCBjb21wbGV0ZVVSTCkpIHsKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdGcmFnbWVudElk
ZW50aWZpZXIoZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLCBjb21wbGV0ZVVSTCkpIHsKICAgICAg
ICAgICAgIGlmIChmb3VuZFNlbGZSZWZlcmVuY2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgZm91bmRTZWxmUmVmZXJlbmNlID0gdHJ1ZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCShyZXZpc2lvbiA3Njcw
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lRWxlbWVudEJhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04MCw3ICs4MCw3IEBACiAgICAgLy8gQnV0IHdlIGRvbid0IGFsbG93IG1v
cmUgdGhhbiBvbmUuCiAgICAgYm9vbCBmb3VuZFNlbGZSZWZlcmVuY2UgPSBmYWxzZTsKICAgICBm
b3IgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZy
YW1lLT50cmVlKCktPnBhcmVudCgpKSB7Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21l
bnRJZGVudGlmaWVyKGZyYW1lLT5sb2FkZXIoKS0+dXJsKCksIGNvbXBsZXRlVVJMKSkgeworICAg
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihmcmFtZS0+ZG9jdW1lbnQo
KS0+dXJsKCksIGNvbXBsZXRlVVJMKSkgewogICAgICAgICAgICAgaWYgKGZvdW5kU2VsZlJlZmVy
ZW5jZSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBmb3VuZFNl
bGZSZWZlcmVuY2UgPSB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQWdlbnQuY3BwCShyZXZpc2lvbiA3NjcwMSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNjcsNyArMTM2Nyw3
IEBACiAKIEtVUkwgSW5zcGVjdG9yQWdlbnQ6Omluc3BlY3RlZFVSTCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1faW5zcGVjdGVkUGFnZS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT51cmwoKTsKKyAg
ICByZXR1cm4gbV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXJsKCk7
CiB9CiAKIEtVUkwgSW5zcGVjdG9yQWdlbnQ6Omluc3BlY3RlZFVSTFdpdGhvdXRGcmFnbWVudCgp
IGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuY3BwCShyZXZpc2lvbiA3NjcwMSkKKysrIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc4
LDcgKzM3OCw3IEBACiAgICAgICAgICAgICBuYW1lID0gZnJhbWUtPm93bmVyRWxlbWVudCgpLT5n
ZXRBdHRyaWJ1dGUoSFRNTE5hbWVzOjppZEF0dHIpOwogICAgICAgICBmcmFtZU9iamVjdC0+c2V0
U3RyaW5nKCJuYW1lIiwgbmFtZSk7CiAgICAgfQotICAgIGZyYW1lT2JqZWN0LT5zZXRTdHJpbmco
InVybCIsIGZyYW1lLT5sb2FkZXIoKS0+dXJsKCkuc3RyaW5nKCkpOworICAgIGZyYW1lT2JqZWN0
LT5zZXRTdHJpbmcoInVybCIsIGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSk7CiAg
ICAgcmV0dXJuIGZyYW1lT2JqZWN0OwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAJKHJldmlzaW9uIDc2NzAyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjM1LDEyICs2MzUsNiBAQAogICAgIG1f
ZnJhbWUtPm5hdmlnYXRpb25TY2hlZHVsZXIoKS0+c2NoZWR1bGVSZWRpcmVjdChkZWxheSwgdXJs
KTsKIH0KIAotY29uc3QgS1VSTCYgRnJhbWVMb2FkZXI6OnVybCgpIGNvbnN0Ci17Ci0gICAgQVNT
RVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwotICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudCgp
LT51cmwoKTsKLX0KLQogdm9pZCBGcmFtZUxvYWRlcjo6c2V0T3V0Z29pbmdSZWZlcnJlcihjb25z
dCBLVVJMJiB1cmwpCiB7CiAgICAgS1VSTCBvdXRnb2luZ1JlZmVycmVyKHVybCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCShyZXZpc2lv
biA3NjcwMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTc4LDExICsxNzgsMTAgQEAKICAgICB7CiAgICAgICAgIFVz
ZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3Iod2FzVXNlckdlc3R1cmUoKSA/IERl
ZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBEZWZpbml0ZWx5Tm90UHJvY2Vzc2luZ1Vz
ZXJHZXN0dXJlKTsKIAotICAgICAgICBGcmFtZUxvYWRlciogbG9hZGVyID0gZnJhbWUtPmxvYWRl
cigpOwogICAgICAgICBpZiAoIW1faGlzdG9yeVN0ZXBzKSB7CiAgICAgICAgICAgICAvLyBTcGVj
aWFsIGNhc2UgZm9yIGdvKDApIGZyb20gYSBmcmFtZSAtPiByZWxvYWQgb25seSB0aGUgZnJhbWUK
ICAgICAgICAgICAgIC8vIFRvIGZvbGxvdyBGaXJlZm94IGFuZCBJRSdzIGJlaGF2aW9yLCBoaXN0
b3J5IHJlbG9hZCBjYW4gb25seSBuYXZpZ2F0ZSB0aGUgc2VsZiBmcmFtZS4KLSAgICAgICAgICAg
IGxvYWRlci0+dXJsU2VsZWN0ZWQobG9hZGVyLT51cmwoKSwgIl9zZWxmIiwgMCwgbG9ja0hpc3Rv
cnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpLCBTZW5kUmVmZXJyZXIpOworICAgICAgICAgICAg
ZnJhbWUtPmxvYWRlcigpLT51cmxTZWxlY3RlZChmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCksICJf
c2VsZiIsIDAsIGxvY2tIaXN0b3J5KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgU2VuZFJlZmVy
cmVyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICAvLyBnbyhpIT0w
KSBmcm9tIGEgZnJhbWUgbmF2aWdhdGVzIGludG8gdGhlIGhpc3Rvcnkgb2YgdGhlIGZyYW1lIG9u
bHksCkBAIC0zMjIsNyArMzIxLDcgQEAKICAgICAvLyBJZiB0aGUgVVJMIHdlJ3JlIGdvaW5nIHRv
IG5hdmlnYXRlIHRvIGlzIHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IG9uZSwgZXhjZXB0IGZvciB0
aGUKICAgICAvLyBmcmFnbWVudCBwYXJ0LCB3ZSBkb24ndCBuZWVkIHRvIHNjaGVkdWxlIHRoZSBs
b2NhdGlvbiBjaGFuZ2UuCiAgICAgS1VSTCBwYXJzZWRVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwp
OwotICAgIGlmIChwYXJzZWRVUkwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgJiYgZXF1YWxJZ25v
cmluZ0ZyYWdtZW50SWRlbnRpZmllcihsb2FkZXItPnVybCgpLCBwYXJzZWRVUkwpKSB7CisgICAg
aWYgKHBhcnNlZFVSTC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSAmJiBlcXVhbElnbm9yaW5nRnJh
Z21lbnRJZGVudGlmaWVyKG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLCBwYXJzZWRVUkwpKSB7
CiAgICAgICAgIGxvYWRlci0+Y2hhbmdlTG9jYXRpb24oc2VjdXJpdHlPcmlnaW4sIGxvYWRlci0+
Y29tcGxldGVVUkwodXJsKSwgcmVmZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRM
aXN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM1OSw3ICszNTgsNyBAQAogewogICAg
IGlmICghc2hvdWxkU2NoZWR1bGVOYXZpZ2F0aW9uKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBj
b25zdCBLVVJMJiB1cmwgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCk7CisgICAgY29uc3QgS1VS
TCYgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgaWYgKHVybC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3Rv
cnlDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlz
dG9yeUNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA3NjcwMSkKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMyw3ICszMjMs
NyBAQAogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAg
ICAgIGFkZFZpc2l0ZWRMaW5rKHBhZ2UsIGhpc3RvcnlVUkwpOwogCi0gICAgICAgIGlmICghZnJh
bWVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPmRpZENyZWF0ZUdsb2JhbEhpc3RvcnlFbnRyeSgp
ICYmIGZyYW1lTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT51bnJlYWNoYWJsZVVSTCgpLmlzRW1w
dHkoKSAmJiAhZnJhbWVMb2FkZXItPnVybCgpLmlzRW1wdHkoKSkKKyAgICAgICAgaWYgKCFmcmFt
ZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+ZGlkQ3JlYXRlR2xvYmFsSGlzdG9yeUVudHJ5KCkg
JiYgZnJhbWVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnVucmVhY2hhYmxlVVJMKCkuaXNFbXB0
eSgpICYmICFtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICBmcmFtZUxvYWRlci0+Y2xpZW50KCktPnVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtz
KCk7CiAgICAgfQogfQpAQCAtMzY1LDcgKzM2NSw3IEBACiAgICAgICAgIGlmIChQYWdlKiBwYWdl
ID0gbV9mcmFtZS0+cGFnZSgpKQogICAgICAgICAgICAgYWRkVmlzaXRlZExpbmsocGFnZSwgaGlz
dG9yeVVSTCk7CiAKLSAgICAgICAgaWYgKCFtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2Fk
ZXIoKS0+ZGlkQ3JlYXRlR2xvYmFsSGlzdG9yeUVudHJ5KCkgJiYgbV9mcmFtZS0+bG9hZGVyKCkt
PmRvY3VtZW50TG9hZGVyKCktPnVucmVhY2hhYmxlVVJMKCkuaXNFbXB0eSgpICYmICFtX2ZyYW1l
LT5sb2FkZXIoKS0+dXJsKCkuaXNFbXB0eSgpKQorICAgICAgICBpZiAoIW1fZnJhbWUtPmxvYWRl
cigpLT5kb2N1bWVudExvYWRlcigpLT5kaWRDcmVhdGVHbG9iYWxIaXN0b3J5RW50cnkoKSAmJiBt
X2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+dW5yZWFjaGFibGVVUkwoKS5pc0Vt
cHR5KCkgJiYgIW1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+dXBkYXRlR2xvYmFsSGlzdG9yeVJlZGly
ZWN0TGlua3MoKTsKICAgICB9CiB9CkBAIC00NTksNyArNDU5LDcgQEAKIAogdm9pZCBIaXN0b3J5
Q29udHJvbGxlcjo6dXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbigpCiB7Ci0gICAgaWYg
KG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKS5pc0VtcHR5KCkpCisgICAgaWYgKG1fZnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU2V0dGlu
Z3MqIHNldHRpbmdzID0gbV9mcmFtZS0+c2V0dGluZ3MoKTsKQEAgLTQ3MCw3ICs0NzAsNyBAQAog
ICAgIGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYWRkVmlzaXRlZExpbmsocGFn
ZSwgbV9mcmFtZS0+bG9hZGVyKCktPnVybCgpKTsKKyAgICBhZGRWaXNpdGVkTGluayhwYWdlLCBt
X2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSk7CiB9CiAKIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6
OnVwZGF0ZUZvckZyYW1lTG9hZENvbXBsZXRlZCgpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRXcml0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudFdyaXRlci5jcHAJKHJldmlzaW9uIDc2NzAyKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcsNyBA
QAogdm9pZCBEb2N1bWVudFdyaXRlcjo6cmVwbGFjZURvY3VtZW50KGNvbnN0IFN0cmluZyYgc291
cmNlKQogewogICAgIG1fZnJhbWUtPmxvYWRlcigpLT5zdG9wQWxsTG9hZGVycygpOwotICAgIGJl
Z2luKG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKSwgdHJ1ZSwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgYmVnaW4obV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCks
IHRydWUsIG1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpOwogCiAgICAgaWYg
KCFzb3VyY2UuaXNOdWxsKCkpIHsKICAgICAgICAgaWYgKCFtX3JlY2VpdmVkRGF0YSkgewpAQCAt
MjQ1LDcgKzI0NSw3IEBACiAKIFN0cmluZyBEb2N1bWVudFdyaXRlcjo6ZGVwcmVjYXRlZEZyYW1l
RW5jb2RpbmcoKSBjb25zdAogewotICAgIHJldHVybiBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCku
aXNFbXB0eSgpID8gbV9lbmNvZGluZyA6IGVuY29kaW5nKCk7CisgICAgcmV0dXJuIG1fZnJhbWUt
PmRvY3VtZW50KCktPnVybCgpLmlzRW1wdHkoKSA/IG1fZW5jb2RpbmcgOiBlbmNvZGluZygpOwog
fQogCiB2b2lkIERvY3VtZW50V3JpdGVyOjpzZXREb2N1bWVudFdhc0xvYWRlZEFzUGFydE9mTmF2
aWdhdGlvbigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24g
NzY3MDIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMjY3LDcgKzI2Nyw2IEBACiAKICAgICB2b2lkIGZyYW1lRGV0YWNoZWQoKTsKIAot
ICAgIGNvbnN0IEtVUkwmIHVybCgpIGNvbnN0OwogICAgIHZvaWQgc2V0T3V0Z29pbmdSZWZlcnJl
cihjb25zdCBLVVJMJik7CiAKICAgICB2b2lkIGxvYWREb25lKCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA3NjcxMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTAxLTI2ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXNlIERvY3VtZW50Ojp1cmwoKSBpbnN0ZWFkIG9mIEZyYW1lTG9hZGVyOjp1cmwoKS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMTY1CisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hh
bmdlTG9jYXRpb25XaXRoaW5QYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkUHVzaFN0YXRlV2l0aGluUGFnZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRQb3BT
dGF0ZVdpdGhpblBhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjp1cmwpOgorCiAyMDExLTAxLTI1ICBCcmlh
biBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBBbnR0aSBLb2l2aXN0by4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CShyZXZpc2lvbiA3NjcwMSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNyAr
MzEyLDcgQEAKICAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh3ZWJQYWdlLCBtX2ZyYW1lLCBTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uQW5jaG9yTmF2aWdhdGlvbiwgdXNlckRhdGEpOwogCiAgICAgLy8gTm90aWZ5
IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uQW5jaG9yTmF2aWdhdGlvbiwgbV9mcmFtZS0+Y29yZUZyYW1l
KCktPmxvYWRlcigpLT51cmwoKS5zdHJpbmcoKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVu
Y29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUobV9mcmFtZS0+ZnJh
bWVJRCgpLCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uQW5jaG9yTmF2aWdhdGlvbiwgbV9mcmFtZS0+
Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpLCBJbmplY3RlZEJ1bmRsZVVz
ZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkKQEAgLTMyNyw3ICsz
MjcsNyBAQAogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHdlYlBhZ2UsIG1fZnJhbWUsIFNhbWVEb2N1bWVu
dE5hdmlnYXRpb25TZXNzaW9uU3RhdGVQdXNoLCB1c2VyRGF0YSk7CiAKICAgICAvLyBOb3RpZnkg
dGhlIFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIFNh
bWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9uU3RhdGVQdXNoLCBtX2ZyYW1lLT5jb3JlRnJhbWUo
KS0+bG9hZGVyKCktPnVybCgpLnN0cmluZygpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5j
b2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShtX2ZyYW1lLT5mcmFt
ZUlEKCksIFNhbWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9uU3RhdGVQdXNoLCBtX2ZyYW1lLT5j
b3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCksIEluamVjdGVkQnVuZGxlVXNl
ck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKQpAQCAtMzQyLDcg
KzM0Miw3IEBACiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUod2ViUGFnZSwgbV9mcmFtZSwgU2FtZURvY3Vt
ZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVJlcGxhY2UsIHVzZXJEYXRhKTsKIAogICAgIC8vIE5v
dGlmeSB0aGUgVUlQcm9jZXNzLgotICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQo
KSwgU2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVJlcGxhY2UsIG1fZnJhbWUtPmNv
cmVGcmFtZSgpLT5sb2FkZXIoKS0+dXJsKCkuc3RyaW5nKCksIEluamVjdGVkQnVuZGxlVXNlck1l
c3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKG1fZnJh
bWUtPmZyYW1lSUQoKSwgU2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVJlcGxhY2Us
IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSwgSW5qZWN0
ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiB9CiAKIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUG9wU3RhdGVXaXRoaW5QYWdlKCkKQEAg
LTM1Nyw3ICszNTcsNyBAQAogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50
KCkuZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHdlYlBhZ2UsIG1fZnJhbWUsIFNh
bWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9uU3RhdGVQb3AsIHVzZXJEYXRhKTsKIAogICAgIC8v
IE5vdGlmeSB0aGUgVUlQcm9jZXNzLgotICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKG1fZnJhbWUtPmZyYW1l
SUQoKSwgU2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVBvcCwgbV9mcmFtZS0+Y29y
ZUZyYW1lKCktPmxvYWRlcigpLT51cmwoKS5zdHJpbmcoKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVz
c2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUobV9mcmFt
ZS0+ZnJhbWVJRCgpLCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uU2Vzc2lvblN0YXRlUG9wLCBtX2Zy
YW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCksIEluamVjdGVkQnVu
ZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxDbG9zZSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDc2NzAxKQor
KysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzM0LDcgKzMzNCw3IEBACiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgcmV0dXJuIG1fY29yZUZyYW1lLT5sb2FkZXIoKS0+
dXJsKCkuc3RyaW5nKCk7CisgICAgcmV0dXJuIG1fY29yZUZyYW1lLT5kb2N1bWVudCgpLT51cmwo
KS5zdHJpbmcoKTsKIH0KIAogU3RyaW5nIFdlYkZyYW1lOjppbm5lclRleHQoKSBjb25zdAo=
</data>
<flag name="review"
          id="71695"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="71696"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80245</attachid>
            <date>2011-01-26 15:07:08 -0800</date>
            <delta_ts>2011-01-27 17:22:34 -0800</delta_ts>
            <desc>Fix qt and gtk issues</desc>
            <filename>flurl2.txt</filename>
            <type>text/plain</type>
            <size>32155</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NjcxMykKKysrIFNvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDEtMjYgIE5h
dGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgRG9jdW1lbnQ6OnVybCgpIGluc3RlYWQgb2Yg
RnJhbWVMb2FkZXI6OnVybCgpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDExNjUKKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3BwOgorICAgICAg
ICAoUVdlYkZyYW1lOjp1cmwpOgorCiAyMDExLTAxLTI0ICBDaHJpcyBNYXJyaW4gIDxjbWFycmlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAkocmV2aXNpb24gNzY3MDEpCisrKyBTb3VyY2UvV2Vi
S2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NTcsNyArNzU3LDcg
QEAKIAogUVVybCBRV2ViRnJhbWU6OnVybCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGQtPmZyYW1l
LT5sb2FkZXIoKS0+dXJsKCk7CisgICAgcmV0dXJuIGQtPmZyYW1lLT5kb2N1bWVudCgpLT51cmwo
KTsKIH0KIAogLyohCkBAIC04MTMsNyArODEzLDcgQEAKIAogUUljb24gUVdlYkZyYW1lOjppY29u
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gUVdlYlNldHRpbmdzOjppY29uRm9yVXJsKGQtPmZyYW1l
LT5sb2FkZXIoKS0+dXJsKCkpOworICAgIHJldHVybiBRV2ViU2V0dGluZ3M6Omljb25Gb3JVcmwo
ZC0+ZnJhbWUtPmRvY3VtZW50KCktPnVybCgpKTsKIH0KIAogLyohCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuY3BwCShyZXZpc2lvbiA3NjcwMSkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODM0LDcgKzgz
NCw3IEBACiB7CiAgICAgV2ViS2l0V2ViRnJhbWVQcml2YXRlKiBwcml2ID0gbV9mcmFtZS0+cHJp
djsKICAgICBnX2ZyZWUocHJpdi0+dXJpKTsKLSAgICBwcml2LT51cmkgPSBnX3N0cmR1cChjb3Jl
KG1fZnJhbWUpLT5sb2FkZXIoKS0+dXJsKCkucHJldHR5VVJMKCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgcHJpdi0+dXJpID0gZ19zdHJkdXAoY29yZShtX2ZyYW1lKS0+ZG9jdW1lbnQoKS0+dXJsKCku
cHJldHR5VVJMKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNU
KG1fZnJhbWUpLCAidXJpIik7CiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IGdldFZpZXdG
cm9tRnJhbWUobV9mcmFtZSk7CiAgICAgaWYgKG1fZnJhbWUgPT0gd2Via2l0X3dlYl92aWV3X2dl
dF9tYWluX2ZyYW1lKHdlYlZpZXcpKQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNpb24gNzY3MDEpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwNTEsNyArNTA1MSw3
IEBACiBHX0NPTlNUX1JFVFVSTiBnY2hhciogd2Via2l0X3dlYl92aWV3X2dldF9pY29uX3VyaShX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJ
VF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgMCk7Ci0gICAgU3RyaW5nIGljb25VUkwgPSBpY29uRGF0
YWJhc2UoKS0+aWNvblVSTEZvclBhZ2VVUkwoY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCktPmxv
YWRlcigpLT51cmwoKS5wcmV0dHlVUkwoKSk7CisgICAgU3RyaW5nIGljb25VUkwgPSBpY29uRGF0
YWJhc2UoKS0+aWNvblVSTEZvclBhZ2VVUkwoY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCktPmRv
Y3VtZW50KCktPnVybCgpLnByZXR0eVVSTCgpKTsKICAgICB3ZWJWaWV3LT5wcml2LT5pY29uVVJJ
ID0gaWNvblVSTC51dGY4KCk7CiAgICAgcmV0dXJuIHdlYlZpZXctPnByaXYtPmljb25VUkkuZGF0
YSgpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gNzY3MTMpCisrKyBTb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAx
MS0wMS0yNiAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBEb2N1bWVudDo6dXJsKCkg
aW5zdGVhZCBvZiBGcmFtZUxvYWRlcjo6dXJsKCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTE2NQorCisgICAgICAgICogd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9pY29uX3VyaSk6CisKIDIw
MTEtMDEtMjEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDc2NzEzKQorKysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDEtMjYgIE5hdGUgQ2hhcGluICA8amFwaGV0
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVc2UgRG9jdW1lbnQ6OnVybCgpIGluc3RlYWQgb2YgRnJhbWVMb2FkZXI6OnVybCgp
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDExNjUK
KworICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjp1cmwpOgorCiAy
MDExLTAxLTI1ICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgV2luZG93cyBwcm9kdWN0aW9uIGJ1aWxkIGZpeC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2lu
L1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5j
cHAJKHJldmlzaW9uIDc2NzAxKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViRnJhbWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03MDMsNyArNzAzLDcgQEAKICAgICBpZiAoIWNvcmVGcmFtZSkKICAg
ICAgICAgcmV0dXJuIEtVUkwoKTsKIAotICAgIHJldHVybiBjb3JlRnJhbWUtPmxvYWRlcigpLT51
cmwoKTsKKyAgICByZXR1cm4gY29yZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKIH0KIAogSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6c3RvcExvYWRpbmcoIHZvaWQpCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50V3guY3BwCShyZXZpc2lvbiA3NjcwMSkKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIwLDcg
KzMyMCw3IEBACiAgICAgaWYgKG1fd2ViVmlldykgewogICAgICAgICB3eFdlYlZpZXdMb2FkRXZl
bnQgd2tFdmVudChtX3dlYlZpZXcpOwogICAgICAgICB3a0V2ZW50LlNldFN0YXRlKHd4V0VCVklF
V19MT0FEX0RPQ19DT01QTEVURUQpOwotICAgICAgICB3a0V2ZW50LlNldFVSTChtX2ZyYW1lLT5s
b2FkZXIoKS0+dXJsKCkuc3RyaW5nKCkpOworICAgICAgICB3a0V2ZW50LlNldFVSTChtX2ZyYW1l
LT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSk7CiAgICAgICAgIG1fd2ViVmlldy0+R2V0RXZl
bnRIYW5kbGVyKCktPlByb2Nlc3NFdmVudCh3a0V2ZW50KTsKICAgICB9CiB9CkBAIC0zOTQsNyAr
Mzk0LDcgQEAKICAgICBpZiAobV93ZWJWaWV3KSB7CiAgICAgICAgIHd4V2ViVmlld0xvYWRFdmVu
dCB3a0V2ZW50KG1fd2ViVmlldyk7CiAgICAgICAgIHdrRXZlbnQuU2V0U3RhdGUod3hXRUJWSUVX
X0xPQURfRExfQ09NUExFVEVEKTsKLSAgICAgICAgd2tFdmVudC5TZXRVUkwobV9mcmFtZS0+bG9h
ZGVyKCktPnVybCgpLnN0cmluZygpKTsKKyAgICAgICAgd2tFdmVudC5TZXRVUkwobV9mcmFtZS0+
ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpOwogICAgICAgICBtX3dlYlZpZXctPkdldEV2ZW50
SGFuZGxlcigpLT5Qcm9jZXNzRXZlbnQod2tFdmVudCk7CiAgICAgfQogfQpJbmRleDogU291cmNl
L1dlYktpdC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDc2NzEzKQorKysgU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMS0yNiAgTmF0ZSBDaGFwaW4gIDxq
YXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVzZSBEb2N1bWVudDo6dXJsKCkgaW5zdGVhZCBvZiBGcmFtZUxvYWRlcjo6
dXJsKCkuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
MTE2NQorCisgICAgICAgICogV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50V3g6OmRpc3BhdGNoRGlkRmluaXNo
RG9jdW1lbnRMb2FkKToKKwogMjAxMS0wMS0xNCAgWXV6byBGdWppc2hpbWEgIDx5dXpvQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA3NjcxMykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDExLTAxLTI2ICBOYXRlIENoYXBp
biAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXNlIERvY3VtZW50Ojp1cmwoKSBpbnN0ZWFkIG9mIEZyYW1lTG9h
ZGVyOjp1cmwoKS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQxMTY1CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dl
YlZpZXcgX2Rpc3BhdGNoRGlkUmVjZWl2ZUljb25Gcm9tV2ViRnJhbWU6XSk6CisKIDIwMTEtMDEt
MjUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEFuZGVycyBDYXJsc3Nvbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0J
KHJldmlzaW9uIDc2NzAxKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC01ODM0LDcgKzU4MzQsNyBAQAogCiAgICAgV2ViRnJhbWVMb2Fk
RGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBjYWNoZSA9ICZfcHJpdmF0ZS0+ZnJhbWVMb2Fk
RGVsZWdhdGVJbXBsZW1lbnRhdGlvbnM7CiAgICAgaWYgKGNhY2hlLT5kaWRSZWNlaXZlSWNvbkZv
ckZyYW1lRnVuYykgewotICAgICAgICBJbWFnZSogaW1hZ2UgPSBpY29uRGF0YWJhc2UoKS0+aWNv
bkZvclBhZ2VVUkwoY29yZSh3ZWJGcmFtZSktPmxvYWRlcigpLT51cmwoKS5zdHJpbmcoKSwgSW50
U2l6ZSgxNiwgMTYpKTsKKyAgICAgICAgSW1hZ2UqIGltYWdlID0gaWNvbkRhdGFiYXNlKCktPmlj
b25Gb3JQYWdlVVJMKGNvcmUod2ViRnJhbWUpLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSwg
SW50U2l6ZSgxNiwgMTYpKTsKICAgICAgICAgaWYgKE5TSW1hZ2UgKmljb24gPSB3ZWJHZXROU0lt
YWdlKGltYWdlLCBOU01ha2VTaXplKDE2LCAxNikpKQogICAgICAgICAgICAgQ2FsbEZyYW1lTG9h
ZERlbGVnYXRlKGNhY2hlLT5kaWRSZWNlaXZlSWNvbkZvckZyYW1lRnVuYywgc2VsZiwgQHNlbGVj
dG9yKHdlYlZpZXc6ZGlkUmVjZWl2ZUljb246Zm9yRnJhbWU6KSwgaWNvbiwgd2ViRnJhbWUpOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvaGFpa3UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRIYWlrdS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9oYWlrdS9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEhhaWt1LmNwcAkocmV2aXNpb24gNzY3MDEpCisr
KyBTb3VyY2UvV2ViS2l0L2hhaWt1L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50SGFp
a3UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjEsNyArMjYxLDcgQEAKIHsKICAgICBpZiAobV93
ZWJWaWV3KSB7CiAgICAgICAgIEJNZXNzYWdlIG1lc3NhZ2UoTE9BRF9ET0NfQ09NUExFVEVEKTsK
LSAgICAgICAgbWVzc2FnZS5BZGRTdHJpbmcoInVybCIsIG1fZnJhbWUtPmxvYWRlcigpLT51cmwo
KS5zdHJpbmcoKSk7CisgICAgICAgIG1lc3NhZ2UuQWRkU3RyaW5nKCJ1cmwiLCBtX2ZyYW1lLT5k
b2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSk7CiAgICAgICAgIG1fbWVzc2VuZ2VyLT5TZW5kTWVz
c2FnZSgmbWVzc2FnZSk7CiAgICAgfQogfQpAQCAtMzIzLDcgKzMyMyw3IEBACiB7CiAgICAgaWYg
KG1fd2ViVmlldykgewogICAgICAgICBCTWVzc2FnZSBtZXNzYWdlKExPQURfRExfQ09NUExFVEVE
KTsKLSAgICAgICAgbWVzc2FnZS5BZGRTdHJpbmcoInVybCIsIG1fZnJhbWUtPmxvYWRlcigpLT51
cmwoKS5zdHJpbmcoKSk7CisgICAgICAgIG1lc3NhZ2UuQWRkU3RyaW5nKCJ1cmwiLCBtX2ZyYW1l
LT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSk7CiAgICAgICAgIG1fbWVzc2VuZ2VyLT5TZW5k
TWVzc2FnZSgmbWVzc2FnZSk7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYktpdC9oYWlrdS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDc2NzEzKQorKysgU291cmNlL1dlYktpdC9oYWlrdS9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMS0yNiAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFVzZSBEb2N1bWVudDo6dXJsKCkgaW5zdGVhZCBvZiBGcmFtZUxvYWRlcjo6dXJsKCku
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTE2NQor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRIYWlrdS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudEhhaWt1OjpkaXNwYXRjaERpZEZpbmlz
aERvY3VtZW50TG9hZCk6CisKIDIwMTAtMTItMjIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFNvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfZnJhbWUuY3BwCShyZXZpc2lvbiA3NjcwMSkKKysrIFNvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfZnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDA4LDcgKzIwMDgsNyBAQAog
ewogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKG8sIHNkLCBFSU5BX0ZBTFNFKTsKICAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2QtPmZyYW1lLCBFSU5BX0ZBTFNFKTsK
LSAgICBXVEY6OkNTdHJpbmcgdXJpKHNkLT5mcmFtZS0+bG9hZGVyKCktPnVybCgpLnByZXR0eVVS
TCgpLnV0ZjgoKSk7CisgICAgV1RGOjpDU3RyaW5nIHVyaShzZC0+ZnJhbWUtPmRvY3VtZW50KCkt
PnVybCgpLnByZXR0eVVSTCgpLnV0ZjgoKSk7CiAKICAgICBJTkYoInVyaT0lcyIsIHVyaS5kYXRh
KCkpOwogICAgIGlmICghdXJpLmRhdGEoKSkgewpJbmRleDogU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNp
b24gNzY3MTMpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxMyBAQAorMjAxMS0wMS0yNiAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVzZSBEb2N1bWVudDo6dXJsKCkgaW5zdGVhZCBvZiBGcmFtZUxvYWRlcjo6dXJsKCkuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MTE2NQorCisgICAg
ICAgICogZXdrL2V3a19mcmFtZS5jcHA6CisgICAgICAgIChld2tfZnJhbWVfdXJpX2NoYW5nZWQp
OgorCiAyMDExLTAxLTE0ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFVucmV2aWV3ZWQuIFRyeSB0byBmaXggRUZMIGJ1aWxkLgpJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4JKHJldmlzaW9uIDc2NzAyKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTk3MSw3ICs5NzEsNiBAQAogX19aTks3V2ViQ29yZTEx
RnJhbWVMb2FkZXIxN25ldHdvcmtpbmdDb250ZXh0RXYKIF9fWk5LN1dlYkNvcmUxMUZyYW1lTG9h
ZGVyMjBhY3RpdmVEb2N1bWVudExvYWRlckV2CiBfX1pOSzdXZWJDb3JlMTFGcmFtZUxvYWRlcjI3
bnVtUGVuZGluZ09yTG9hZGluZ1JlcXVlc3RzRWIKLV9fWk5LN1dlYkNvcmUxMUZyYW1lTG9hZGVy
M3VybEV2CiBfX1pOSzdXZWJDb3JlMTFGcmFtZUxvYWRlcjhsb2FkVHlwZUV2CiBfX1pOSzdXZWJD
b3JlMTFIaXN0b3J5SXRlbTEwdmlzaXRDb3VudEV2CiBfX1pOSzdXZWJDb3JlMTFIaXN0b3J5SXRl
bTExaGFzQ2hpbGRyZW5FdgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA3
NjcwMikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2NDYsNyArMjY0Niw3IEBACiAgICAgICAgIFN0cmluZyB1cmw7CiAgICAgICAgIGlmIChm
cmFtZSAmJiBwYXJzZUhUVFBSZWZyZXNoKGNvbnRlbnQsIHRydWUsIGRlbGF5LCB1cmwpKSB7CiAg
ICAgICAgICAgICBpZiAodXJsLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICB1cmwgPSBmcmFt
ZS0+bG9hZGVyKCktPnVybCgpLnN0cmluZygpOworICAgICAgICAgICAgICAgIHVybCA9IG1fdXJs
LnN0cmluZygpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHVybCA9IGNvbXBs
ZXRlVVJMKHVybCkuc3RyaW5nKCk7CiAgICAgICAgICAgICBmcmFtZS0+bmF2aWdhdGlvblNjaGVk
dWxlcigpLT5zY2hlZHVsZVJlZGlyZWN0KGRlbGF5LCB1cmwpOwpAQCAtMjkyNyw3ICsyOTI3LDcg
QEAKICAgICAgICAgcGFyc2VyLT5leGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygp
OwogCiAgICAgaWYgKG1fZ290b0FuY2hvck5lZWRlZEFmdGVyU3R5bGVzaGVldHNMb2FkICYmIHZp
ZXcoKSkKLSAgICAgICAgdmlldygpLT5zY3JvbGxUb0ZyYWdtZW50KG1fZnJhbWUtPmxvYWRlcigp
LT51cmwoKSk7CisgICAgICAgIHZpZXcoKS0+c2Nyb2xsVG9GcmFnbWVudChtX3VybCk7CiB9CiAK
IHZvaWQgRG9jdW1lbnQ6OnN0eWxlU2VsZWN0b3JDaGFuZ2VkKFN0eWxlU2VsZWN0b3JVcGRhdGVG
bGFnIHVwZGF0ZUZsYWcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA3NjcxMykKKysrIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU4IEBACisyMDEx
LTAxLTI2ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIEZyYW1lTG9hZGVyOjp1
cmwoKSBhbmQgdXBkYXRlIGNhbGxlcnMgdG8gdXNlCisgICAgICAgIERvY3VtZW50Ojp1cmwoKS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMTY1CisK
KyAgICAgICAgUmVmYWN0b3IsIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIFdlYkNvcmUuZXhw
LmluOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6cHJvY2Vzc0h0dHBFcXVpdik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cmVt
b3ZlUGVuZGluZ1NoZWV0KToKKyAgICAgICAgKiBoaXN0b3J5L0NhY2hlZEZyYW1lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZEZyYW1lQmFzZTo6Q2FjaGVkRnJhbWVCYXNlKToKKyAgICAg
ICAgKiBoaXN0b3J5L1BhZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2dDYW5DYWNo
ZUZyYW1lRGVjaXNpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNhY2hlOjpjYW5DYWNoZVBh
Z2VDb250YWluaW5nVGhpc0ZyYW1lKToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZUVsZW1lbnRC
YXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZUVsZW1lbnRCYXNlOjppc1VSTEFs
bG93ZWQpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjphbGxvd2VkVG9Mb2FkRnJhbWVV
UkwpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdGVkVVJMKToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpidWlsZE9i
amVjdEZvckZyYW1lKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXI6OnJlcGxhY2VEb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6ZGVwcmVjYXRlZEZyYW1lRW5jb2RpbmcpOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmg6CisgICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTdGFuZGFyZExvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclJlZGlyZWN0V2l0aExv
Y2tlZEJhY2tGb3J3YXJkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxl
cjo6dXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbik6CisgICAgICAgICogbG9hZGVyL05h
dmlnYXRpb25TY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkSGlzdG9y
eU5hdmlnYXRpb246OmZpcmUpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdGlvblNjaGVkdWxl
cjo6c2NoZWR1bGVMb2NhdGlvbkNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9u
U2NoZWR1bGVyOjpzY2hlZHVsZVJlZnJlc2gpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXBkYXRlQ29udHJvbFRpbnRzKToKKyAg
ICAgICAgKiBwYWdlL0xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjp1
cmwpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldFByb3RvY29sKToKKyAgICAgICAg
KFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRIb3N0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9u
OjpzZXRIb3N0bmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2V0UG9ydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2V0UGF0aG5hbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6TG9jYXRpb246OnNldFNlYXJjaCk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2V0
SGFzaCk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6cmVsb2FkKToKKyAgICAgICAgKiBw
YWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6Z29Ub0l0ZW0pOgorCiAyMDEx
LTAxLTI2ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAJKHJldmlzaW9uIDc2
NzAxKQorKysgU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTEsNyArMTExLDcgQEAKICAgICAgICAgICAgIFBDTE9HKCIgICAtRnJhbWUgY29u
dGFpbnMgcGx1Z2lucyIpOwogICAgICAgICAgICAgY2Fubm90Q2FjaGUgPSB0cnVlOwogICAgICAg
ICB9Ci0gICAgICAgIGlmIChmcmFtZS0+bG9hZGVyKCktPnVybCgpLnByb3RvY29sSXMoImh0dHBz
IikpIHsKKyAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5wcm90b2NvbElzKCJo
dHRwcyIpKSB7CiAgICAgICAgICAgICBQQ0xPRygiICAgLUZyYW1lIGlzIEhUVFBTIik7CiAgICAg
ICAgICAgICBjYW5ub3RDYWNoZSA9IHRydWU7CiAgICAgICAgIH0KQEAgLTI2MCw3ICsyNjAsNyBA
QAogICAgICAgICAvLyB0aGV5IHdvdWxkIG5lZWQgdG8gYmUgZGVzdHJveWVkIGFuZCB0aGVuIHJl
Y3JlYXRlZCwgYW5kIHRoZXJlIGlzIG5vIHdheSB0aGF0IHdlIGNhbiByZWNyZWF0ZQogICAgICAg
ICAvLyB0aGUgcmlnaHQgTlBPYmplY3RzLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzUxOTcwNDE+IGZv
ciBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICAmJiAhZnJhbWUtPmxvYWRlcigpLT5zdWJmcmFt
ZUxvYWRlcigpLT5jb250YWluc1BsdWdpbnMoKQotICAgICAgICAmJiAhZnJhbWUtPmxvYWRlcigp
LT51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpCisgICAgICAgICYmICFmcmFtZS0+ZG9jdW1lbnQo
KS0+dXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKQogICAgICAgICAmJiAoIWZyYW1lLT5kb21XaW5k
b3coKSB8fCAhZnJhbWUtPmRvbVdpbmRvdygpLT5oYXNFdmVudExpc3RlbmVycyhldmVudE5hbWVz
KCkudW5sb2FkRXZlbnQpKQogI2lmIEVOQUJMRShEQVRBQkFTRSkKICAgICAgICAgJiYgIWZyYW1l
LT5kb2N1bWVudCgpLT5oYXNPcGVuRGF0YWJhc2VzKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvQ2FjaGVkRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2hpc3Rv
cnkvQ2FjaGVkRnJhbWUuY3BwCShyZXZpc2lvbiA3NjcwMSkKKysrIFNvdXJjZS9XZWJDb3JlL2hp
c3RvcnkvQ2FjaGVkRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBACiAg
ICAgLCBtX2RvY3VtZW50TG9hZGVyKGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSkK
ICAgICAsIG1fdmlldyhmcmFtZS0+dmlldygpKQogICAgICwgbV9tb3VzZVByZXNzTm9kZShmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPm1vdXNlUHJlc3NOb2RlKCkpCi0gICAgLCBtX3VybChmcmFtZS0+
bG9hZGVyKCktPnVybCgpKQorICAgICwgbV91cmwoZnJhbWUtPmRvY3VtZW50KCktPnVybCgpKQog
ICAgICwgbV9pc01haW5GcmFtZSghZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpCiB7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCShyZXZpc2lvbiA3NjcwMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA5Myw3ICsyMDkz
LDcgQEAKICAgICAvLyB0byBkZWZpbmUgd2hlbiBjb250cm9scyBnZXQgdGhlIHRpbnQgYW5kIHRv
IGNhbGwgdGhpcyBmdW5jdGlvbiB3aGVuIHRoYXQgY2hhbmdlcy4KICAgICAKICAgICAvLyBPcHRp
bWl6ZSB0aGUgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYnJpbmcgYSB3aW5kb3cgdG8gdGhlIGZyb250
IHdoaWxlIGl0J3Mgc3RpbGwgZW1wdHkuCi0gICAgaWYgKCFtX2ZyYW1lIHx8IG1fZnJhbWUtPmxv
YWRlcigpLT51cmwoKS5pc0VtcHR5KCkpCisgICAgaWYgKCFtX2ZyYW1lIHx8IG1fZnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCht
X2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKSAmJiBtX2ZyYW1lLT5jb250ZW50UmVuZGVyZXIoKS0+
dGhlbWUoKS0+c3VwcG9ydHNDb250cm9sVGludHMoKSkgfHwgaGFzQ3VzdG9tU2Nyb2xsYmFycygp
KSAgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiA3NjcwMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzOSw3ICszMzksNyBAQAog
CiAjaWYgRU5BQkxFKERBVEFCQVNFKQogICAgICAgICAvLyBJZiB3ZSdyZSBuYXZpZ2F0aW5nIHRo
ZSBoaXN0b3J5IHZpYSBhIGZyYWdtZW50IG9uIHRoZSBzYW1lIGRvY3VtZW50LCB0aGVuIHdlIGRv
IG5vdCB3YW50IHRvIHN0b3AgZGF0YWJhc2VzLgotICAgICAgICBjb25zdCBLVVJMJiBjdXJyZW50
VVJMID0gbV9tYWluRnJhbWUtPmxvYWRlcigpLT51cmwoKTsKKyAgICAgICAgY29uc3QgS1VSTCYg
Y3VycmVudFVSTCA9IG1fbWFpbkZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICAgICAgY29u
c3QgS1VSTCYgbmV3VVJMID0gaXRlbS0+dXJsKCk7CiAgICAgCiAgICAgICAgIGlmIChuZXdVUkwu
aGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgJiYgZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmll
cihjdXJyZW50VVJMLCBuZXdVUkwpKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAJKHJl
dmlzaW9uIDc2NzAxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDcgKzUxLDcgQEAKIHsKICAgICBBU1NFUlQobV9mcmFtZSk7CiAKLSAg
ICBjb25zdCBLVVJMJiB1cmwgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCk7CisgICAgY29uc3Qg
S1VSTCYgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgaWYgKCF1cmwuaXNW
YWxpZCgpKQogICAgICAgICByZXR1cm4gYmxhbmtVUkwoKTsgLy8gVXNlICJhYm91dDpibGFuayIg
d2hpbGUgdGhlIHBhZ2UgaXMgc3RpbGwgbG9hZGluZyAoYmVmb3JlIHdlIGhhdmUgYSBmcmFtZSku
CiAKQEAgLTE2Nyw3ICsxNjcsNyBAQAogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0
dXJuOwotICAgIEtVUkwgdXJsID0gbV9mcmFtZS0+bG9hZGVyKCktPnVybCgpOworICAgIEtVUkwg
dXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgaWYgKCF1cmwuc2V0UHJvdG9j
b2wocHJvdG9jb2wpKSB7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJu
OwpAQCAtMTc5LDcgKzE3OSw3IEBACiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1
cm47Ci0gICAgS1VSTCB1cmwgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCk7CisgICAgS1VSTCB1
cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICB1cmwuc2V0SG9zdEFuZFBvcnQo
aG9zdCk7CiAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPnNldExvY2F0aW9uKHVybC5zdHJpbmco
KSwgYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdyk7CiB9CkBAIC0xODgsNyArMTg4LDcgQEAKIHsK
ICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBLVVJMIHVybCA9IG1fZnJh
bWUtPmxvYWRlcigpLT51cmwoKTsKKyAgICBLVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCkt
PnVybCgpOwogICAgIHVybC5zZXRIb3N0KGhvc3RuYW1lKTsKICAgICBtX2ZyYW1lLT5kb21XaW5k
b3coKS0+c2V0TG9jYXRpb24odXJsLnN0cmluZygpLCBhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93
KTsKIH0KQEAgLTE5Nyw3ICsxOTcsNyBAQAogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAg
cmV0dXJuOwotICAgIEtVUkwgdXJsID0gbV9mcmFtZS0+bG9hZGVyKCktPnVybCgpOworICAgIEtV
UkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgaW50IHBvcnQgPSBwb3J0
U3RyaW5nLnRvSW50KCk7CiAgICAgaWYgKHBvcnQgPCAwIHx8IHBvcnQgPiAweEZGRkYpCiAgICAg
ICAgIHVybC5yZW1vdmVQb3J0KCk7CkBAIC0yMTAsNyArMjEwLDcgQEAKIHsKICAgICBpZiAoIW1f
ZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBLVVJMIHVybCA9IG1fZnJhbWUtPmxvYWRlcigp
LT51cmwoKTsKKyAgICBLVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAg
IHVybC5zZXRQYXRoKHBhdGhuYW1lKTsKICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+c2V0TG9j
YXRpb24odXJsLnN0cmluZygpLCBhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93KTsKIH0KQEAgLTIx
OSw3ICsyMTksNyBAQAogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAg
IEtVUkwgdXJsID0gbV9mcmFtZS0+bG9hZGVyKCktPnVybCgpOworICAgIEtVUkwgdXJsID0gbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldFF1ZXJ5KHNlYXJjaCk7CiAgICAg
bV9mcmFtZS0+ZG9tV2luZG93KCktPnNldExvY2F0aW9uKHVybC5zdHJpbmcoKSwgYWN0aXZlV2lu
ZG93LCBmaXJzdFdpbmRvdyk7CiB9CkBAIC0yMjgsNyArMjI4LDcgQEAKIHsKICAgICBpZiAoIW1f
ZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBLVVJMIHVybCA9IG1fZnJhbWUtPmxvYWRlcigp
LT51cmwoKTsKKyAgICBLVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAg
IFN0cmluZyBvbGRGcmFnbWVudElkZW50aWZpZXIgPSB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCk7
CiAgICAgU3RyaW5nIG5ld0ZyYWdtZW50SWRlbnRpZmllciA9IGhhc2g7CiAgICAgaWYgKGhhc2hb
MF0gPT0gJyMnKQpAQCAtMjY4LDcgKzI2OCw3IEBACiAgICAgICAgIHRhcmdldFdpbmRvdy0+cHJp
bnRFcnJvck1lc3NhZ2UodGFyZ2V0V2luZG93LT5jcm9zc0RvbWFpbkFjY2Vzc0Vycm9yTWVzc2Fn
ZShhY3RpdmVXaW5kb3cpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAocHJvdG9j
b2xJc0phdmFTY3JpcHQobV9mcmFtZS0+bG9hZGVyKCktPnVybCgpKSkKKyAgICBpZiAocHJvdG9j
b2xJc0phdmFTY3JpcHQobV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpKQogICAgICAgICByZXR1
cm47CiAgICAgbV9mcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLT5zY2hlZHVsZVJlZnJlc2go
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50LmNwcAkocmV2aXNpb24gNzY3MDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5JbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBACiAgICAg
S1VSTCBjb21wbGV0ZVVSTCA9IGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCk7CiAgICAgYm9v
bCBmb3VuZFNlbGZSZWZlcmVuY2UgPSBmYWxzZTsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IGRv
Y3VtZW50KCktPmZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnBhcmVudCgp
KSB7Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGZyYW1lLT5s
b2FkZXIoKS0+dXJsKCksIGNvbXBsZXRlVVJMKSkgeworICAgICAgICBpZiAoZXF1YWxJZ25vcmlu
Z0ZyYWdtZW50SWRlbnRpZmllcihmcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCksIGNvbXBsZXRlVVJM
KSkgewogICAgICAgICAgICAgaWYgKGZvdW5kU2VsZlJlZmVyZW5jZSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBmb3VuZFNlbGZSZWZlcmVuY2UgPSB0cnVlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFzZS5jcHAJKHJl
dmlzaW9uIDc2NzAxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVFbGVtZW50QmFz
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgwLDcgKzgwLDcgQEAKICAgICAvLyBCdXQgd2UgZG9u
J3QgYWxsb3cgbW9yZSB0aGFuIG9uZS4KICAgICBib29sIGZvdW5kU2VsZlJlZmVyZW5jZSA9IGZh
bHNlOwogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsgZnJhbWU7
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+cGFyZW50KCkpIHsKLSAgICAgICAgaWYgKGVxdWFsSWdu
b3JpbmdGcmFnbWVudElkZW50aWZpZXIoZnJhbWUtPmxvYWRlcigpLT51cmwoKSwgY29tcGxldGVV
UkwpKSB7CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGZyYW1l
LT5kb2N1bWVudCgpLT51cmwoKSwgY29tcGxldGVVUkwpKSB7CiAgICAgICAgICAgICBpZiAoZm91
bmRTZWxmUmVmZXJlbmNlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIGZvdW5kU2VsZlJlZmVyZW5jZSA9IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAJKHJldmlzaW9uIDc2NzAxKQorKysgU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2
Nyw3ICsxMzY3LDcgQEAKIAogS1VSTCBJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdGVkVVJMKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9pbnNwZWN0ZWRQYWdlLT5tYWluRnJhbWUoKS0+bG9hZGVyKCkt
PnVybCgpOworICAgIHJldHVybiBtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVu
dCgpLT51cmwoKTsKIH0KIAogS1VSTCBJbnNwZWN0b3JBZ2VudDo6aW5zcGVjdGVkVVJMV2l0aG91
dEZyYWdtZW50KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAJKHJldmlzaW9uIDc2NzAxKQorKysgU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNzgsNyArMzc4LDcgQEAKICAgICAgICAgICAgIG5hbWUgPSBmcmFtZS0+b3duZXJF
bGVtZW50KCktPmdldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmlkQXR0cik7CiAgICAgICAgIGZyYW1l
T2JqZWN0LT5zZXRTdHJpbmcoIm5hbWUiLCBuYW1lKTsKICAgICB9Ci0gICAgZnJhbWVPYmplY3Qt
PnNldFN0cmluZygidXJsIiwgZnJhbWUtPmxvYWRlcigpLT51cmwoKS5zdHJpbmcoKSk7CisgICAg
ZnJhbWVPYmplY3QtPnNldFN0cmluZygidXJsIiwgZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0
cmluZygpKTsKICAgICByZXR1cm4gZnJhbWVPYmplY3Q7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gNzY3MDIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MzUsMTIgKzYzNSw2
IEBACiAgICAgbV9mcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLT5zY2hlZHVsZVJlZGlyZWN0
KGRlbGF5LCB1cmwpOwogfQogCi1jb25zdCBLVVJMJiBGcmFtZUxvYWRlcjo6dXJsKCkgY29uc3QK
LXsKLSAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7Ci0gICAgcmV0dXJuIG1fZnJhbWUt
PmRvY3VtZW50KCktPnVybCgpOwotfQotCiB2b2lkIEZyYW1lTG9hZGVyOjpzZXRPdXRnb2luZ1Jl
ZmVycmVyKGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICBLVVJMIG91dGdvaW5nUmVmZXJyZXIodXJs
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5j
cHAJKHJldmlzaW9uIDc2NzAxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25T
Y2hlZHVsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsMTEgKzE3OCwxMCBAQAogICAgIHsK
ICAgICAgICAgVXNlckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcih3YXNVc2VyR2Vz
dHVyZSgpID8gRGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IERlZmluaXRlbHlOb3RQ
cm9jZXNzaW5nVXNlckdlc3R1cmUpOwogCi0gICAgICAgIEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBm
cmFtZS0+bG9hZGVyKCk7CiAgICAgICAgIGlmICghbV9oaXN0b3J5U3RlcHMpIHsKICAgICAgICAg
ICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgZ28oMCkgZnJvbSBhIGZyYW1lIC0+IHJlbG9hZCBvbmx5
IHRoZSBmcmFtZQogICAgICAgICAgICAgLy8gVG8gZm9sbG93IEZpcmVmb3ggYW5kIElFJ3MgYmVo
YXZpb3IsIGhpc3RvcnkgcmVsb2FkIGNhbiBvbmx5IG5hdmlnYXRlIHRoZSBzZWxmIGZyYW1lLgot
ICAgICAgICAgICAgbG9hZGVyLT51cmxTZWxlY3RlZChsb2FkZXItPnVybCgpLCAiX3NlbGYiLCAw
LCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCksIFNlbmRSZWZlcnJlcik7Cisg
ICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCktPnVybFNlbGVjdGVkKGZyYW1lLT5kb2N1bWVudCgp
LT51cmwoKSwgIl9zZWxmIiwgMCwgbG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgp
LCBTZW5kUmVmZXJyZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IC8vIGdvKGkhPTApIGZyb20gYSBmcmFtZSBuYXZpZ2F0ZXMgaW50byB0aGUgaGlzdG9yeSBvZiB0
aGUgZnJhbWUgb25seSwKQEAgLTMyMiw3ICszMjEsNyBAQAogICAgIC8vIElmIHRoZSBVUkwgd2Un
cmUgZ29pbmcgdG8gbmF2aWdhdGUgdG8gaXMgdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnQgb25lLCBl
eGNlcHQgZm9yIHRoZQogICAgIC8vIGZyYWdtZW50IHBhcnQsIHdlIGRvbid0IG5lZWQgdG8gc2No
ZWR1bGUgdGhlIGxvY2F0aW9uIGNoYW5nZS4KICAgICBLVVJMIHBhcnNlZFVSTChQYXJzZWRVUkxT
dHJpbmcsIHVybCk7Ci0gICAgaWYgKHBhcnNlZFVSTC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSAm
JiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKGxvYWRlci0+dXJsKCksIHBhcnNlZFVS
TCkpIHsKKyAgICBpZiAocGFyc2VkVVJMLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpICYmIGVxdWFs
SWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIobV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCksIHBh
cnNlZFVSTCkpIHsKICAgICAgICAgbG9hZGVyLT5jaGFuZ2VMb2NhdGlvbihzZWN1cml0eU9yaWdp
biwgbG9hZGVyLT5jb21wbGV0ZVVSTCh1cmwpLCByZWZlcnJlciwgbG9ja0hpc3RvcnksIGxvY2tC
YWNrRm9yd2FyZExpc3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzU5LDcgKzM1OCw3
IEBACiB7CiAgICAgaWYgKCFzaG91bGRTY2hlZHVsZU5hdmlnYXRpb24oKSkKICAgICAgICAgcmV0
dXJuOwotICAgIGNvbnN0IEtVUkwmIHVybCA9IG1fZnJhbWUtPmxvYWRlcigpLT51cmwoKTsKKyAg
ICBjb25zdCBLVVJMJiB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBpZiAo
dXJsLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDc2NzAxKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIzLDcgKzMyMyw3IEBACiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+cGFnZSgp
KQogICAgICAgICAgICAgYWRkVmlzaXRlZExpbmsocGFnZSwgaGlzdG9yeVVSTCk7CiAKLSAgICAg
ICAgaWYgKCFmcmFtZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+ZGlkQ3JlYXRlR2xvYmFsSGlz
dG9yeUVudHJ5KCkgJiYgZnJhbWVMb2FkZXItPmRvY3VtZW50TG9hZGVyKCktPnVucmVhY2hhYmxl
VVJMKCkuaXNFbXB0eSgpICYmICFmcmFtZUxvYWRlci0+dXJsKCkuaXNFbXB0eSgpKQorICAgICAg
ICBpZiAoIWZyYW1lTG9hZGVyLT5kb2N1bWVudExvYWRlcigpLT5kaWRDcmVhdGVHbG9iYWxIaXN0
b3J5RW50cnkoKSAmJiBmcmFtZUxvYWRlci0+ZG9jdW1lbnRMb2FkZXIoKS0+dW5yZWFjaGFibGVV
UkwoKS5pc0VtcHR5KCkgJiYgIW1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIGZyYW1lTG9hZGVyLT5jbGllbnQoKS0+dXBkYXRlR2xvYmFsSGlzdG9yeVJl
ZGlyZWN0TGlua3MoKTsKICAgICB9CiB9CkBAIC0zNjUsNyArMzY1LDcgQEAKICAgICAgICAgaWYg
KFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCkpCiAgICAgICAgICAgICBhZGRWaXNpdGVkTGlu
ayhwYWdlLCBoaXN0b3J5VVJMKTsKIAotICAgICAgICBpZiAoIW1fZnJhbWUtPmxvYWRlcigpLT5k
b2N1bWVudExvYWRlcigpLT5kaWRDcmVhdGVHbG9iYWxIaXN0b3J5RW50cnkoKSAmJiBtX2ZyYW1l
LT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+dW5yZWFjaGFibGVVUkwoKS5pc0VtcHR5KCkg
JiYgIW1fZnJhbWUtPmxvYWRlcigpLT51cmwoKS5pc0VtcHR5KCkpCisgICAgICAgIGlmICghbV9m
cmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPmRpZENyZWF0ZUdsb2JhbEhpc3RvcnlF
bnRyeSgpICYmIG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT51bnJlYWNoYWJs
ZVVSTCgpLmlzRW1wdHkoKSAmJiAhbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuaXNFbXB0eSgp
KQogICAgICAgICAgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT51cGRhdGVHbG9iYWxI
aXN0b3J5UmVkaXJlY3RMaW5rcygpOwogICAgIH0KIH0KQEAgLTQ1OSw3ICs0NTksNyBAQAogCiB2
b2lkIEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCkK
IHsKLSAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCktPnVybCgpLmlzRW1wdHkoKSkKKyAgICBpZiAo
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5zZXR0aW5ncygpOwpAQCAtNDcwLDcg
KzQ3MCw3IEBACiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhZGRWaXNp
dGVkTGluayhwYWdlLCBtX2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkpOworICAgIGFkZFZpc2l0ZWRM
aW5rKHBhZ2UsIG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpKTsKIH0KIAogdm9pZCBIaXN0b3J5
Q29udHJvbGxlcjo6dXBkYXRlRm9yRnJhbWVMb2FkQ29tcGxldGVkKCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAkocmV2aXNpb24gNzY3MDIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
Nyw3ICs2Nyw3IEBACiB2b2lkIERvY3VtZW50V3JpdGVyOjpyZXBsYWNlRG9jdW1lbnQoY29uc3Qg
U3RyaW5nJiBzb3VyY2UpCiB7CiAgICAgbV9mcmFtZS0+bG9hZGVyKCktPnN0b3BBbGxMb2FkZXJz
KCk7Ci0gICAgYmVnaW4obV9mcmFtZS0+bG9hZGVyKCktPnVybCgpLCB0cnVlLCBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICBiZWdpbihtX2ZyYW1lLT5kb2N1bWVu
dCgpLT51cmwoKSwgdHJ1ZSwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7
CiAKICAgICBpZiAoIXNvdXJjZS5pc051bGwoKSkgewogICAgICAgICBpZiAoIW1fcmVjZWl2ZWRE
YXRhKSB7CkBAIC0yNDUsNyArMjQ1LDcgQEAKIAogU3RyaW5nIERvY3VtZW50V3JpdGVyOjpkZXBy
ZWNhdGVkRnJhbWVFbmNvZGluZygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZnJhbWUtPmxvYWRl
cigpLT51cmwoKS5pc0VtcHR5KCkgPyBtX2VuY29kaW5nIDogZW5jb2RpbmcoKTsKKyAgICByZXR1
cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuaXNFbXB0eSgpID8gbV9lbmNvZGluZyA6IGVu
Y29kaW5nKCk7CiB9CiAKIHZvaWQgRG9jdW1lbnRXcml0ZXI6OnNldERvY3VtZW50V2FzTG9hZGVk
QXNQYXJ0T2ZOYXZpZ2F0aW9uKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
CShyZXZpc2lvbiA3NjcwMikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNjcsNyArMjY3LDYgQEAKIAogICAgIHZvaWQgZnJhbWVEZXRh
Y2hlZCgpOwogCi0gICAgY29uc3QgS1VSTCYgdXJsKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRPdXRn
b2luZ1JlZmVycmVyKGNvbnN0IEtVUkwmKTsKIAogICAgIHZvaWQgbG9hZERvbmUoKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cJKHJldmlzaW9uIDc2NzEzKQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDEtMjYgIE5hdGUgQ2hhcGluICA8
amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVc2UgRG9jdW1lbnQ6OnVybCgpIGluc3RlYWQgb2YgRnJhbWVMb2FkZXI6
OnVybCgpLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDExNjUKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVwbGFjZVN0YXRl
V2l0aGluUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERpZFBvcFN0YXRlV2l0aGluUGFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OnVybCk6CisKIDIwMTEt
MDEtMjUgIEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAJKHJldmlzaW9uIDc2NzAxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxMiw3ICszMTIsNyBAQAogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xp
ZW50KCkuZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHdlYlBhZ2UsIG1fZnJhbWUs
IFNhbWVEb2N1bWVudE5hdmlnYXRpb25BbmNob3JOYXZpZ2F0aW9uLCB1c2VyRGF0YSk7CiAKICAg
ICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShtX2ZyYW1lLT5m
cmFtZUlEKCksIFNhbWVEb2N1bWVudE5hdmlnYXRpb25BbmNob3JOYXZpZ2F0aW9uLCBtX2ZyYW1l
LT5jb3JlRnJhbWUoKS0+bG9hZGVyKCktPnVybCgpLnN0cmluZygpLCBJbmplY3RlZEJ1bmRsZVVz
ZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSht
X2ZyYW1lLT5mcmFtZUlEKCksIFNhbWVEb2N1bWVudE5hdmlnYXRpb25BbmNob3JOYXZpZ2F0aW9u
LCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCksIEluamVj
dGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogfQogCiB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKQpA
QCAtMzI3LDcgKzMyNyw3IEBACiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGll
bnQoKS5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUod2ViUGFnZSwgbV9mcmFtZSwg
U2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVB1c2gsIHVzZXJEYXRhKTsKIAogICAg
IC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgotICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKG1fZnJhbWUtPmZy
YW1lSUQoKSwgU2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVB1c2gsIG1fZnJhbWUt
PmNvcmVGcmFtZSgpLT5sb2FkZXIoKS0+dXJsKCkuc3RyaW5nKCksIEluamVjdGVkQnVuZGxlVXNl
ck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKG1f
ZnJhbWUtPmZyYW1lSUQoKSwgU2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVB1c2gs
IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSwgSW5qZWN0
ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiB9CiAKIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZSgp
CkBAIC0zNDIsNyArMzQyLDcgQEAKICAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNs
aWVudCgpLmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh3ZWJQYWdlLCBtX2ZyYW1l
LCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uU2Vzc2lvblN0YXRlUmVwbGFjZSwgdXNlckRhdGEpOwog
CiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUobV9mcmFt
ZS0+ZnJhbWVJRCgpLCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uU2Vzc2lvblN0YXRlUmVwbGFjZSwg
bV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLT51cmwoKS5zdHJpbmcoKSwgSW5qZWN0ZWRC
dW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9y
RnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uU2Vzc2lvblN0
YXRlUmVwbGFjZSwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPnVybCgpLnN0cmlu
ZygpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsK
IH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRQb3BTdGF0ZVdpdGhp
blBhZ2UoKQpAQCAtMzU3LDcgKzM1Nyw3IEBACiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVM
b2FkZXJDbGllbnQoKS5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUod2ViUGFnZSwg
bV9mcmFtZSwgU2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVBvcCwgdXNlckRhdGEp
OwogCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCi0gICAgd2ViUGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUobV9m
cmFtZS0+ZnJhbWVJRCgpLCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uU2Vzc2lvblN0YXRlUG9wLCBt
X2ZyYW1lLT5jb3JlRnJhbWUoKS0+bG9hZGVyKCktPnVybCgpLnN0cmluZygpLCBJbmplY3RlZEJ1
bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JG
cmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIFNhbWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9uU3Rh
dGVQb3AsIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSwg
SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiB9CiAK
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbENsb3NlKCkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkocmV2aXNp
b24gNzY3MDEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzQsNyArMzM0LDcgQEAKICAgICBpZiAoIW1fY29yZUZy
YW1lKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICByZXR1cm4gbV9jb3JlRnJhbWUt
PmxvYWRlcigpLT51cmwoKS5zdHJpbmcoKTsKKyAgICByZXR1cm4gbV9jb3JlRnJhbWUtPmRvY3Vt
ZW50KCktPnVybCgpLnN0cmluZygpOwogfQogCiBTdHJpbmcgV2ViRnJhbWU6OmlubmVyVGV4dCgp
IGNvbnN0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>