<?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>58378</bug_id>
          
          <creation_ts>2011-04-12 14:41:20 -0700</creation_ts>
          <short_desc>Add WebCore::Setting to block displaying and/or running insecure content on secure pages</short_desc>
          <delta_ts>2022-02-28 04:01:52 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Chris Evans">cevans</assigned_to>
          <cc>abarth</cc>
    
    <cc>cevans</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>jrick</cc>
    
    <cc>loganaden</cc>
    
    <cc>loneowais</cc>
    
    <cc>marco</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>384397</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-12 14:41:20 -0700</bug_when>
    <thetext>Add WebCore::Setting to block running insecure content on secure pages</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384399</commentid>
    <comment_count>1</comment_count>
      <attachid>89276</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-12 14:41:43 -0700</bug_when>
    <thetext>Created attachment 89276
Work in progress (no tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395468</commentid>
    <comment_count>2</comment_count>
      <attachid>91725</attachid>
    <who name="Chris Evans">cevans</who>
    <bug_when>2011-04-29 13:35:20 -0700</bug_when>
    <thetext>Created attachment 91725
Patch

Doing this one in pieces -- piece #1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395476</commentid>
    <comment_count>3</comment_count>
      <attachid>91725</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-29 13:46:00 -0700</bug_when>
    <thetext>Comment on attachment 91725
Patch

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

Tests?  Like many WebCore::Settings, this is a PITA to test.  There&apos;s a layoutTestController method for overriding preferences, so one approach is to wire this setting up to a private WebKit setting on mac.

&gt; Source/WebCore/loader/MainResourceLoader.cpp:217
&gt; +    Frame* top = m_frame-&gt;tree()-&gt;top();
&gt; +    if (top != m_frame) {
&gt; +        if (!frameLoader()-&gt;checkIfDisplayInsecureContent(top-&gt;document()-&gt;securityOrigin(), newRequest.url())) {
&gt; +            cancel();
&gt; +            return;
&gt; +        }
&gt; +    }
&gt; +
&gt;      ResourceLoader::willSendRequest(newRequest, redirectResponse);

The problem is that willSendRequest can change the URL.  Can we move this check back after willSendRequest?  Also, I&apos;m not 100% sure how to cancel the request at this stage.  If you look below, redirectResponse.isNull seems to be the &quot;is canceled&quot; bit.

&gt; Source/WebCore/loader/FrameLoader.h:260
&gt; +    // These two return false if policy dictates that the resource load should
&gt; +    // not continue.

I&apos;d skip this comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395518</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Evans">cevans</who>
    <bug_when>2011-04-29 14:31:19 -0700</bug_when>
    <thetext>- Tests. Yep! Definitely going to wire in the new settings and do tests. I was planning on doing this in an immediate follow-up change in the same way that we handled the &quot;file access from files&quot; setting. It&apos;s nice to separate the noise of all the platform-specific test setting wiring.

- FrameLoader.h comment: removed as requested.

- Canceling in MainResourceLoader.cpp.
Do we care that willSendRequest() can change the URL? It seems that we shouldn&apos;t, as:
a) The main case for that looks to be a redirect, which is a not a situation we&apos;ll hit since we&apos;re stopping the request going out.
b) The cancel() machinery isn&apos;t interested in the URL. It does seem to gracefully handle cancellation at any point, including this one.

The reason I moved the check up to before willSendRequest() is that it seems perverse to call willSendRequest() when in fact we want to be sure that we won&apos;t. Without the move, the network inspector _does_ show a canceled HTTP load for the resource. It doesn&apos;t appear that the resource fetch ever hits the network, but this is not something we wish to risk. I think it&apos;s safest if the callbacks in willSendRequest() never fire.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395521</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-29 14:35:53 -0700</bug_when>
    <thetext>We probably need to check both before and after willSendRequest in that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395523</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-29 14:36:56 -0700</bug_when>
    <thetext>&gt; - Tests. Yep! Definitely going to wire in the new settings and do tests. I was planning on doing this in an immediate follow-up change in the same way that we handled the &quot;file access from files&quot; setting. It&apos;s nice to separate the noise of all the platform-specific test setting wiring.

I think that&apos;s ok, but be warned that I&apos;ll start secretly removing chairs from your office until you write the tests.  ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395560</commentid>
    <comment_count>7</comment_count>
      <attachid>91751</attachid>
    <who name="Chris Evans">cevans</who>
    <bug_when>2011-04-29 15:30:49 -0700</bug_when>
    <thetext>Created attachment 91751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395569</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Evans">cevans</who>
    <bug_when>2011-04-29 15:35:52 -0700</bug_when>
    <thetext>Re: &quot;We probably need to check both before and after willSendRequest in that case.&quot;

I believe the current patch is correct. If we take a redirect, we&apos;ll re-enter willSendRequest (and again and again etc. as we take more and more redirects). I confirmed this with a bit of debugging.

So we&apos;ll always do the check before sending out the request for every redirect in the chain (and block and stop at the first instance of any https -&gt; http transition).

Of course, this is all indicating a great test. I don&apos;t think the existing mixed-content-load tests check for the https -&gt; &lt;iframe src=&quot;https&quot;&gt; -&gt; 302 http case. I will add coverage for that alongside the upcoming new tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395571</commentid>
    <comment_count>9</comment_count>
      <attachid>91751</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-29 15:37:25 -0700</bug_when>
    <thetext>Comment on attachment 91751
Patch

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

&gt; Source/WebCore/ChangeLog:6
&gt; +        Add WebCore::Setting to block displaying and/or running insecure content on secure pages
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=58378

It would be nice to add information to the ChangeLog about how you plan to wire up tests in a followup patch.

&gt; Source/WebCore/loader/MainResourceLoader.cpp:215
&gt; +    Frame* top = m_frame-&gt;tree()-&gt;top();
&gt; +    if (top != m_frame) {
&gt; +        if (!frameLoader()-&gt;checkIfDisplayInsecureContent(top-&gt;document()-&gt;securityOrigin(), newRequest.url())) {
&gt; +            cancel();
&gt; +            return;
&gt; +        }
&gt; +    }

I thought we decided to do this check both before and after willSendRequest...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395579</commentid>
    <comment_count>10</comment_count>
      <attachid>91751</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-04-29 15:43:53 -0700</bug_when>
    <thetext>Comment on attachment 91751
Patch

Ok.  That sounds reasonable.  I look forward to the tests.  (The comments above would also be great to add to the ChangeLog.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395601</commentid>
    <comment_count>11</comment_count>
      <attachid>91762</attachid>
    <who name="Chris Evans">cevans</who>
    <bug_when>2011-04-29 16:08:36 -0700</bug_when>
    <thetext>Created attachment 91762
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395690</commentid>
    <comment_count>12</comment_count>
      <attachid>91762</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-29 18:16:43 -0700</bug_when>
    <thetext>Comment on attachment 91762
Patch

Clearing flags on attachment: 91762

Committed r85378: &lt;http://trac.webkit.org/changeset/85378&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395691</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-29 18:16:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395693</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Evans">cevans</who>
    <bug_when>2011-04-29 18:19:16 -0700</bug_when>
    <thetext>Re-opening; the new option per-platform wiring and tests are in-progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>395722</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-04-29 18:59:10 -0700</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 91762:

fast/workers/storage/use-same-database-in-page-and-workers.html bug 50995 (author: dumi@chromium.org)
security/block-test.html bug 55741 (authors: beidson@apple.com, mrowe@apple.com, and sam@webkit.org)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400962</commentid>
    <comment_count>16</comment_count>
      <attachid>92901</attachid>
    <who name="Chris Evans">cevans</who>
    <bug_when>2011-05-09 18:19:19 -0700</bug_when>
    <thetext>Created attachment 92901
Plumbing...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400963</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Evans">cevans</who>
    <bug_when>2011-05-09 18:19:59 -0700</bug_when>
    <thetext>Using EWS to make sure plumbing in the settings hasn&apos;t bust the ports... not soliciting review until they&apos;re green :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401000</commentid>
    <comment_count>18</comment_count>
      <attachid>92909</attachid>
    <who name="Chris Evans">cevans</who>
    <bug_when>2011-05-09 19:36:56 -0700</bug_when>
    <thetext>Created attachment 92909
Plumbing...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401073</commentid>
    <comment_count>19</comment_count>
      <attachid>92909</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-05-09 23:19:18 -0700</bug_when>
    <thetext>Comment on attachment 92909
Plumbing...

Attachment 92909 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/8646859</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401557</commentid>
    <comment_count>20</comment_count>
      <attachid>93024</attachid>
    <who name="Chris Evans">cevans</who>
    <bug_when>2011-05-10 15:16:00 -0700</bug_when>
    <thetext>Created attachment 93024
Plumbing #1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401560</commentid>
    <comment_count>21</comment_count>
      <attachid>93024</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-10 15:20:44 -0700</bug_when>
    <thetext>Comment on attachment 93024
Plumbing #1

This looks fine, but we need a changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401623</commentid>
    <comment_count>22</comment_count>
      <attachid>93041</attachid>
    <who name="Chris Evans">cevans</who>
    <bug_when>2011-05-10 16:26:31 -0700</bug_when>
    <thetext>Created attachment 93041
Plumbing #1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401681</commentid>
    <comment_count>23</comment_count>
      <attachid>93041</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-10 18:24:27 -0700</bug_when>
    <thetext>Comment on attachment 93041
Plumbing #1

Clearing flags on attachment: 93041

Committed r86201: &lt;http://trac.webkit.org/changeset/86201&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401682</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-05-10 18:24:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401683</commentid>
    <comment_count>25</comment_count>
    <who name="Chris Evans">cevans</who>
    <bug_when>2011-05-10 18:25:28 -0700</bug_when>
    <thetext>More to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>401700</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-10 18:48:23 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/86201 might have broken SnowLeopard Intel Release (Build)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402214</commentid>
    <comment_count>27</comment_count>
      <attachid>93167</attachid>
    <who name="Chris Evans">cevans</who>
    <bug_when>2011-05-11 13:29:09 -0700</bug_when>
    <thetext>Created attachment 93167
Plumbing #2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402301</commentid>
    <comment_count>28</comment_count>
      <attachid>93167</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-11 14:44:51 -0700</bug_when>
    <thetext>Comment on attachment 93167
Plumbing #2

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

&gt; Source/WebKit/qt/Api/qwebsettings.h:82
&gt; -        HyperlinkAuditingEnabled
&gt; +        HyperlinkAuditingEnabled,
&gt; +        PagesCanDisplayInsecureContent,
&gt; +        PagesCanRunInsecureContent

We shouldn&apos;t add APIs to Qt without approval from the Qt folks.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:3289
&gt; +    settings-&gt;setAllowDisplayOfInsecureContent(enableDisplayOfInsecureContent);
&gt; +    settings-&gt;setAllowRunningOfInsecureContent(enableRunningOfInsecureContent);

GTK, I&apos;m less sure what they&apos;d like to do.  I&apos;ll CC folks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402302</commentid>
    <comment_count>29</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-11 14:45:31 -0700</bug_when>
    <thetext>Thoughts on Qt / GTK settings APIs?
https://bugs.webkit.org/attachment.cgi?id=93167&amp;action=review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402304</commentid>
    <comment_count>30</comment_count>
    <who name="Chris Evans">cevans</who>
    <bug_when>2011-05-11 14:49:11 -0700</bug_when>
    <thetext>I&apos;m basically copying the CL for adding the &quot;allow file access from files&quot; setting. We did help out the Qt / GTK folks in that CL.

I&apos;m fine to not touch various ports, but won&apos;t that break the layout tests right out of the door due to missing layoutTestController.setAllowRunningOfInsecureContent() ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402307</commentid>
    <comment_count>31</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-11 14:53:12 -0700</bug_when>
    <thetext>&gt; I&apos;m fine to not touch various ports, but won&apos;t that break the layout tests right out of the door due to missing layoutTestController.setAllowRunningOfInsecureContent() ?

Yeah, the two choices are to skip the tests on Qt and GTK or to implement the settings API for them.  In this case, we probably want to implement the API.  I just want to make sure we&apos;re making the choice that folks interested in those ports want us to make.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402325</commentid>
    <comment_count>32</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-05-11 15:12:18 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; &gt; I&apos;m fine to not touch various ports, but won&apos;t that break the layout tests right out of the door due to missing layoutTestController.setAllowRunningOfInsecureContent() ?
&gt; 
&gt; Yeah, the two choices are to skip the tests on Qt and GTK or to implement the settings API for them.  In this case, we probably want to implement the API.  I just want to make sure we&apos;re making the choice that folks interested in those ports want us to make.

If you wish to have GTK+ pass the tests, but delay the decision about whether or not to add new API, you can simply add more methods to Source/WebKit/gtk/DumpRenderTreeSupportGtk.h class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402497</commentid>
    <comment_count>33</comment_count>
    <who name="Chris Evans">cevans</who>
    <bug_when>2011-05-11 17:54:50 -0700</bug_when>
    <thetext>Given that it&apos;s going to take a while longer to iterate through the EWS bots (GTK in particular is v. slow), I&apos;m tending towards waiting for comment from the QT / GTK ports on the full wiring-in of the new option. It basically just models wiring added to all the other ports.

I&apos;d love to get comment quickly enough to land this tonight or tomorrow. I&apos;m very eager to land the tests for the new blocking :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402511</commentid>
    <comment_count>34</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-11 18:15:50 -0700</bug_when>
    <thetext>What about the approach mrobinson suggests in Comment #32?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402519</commentid>
    <comment_count>35</comment_count>
    <who name="Chris Evans">cevans</who>
    <bug_when>2011-05-11 18:20:07 -0700</bug_when>
    <thetext>All it needs is an aye from a GTK dev and then we can roll with the existing patch and no-one has to revisit later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>402823</commentid>
    <comment_count>36</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-05-12 07:17:56 -0700</bug_when>
    <thetext>
&gt; If you wish to have GTK+ pass the tests, but delay the decision about whether or not to add new API, you can simply add more methods to Source/WebKit/gtk/DumpRenderTreeSupportGtk.h class.

And similarly DumpRenderTreeSupportQt.h/cpp for Qt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403094</commentid>
    <comment_count>37</comment_count>
      <attachid>93326</attachid>
    <who name="Chris Evans">cevans</who>
    <bug_when>2011-05-12 13:10:30 -0700</bug_when>
    <thetext>Created attachment 93326
Plumbing #2

This one should go all green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>403355</commentid>
    <comment_count>38</comment_count>
      <attachid>93326</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-05-12 21:05:16 -0700</bug_when>
    <thetext>Comment on attachment 93326
Plumbing #2

QtWebKit new APIs need discussion in qtwebkit mailing list before anything. Not sure about other ports ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423228</commentid>
    <comment_count>39</comment_count>
      <attachid>91751</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-18 13:33:55 -0700</bug_when>
    <thetext>Comment on attachment 91751
Patch

Cleared Adam Barth&apos;s review+ from obsolete attachment 91751 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423229</commentid>
    <comment_count>40</comment_count>
      <attachid>93024</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-18 13:34:00 -0700</bug_when>
    <thetext>Comment on attachment 93024
Plumbing #1

Cleared Adam Barth&apos;s review+ from obsolete attachment 93024 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476083</commentid>
    <comment_count>41</comment_count>
    <who name="Marco Peereboom">marco</who>
    <bug_when>2011-09-30 07:32:54 -0700</bug_when>
    <thetext>I was in the act of writing a similar patch when I ran across this.  Is there any reason why this isn&apos;t moving forward?  I really really want to be able to disable running remote scripts and downloading remote content.  This is one of the preconditions of BEAST and I want to be able to control that in my browser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476106</commentid>
    <comment_count>42</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-30 08:44:58 -0700</bug_when>
    <thetext>&gt; Is there any reason why this isn&apos;t moving forward?

I think we just got stalled on getting approval from the GTK and Qt folks to add this API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476107</commentid>
    <comment_count>43</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2011-09-30 08:46:48 -0700</bug_when>
    <thetext>(In reply to comment #42)
&gt; &gt; Is there any reason why this isn&apos;t moving forward?
&gt; 
&gt; I think we just got stalled on getting approval from the GTK and Qt folks to add this API.

GTK+ and Qt both have DumpRenderTreeSupport, which is like a hacky version of .internals. This patch can use that and GTK+/Qt API decisions until later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476111</commentid>
    <comment_count>44</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-09-30 08:50:36 -0700</bug_when>
    <thetext>&gt; GTK+ and Qt both have DumpRenderTreeSupport, which is like a hacky version of .internals. This patch can use that and GTK+/Qt API decisions until later.

Sure, or we could just use window.internals itself.  I think marco was asking about exposing this feature to his application, which presumably uses GTK+ or Qt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476113</commentid>
    <comment_count>45</comment_count>
    <who name="Marco Peereboom">marco</who>
    <bug_when>2011-09-30 08:54:47 -0700</bug_when>
    <thetext>&gt; Sure, or we could just use window.internals itself.  I think marco was asking about exposing this feature to his application, which presumably uses GTK+ or Qt.

Right, I use GTK+ and I really want it :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479181</commentid>
    <comment_count>46</comment_count>
    <who name="Loganaden Velvindron">loganaden</who>
    <bug_when>2011-10-06 08:44:07 -0700</bug_when>
    <thetext>That would be really nice to have. It could
allow some nice security features to be developed :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529873</commentid>
    <comment_count>47</comment_count>
    <who name="Marco Peereboom">marco</who>
    <bug_when>2012-01-04 16:26:58 -0800</bug_when>
    <thetext>ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543149</commentid>
    <comment_count>48</comment_count>
    <who name="Marco Peereboom">marco</who>
    <bug_when>2012-01-26 07:33:45 -0800</bug_when>
    <thetext>Don&apos;t want to sound like a nag but is this patch going in?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543301</commentid>
    <comment_count>49</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-26 11:08:55 -0800</bug_when>
    <thetext>It looks like this patch was long-ago abandoned and needs an updated version.  Anyone (not just Chris) could post such.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>554630</commentid>
    <comment_count>50</comment_count>
    <who name="Marco Peereboom">marco</who>
    <bug_when>2012-02-11 09:01:53 -0800</bug_when>
    <thetext>I am willing to redo this patch if there is interest.  I tried it this morning and it isn&apos;t too badly out of whack.

The reason I really believe this should move forward is to be able to stave off things such as the BEAST attack.

So, if I redo the patch to apply to the current trunk does it stand a chance of getting committed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659248</commentid>
    <comment_count>51</comment_count>
    <who name="Owais Lone">loneowais</who>
    <bug_when>2012-06-27 23:25:29 -0700</bug_when>
    <thetext>(In reply to comment #50)
&gt; I am willing to redo this patch if there is interest.  I tried it this morning and it isn&apos;t too badly out of whack.
&gt; 
&gt; The reason I really believe this should move forward is to be able to stave off things such as the BEAST attack.
&gt; 
&gt; So, if I redo the patch to apply to the current trunk does it stand a chance of getting committed?


That would be really nice of you. This is blocking a lot of possible features in Gtk/Qt apps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659254</commentid>
    <comment_count>52</comment_count>
    <who name="Owais Lone">loneowais</who>
    <bug_when>2012-06-27 23:38:04 -0700</bug_when>
    <thetext>Ping!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>660717</commentid>
    <comment_count>53</comment_count>
      <attachid>150237</attachid>
    <who name="Josh Rickmar">jrick</who>
    <bug_when>2012-06-29 12:50:40 -0700</bug_when>
    <thetext>Created attachment 150237
Plumbing #3

Marco asked me to update this patch.  This is my first time doing anything in the WebKit codebase, so forgive me if my patch is wrong (and let me know how to fix it!)  This patch updates the last one and adds the knobs to the GTK API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661462</commentid>
    <comment_count>54</comment_count>
      <attachid>150416</attachid>
    <who name="Josh Rickmar">jrick</who>
    <bug_when>2012-07-02 07:00:52 -0700</bug_when>
    <thetext>Created attachment 150416
Plumbing #3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661463</commentid>
    <comment_count>55</comment_count>
      <attachid>150416</attachid>
    <who name="Josh Rickmar">jrick</who>
    <bug_when>2012-07-02 07:01:25 -0700</bug_when>
    <thetext>Comment on attachment 150416
Plumbing #3

Fixed+updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661480</commentid>
    <comment_count>56</comment_count>
      <attachid>150416</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-02 07:21:08 -0700</bug_when>
    <thetext>Comment on attachment 150416
Plumbing #3

Attachment 150416 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13133109</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661490</commentid>
    <comment_count>57</comment_count>
      <attachid>150416</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-07-02 07:54:46 -0700</bug_when>
    <thetext>Comment on attachment 150416
Plumbing #3

Attachment 150416 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13133113</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661493</commentid>
    <comment_count>58</comment_count>
      <attachid>150422</attachid>
    <who name="Josh Rickmar">jrick</who>
    <bug_when>2012-07-02 08:01:31 -0700</bug_when>
    <thetext>Created attachment 150422
Plumbing #3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661494</commentid>
    <comment_count>59</comment_count>
      <attachid>150422</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-02 08:04:43 -0700</bug_when>
    <thetext>Comment on attachment 150422
Plumbing #3

Attachment 150422 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/13137083</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661506</commentid>
    <comment_count>60</comment_count>
      <attachid>150427</attachid>
    <who name="Josh Rickmar">jrick</who>
    <bug_when>2012-07-02 08:26:38 -0700</bug_when>
    <thetext>Created attachment 150427
Plumbing #3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>661922</commentid>
    <comment_count>61</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-07-02 20:55:56 -0700</bug_when>
    <thetext>You probably need to mention which version these new webkit-gtk settings were introduced in. Other than that, it&apos;s up to the GTK+ port maintainers to take a look at this, but I don&apos;t know if they&apos;re actively working (or accepting new features) into their WebKit1 API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662188</commentid>
    <comment_count>62</comment_count>
    <who name="Marco Peereboom">marco</who>
    <bug_when>2012-07-03 06:56:14 -0700</bug_when>
    <thetext>This knob is pretty important in order to prevent the BEAST attack.  I spoke with some other folks doing GTK based web browsers and basically everyone wants this.  So I&apos;d like to plead with the GTK folk to push this one in.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662226</commentid>
    <comment_count>63</comment_count>
      <attachid>150612</attachid>
    <who name="Josh Rickmar">jrick</who>
    <bug_when>2012-07-03 08:13:57 -0700</bug_when>
    <thetext>Created attachment 150612
Plumbing #3

After some discussion with mrobinson, here&apos;s another patch without any of the DumpRenderTree stuff since it didn&apos;t introduce any new tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662230</commentid>
    <comment_count>64</comment_count>
      <attachid>150427</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-07-03 08:22:16 -0700</bug_when>
    <thetext>Comment on attachment 150427
Plumbing #3

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

If you&apos;d like your patch you be reviewed, when posting it you should change the &quot;r&quot; field to say &quot;r?&quot;

I&apos;m not sure why you&apos;re adding hooks for this into DumpRenderTree, but we talked about that yesterday. Perhaps it would be better to add unit tests for GTK+ in Source/WebKit/gtk/tests.

The final thing is that maybe this should be only a single setting instead of two. Something like allow-display-and-running-of-insecure-content. I&apos;m not sure about that.

&gt; Source/WebKit/gtk/webkit/webkitwebsettings.cpp:1020
&gt; +    * Boolean property to control whether insecure (non-https) images / frames 
&gt; +    * can be loaded from https pages.

Nit: Should be HTTPS not https. It&apos;s probably not necessary to say this a boolean property, you could simply write.

Whether is it possible for pages loaded via HTTPS to display subresources, such as images and frames, from non-HTTPS URLs.

&gt; Source/WebKit/gtk/webkit/webkitwebsettings.cpp:1026
&gt; +                                                         _(&quot;Controls load of non-https display resources from https pages&quot;),

How about:

Whether non-HTTPS resources can display on HTTPS pages.

&gt; Source/WebKit/gtk/webkit/webkitwebsettings.cpp:1034
&gt; +    * Boolean property to control whether insecure (non-https) script / CSS / 
&gt; +    * plug-ins can be loaded from https pages.

Same here you could write something like:

Whether is it possible for pages loaded via HTTPS to run subresources, such as CSS, scripts and plugin, from non-HTTPS URLs.

&gt; Source/WebKit/gtk/webkit/webkitwebsettings.cpp:1040
&gt; +                                                         _(&quot;Controls load of non-https script / plug-in resources from https pages.&quot;),

Whether non-HTTPS resources can run on HTTPS pages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662238</commentid>
    <comment_count>65</comment_count>
    <who name="Marco Peereboom">marco</who>
    <bug_when>2012-07-03 08:31:04 -0700</bug_when>
    <thetext>&gt; The final thing is that maybe this should be only a single setting instead of two. Something like allow-display-and-running-of-insecure-content. I&apos;m not sure about that.

I&apos;d prefer two settings in order to be able to fine tune the behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>662289</commentid>
    <comment_count>66</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-07-03 09:13:12 -0700</bug_when>
    <thetext>(In reply to comment #64)

&gt; I&apos;m not sure why you&apos;re adding hooks for this into DumpRenderTree, but we talked about that yesterday. Perhaps it would be better to add unit tests for GTK+ in Source/WebKit/gtk/tests.

It seems I was wrong about this, but the tests that exist are platform-specific. Not sure what the right approach is...perhaps moving them to a platform independent directory and skipping them on all other platforms.

platform/chromium/http/tests/security/mixedContent/insecure-image-in-main-frame-allowed.html
11:    testRunner.setAllowDisplayOfInsecureContent(true);

platform/chromium/http/tests/security/mixedContent/insecure-iframe-in-main-frame-allowed.html
11:    testRunner.setAllowDisplayOfInsecureContent(true);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663516</commentid>
    <comment_count>67</comment_count>
      <attachid>150931</attachid>
    <who name="Josh Rickmar">jrick</who>
    <bug_when>2012-07-05 06:03:00 -0700</bug_when>
    <thetext>Created attachment 150931
Plumbing #3

No tests on this one, but this includes all the other fixes that have been mentioned.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>679498</commentid>
    <comment_count>68</comment_count>
    <who name="Josh Rickmar">jrick</who>
    <bug_when>2012-07-26 10:42:42 -0700</bug_when>
    <thetext>Bump... can we get another look at this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>680058</commentid>
    <comment_count>69</comment_count>
      <attachid>150931</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-26 20:30:52 -0700</bug_when>
    <thetext>Comment on attachment 150931
Plumbing #3

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

&gt; Source/WebKit/gtk/ChangeLog:3
&gt; +        Reviewed by NOBODY (OOPS!).

Generally, &quot;Reviewed by NOBODY&quot; is placed below bug title and url.

&gt; Source/WebKit/gtk/ChangeLog:5
&gt; +        [GTK] Add WebCore::Setting to block displaying and/or running

There is no &quot;[GTK]&quot; in bug title. Generally, bug title has been written in a line.

&gt; Source/WebKit/gtk/webkit/webkitwebsettings.cpp:1029
&gt; +                                                         TRUE,

Though I&apos;m not export for GTK port, I wonder if WK1 GTK port enables insecure-content by default. Does *TRUE* mean this feature is enabled by default ?

&gt; Source/WebKit/gtk/webkit/webkitwebsettings.cpp:1046
&gt; +                                                         TRUE,

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684201</commentid>
    <comment_count>70</comment_count>
      <attachid>155814</attachid>
    <who name="Josh Rickmar">jrick</who>
    <bug_when>2012-08-01 08:36:23 -0700</bug_when>
    <thetext>Created attachment 155814
Plumbing #3

Cooked up a new patch with Gyuyoung&apos;s suggestions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684202</commentid>
    <comment_count>71</comment_count>
    <who name="Josh Rickmar">jrick</who>
    <bug_when>2012-08-01 08:37:55 -0700</bug_when>
    <thetext>&gt; Though I&apos;m not export for GTK port, I wonder if WK1 GTK port enables insecure-content by default. Does *TRUE* mean this feature is enabled by default ?

That is correct.  True is the default value, and keeps the current behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690203</commentid>
    <comment_count>72</comment_count>
    <who name="Marco Peereboom">marco</who>
    <bug_when>2012-08-08 05:39:50 -0700</bug_when>
    <thetext>Can we please get this in?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755892</commentid>
    <comment_count>73</comment_count>
      <attachid>155814</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-10-31 22:47:27 -0700</bug_when>
    <thetext>Comment on attachment 155814
Plumbing #3

I&apos;m happy to rubber-stamp this Gtk patch.  It looks reasonable.  If Gtk folks disagree, feel free to r-.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756147</commentid>
    <comment_count>74</comment_count>
      <attachid>155814</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-11-01 06:10:28 -0700</bug_when>
    <thetext>Comment on attachment 155814
Plumbing #3

Cannot use the commit-queue unfortunately since the &quot;Since:&quot; annotation is incorrect now. This looks good to me, but API changes need review from at least two GTK+ reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756155</commentid>
    <comment_count>75</comment_count>
      <attachid>155814</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-11-01 06:24:29 -0700</bug_when>
    <thetext>Comment on attachment 155814
Plumbing #3

The new API looks OK to me, let&apos;s wait for a second review, I&apos;ll set r- instead of setting cq+ because of the required changes above.

&gt; Source/WebKit/gtk/webkit/webkitwebsettings.cpp:1020
&gt; +    * Whether is it possible for pages loaded via HTTPS to display
&gt; +    * subresources, such as images and frames, from non-HTTPS URLs.

Can we reword this to &quot;Whether pages loaded via HTTPS should load subresources such as images and frames from non-HTTPS URLs.&quot;?

&gt; Source/WebKit/gtk/webkit/webkitwebsettings.cpp:1022
&gt; +    * Since: 1.9.5

Since tags should say 2.0, since that&apos;s going to be the next stable release.

&gt; Source/WebKit/gtk/webkit/webkitwebsettings.cpp:1037
&gt; +    * Whether is it possible for pages loaded via HTTPS to run
&gt; +    * subresources, such as CSS, scripts and plugins, from non-HTTPS
&gt; +    * URLs.

Same rewording here would be good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764337</commentid>
    <comment_count>76</comment_count>
      <attachid>173635</attachid>
    <who name="Josh Rickmar">jrick</who>
    <bug_when>2012-11-12 06:15:21 -0800</bug_when>
    <thetext>Created attachment 173635
Plumbing #3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764340</commentid>
    <comment_count>77</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-12 06:18:38 -0800</bug_when>
    <thetext>Attachment 173635 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/Web...&quot; exit_code: 1
Source/WebKit/gtk/webkit/webkitwebsettings.cpp:995:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebsettings.cpp:997:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebsettings.cpp:998:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebsettings.cpp:999:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebsettings.cpp:1000:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebsettings.cpp:1011:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebsettings.cpp:1013:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebsettings.cpp:1014:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebsettings.cpp:1015:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebKit/gtk/webkit/webkitwebsettings.cpp:1016:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 10 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764453</commentid>
    <comment_count>78</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-11-12 08:28:14 -0800</bug_when>
    <thetext>(In reply to comment #77)
&gt; Attachment 173635 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/Web...&quot; exit_code: 1
&gt; Source/WebKit/gtk/webkit/webkitwebsettings.cpp:995:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
&gt; Source/WebKit/gtk/webkit/webkitwebsettings.cpp:997:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Source/WebKit/gtk/webkit/webkitwebsettings.cpp:998:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Source/WebKit/gtk/webkit/webkitwebsettings.cpp:999:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Source/WebKit/gtk/webkit/webkitwebsettings.cpp:1000:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Source/WebKit/gtk/webkit/webkitwebsettings.cpp:1011:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
&gt; Source/WebKit/gtk/webkit/webkitwebsettings.cpp:1013:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Source/WebKit/gtk/webkit/webkitwebsettings.cpp:1014:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Source/WebKit/gtk/webkit/webkitwebsettings.cpp:1015:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Source/WebKit/gtk/webkit/webkitwebsettings.cpp:1016:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Total errors found: 10 in 4 files
&gt; 

Do you mind fixing these style errors? The indentation rules changed on us. Now things need to look like this:

function(argument
    argument,
    argument);

or
function(
    argument,
    argument,
    argument);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>764830</commentid>
    <comment_count>79</comment_count>
      <attachid>173727</attachid>
    <who name="Josh Rickmar">jrick</who>
    <bug_when>2012-11-12 14:24:49 -0800</bug_when>
    <thetext>Created attachment 173727
plumbing #3

fixed indenting</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765116</commentid>
    <comment_count>80</comment_count>
      <attachid>173727</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-12 18:48:17 -0800</bug_when>
    <thetext>Comment on attachment 173727
plumbing #3

Clearing flags on attachment: 173727

Committed r134339: &lt;http://trac.webkit.org/changeset/134339&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>765117</commentid>
    <comment_count>81</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-12 18:48:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89276</attachid>
            <date>2011-04-12 14:41:43 -0700</date>
            <delta_ts>2011-04-29 15:30:49 -0700</delta_ts>
            <desc>Work in progress (no tests)</desc>
            <filename>bug-58378-20110412144142.patch</filename>
            <type>text/plain</type>
            <size>10141</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgzNjQyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDQtMTIgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgV2ViQ29yZTo6U2V0dGluZyB0byBibG9jayBydW5uaW5nIGlu
c2VjdXJlIGNvbnRlbnQgb24gc2VjdXJlIHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODM3OAorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9P
UFMhKQorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpjaGVja0lmUnVuSW5zZWN1cmVDb250ZW50KToKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3ViZnJhbWVMb2FkZXI6OmxvYWRNZWRpYVBsYXllclByb3h5
UGx1Z2luKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YmZyYW1lTG9hZGVyOjpsb2FkUGx1Z2luKToK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QpOgorICAgICAgICAq
IHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJl
Q29udGVudCk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6
U2V0dGluZ3M6OmFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KToKKwogMjAxMS0wMy0yOCAg
QWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUnVzc2VsbC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAko
cmV2aXNpb24gODM2MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDY2LDEyICsxMDY2LDEzIEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmNoZWNrSWZEaXNwbGF5SW5zZWN1cmUKIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrSWZSdW5JbnNl
Y3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCkKIHsK
ICAgICBpZiAoIWlzTWl4ZWRDb250ZW50KGNvbnRleHQsIHVybCkpCi0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmco
IlRoZSBwYWdlIGF0ICIsIG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpLCAiIHJh
biBpbnNlY3VyZSBjb250ZW50IGZyb20gIiwgdXJsLnN0cmluZygpLCAiLlxuIik7CiAgICAgbV9m
cmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShIVE1MTWVzc2FnZVNvdXJj
ZSwgTG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDEsIFN0cmlu
ZygpKTsKIAogICAgIG1fY2xpZW50LT5kaWRSdW5JbnNlY3VyZUNvbnRlbnQoY29udGV4dCwgdXJs
KTsKKyAgICByZXR1cm4gc2V0dGluZ3MoKSAmJiBzZXR0aW5ncygpLT5hbGxvd1J1bm5pbmdPZklu
c2VjdXJlQ29udGVudCgpOwogfQogCiBGcmFtZSogRnJhbWVMb2FkZXI6Om9wZW5lcigpCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gODM2MzkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjU2LDcg
KzI1Niw3IEBAIHB1YmxpYzoKICAgICAvLyBNaXhlZCBjb250ZW50IHJlbGF0ZWQgZnVuY3Rpb25z
LgogICAgIHN0YXRpYyBib29sIGlzTWl4ZWRDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBjb250ZXh0
LCBjb25zdCBLVVJMJik7CiAgICAgdm9pZCBjaGVja0lmRGlzcGxheUluc2VjdXJlQ29udGVudChT
ZWN1cml0eU9yaWdpbiogY29udGV4dCwgY29uc3QgS1VSTCYpOwotICAgIHZvaWQgY2hlY2tJZlJ1
bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogY29udGV4dCwgY29uc3QgS1VSTCYpOwor
ICAgIGJvb2wgY2hlY2tJZlJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogY29udGV4
dCwgY29uc3QgS1VSTCYpOwogCiAgICAgRnJhbWUqIG9wZW5lcigpOwogICAgIHZvaWQgc2V0T3Bl
bmVyKEZyYW1lKik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5j
cHAJKHJldmlzaW9uIDgzNjM5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDcgKzE3MCw4IEBAIFBhc3NSZWZQdHI8V2lk
Z2V0PiBTdWJmcmFtZUxvYWRlcjo6bG9hZE0KICAgICBlbHNlIGlmIChtZWRpYUVsZW1lbnQtPmlz
VmlkZW8oKSkKICAgICAgICAgc2l6ZSA9IFJlbmRlclZpZGVvOjpkZWZhdWx0U2l6ZSgpOwogCi0g
ICAgbV9mcmFtZS0+bG9hZGVyKCktPmNoZWNrSWZSdW5JbnNlY3VyZUNvbnRlbnQobV9mcmFtZS0+
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgY29tcGxldGVkVVJMKTsKKyAgICBpZiAoIW1f
ZnJhbWUtPmxvYWRlcigpLT5jaGVja0lmUnVuSW5zZWN1cmVDb250ZW50KG1fZnJhbWUtPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIGNvbXBsZXRlZFVSTCkpCisgICAgICAgIHJldHVybiAw
OwogCiAgICAgUmVmUHRyPFdpZGdldD4gd2lkZ2V0ID0gbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVu
dCgpLT5jcmVhdGVNZWRpYVBsYXllclByb3h5UGx1Z2luKHNpemUsIG1lZGlhRWxlbWVudCwgY29t
cGxldGVkVVJMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJh
bU5hbWVzLCBwYXJhbVZhbHVlcywgImFwcGxpY2F0aW9uL3gtbWVkaWEtZWxlbWVudC1wcm94eS1w
bHVnaW4iKTsKQEAgLTMzOSwxMiArMzQwLDEyIEBAIGJvb2wgU3ViZnJhbWVMb2FkZXI6OmxvYWRQ
bHVnaW4oSFRNTFBsdWcKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIEZyYW1l
TG9hZGVyKiBmcmFtZUxvYWRlciA9IG1fZnJhbWUtPmxvYWRlcigpOwotICAgIGZyYW1lTG9hZGVy
LT5jaGVja0lmUnVuSW5zZWN1cmVDb250ZW50KGRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCks
IHVybCk7CisgICAgaWYgKCFtX2ZyYW1lLT5sb2FkZXIoKS0+ZnJhbWVMb2FkZXItPmNoZWNrSWZS
dW5JbnNlY3VyZUNvbnRlbnQoZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgSW50U2l6ZSBjb250ZW50U2l6ZShyZW5kZXJlci0+
Y29udGVudFdpZHRoKCksIHJlbmRlcmVyLT5jb250ZW50SGVpZ2h0KCkpOwogICAgIGJvb2wgbG9h
ZE1hbnVhbGx5ID0gZG9jdW1lbnQoKS0+aXNQbHVnaW5Eb2N1bWVudCgpICYmICFtX2NvbnRhaW5z
UGx1Z2lucyAmJiB0b1BsdWdpbkRvY3VtZW50KGRvY3VtZW50KCkpLT5zaG91bGRMb2FkUGx1Z2lu
TWFudWFsbHkoKTsKLSAgICBSZWZQdHI8V2lkZ2V0PiB3aWRnZXQgPSBmcmFtZUxvYWRlci0+Y2xp
ZW50KCktPmNyZWF0ZVBsdWdpbihjb250ZW50U2l6ZSwKKyAgICBSZWZQdHI8V2lkZ2V0PiB3aWRn
ZXQgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmNyZWF0ZVBsdWdpbihjb250ZW50U2l6
ZSwKICAgICAgICAgcGx1Z2luRWxlbWVudCwgdXJsLCBwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcywg
bWltZVR5cGUsIGxvYWRNYW51YWxseSk7CiAKICAgICBpZiAoIXdpZGdldCkgewpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
Y3BwCShyZXZpc2lvbiA4MzYzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNCw4ICsyMzQsMTAgQEAg
Ym9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdChDYQogICAgIGNhc2UgQ2FjaGVk
UmVzb3VyY2U6OlhTTFN0eWxlU2hlZXQ6CiAjZW5kaWYKICAgICAgICAgLy8gVGhlc2UgcmVzb3Vy
Y2UgY2FuIGluamVjdCBzY3JpcHQgaW50byB0aGUgY3VycmVudCBkb2N1bWVudC4KLSAgICAgICAg
aWYgKEZyYW1lKiBmID0gZnJhbWUoKSkKLSAgICAgICAgICAgIGYtPmxvYWRlcigpLT5jaGVja0lm
UnVuSW5zZWN1cmVDb250ZW50KG1fZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIHVybCk7Cisg
ICAgICAgIGlmIChGcmFtZSogZiA9IGZyYW1lKCkpIHsKKyAgICAgICAgICAgIGlmICghZi0+bG9h
ZGVyKCktPmNoZWNrSWZSdW5JbnNlY3VyZUNvbnRlbnQobV9kb2N1bWVudC0+c2VjdXJpdHlPcmln
aW4oKSwgdXJsKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKICAg
ICBjYXNlIENhY2hlZFJlc291cmNlOjpDU1NTdHlsZVNoZWV0OgpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5jcHAJKHJldmlzaW9uIDgzNjM5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsxMDksNyBAQCBTZXR0aW5nczo6U2V0
dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1faXNXZWJTZWN1cml0eUVuYWJsZWQodHJ1ZSkKICAg
ICAsIG1fYWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHModHJ1ZSkKICAgICAsIG1fYWxs
b3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKHRydWUpCisgICAgLCBtX2FsbG93UnVubmluZ09mSW5z
ZWN1cmVDb250ZW50KHRydWUpCiAgICAgLCBtX2phdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9t
YXRpY2FsbHkoZmFsc2UpCiAgICAgLCBtX2phdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoZmFs
c2UpCiAgICAgLCBtX3Nob3VsZFByaW50QmFja2dyb3VuZHMoZmFsc2UpCkBAIC0zMDEsNiArMzAy
LDExIEBAIHZvaWQgU2V0dGluZ3M6OnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWwKICAgICBtX2Fs
bG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyA9IGFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMczsK
IH0KIAordm9pZCBTZXR0aW5nczo6c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoYm9v
bCBhbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCkKK3sKKyAgICBtX2FsbG93UnVubmluZ09m
SW5zZWN1cmVDb250ZW50ID0gYWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQ7Cit9CisKIHZv
aWQgU2V0dGluZ3M6OnNldFNwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZChib29sIGlzU3BhdGlhbE5h
dmlnYXRpb25FbmFibGVkKQogewogICAgIG1faXNTcGF0aWFsTmF2aWdhdGlvbkVuYWJsZWQgPSBp
c1NwYXRpYWxOYXZpZ2F0aW9uRW5hYmxlZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHJl
dmlzaW9uIDgzNjM5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTAsNiArMTEwLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2
b2lkIHNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhib29sKTsKICAgICAgICAgYm9vbCBh
bGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoKSBjb25zdCB7IHJldHVybiBtX2FsbG93RmlsZUFj
Y2Vzc0Zyb21GaWxlVVJMczsgfQogCisgICAgICAgIHZvaWQgc2V0QWxsb3dSdW5uaW5nT2ZJbnNl
Y3VyZUNvbnRlbnQoYm9vbCk7CisgICAgICAgIGJvb2wgYWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNv
bnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50OyB9
CisKICAgICAgICAgdm9pZCBzZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5
KGJvb2wpOwogICAgICAgICBib29sIGphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2Fs
bHkoKSBjb25zdCB7IHJldHVybiBtX2phdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2Fs
bHk7IH0KIApAQCAtNDM0LDYgKzQzNyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ym9vbCBtX2lzV2ViU2VjdXJpdHlFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX2FsbG93VW5p
dmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzOiAxOwogICAgICAgICBib29sIG1fYWxsb3dGaWxlQWNj
ZXNzRnJvbUZpbGVVUkxzOiAxOworICAgICAgICBib29sIG1fYWxsb3dSdW5uaW5nT2ZJbnNlY3Vy
ZUNvbnRlbnQ6IDE7CiAgICAgICAgIGJvb2wgbV9qYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRv
bWF0aWNhbGx5IDogMTsKICAgICAgICAgYm9vbCBtX2phdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9h
cmQgOiAxOwogICAgICAgICBib29sIG1fc2hvdWxkUHJpbnRCYWNrZ3JvdW5kcyA6IDE7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gODM2NDIpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisy
MDExLTA0LTEyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdlYkNvcmU6OlNldHRpbmcg
dG8gYmxvY2sgcnVubmluZyBpbnNlY3VyZSBjb250ZW50IG9uIHNlY3VyZSBwYWdlcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgzNzgKKworICAgICAg
ICAqIHB1YmxpYy9XZWJTZXR0aW5ncy5oOgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OnNldEFsbG93UnVubmluZ0lu
c2VjdXJlQ29udGVudCk6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5oOgorCiAyMDEx
LTA0LTEyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2ZXJ0
IHVuaW50ZW50aW9uYWwgY2hhbmdlcyB0byBXZWJLaXQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgJKHJldmlzaW9uIDgzNjQyKQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAt
ODksNiArODksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZFBhaW50Q3Vz
dG9tU2Nyb2xsYmFycyhib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEFsbG93VW5pdmVy
c2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWxs
b3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
QWxsb3dSdW5uaW5nSW5zZWN1cmVDb250ZW50KGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0VGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvck5ldmVySW5jbHVkZWQoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxl
ZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFdlYkF1ZGlvRW5hYmxlZChib29sKSA9
IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1w
bC5jcHAJKHJldmlzaW9uIDgzNjQyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2V0dGluZ3NJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjU1LDYgKzI1NSwxMSBAQCB2b2lk
IFdlYlNldHRpbmdzSW1wbDo6c2V0QWxsb3dGaWxlQWNjZXNzCiAgICAgbV9zZXR0aW5ncy0+c2V0
QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGFsbG93KTsKIH0KIAordm9pZCBXZWJTZXR0aW5n
c0ltcGw6OnNldEFsbG93UnVubmluZ0luc2VjdXJlQ29udGVudChib29sIGFsbG93KQoreworICAg
IG1fc2V0dGluZ3MtPnNldEFsbG93UnVubmluZ0luc2VjdXJlQ29udGVudChhbGxvdyk7Cit9CisK
IHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRUZXh0RGlyZWN0aW9uU3VibWVudUluY2x1c2lvbkJl
aGF2aW9yTmV2ZXJJbmNsdWRlZCgpCiB7CiAgICAgLy8gRklYTUU6IElmIHlvdSBldmVyIG5lZWQg
bW9yZSBiZWhhdmlvcnMgdGhhbiB0aGlzLCB0aGVuIHdlIHNob3VsZCBwcm9iYWJseQpJbmRleDog
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgJKHJldmlzaW9u
IDgzNjQyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTgyLDYgKzgyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXRTaG91bGRQYWludEN1c3RvbVNjcm9sbGJhcnMoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lk
IHNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCk7CisgICAgdmlydHVhbCB2
b2lkIHNldEFsbG93UnVubmluZ0luc2VjdXJlQ29udGVudChib29sKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0VGV4dERpcmVjdGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvck5ldmVySW5jbHVkZWQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0T2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVk
KGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRXZWJBdWRpb0VuYWJsZWQoYm9vbCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91725</attachid>
            <date>2011-04-29 13:35:20 -0700</date>
            <delta_ts>2011-04-29 15:30:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>58378a_1.diff</filename>
            <type>text/plain</type>
            <size>13278</size>
            <attacher name="Chris Evans">cevans</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNw
cAkocmV2aXNpb24gODQ5MzkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0
aW5nc0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTcsNCArMzk3LDE0IEBACiAjZW5kaWYK
IH0KIAordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250
ZW50KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3NldHRpbmdzLT5zZXRBbGxvd0Rpc3BsYXlPZklu
c2VjdXJlQ29udGVudChlbmFibGVkKTsKK30KKwordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEFs
bG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3NldHRp
bmdzLT5zZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChlbmFibGVkKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
ZXR0aW5nc0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZXR0aW5nc0ltcGwuaAkocmV2aXNpb24gODQ5MzkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDYgKzExMiw4
IEBACiAgICAgdmlydHVhbCB2b2lkIHNldFZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0
aW9uKGludCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE1pbmltdW1UaW1lckludGVydmFsKGRvdWJs
ZSk7CiAgICAgdmlydHVhbCB2b2lkIHNldEZ1bGxTY3JlZW5FbmFibGVkKGJvb2wpOworICAgIHZp
cnR1YWwgdm9pZCBzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChib29sKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCk7CiAKIHBy
aXZhdGU6CiAgICAgV2ViQ29yZTo6U2V0dGluZ3MqIG1fc2V0dGluZ3M7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gODUzNTApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDExLTA0LTI5
ICBDaHJpcyBFdmFucyAgPGNldmFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdlYkNvcmU6OlNldHRpbmcgdG8gYmxv
Y2sgZGlzcGxheWluZyBhbmQvb3IgcnVubmluZyBpbnNlY3VyZSBjb250ZW50IG9uIHNlY3VyZSBw
YWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgz
NzgKKworICAgICAgICAqIHB1YmxpYy9XZWJTZXR0aW5ncy5oOgorICAgICAgICAqIHNyYy9XZWJT
ZXR0aW5nc0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OnNldEFs
bG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGlu
Z3NJbXBsOjpzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCk6CisgICAgICAgICogc3Jj
L1dlYlNldHRpbmdzSW1wbC5oOgorICAgICAgICBTaW1wbGUgcGx1bWJpbmcgZm9yIHRoZSBuZXcg
Ym9vbGVhbiBzZXR0aW5ncy4KKwogMjAxMS0wNC0yOSAgVnNldm9sb2QgVmxhc292ICA8dnNldmlr
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCShyZXZpc2lv
biA4NDkzOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExOSw2ICsxMTksOCBAQAogICAgIHZpcnR1YWwgdm9pZCBzZXRW
YWxpZGF0aW9uTWVzc2FnZVRpbWVyTWFnbmlmaWNhdGlvbihpbnQpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNldEZ1bGxTY3JlZW5FbmFibGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChib29sKSA9IDA7CiAKIHByb3RlY3Rl
ZDoKICAgICB+V2ViU2V0dGluZ3MoKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1MzUw
KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjkgQEAKKzIwMTEtMDQtMjkgIENocmlzIEV2YW5zICA8Y2V2YW5zQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV2ViQ29y
ZTo6U2V0dGluZyB0byBibG9jayBkaXNwbGF5aW5nIGFuZC9vciBydW5uaW5nIGluc2VjdXJlIGNv
bnRlbnQgb24gc2VjdXJlIHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01ODM3OAorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0lmRGlzcGxheUluc2VjdXJlQ29u
dGVudCk6IFJldHVybiB3aGV0aGVyIG9yIG5vdCB0aGUgbG9hZCBzaG91bGQgYmUgYmxvY2tlZCwg
YW5kIHR3ZWFrIHRoZSBtZXNzYWdlIHVwb24gYmxvY2tpbmcuCisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6Y2hlY2tJZlJ1bkluc2VjdXJlQ29udGVudCk6IFJldHVybiB3aGV0aGVyIG9y
IG5vdCB0aGUgbG9hZCBzaG91bGQgYmUgYmxvY2tlZCwgYW5kIHR3ZWFrIHRoZSBtZXNzYWdlIHVw
b24gYmxvY2tpbmcuCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYWluUmVz
b3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6IENoZWNrIGlmIHRoZSBmcmFtZSBsb2FkIGlz
IGJsb2NrZWQgZHVlIHRvIG1peGVkIGNvbnRlbnQgYW5kIGNhbmNlbCBpdCBpZiBzby4KKyAgICAg
ICAgKiBsb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3ViZnJh
bWVMb2FkZXI6OmxvYWRNZWRpYVBsYXllclByb3h5UGx1Z2luKTogSGFuZGxlIHRoZSBibG9ja2lu
ZyBvZiBtaXhlZC1jb250ZW50IHBsdWctaW4gbG9hZHMuCisgICAgICAgIChXZWJDb3JlOjpTdWJm
cmFtZUxvYWRlcjo6bG9hZFBsdWdpbik6IEhhbmRsZSB0aGUgYmxvY2tpbmcgb2YgbWl4ZWQtY29u
dGVudCBwbHVnLWluIGxvYWRzLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2Fu
UmVxdWVzdCk6IEhhbmRsZSB0aGUgYmxvY2tpbmcgb2YgdmFyaW91cyBsb2FkcyBkdWUgdG8gbWl4
ZWQgY29udGVudCBjb25kaXRpb25zLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKTogUGVybWl0IG1peGVkLWNvbnRlbnQg
bG9hZHMgYnkgZGVmYXVsdCB0byBhdm9pZCBhIGNoYW5nZSBpbiBiZWhhdmlvciBieSBkZWZhdWx0
LgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDogQWRkIHR3byBuZXcgYm9vbGVhbnMgdG8gY29u
dHJvbCBibG9ja2luZyBvZiBtaXhlZCBjb250ZW50IChkaXNwbGF5aW5nIGFuZCBydW5uaW5nIHRo
ZXJlb2YpLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldEFsbG93RGlzcGxheU9mSW5z
ZWN1cmVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjphbGxvd0Rpc3BsYXlP
Zkluc2VjdXJlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0QWxsb3dS
dW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmFs
bG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KToKKwogMjAxMS0wNC0yOSAgSmFtZXMgUm9iaW5z
b24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHI4NTMzMC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHJldmlzaW9uIDg0OTM5KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOTks
NiArMzk5LDExIEBACiAgICAgICAgIHZvaWQgc2V0U2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbklu
aXRpYWxFbXB0eURvY3VtZW50KGJvb2wgZmxhZykgeyBtX3Nob3VsZEluamVjdFVzZXJTY3JpcHRz
SW5Jbml0aWFsRW1wdHlEb2N1bWVudCA9IGZsYWc7IH0KICAgICAgICAgYm9vbCBzaG91bGRJbmpl
Y3RVc2VyU2NyaXB0c0luSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSB7IHJldHVybiBtX3Nob3VsZElu
amVjdFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlEb2N1bWVudDsgfQogCisgICAgICAgIHZvaWQg
c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCBmbGFnKSB7IG1fYWxsb3dEaXNw
bGF5T2ZJbnNlY3VyZUNvbnRlbnQgPSBmbGFnOyB9CisgICAgICAgIGJvb2wgYWxsb3dEaXNwbGF5
T2ZJbnNlY3VyZUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93RGlzcGxheU9mSW5zZWN1
cmVDb250ZW50OyB9CisgICAgICAgIHZvaWQgc2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRl
bnQoYm9vbCBmbGFnKSB7IG1fYWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQgPSBmbGFnOyB9
CisgICAgICAgIGJvb2wgYWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoKSBjb25zdCB7IHJl
dHVybiBtX2FsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50OyB9CisKICAgICBwcml2YXRlOgog
ICAgICAgICBQYWdlKiBtX3BhZ2U7CiAKQEAgLTUwMiw2ICs1MDcsOCBAQAogICAgICAgICBib29s
IG1fdXNlUXVpY2tMb29rUmVzb3VyY2VDYWNoaW5nUXVpcmtzIDogMTsKICAgICAgICAgYm9vbCBt
X2ZvcmNlQ29tcG9zaXRpbmdNb2RlIDogMTsKICAgICAgICAgYm9vbCBtX3Nob3VsZEluamVjdFVz
ZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlEb2N1bWVudCA6IDE7CisgICAgICAgIGJvb2wgbV9hbGxv
d0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCA6IDE7CisgICAgICAgIGJvb2wgbV9hbGxvd1J1bm5p
bmdPZkluc2VjdXJlQ29udGVudCA6IDE7CiAKICNpZiBVU0UoQVZGT1VOREFUSU9OKQogICAgICAg
ICBzdGF0aWMgYm9vbCBnQVZGb3VuZGF0aW9uRW5hYmxlZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuY3BwCShyZXZpc2lvbiA4NDkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNiArMTc4LDggQEAKICAgICAsIG1fdXNlUXVp
Y2tMb29rUmVzb3VyY2VDYWNoaW5nUXVpcmtzKGZhbHNlKQogICAgICwgbV9mb3JjZUNvbXBvc2l0
aW5nTW9kZShmYWxzZSkKICAgICAsIG1fc2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxF
bXB0eURvY3VtZW50KGZhbHNlKQorICAgICwgbV9hbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVu
dCh0cnVlKQorICAgICwgbV9hbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCh0cnVlKQogewog
ICAgIC8vIEEgRnJhbWUgbWF5IG5vdCBoYXZlIGJlZW4gY3JlYXRlZCB5ZXQsIHNvIHdlIGluaXRp
YWxpemUgdGhlIEF0b21pY1N0cmluZyAKICAgICAvLyBoYXNoIGJlZm9yZSB0cnlpbmcgdG8gdXNl
IGl0LgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA4
NDkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNTIsMjYgKzEwNTIsMzIgQEAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBGcmFtZUxvYWRlcjo6Y2hlY2tJZkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmln
aW4qIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgRnJhbWVMb2FkZXI6OmNoZWNrSWZE
aXNwbGF5SW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBjb250ZXh0LCBjb25zdCBLVVJM
JiB1cmwpCiB7CiAgICAgaWYgKCFpc01peGVkQ29udGVudChjb250ZXh0LCB1cmwpKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgU3RyaW5nIG1lc3NhZ2UgPSBt
YWtlU3RyaW5nKCJUaGUgcGFnZSBhdCAiLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJp
bmcoKSwgIiBkaXNwbGF5ZWQgaW5zZWN1cmUgY29udGVudCBmcm9tICIsIHVybC5zdHJpbmcoKSwg
Ii5cbiIpOworICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPnNldHRpbmdzKCk7Cisg
ICAgYm9vbCBhbGxvd2VkID0gc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmFsbG93RGlzcGxheU9mSW5z
ZWN1cmVDb250ZW50KCk7CisgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKChhbGxvd2Vk
ID8gIiIgOiAiW2Jsb2NrZWRdICIpLCAiVGhlIHBhZ2UgYXQgIiwgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+dXJsKCkuc3RyaW5nKCksICIgZGlzcGxheWVkIGluc2VjdXJlIGNvbnRlbnQgZnJvbSAiLCB1
cmwuc3RyaW5nKCksICIuXG4iKTsKICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgp
LT5hZGRNZXNzYWdlKEhUTUxNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgV2FybmluZ01l
c3NhZ2VMZXZlbCwgbWVzc2FnZSwgMSwgU3RyaW5nKCkpOwogCiAgICAgbV9jbGllbnQtPmRpZERp
c3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKKyAgICByZXR1cm4gYWxsb3dlZDsKIH0KIAotdm9pZCBG
cmFtZUxvYWRlcjo6Y2hlY2tJZlJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogY29u
dGV4dCwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBGcmFtZUxvYWRlcjo6Y2hlY2tJZlJ1bkluc2Vj
dXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsKQogewog
ICAgIGlmICghaXNNaXhlZENvbnRlbnQoY29udGV4dCwgdXJsKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygi
VGhlIHBhZ2UgYXQgIiwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCksICIgcmFu
IGluc2VjdXJlIGNvbnRlbnQgZnJvbSAiLCB1cmwuc3RyaW5nKCksICIuXG4iKTsKKyAgICBTZXR0
aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5zZXR0aW5ncygpOworICAgIGJvb2wgYWxsb3dlZCA9
IHNldHRpbmdzICYmIHNldHRpbmdzLT5hbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCgpOwor
ICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygoYWxsb3dlZCA/ICIiIDogIltibG9ja2Vk
XSAiKSwgIlRoZSBwYWdlIGF0ICIsIG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygp
LCAiIHJhbiBpbnNlY3VyZSBjb250ZW50IGZyb20gIiwgdXJsLnN0cmluZygpLCAiLlxuIik7CiAg
ICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShIVE1MTWVzc2Fn
ZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDEs
IFN0cmluZygpKTsKIAogICAgIG1fY2xpZW50LT5kaWRSdW5JbnNlY3VyZUNvbnRlbnQoY29udGV4
dCwgdXJsKTsKKyAgICByZXR1cm4gYWxsb3dlZDsKIH0KIAogRnJhbWUqIEZyYW1lTG9hZGVyOjpv
cGVuZXIoKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA4NDkzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0NiwxNCArMjQ2LDE2IEBACiAgICAgICAgIC8vIFRoZXNlIHJlc291cmNlIGNhbiBpbmplY3Qg
c2NyaXB0IGludG8gdGhlIGN1cnJlbnQgZG9jdW1lbnQgKFNjcmlwdCwKICAgICAgICAgLy8gWFNM
KSBvciBleGZpbHRyYXRlIHRoZSBjb250ZW50IG9mIHRoZSBjdXJyZW50IGRvY3VtZW50IChDU1Mp
LgogICAgICAgICBpZiAoRnJhbWUqIGYgPSBmcmFtZSgpKQotICAgICAgICAgICAgZi0+bG9hZGVy
KCktPmNoZWNrSWZSdW5JbnNlY3VyZUNvbnRlbnQobV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4o
KSwgdXJsKTsKKyAgICAgICAgICAgIGlmICghZi0+bG9hZGVyKCktPmNoZWNrSWZSdW5JbnNlY3Vy
ZUNvbnRlbnQobV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ2FjaGVkUmVzb3Vy
Y2U6OkltYWdlUmVzb3VyY2U6CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNl
OiB7CiAgICAgICAgIC8vIFRoZXNlIHJlc291cmNlcyBjYW4gY29ycnVwdCBvbmx5IHRoZSBmcmFt
ZSdzIHBpeGVscy4KICAgICAgICAgaWYgKEZyYW1lKiBmID0gZnJhbWUoKSkgewogICAgICAgICAg
ICAgRnJhbWUqIHRvcCA9IGYtPnRyZWUoKS0+dG9wKCk7Ci0gICAgICAgICAgICB0b3AtPmxvYWRl
cigpLT5jaGVja0lmRGlzcGxheUluc2VjdXJlQ29udGVudCh0b3AtPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCksIHVybCk7CisgICAgICAgICAgICBpZiAoIXRvcC0+bG9hZGVyKCktPmNoZWNr
SWZEaXNwbGF5SW5zZWN1cmVDb250ZW50KHRvcC0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KSwgdXJsKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJj
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNv
dXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDg0OTM5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L01haW5SZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNiwxNSArMjA2LDE5
IEBACiAgICAgaWYgKG5ld1JlcXVlc3QuY2FjaGVQb2xpY3koKSA9PSBVc2VQcm90b2NvbENhY2hl
UG9saWN5ICYmIGlzUG9zdE9yUmVkaXJlY3RBZnRlclBvc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RS
ZXNwb25zZSkpCiAgICAgICAgIG5ld1JlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVsb2FkSWdub3Jp
bmdDYWNoZURhdGEpOwogCisgICAgRnJhbWUqIHRvcCA9IG1fZnJhbWUtPnRyZWUoKS0+dG9wKCk7
CisgICAgaWYgKHRvcCAhPSBtX2ZyYW1lKSB7CisgICAgICAgIGlmICghZnJhbWVMb2FkZXIoKS0+
Y2hlY2tJZkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQodG9wLT5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpLCBuZXdSZXF1ZXN0LnVybCgpKSkgeworICAgICAgICAgICAgY2FuY2VsKCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKICAgICBSZXNvdXJjZUxvYWRlcjo6
d2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogCiAgICAgLy8g
RG9uJ3Qgc2V0IHRoaXMgb24gdGhlIGZpcnN0IHJlcXVlc3QuIEl0IGlzIHNldCB3aGVuIHRoZSBt
YWluIGxvYWQgd2FzIHN0YXJ0ZWQuCiAgICAgbV9kb2N1bWVudExvYWRlci0+c2V0UmVxdWVzdChu
ZXdSZXF1ZXN0KTsKIAotICAgIEZyYW1lKiB0b3AgPSBtX2ZyYW1lLT50cmVlKCktPnRvcCgpOwot
ICAgIGlmICh0b3AgIT0gbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2hlY2tJZkRp
c3BsYXlJbnNlY3VyZUNvbnRlbnQodG9wLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBu
ZXdSZXF1ZXN0LnVybCgpKTsKLQogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMp
CiAgICAgaWYgKCFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIFdlIGNo
ZWNrZWQgYXBwbGljYXRpb24gY2FjaGUgZm9yIGluaXRpYWwgVVJMLCBub3cgd2UgbmVlZCB0byBj
aGVjayBpdCBmb3IgcmVkaXJlY3RlZCBvbmUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaAkocmV2aXNpb24gODQ5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjU2LDggKzI1NiwxMCBAQAogCiAgICAgLy8gTWl4
ZWQgY29udGVudCByZWxhdGVkIGZ1bmN0aW9ucy4KICAgICBzdGF0aWMgYm9vbCBpc01peGVkQ29u
dGVudChTZWN1cml0eU9yaWdpbiogY29udGV4dCwgY29uc3QgS1VSTCYpOwotICAgIHZvaWQgY2hl
Y2tJZkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIGNvbnRleHQsIGNvbnN0
IEtVUkwmKTsKLSAgICB2b2lkIGNoZWNrSWZSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmln
aW4qIGNvbnRleHQsIGNvbnN0IEtVUkwmKTsKKyAgICAvLyBUaGVzZSB0d28gcmV0dXJuIGZhbHNl
IGlmIHBvbGljeSBkaWN0YXRlcyB0aGF0IHRoZSByZXNvdXJjZSBsb2FkIHNob3VsZAorICAgIC8v
IG5vdCBjb250aW51ZS4KKyAgICBib29sIGNoZWNrSWZEaXNwbGF5SW5zZWN1cmVDb250ZW50KFNl
Y3VyaXR5T3JpZ2luKiBjb250ZXh0LCBjb25zdCBLVVJMJik7CisgICAgYm9vbCBjaGVja0lmUnVu
SW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBjb250ZXh0LCBjb25zdCBLVVJMJik7CiAK
ICAgICBGcmFtZSogb3BlbmVyKCk7CiAgICAgdm9pZCBzZXRPcGVuZXIoRnJhbWUqKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gODQ5Mzkp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzMsNyArMTczLDggQEAKICAgICBlbHNlIGlmIChtZWRpYUVsZW1lbnQtPmlzVmlk
ZW8oKSkKICAgICAgICAgc2l6ZSA9IFJlbmRlclZpZGVvOjpkZWZhdWx0U2l6ZSgpOwogCi0gICAg
bV9mcmFtZS0+bG9hZGVyKCktPmNoZWNrSWZSdW5JbnNlY3VyZUNvbnRlbnQobV9mcmFtZS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgY29tcGxldGVkVVJMKTsKKyAgICBpZiAoIW1fZnJh
bWUtPmxvYWRlcigpLT5jaGVja0lmUnVuSW5zZWN1cmVDb250ZW50KG1fZnJhbWUtPmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCksIGNvbXBsZXRlZFVSTCkpCisgICAgICAgIHJldHVybiAwOwog
CiAgICAgUmVmUHRyPFdpZGdldD4gd2lkZ2V0ID0gbV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgp
LT5jcmVhdGVNZWRpYVBsYXllclByb3h5UGx1Z2luKHNpemUsIG1lZGlhRWxlbWVudCwgY29tcGxl
dGVkVVJMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbU5h
bWVzLCBwYXJhbVZhbHVlcywgImFwcGxpY2F0aW9uL3gtbWVkaWEtZWxlbWVudC1wcm94eS1wbHVn
aW4iKTsKQEAgLTM1Miw3ICszNTMsOCBAQAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBG
cmFtZUxvYWRlciogZnJhbWVMb2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKTsKLSAgICBmcmFtZUxv
YWRlci0+Y2hlY2tJZlJ1bkluc2VjdXJlQ29udGVudChkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpLCB1cmwpOworICAgIGlmICghZnJhbWVMb2FkZXItPmNoZWNrSWZSdW5JbnNlY3VyZUNvbnRl
bnQoZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgSW50U2l6ZSBjb250ZW50U2l6ZShyZW5kZXJlci0+Y29udGVudFdpZHRoKCks
IHJlbmRlcmVyLT5jb250ZW50SGVpZ2h0KCkpOwogICAgIGJvb2wgbG9hZE1hbnVhbGx5ID0gZG9j
dW1lbnQoKS0+aXNQbHVnaW5Eb2N1bWVudCgpICYmICFtX2NvbnRhaW5zUGx1Z2lucyAmJiB0b1Bs
dWdpbkRvY3VtZW50KGRvY3VtZW50KCkpLT5zaG91bGRMb2FkUGx1Z2luTWFudWFsbHkoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91751</attachid>
            <date>2011-04-29 15:30:49 -0700</date>
            <delta_ts>2011-06-18 13:33:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>58378a_2.diff</filename>
            <type>text/plain</type>
            <size>13175</size>
            <attacher name="Chris Evans">cevans</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNw
cAkocmV2aXNpb24gODQ5MzkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0
aW5nc0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTcsNCArMzk3LDE0IEBACiAjZW5kaWYK
IH0KIAordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250
ZW50KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3NldHRpbmdzLT5zZXRBbGxvd0Rpc3BsYXlPZklu
c2VjdXJlQ29udGVudChlbmFibGVkKTsKK30KKwordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEFs
bG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3NldHRp
bmdzLT5zZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChlbmFibGVkKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
ZXR0aW5nc0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZXR0aW5nc0ltcGwuaAkocmV2aXNpb24gODQ5MzkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDYgKzExMiw4
IEBACiAgICAgdmlydHVhbCB2b2lkIHNldFZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0
aW9uKGludCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE1pbmltdW1UaW1lckludGVydmFsKGRvdWJs
ZSk7CiAgICAgdmlydHVhbCB2b2lkIHNldEZ1bGxTY3JlZW5FbmFibGVkKGJvb2wpOworICAgIHZp
cnR1YWwgdm9pZCBzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChib29sKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCk7CiAKIHBy
aXZhdGU6CiAgICAgV2ViQ29yZTo6U2V0dGluZ3MqIG1fc2V0dGluZ3M7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gODUzNTApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDExLTA0LTI5
ICBDaHJpcyBFdmFucyAgPGNldmFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdlYkNvcmU6OlNldHRpbmcgdG8gYmxv
Y2sgZGlzcGxheWluZyBhbmQvb3IgcnVubmluZyBpbnNlY3VyZSBjb250ZW50IG9uIHNlY3VyZSBw
YWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgz
NzgKKworICAgICAgICAqIHB1YmxpYy9XZWJTZXR0aW5ncy5oOgorICAgICAgICAqIHNyYy9XZWJT
ZXR0aW5nc0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OnNldEFs
bG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGlu
Z3NJbXBsOjpzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCk6CisgICAgICAgICogc3Jj
L1dlYlNldHRpbmdzSW1wbC5oOgorICAgICAgICBTaW1wbGUgcGx1bWJpbmcgZm9yIHRoZSBuZXcg
Ym9vbGVhbiBzZXR0aW5ncy4KKwogMjAxMS0wNC0yOSAgVnNldm9sb2QgVmxhc292ICA8dnNldmlr
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCShyZXZpc2lv
biA4NDkzOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExOSw2ICsxMTksOCBAQAogICAgIHZpcnR1YWwgdm9pZCBzZXRW
YWxpZGF0aW9uTWVzc2FnZVRpbWVyTWFnbmlmaWNhdGlvbihpbnQpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91YmxlKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNldEZ1bGxTY3JlZW5FbmFibGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChib29sKSA9IDA7CiAKIHByb3RlY3Rl
ZDoKICAgICB+V2ViU2V0dGluZ3MoKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg1MzUw
KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjkgQEAKKzIwMTEtMDQtMjkgIENocmlzIEV2YW5zICA8Y2V2YW5zQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV2ViQ29y
ZTo6U2V0dGluZyB0byBibG9jayBkaXNwbGF5aW5nIGFuZC9vciBydW5uaW5nIGluc2VjdXJlIGNv
bnRlbnQgb24gc2VjdXJlIHBhZ2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01ODM3OAorCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0lmRGlzcGxheUluc2VjdXJlQ29u
dGVudCk6IFJldHVybiB3aGV0aGVyIG9yIG5vdCB0aGUgbG9hZCBzaG91bGQgYmUgYmxvY2tlZCwg
YW5kIHR3ZWFrIHRoZSBtZXNzYWdlIHVwb24gYmxvY2tpbmcuCisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6Y2hlY2tJZlJ1bkluc2VjdXJlQ29udGVudCk6IFJldHVybiB3aGV0aGVyIG9y
IG5vdCB0aGUgbG9hZCBzaG91bGQgYmUgYmxvY2tlZCwgYW5kIHR3ZWFrIHRoZSBtZXNzYWdlIHVw
b24gYmxvY2tpbmcuCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICog
bG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYWluUmVz
b3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6IENoZWNrIGlmIHRoZSBmcmFtZSBsb2FkIGlz
IGJsb2NrZWQgZHVlIHRvIG1peGVkIGNvbnRlbnQgYW5kIGNhbmNlbCBpdCBpZiBzby4KKyAgICAg
ICAgKiBsb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3ViZnJh
bWVMb2FkZXI6OmxvYWRNZWRpYVBsYXllclByb3h5UGx1Z2luKTogSGFuZGxlIHRoZSBibG9ja2lu
ZyBvZiBtaXhlZC1jb250ZW50IHBsdWctaW4gbG9hZHMuCisgICAgICAgIChXZWJDb3JlOjpTdWJm
cmFtZUxvYWRlcjo6bG9hZFBsdWdpbik6IEhhbmRsZSB0aGUgYmxvY2tpbmcgb2YgbWl4ZWQtY29u
dGVudCBwbHVnLWluIGxvYWRzLgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2Fu
UmVxdWVzdCk6IEhhbmRsZSB0aGUgYmxvY2tpbmcgb2YgdmFyaW91cyBsb2FkcyBkdWUgdG8gbWl4
ZWQgY29udGVudCBjb25kaXRpb25zLgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKTogUGVybWl0IG1peGVkLWNvbnRlbnQg
bG9hZHMgYnkgZGVmYXVsdCB0byBhdm9pZCBhIGNoYW5nZSBpbiBiZWhhdmlvciBieSBkZWZhdWx0
LgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDogQWRkIHR3byBuZXcgYm9vbGVhbnMgdG8gY29u
dHJvbCBibG9ja2luZyBvZiBtaXhlZCBjb250ZW50IChkaXNwbGF5aW5nIGFuZCBydW5uaW5nIHRo
ZXJlb2YpLgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldEFsbG93RGlzcGxheU9mSW5z
ZWN1cmVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjphbGxvd0Rpc3BsYXlP
Zkluc2VjdXJlQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0QWxsb3dS
dW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmFs
bG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KToKKwogMjAxMS0wNC0yOSAgSmFtZXMgUm9iaW5z
b24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHI4NTMzMC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHJldmlzaW9uIDg0OTM5KQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOTks
NiArMzk5LDExIEBACiAgICAgICAgIHZvaWQgc2V0U2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbklu
aXRpYWxFbXB0eURvY3VtZW50KGJvb2wgZmxhZykgeyBtX3Nob3VsZEluamVjdFVzZXJTY3JpcHRz
SW5Jbml0aWFsRW1wdHlEb2N1bWVudCA9IGZsYWc7IH0KICAgICAgICAgYm9vbCBzaG91bGRJbmpl
Y3RVc2VyU2NyaXB0c0luSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSB7IHJldHVybiBtX3Nob3VsZElu
amVjdFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlEb2N1bWVudDsgfQogCisgICAgICAgIHZvaWQg
c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCBmbGFnKSB7IG1fYWxsb3dEaXNw
bGF5T2ZJbnNlY3VyZUNvbnRlbnQgPSBmbGFnOyB9CisgICAgICAgIGJvb2wgYWxsb3dEaXNwbGF5
T2ZJbnNlY3VyZUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93RGlzcGxheU9mSW5zZWN1
cmVDb250ZW50OyB9CisgICAgICAgIHZvaWQgc2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRl
bnQoYm9vbCBmbGFnKSB7IG1fYWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQgPSBmbGFnOyB9
CisgICAgICAgIGJvb2wgYWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoKSBjb25zdCB7IHJl
dHVybiBtX2FsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50OyB9CisKICAgICBwcml2YXRlOgog
ICAgICAgICBQYWdlKiBtX3BhZ2U7CiAKQEAgLTUwMiw2ICs1MDcsOCBAQAogICAgICAgICBib29s
IG1fdXNlUXVpY2tMb29rUmVzb3VyY2VDYWNoaW5nUXVpcmtzIDogMTsKICAgICAgICAgYm9vbCBt
X2ZvcmNlQ29tcG9zaXRpbmdNb2RlIDogMTsKICAgICAgICAgYm9vbCBtX3Nob3VsZEluamVjdFVz
ZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlEb2N1bWVudCA6IDE7CisgICAgICAgIGJvb2wgbV9hbGxv
d0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCA6IDE7CisgICAgICAgIGJvb2wgbV9hbGxvd1J1bm5p
bmdPZkluc2VjdXJlQ29udGVudCA6IDE7CiAKICNpZiBVU0UoQVZGT1VOREFUSU9OKQogICAgICAg
ICBzdGF0aWMgYm9vbCBnQVZGb3VuZGF0aW9uRW5hYmxlZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuY3BwCShyZXZpc2lvbiA4NDkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNiArMTc4LDggQEAKICAgICAsIG1fdXNlUXVp
Y2tMb29rUmVzb3VyY2VDYWNoaW5nUXVpcmtzKGZhbHNlKQogICAgICwgbV9mb3JjZUNvbXBvc2l0
aW5nTW9kZShmYWxzZSkKICAgICAsIG1fc2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxF
bXB0eURvY3VtZW50KGZhbHNlKQorICAgICwgbV9hbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVu
dCh0cnVlKQorICAgICwgbV9hbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCh0cnVlKQogewog
ICAgIC8vIEEgRnJhbWUgbWF5IG5vdCBoYXZlIGJlZW4gY3JlYXRlZCB5ZXQsIHNvIHdlIGluaXRp
YWxpemUgdGhlIEF0b21pY1N0cmluZyAKICAgICAvLyBoYXNoIGJlZm9yZSB0cnlpbmcgdG8gdXNl
IGl0LgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA4
NDkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEwNTIsMjYgKzEwNTIsMzIgQEAKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCBGcmFtZUxvYWRlcjo6Y2hlY2tJZkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmln
aW4qIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCkKK2Jvb2wgRnJhbWVMb2FkZXI6OmNoZWNrSWZE
aXNwbGF5SW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBjb250ZXh0LCBjb25zdCBLVVJM
JiB1cmwpCiB7CiAgICAgaWYgKCFpc01peGVkQ29udGVudChjb250ZXh0LCB1cmwpKQotICAgICAg
ICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgU3RyaW5nIG1lc3NhZ2UgPSBt
YWtlU3RyaW5nKCJUaGUgcGFnZSBhdCAiLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJp
bmcoKSwgIiBkaXNwbGF5ZWQgaW5zZWN1cmUgY29udGVudCBmcm9tICIsIHVybC5zdHJpbmcoKSwg
Ii5cbiIpOworICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPnNldHRpbmdzKCk7Cisg
ICAgYm9vbCBhbGxvd2VkID0gc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmFsbG93RGlzcGxheU9mSW5z
ZWN1cmVDb250ZW50KCk7CisgICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKChhbGxvd2Vk
ID8gIiIgOiAiW2Jsb2NrZWRdICIpLCAiVGhlIHBhZ2UgYXQgIiwgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+dXJsKCkuc3RyaW5nKCksICIgZGlzcGxheWVkIGluc2VjdXJlIGNvbnRlbnQgZnJvbSAiLCB1
cmwuc3RyaW5nKCksICIuXG4iKTsKICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgp
LT5hZGRNZXNzYWdlKEhUTUxNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgV2FybmluZ01l
c3NhZ2VMZXZlbCwgbWVzc2FnZSwgMSwgU3RyaW5nKCkpOwogCiAgICAgbV9jbGllbnQtPmRpZERp
c3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKKyAgICByZXR1cm4gYWxsb3dlZDsKIH0KIAotdm9pZCBG
cmFtZUxvYWRlcjo6Y2hlY2tJZlJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogY29u
dGV4dCwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBGcmFtZUxvYWRlcjo6Y2hlY2tJZlJ1bkluc2Vj
dXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsKQogewog
ICAgIGlmICghaXNNaXhlZENvbnRlbnQoY29udGV4dCwgdXJsKSkKLSAgICAgICAgcmV0dXJuOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygi
VGhlIHBhZ2UgYXQgIiwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCksICIgcmFu
IGluc2VjdXJlIGNvbnRlbnQgZnJvbSAiLCB1cmwuc3RyaW5nKCksICIuXG4iKTsKKyAgICBTZXR0
aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5zZXR0aW5ncygpOworICAgIGJvb2wgYWxsb3dlZCA9
IHNldHRpbmdzICYmIHNldHRpbmdzLT5hbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCgpOwor
ICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygoYWxsb3dlZCA/ICIiIDogIltibG9ja2Vk
XSAiKSwgIlRoZSBwYWdlIGF0ICIsIG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygp
LCAiIHJhbiBpbnNlY3VyZSBjb250ZW50IGZyb20gIiwgdXJsLnN0cmluZygpLCAiLlxuIik7CiAg
ICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2FnZShIVE1MTWVzc2Fn
ZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIFdhcm5pbmdNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDEs
IFN0cmluZygpKTsKIAogICAgIG1fY2xpZW50LT5kaWRSdW5JbnNlY3VyZUNvbnRlbnQoY29udGV4
dCwgdXJsKTsKKyAgICByZXR1cm4gYWxsb3dlZDsKIH0KIAogRnJhbWUqIEZyYW1lTG9hZGVyOjpv
cGVuZXIoKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiA4NDkzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0NiwxNCArMjQ2LDE2IEBACiAgICAgICAgIC8vIFRoZXNlIHJlc291cmNlIGNhbiBpbmplY3Qg
c2NyaXB0IGludG8gdGhlIGN1cnJlbnQgZG9jdW1lbnQgKFNjcmlwdCwKICAgICAgICAgLy8gWFNM
KSBvciBleGZpbHRyYXRlIHRoZSBjb250ZW50IG9mIHRoZSBjdXJyZW50IGRvY3VtZW50IChDU1Mp
LgogICAgICAgICBpZiAoRnJhbWUqIGYgPSBmcmFtZSgpKQotICAgICAgICAgICAgZi0+bG9hZGVy
KCktPmNoZWNrSWZSdW5JbnNlY3VyZUNvbnRlbnQobV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4o
KSwgdXJsKTsKKyAgICAgICAgICAgIGlmICghZi0+bG9hZGVyKCktPmNoZWNrSWZSdW5JbnNlY3Vy
ZUNvbnRlbnQobV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ2FjaGVkUmVzb3Vy
Y2U6OkltYWdlUmVzb3VyY2U6CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNl
OiB7CiAgICAgICAgIC8vIFRoZXNlIHJlc291cmNlcyBjYW4gY29ycnVwdCBvbmx5IHRoZSBmcmFt
ZSdzIHBpeGVscy4KICAgICAgICAgaWYgKEZyYW1lKiBmID0gZnJhbWUoKSkgewogICAgICAgICAg
ICAgRnJhbWUqIHRvcCA9IGYtPnRyZWUoKS0+dG9wKCk7Ci0gICAgICAgICAgICB0b3AtPmxvYWRl
cigpLT5jaGVja0lmRGlzcGxheUluc2VjdXJlQ29udGVudCh0b3AtPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCksIHVybCk7CisgICAgICAgICAgICBpZiAoIXRvcC0+bG9hZGVyKCktPmNoZWNr
SWZEaXNwbGF5SW5zZWN1cmVDb250ZW50KHRvcC0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KSwgdXJsKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAg
ICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJj
ZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNv
dXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDg0OTM5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L01haW5SZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNiwxNSArMjA2LDE5
IEBACiAgICAgaWYgKG5ld1JlcXVlc3QuY2FjaGVQb2xpY3koKSA9PSBVc2VQcm90b2NvbENhY2hl
UG9saWN5ICYmIGlzUG9zdE9yUmVkaXJlY3RBZnRlclBvc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RS
ZXNwb25zZSkpCiAgICAgICAgIG5ld1JlcXVlc3Quc2V0Q2FjaGVQb2xpY3koUmVsb2FkSWdub3Jp
bmdDYWNoZURhdGEpOwogCisgICAgRnJhbWUqIHRvcCA9IG1fZnJhbWUtPnRyZWUoKS0+dG9wKCk7
CisgICAgaWYgKHRvcCAhPSBtX2ZyYW1lKSB7CisgICAgICAgIGlmICghZnJhbWVMb2FkZXIoKS0+
Y2hlY2tJZkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQodG9wLT5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpLCBuZXdSZXF1ZXN0LnVybCgpKSkgeworICAgICAgICAgICAgY2FuY2VsKCk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKICAgICBSZXNvdXJjZUxvYWRlcjo6
d2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogCiAgICAgLy8g
RG9uJ3Qgc2V0IHRoaXMgb24gdGhlIGZpcnN0IHJlcXVlc3QuIEl0IGlzIHNldCB3aGVuIHRoZSBt
YWluIGxvYWQgd2FzIHN0YXJ0ZWQuCiAgICAgbV9kb2N1bWVudExvYWRlci0+c2V0UmVxdWVzdChu
ZXdSZXF1ZXN0KTsKIAotICAgIEZyYW1lKiB0b3AgPSBtX2ZyYW1lLT50cmVlKCktPnRvcCgpOwot
ICAgIGlmICh0b3AgIT0gbV9mcmFtZSkKLSAgICAgICAgZnJhbWVMb2FkZXIoKS0+Y2hlY2tJZkRp
c3BsYXlJbnNlY3VyZUNvbnRlbnQodG9wLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBu
ZXdSZXF1ZXN0LnVybCgpKTsKLQogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMp
CiAgICAgaWYgKCFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIFdlIGNo
ZWNrZWQgYXBwbGljYXRpb24gY2FjaGUgZm9yIGluaXRpYWwgVVJMLCBub3cgd2UgbmVlZCB0byBj
aGVjayBpdCBmb3IgcmVkaXJlY3RlZCBvbmUuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaAkocmV2aXNpb24gODQ5MzkpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjU2LDggKzI1Niw4IEBACiAKICAgICAvLyBNaXhl
ZCBjb250ZW50IHJlbGF0ZWQgZnVuY3Rpb25zLgogICAgIHN0YXRpYyBib29sIGlzTWl4ZWRDb250
ZW50KFNlY3VyaXR5T3JpZ2luKiBjb250ZXh0LCBjb25zdCBLVVJMJik7Ci0gICAgdm9pZCBjaGVj
a0lmRGlzcGxheUluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogY29udGV4dCwgY29uc3Qg
S1VSTCYpOwotICAgIHZvaWQgY2hlY2tJZlJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdp
biogY29udGV4dCwgY29uc3QgS1VSTCYpOworICAgIGJvb2wgY2hlY2tJZkRpc3BsYXlJbnNlY3Vy
ZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIGNvbnRleHQsIGNvbnN0IEtVUkwmKTsKKyAgICBib29s
IGNoZWNrSWZSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIGNvbnRleHQsIGNvbnN0
IEtVUkwmKTsKIAogICAgIEZyYW1lKiBvcGVuZXIoKTsKICAgICB2b2lkIHNldE9wZW5lcihGcmFt
ZSopOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCShyZXZp
c2lvbiA4NDkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3Myw3ICsxNzMsOCBAQAogICAgIGVsc2UgaWYgKG1lZGlhRWxl
bWVudC0+aXNWaWRlbygpKQogICAgICAgICBzaXplID0gUmVuZGVyVmlkZW86OmRlZmF1bHRTaXpl
KCk7CiAKLSAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2hlY2tJZlJ1bkluc2VjdXJlQ29udGVudCht
X2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBjb21wbGV0ZWRVUkwpOworICAg
IGlmICghbV9mcmFtZS0+bG9hZGVyKCktPmNoZWNrSWZSdW5JbnNlY3VyZUNvbnRlbnQobV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgY29tcGxldGVkVVJMKSkKKyAgICAgICAg
cmV0dXJuIDA7CiAKICAgICBSZWZQdHI8V2lkZ2V0PiB3aWRnZXQgPSBtX2ZyYW1lLT5sb2FkZXIo
KS0+Y2xpZW50KCktPmNyZWF0ZU1lZGlhUGxheWVyUHJveHlQbHVnaW4oc2l6ZSwgbWVkaWFFbGVt
ZW50LCBjb21wbGV0ZWRVUkwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAiYXBwbGljYXRpb24veC1tZWRpYS1lbGVtZW50
LXByb3h5LXBsdWdpbiIpOwpAQCAtMzUyLDcgKzM1Myw4IEBACiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9IG1fZnJhbWUtPmxvYWRlcigpOwot
ICAgIGZyYW1lTG9hZGVyLT5jaGVja0lmUnVuSW5zZWN1cmVDb250ZW50KGRvY3VtZW50KCktPnNl
Y3VyaXR5T3JpZ2luKCksIHVybCk7CisgICAgaWYgKCFmcmFtZUxvYWRlci0+Y2hlY2tJZlJ1bklu
c2VjdXJlQ29udGVudChkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCB1cmwpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBJbnRTaXplIGNvbnRlbnRTaXplKHJlbmRlcmVyLT5jb250
ZW50V2lkdGgoKSwgcmVuZGVyZXItPmNvbnRlbnRIZWlnaHQoKSk7CiAgICAgYm9vbCBsb2FkTWFu
dWFsbHkgPSBkb2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCkgJiYgIW1fY29udGFpbnNQbHVn
aW5zICYmIHRvUGx1Z2luRG9jdW1lbnQoZG9jdW1lbnQoKSktPnNob3VsZExvYWRQbHVnaW5NYW51
YWxseSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>91762</attachid>
            <date>2011-04-29 16:08:36 -0700</date>
            <delta_ts>2011-04-29 18:16:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>58378a_3.diff</filename>
            <type>text/plain</type>
            <size>13487</size>
            <attacher name="Chris Evans">cevans</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNw
cAkocmV2aXNpb24gODQ5MzkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0
aW5nc0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTcsNCArMzk3LDE0IEBACiAjZW5kaWYK
IH0KIAordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250
ZW50KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3NldHRpbmdzLT5zZXRBbGxvd0Rpc3BsYXlPZklu
c2VjdXJlQ29udGVudChlbmFibGVkKTsKK30KKwordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEFs
bG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3NldHRp
bmdzLT5zZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChlbmFibGVkKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
ZXR0aW5nc0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZXR0aW5nc0ltcGwuaAkocmV2aXNpb24gODQ5MzkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTEyLDYgKzExMiw4
IEBACiAgICAgdmlydHVhbCB2b2lkIHNldFZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0
aW9uKGludCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE1pbmltdW1UaW1lckludGVydmFsKGRvdWJs
ZSk7CiAgICAgdmlydHVhbCB2b2lkIHNldEZ1bGxTY3JlZW5FbmFibGVkKGJvb2wpOworICAgIHZp
cnR1YWwgdm9pZCBzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChib29sKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCk7CiAKIHBy
aXZhdGU6CiAgICAgV2ViQ29yZTo6U2V0dGluZ3MqIG1fc2V0dGluZ3M7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gODUzNTApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDExLTA0LTI5
ICBDaHJpcyBFdmFucyAgPGNldmFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBBZGQgV2ViQ29yZTo6U2V0dGluZyB0byBibG9jayBk
aXNwbGF5aW5nIGFuZC9vciBydW5uaW5nIGluc2VjdXJlIGNvbnRlbnQgb24gc2VjdXJlIHBhZ2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODM3OAor
CisgICAgICAgICogcHVibGljL1dlYlNldHRpbmdzLmg6CisgICAgICAgICogc3JjL1dlYlNldHRp
bmdzSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6c2V0QWxsb3dE
aXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0lt
cGw6OnNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KToKKyAgICAgICAgKiBzcmMvV2Vi
U2V0dGluZ3NJbXBsLmg6CisgICAgICAgIFNpbXBsZSBwbHVtYmluZyBmb3IgdGhlIG5ldyBib29s
ZWFuIHNldHRpbmdzLgorCiAyMDExLTA0LTI5ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgJKHJldmlzaW9uIDg0
OTM5KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAkod29y
a2luZyBjb3B5KQpAQCAtMTE5LDYgKzExOSw4IEBACiAgICAgdmlydHVhbCB2b2lkIHNldFZhbGlk
YXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0aW9uKGludCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0RnVsbFNjcmVlbkVuYWJsZWQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRBbGxv
d0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KGJvb2wpID0gMDsKIAogcHJvdGVjdGVkOgog
ICAgIH5XZWJTZXR0aW5ncygpIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODUzNTApCisr
KyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMSBA
QAorMjAxMS0wNC0yOSAgQ2hyaXMgRXZhbnMgIDxjZXZhbnNAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgQWRkIFdlYkNvcmU6OlNldHRp
bmcgdG8gYmxvY2sgZGlzcGxheWluZyBhbmQvb3IgcnVubmluZyBpbnNlY3VyZSBjb250ZW50IG9u
IHNlY3VyZSBwYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTgzNzgKKworICAgICAgICBUZXN0OiBUbyBmb2xsb3cgaW4gc3Vic2VxdWVudCBwYXRj
aCwgaW5jbHVkaW5nIHRoZSB3aXJpbmcgdG8gZXhwb3NlIHRoZSBuZXcgc2V0dGluZ3MgdG8gTGF5
b3V0VGVzdHMuCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNoZWNrSWZEaXNwbGF5SW5zZWN1cmVDb250ZW50KTogUmV0
dXJuIHdoZXRoZXIgb3Igbm90IHRoZSBsb2FkIHNob3VsZCBiZSBibG9ja2VkLCBhbmQgdHdlYWsg
dGhlIG1lc3NhZ2UgdXBvbiBibG9ja2luZy4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
OjpjaGVja0lmUnVuSW5zZWN1cmVDb250ZW50KTogUmV0dXJuIHdoZXRoZXIgb3Igbm90IHRoZSBs
b2FkIHNob3VsZCBiZSBibG9ja2VkLCBhbmQgdHdlYWsgdGhlIG1lc3NhZ2UgdXBvbiBibG9ja2lu
Zy4KKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvTWFp
blJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRl
cjo6d2lsbFNlbmRSZXF1ZXN0KTogQ2hlY2sgaWYgdGhlIGZyYW1lIGxvYWQgaXMgYmxvY2tlZCBk
dWUgdG8gbWl4ZWQgY29udGVudCBhbmQgY2FuY2VsIGl0IGlmIHNvLiBUaGUgY2hlY2sgd2FzIG1v
dmVkIHVwIHNvIHRoYXQgaXQgb2NjdXJzIGJlZm9yZSBmaXJpbmcgdGhlIGxvYWQgY2FsbGJhY2tz
LCB0byBhdm9pZCBhbnkgb3V0Z29pbmcgbmV0d29yayBoaXRzIG9yIGFjY291bnRpbmcuIFJlZGly
ZWN0cyBhcmUgaGFuZGxlZCBiZWNhdXNlIHdpbGxTZW5kUmVxdWVzdCBpcyBjYWxsZWQgZm9yIGVh
Y2ggb25lIGluIHRoZSBjaGFpbi4KKyAgICAgICAgKiBsb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3ViZnJhbWVMb2FkZXI6OmxvYWRNZWRpYVBsYXllclByb3h5
UGx1Z2luKTogSGFuZGxlIHRoZSBibG9ja2luZyBvZiBtaXhlZC1jb250ZW50IHBsdWctaW4gbG9h
ZHMuCisgICAgICAgIChXZWJDb3JlOjpTdWJmcmFtZUxvYWRlcjo6bG9hZFBsdWdpbik6IEhhbmRs
ZSB0aGUgYmxvY2tpbmcgb2YgbWl4ZWQtY29udGVudCBwbHVnLWluIGxvYWRzLgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdCk6IEhhbmRsZSB0aGUgYmxvY2tpbmcg
b2YgdmFyaW91cyBsb2FkcyBkdWUgdG8gbWl4ZWQgY29udGVudCBjb25kaXRpb25zLgorICAgICAg
ICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRp
bmdzKTogUGVybWl0IG1peGVkLWNvbnRlbnQgbG9hZHMgYnkgZGVmYXVsdCB0byBhdm9pZCBhIGNo
YW5nZSBpbiBiZWhhdmlvciBieSBkZWZhdWx0LgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDog
QWRkIHR3byBuZXcgYm9vbGVhbnMgdG8gY29udHJvbCBibG9ja2luZyBvZiBtaXhlZCBjb250ZW50
IChkaXNwbGF5aW5nIGFuZCBydW5uaW5nIHRoZXJlb2YpLgorICAgICAgICAoV2ViQ29yZTo6U2V0
dGluZ3M6OnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNldHRpbmdzOjphbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpTZXR0aW5nczo6c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KToK
KwogMjAxMS0wNC0yOSAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI4NTMzMC4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmgJKHJldmlzaW9uIDg0OTM5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOTksNiArMzk5LDExIEBACiAgICAgICAgIHZvaWQgc2V0
U2hvdWxkSW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3VtZW50KGJvb2wgZmxhZykg
eyBtX3Nob3VsZEluamVjdFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlEb2N1bWVudCA9IGZsYWc7
IH0KICAgICAgICAgYm9vbCBzaG91bGRJbmplY3RVc2VyU2NyaXB0c0luSW5pdGlhbEVtcHR5RG9j
dW1lbnQoKSB7IHJldHVybiBtX3Nob3VsZEluamVjdFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlE
b2N1bWVudDsgfQogCisgICAgICAgIHZvaWQgc2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRl
bnQoYm9vbCBmbGFnKSB7IG1fYWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQgPSBmbGFnOyB9
CisgICAgICAgIGJvb2wgYWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoKSBjb25zdCB7IHJl
dHVybiBtX2FsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50OyB9CisgICAgICAgIHZvaWQgc2V0
QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCBmbGFnKSB7IG1fYWxsb3dSdW5uaW5n
T2ZJbnNlY3VyZUNvbnRlbnQgPSBmbGFnOyB9CisgICAgICAgIGJvb2wgYWxsb3dSdW5uaW5nT2ZJ
bnNlY3VyZUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBtX2FsbG93UnVubmluZ09mSW5zZWN1cmVD
b250ZW50OyB9CisKICAgICBwcml2YXRlOgogICAgICAgICBQYWdlKiBtX3BhZ2U7CiAKQEAgLTUw
Miw2ICs1MDcsOCBAQAogICAgICAgICBib29sIG1fdXNlUXVpY2tMb29rUmVzb3VyY2VDYWNoaW5n
UXVpcmtzIDogMTsKICAgICAgICAgYm9vbCBtX2ZvcmNlQ29tcG9zaXRpbmdNb2RlIDogMTsKICAg
ICAgICAgYm9vbCBtX3Nob3VsZEluamVjdFVzZXJTY3JpcHRzSW5Jbml0aWFsRW1wdHlEb2N1bWVu
dCA6IDE7CisgICAgICAgIGJvb2wgbV9hbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCA6IDE7
CisgICAgICAgIGJvb2wgbV9hbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCA6IDE7CiAKICNp
ZiBVU0UoQVZGT1VOREFUSU9OKQogICAgICAgICBzdGF0aWMgYm9vbCBnQVZGb3VuZGF0aW9uRW5h
YmxlZDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCShyZXZpc2lvbiA4NDkzOSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgs
NiArMTc4LDggQEAKICAgICAsIG1fdXNlUXVpY2tMb29rUmVzb3VyY2VDYWNoaW5nUXVpcmtzKGZh
bHNlKQogICAgICwgbV9mb3JjZUNvbXBvc2l0aW5nTW9kZShmYWxzZSkKICAgICAsIG1fc2hvdWxk
SW5qZWN0VXNlclNjcmlwdHNJbkluaXRpYWxFbXB0eURvY3VtZW50KGZhbHNlKQorICAgICwgbV9h
bGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCh0cnVlKQorICAgICwgbV9hbGxvd1J1bm5pbmdP
Zkluc2VjdXJlQ29udGVudCh0cnVlKQogewogICAgIC8vIEEgRnJhbWUgbWF5IG5vdCBoYXZlIGJl
ZW4gY3JlYXRlZCB5ZXQsIHNvIHdlIGluaXRpYWxpemUgdGhlIEF0b21pY1N0cmluZyAKICAgICAv
LyBoYXNoIGJlZm9yZSB0cnlpbmcgdG8gdXNlIGl0LgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA4NDkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNTIsMjYgKzEwNTIsMzIgQEAK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tJZkRpc3BsYXlJ
bnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIGNvbnRleHQsIGNvbnN0IEtVUkwmIHVybCkK
K2Jvb2wgRnJhbWVMb2FkZXI6OmNoZWNrSWZEaXNwbGF5SW5zZWN1cmVDb250ZW50KFNlY3VyaXR5
T3JpZ2luKiBjb250ZXh0LCBjb25zdCBLVVJMJiB1cmwpCiB7CiAgICAgaWYgKCFpc01peGVkQ29u
dGVudChjb250ZXh0LCB1cmwpKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgU3RyaW5nIG1lc3NhZ2UgPSBtYWtlU3RyaW5nKCJUaGUgcGFnZSBhdCAiLCBtX2Zy
YW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSwgIiBkaXNwbGF5ZWQgaW5zZWN1cmUgY29u
dGVudCBmcm9tICIsIHVybC5zdHJpbmcoKSwgIi5cbiIpOworICAgIFNldHRpbmdzKiBzZXR0aW5n
cyA9IG1fZnJhbWUtPnNldHRpbmdzKCk7CisgICAgYm9vbCBhbGxvd2VkID0gc2V0dGluZ3MgJiYg
c2V0dGluZ3MtPmFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KCk7CisgICAgU3RyaW5nIG1l
c3NhZ2UgPSBtYWtlU3RyaW5nKChhbGxvd2VkID8gIiIgOiAiW2Jsb2NrZWRdICIpLCAiVGhlIHBh
Z2UgYXQgIiwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCksICIgZGlzcGxheWVk
IGluc2VjdXJlIGNvbnRlbnQgZnJvbSAiLCB1cmwuc3RyaW5nKCksICIuXG4iKTsKICAgICBtX2Zy
YW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEhUTUxNZXNzYWdlU291cmNl
LCBMb2dNZXNzYWdlVHlwZSwgV2FybmluZ01lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgMSwgU3RyaW5n
KCkpOwogCiAgICAgbV9jbGllbnQtPmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKKyAgICBy
ZXR1cm4gYWxsb3dlZDsKIH0KIAotdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tJZlJ1bkluc2VjdXJl
Q29udGVudChTZWN1cml0eU9yaWdpbiogY29udGV4dCwgY29uc3QgS1VSTCYgdXJsKQorYm9vbCBG
cmFtZUxvYWRlcjo6Y2hlY2tJZlJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogY29u
dGV4dCwgY29uc3QgS1VSTCYgdXJsKQogewogICAgIGlmICghaXNNaXhlZENvbnRlbnQoY29udGV4
dCwgdXJsKSkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFN0
cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygiVGhlIHBhZ2UgYXQgIiwgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+dXJsKCkuc3RyaW5nKCksICIgcmFuIGluc2VjdXJlIGNvbnRlbnQgZnJvbSAiLCB1cmwu
c3RyaW5nKCksICIuXG4iKTsKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5zZXR0
aW5ncygpOworICAgIGJvb2wgYWxsb3dlZCA9IHNldHRpbmdzICYmIHNldHRpbmdzLT5hbGxvd1J1
bm5pbmdPZkluc2VjdXJlQ29udGVudCgpOworICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmlu
ZygoYWxsb3dlZCA/ICIiIDogIltibG9ja2VkXSAiKSwgIlRoZSBwYWdlIGF0ICIsIG1fZnJhbWUt
PmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpLCAiIHJhbiBpbnNlY3VyZSBjb250ZW50IGZyb20g
IiwgdXJsLnN0cmluZygpLCAiLlxuIik7CiAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNv
bGUoKS0+YWRkTWVzc2FnZShIVE1MTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIFdhcm5p
bmdNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIDEsIFN0cmluZygpKTsKIAogICAgIG1fY2xpZW50LT5k
aWRSdW5JbnNlY3VyZUNvbnRlbnQoY29udGV4dCwgdXJsKTsKKyAgICByZXR1cm4gYWxsb3dlZDsK
IH0KIAogRnJhbWUqIEZyYW1lTG9hZGVyOjpvcGVuZXIoKQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lv
biA4NDkzOSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NiwxNCArMjQ2LDE2IEBACiAgICAgICAgIC8v
IFRoZXNlIHJlc291cmNlIGNhbiBpbmplY3Qgc2NyaXB0IGludG8gdGhlIGN1cnJlbnQgZG9jdW1l
bnQgKFNjcmlwdCwKICAgICAgICAgLy8gWFNMKSBvciBleGZpbHRyYXRlIHRoZSBjb250ZW50IG9m
IHRoZSBjdXJyZW50IGRvY3VtZW50IChDU1MpLgogICAgICAgICBpZiAoRnJhbWUqIGYgPSBmcmFt
ZSgpKQotICAgICAgICAgICAgZi0+bG9hZGVyKCktPmNoZWNrSWZSdW5JbnNlY3VyZUNvbnRlbnQo
bV9kb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsKTsKKyAgICAgICAgICAgIGlmICghZi0+
bG9hZGVyKCktPmNoZWNrSWZSdW5JbnNlY3VyZUNvbnRlbnQobV9kb2N1bWVudC0+c2VjdXJpdHlP
cmlnaW4oKSwgdXJsKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2U6CiAgICAgY2FzZSBD
YWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlOiB7CiAgICAgICAgIC8vIFRoZXNlIHJlc291cmNl
cyBjYW4gY29ycnVwdCBvbmx5IHRoZSBmcmFtZSdzIHBpeGVscy4KICAgICAgICAgaWYgKEZyYW1l
KiBmID0gZnJhbWUoKSkgewogICAgICAgICAgICAgRnJhbWUqIHRvcCA9IGYtPnRyZWUoKS0+dG9w
KCk7Ci0gICAgICAgICAgICB0b3AtPmxvYWRlcigpLT5jaGVja0lmRGlzcGxheUluc2VjdXJlQ29u
dGVudCh0b3AtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHVybCk7CisgICAgICAgICAg
ICBpZiAoIXRvcC0+bG9hZGVyKCktPmNoZWNrSWZEaXNwbGF5SW5zZWN1cmVDb250ZW50KHRvcC0+
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAJKHJldmlzaW9uIDg0OTM5
KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIwNiwxNSArMjA2LDE5IEBACiAgICAgaWYgKG5ld1JlcXVlc3QuY2FjaGVQ
b2xpY3koKSA9PSBVc2VQcm90b2NvbENhY2hlUG9saWN5ICYmIGlzUG9zdE9yUmVkaXJlY3RBZnRl
clBvc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpCiAgICAgICAgIG5ld1JlcXVlc3Qu
c2V0Q2FjaGVQb2xpY3koUmVsb2FkSWdub3JpbmdDYWNoZURhdGEpOwogCisgICAgRnJhbWUqIHRv
cCA9IG1fZnJhbWUtPnRyZWUoKS0+dG9wKCk7CisgICAgaWYgKHRvcCAhPSBtX2ZyYW1lKSB7Cisg
ICAgICAgIGlmICghZnJhbWVMb2FkZXIoKS0+Y2hlY2tJZkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQo
dG9wLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBuZXdSZXF1ZXN0LnVybCgpKSkgewor
ICAgICAgICAgICAgY2FuY2VsKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICB9CisKICAgICBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJl
ZGlyZWN0UmVzcG9uc2UpOwogCiAgICAgLy8gRG9uJ3Qgc2V0IHRoaXMgb24gdGhlIGZpcnN0IHJl
cXVlc3QuIEl0IGlzIHNldCB3aGVuIHRoZSBtYWluIGxvYWQgd2FzIHN0YXJ0ZWQuCiAgICAgbV9k
b2N1bWVudExvYWRlci0+c2V0UmVxdWVzdChuZXdSZXF1ZXN0KTsKIAotICAgIEZyYW1lKiB0b3Ag
PSBtX2ZyYW1lLT50cmVlKCktPnRvcCgpOwotICAgIGlmICh0b3AgIT0gbV9mcmFtZSkKLSAgICAg
ICAgZnJhbWVMb2FkZXIoKS0+Y2hlY2tJZkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQodG9wLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBuZXdSZXF1ZXN0LnVybCgpKTsKLQogI2lmIEVOQUJM
RShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiAgICAgaWYgKCFyZWRpcmVjdFJlc3BvbnNlLmlz
TnVsbCgpKSB7CiAgICAgICAgIC8vIFdlIGNoZWNrZWQgYXBwbGljYXRpb24gY2FjaGUgZm9yIGlu
aXRpYWwgVVJMLCBub3cgd2UgbmVlZCB0byBjaGVjayBpdCBmb3IgcmVkaXJlY3RlZCBvbmUuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gODQ5MzkpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjU2
LDggKzI1Niw4IEBACiAKICAgICAvLyBNaXhlZCBjb250ZW50IHJlbGF0ZWQgZnVuY3Rpb25zLgog
ICAgIHN0YXRpYyBib29sIGlzTWl4ZWRDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBjb250ZXh0LCBj
b25zdCBLVVJMJik7Ci0gICAgdm9pZCBjaGVja0lmRGlzcGxheUluc2VjdXJlQ29udGVudChTZWN1
cml0eU9yaWdpbiogY29udGV4dCwgY29uc3QgS1VSTCYpOwotICAgIHZvaWQgY2hlY2tJZlJ1bklu
c2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogY29udGV4dCwgY29uc3QgS1VSTCYpOworICAg
IGJvb2wgY2hlY2tJZkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIGNvbnRl
eHQsIGNvbnN0IEtVUkwmKTsKKyAgICBib29sIGNoZWNrSWZSdW5JbnNlY3VyZUNvbnRlbnQoU2Vj
dXJpdHlPcmlnaW4qIGNvbnRleHQsIGNvbnN0IEtVUkwmKTsKIAogICAgIEZyYW1lKiBvcGVuZXIo
KTsKICAgICB2b2lkIHNldE9wZW5lcihGcmFtZSopOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3ViZnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA4NDkzOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Myw3ICsxNzMs
OCBAQAogICAgIGVsc2UgaWYgKG1lZGlhRWxlbWVudC0+aXNWaWRlbygpKQogICAgICAgICBzaXpl
ID0gUmVuZGVyVmlkZW86OmRlZmF1bHRTaXplKCk7CiAKLSAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+
Y2hlY2tJZlJ1bkluc2VjdXJlQ29udGVudChtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpLCBjb21wbGV0ZWRVUkwpOworICAgIGlmICghbV9mcmFtZS0+bG9hZGVyKCktPmNoZWNr
SWZSdW5JbnNlY3VyZUNvbnRlbnQobV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KSwgY29tcGxldGVkVVJMKSkKKyAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZWZQdHI8V2lkZ2V0
PiB3aWRnZXQgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmNyZWF0ZU1lZGlhUGxheWVy
UHJveHlQbHVnaW4oc2l6ZSwgbWVkaWFFbGVtZW50LCBjb21wbGV0ZWRVUkwsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzLCAi
YXBwbGljYXRpb24veC1tZWRpYS1lbGVtZW50LXByb3h5LXBsdWdpbiIpOwpAQCAtMzUyLDcgKzM1
Myw4IEBACiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEZyYW1lTG9hZGVyKiBmcmFtZUxv
YWRlciA9IG1fZnJhbWUtPmxvYWRlcigpOwotICAgIGZyYW1lTG9hZGVyLT5jaGVja0lmUnVuSW5z
ZWN1cmVDb250ZW50KGRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHVybCk7CisgICAgaWYg
KCFmcmFtZUxvYWRlci0+Y2hlY2tJZlJ1bkluc2VjdXJlQ29udGVudChkb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpLCB1cmwpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBJbnRTaXpl
IGNvbnRlbnRTaXplKHJlbmRlcmVyLT5jb250ZW50V2lkdGgoKSwgcmVuZGVyZXItPmNvbnRlbnRI
ZWlnaHQoKSk7CiAgICAgYm9vbCBsb2FkTWFudWFsbHkgPSBkb2N1bWVudCgpLT5pc1BsdWdpbkRv
Y3VtZW50KCkgJiYgIW1fY29udGFpbnNQbHVnaW5zICYmIHRvUGx1Z2luRG9jdW1lbnQoZG9jdW1l
bnQoKSktPnNob3VsZExvYWRQbHVnaW5NYW51YWxseSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92901</attachid>
            <date>2011-05-09 18:19:19 -0700</date>
            <delta_ts>2011-05-09 19:36:56 -0700</delta_ts>
            <desc>Plumbing...</desc>
            <filename>58378b_1.diff</filename>
            <type>text/plain</type>
            <size>29394</size>
            <attacher name="Chris Evans">cevans</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjEwOSkKKysrIFNvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDUtMDkgIENo
cmlzIEV2YW5zICA8Y2V2YW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQbHVtYmluZyBmb3IgbmV3IHNldHRpbmdzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgzNzgKKworICAg
ICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpRV2Vi
U2V0dGluZ3MpOgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuaDoKKwogMjAxMS0wNS0wNyAg
Sm9lIE1hc29uICA8am1hc29uQHJpbS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuaWVs
IEJhdGVzLgpJbmRleDogU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgJKHJldmlzaW9uIDg1
Nzg0KQorKysgU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc3LDcgKzc3LDkgQEAKICAgICAgICAgU2l0ZVNwZWNpZmljUXVpcmtzRW5hYmxlZCwK
ICAgICAgICAgSmF2YXNjcmlwdENhbkNsb3NlV2luZG93cywKICAgICAgICAgV2ViR0xFbmFibGVk
LAotICAgICAgICBIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQKKyAgICAgICAgSHlwZXJsaW5rQXVk
aXRpbmdFbmFibGVkLAorICAgICAgICBQYWdlc0NhbkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQsCisg
ICAgICAgIFBhZ2VzQ2FuUnVuSW5zZWN1cmVDb250ZW50CiAgICAgfTsKICAgICBlbnVtIFdlYkdy
YXBoaWMgewogICAgICAgICBNaXNzaW5nSW1hZ2VHcmFwaGljLApJbmRleDogU291cmNlL1dlYktp
dC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2Vic2V0dGluZ3MuY3BwCShyZXZpc2lvbiA4NTc4NCkKKysrIFNvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxMCw2ICs1MTAsOCBA
QAogICAgIGQtPmF0dHJpYnV0ZXMuaW5zZXJ0KFFXZWJTZXR0aW5nczo6VGlsZWRCYWNraW5nU3Rv
cmVFbmFibGVkLCBmYWxzZSk7CiAgICAgZC0+YXR0cmlidXRlcy5pbnNlcnQoUVdlYlNldHRpbmdz
OjpGcmFtZUZsYXR0ZW5pbmdFbmFibGVkLCBmYWxzZSk7CiAgICAgZC0+YXR0cmlidXRlcy5pbnNl
cnQoUVdlYlNldHRpbmdzOjpTaXRlU3BlY2lmaWNRdWlya3NFbmFibGVkLCB0cnVlKTsKKyAgICBk
LT5hdHRyaWJ1dGVzLmluc2VydChRV2ViU2V0dGluZ3M6OlBhZ2VzQ2FuRGlzcGxheUluc2VjdXJl
Q29udGVudCwgdHJ1ZSk7CisgICAgZC0+YXR0cmlidXRlcy5pbnNlcnQoUVdlYlNldHRpbmdzOjpQ
YWdlc0NhblJ1bkluc2VjdXJlQ29udGVudCwgdHJ1ZSk7CiAgICAgZC0+b2ZmbGluZVN0b3JhZ2VE
ZWZhdWx0UXVvdGEgPSA1ICogMTAyNCAqIDEwMjQ7CiAgICAgZC0+ZGVmYXVsdFRleHRFbmNvZGlu
ZyA9IFFMYXRpbjFTdHJpbmcoImlzby04ODU5LTEiKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDg1Nzg0KQorKysgU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjA2LDcgKzMyMDYsOCBAQAogICAgICAgICBlbmFibGVVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVS
SSwgZW5hYmxlRmlsZUFjY2Vzc0Zyb21GaWxlVVJJLAogICAgICAgICBlbmFibGVET01QYXN0ZSwg
dGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzLCBlbmFibGVXZWJHTCwKICAgICAgICAgZW5hYmxl
U2l0ZVNwZWNpZmljUXVpcmtzLCB1c2VQYWdlQ2FjaGUsIGVuYWJsZUphdmFBcHBsZXQsCi0gICAg
ICAgIGVuYWJsZUh5cGVybGlua0F1ZGl0aW5nLCBlbmFibGVGdWxsc2NyZWVuLCBlbmFibGVETlNQ
cmVmZXRjaGluZzsKKyAgICAgICAgZW5hYmxlSHlwZXJsaW5rQXVkaXRpbmcsIGVuYWJsZUZ1bGxz
Y3JlZW4sIGVuYWJsZUROU1ByZWZldGNoaW5nLAorICAgICAgICBlbmFibGVEaXNwbGF5T2ZJbnNl
Y3VyZUNvbnRlbnQsIGVuYWJsZVJ1bm5pbmdPZkluc2VjdXJlQ29udGVudDsKIAogICAgIFdlYktp
dEVkaXRpbmdCZWhhdmlvciBlZGl0aW5nQmVoYXZpb3I7CiAKQEAgLTMyNDksNiArMzI1MCw4IEBA
CiAgICAgICAgICAgICAgICAgICJlbmFibGUtZnVsbHNjcmVlbiIsICZlbmFibGVGdWxsc2NyZWVu
LAogICAgICAgICAgICAgICAgICAiZW5hYmxlLWRucy1wcmVmZXRjaGluZyIsICZlbmFibGVETlNQ
cmVmZXRjaGluZywKICAgICAgICAgICAgICAgICAgImVuYWJsZS13ZWJnbCIsICZlbmFibGVXZWJH
TCwKKyAgICAgICAgICAgICAgICAgImVuYWJsZS1kaXNwbGF5LW9mLWluc2VjdXJlLWNvbnRlbnQi
LCAmZW5hYmxlRGlzcGxheU9mSW5zZWN1cmVDb250ZW50LAorICAgICAgICAgICAgICAgICAiZW5h
YmxlLXJ1bm5pbmctb2YtaW5zZWN1cmUtY29udGVudCIsICZlbmFibGVSdW5uaW5nT2ZJbnNlY3Vy
ZUNvbnRlbnQsCiAgICAgICAgICAgICAgICAgIE5VTEwpOwogCiAgICAgc2V0dGluZ3MtPnNldERl
ZmF1bHRUZXh0RW5jb2RpbmdOYW1lKGRlZmF1bHRFbmNvZGluZyk7CkBAIC0zMjg3LDYgKzMyOTAs
OCBAQAogICAgIHNldHRpbmdzLT5zZXRKYXZhRW5hYmxlZChlbmFibGVKYXZhQXBwbGV0KTsKICAg
ICBzZXR0aW5ncy0+c2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKGVuYWJsZUh5cGVybGlua0F1
ZGl0aW5nKTsKICAgICBzZXR0aW5ncy0+c2V0RE5TUHJlZmV0Y2hpbmdFbmFibGVkKGVuYWJsZURO
U1ByZWZldGNoaW5nKTsKKyAgICBzZXR0aW5ncy0+c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNv
bnRlbnQoZW5hYmxlRGlzcGxheU9mSW5zZWN1cmVDb250ZW50KTsKKyAgICBzZXR0aW5ncy0+c2V0
QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoZW5hYmxlUnVubmluZ09mSW5zZWN1cmVDb250
ZW50KTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBzZXR0aW5ncy0+c2V0RnVs
bFNjcmVlbkVuYWJsZWQoZW5hYmxlRnVsbHNjcmVlbik7CkBAIC0zNDE3LDYgKzM0MjIsMTAgQEAK
ICAgICAgICAgc2V0dGluZ3MtPnNldEphdmFFbmFibGVkKGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnZh
bHVlKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBnX2ludGVybl9zdHJpbmcoImVuYWJsZS1oeXBl
cmxpbmstYXVkaXRpbmciKSkKICAgICAgICAgc2V0dGluZ3MtPnNldEh5cGVybGlua0F1ZGl0aW5n
RW5hYmxlZChnX3ZhbHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOworICAgIGVsc2UgaWYgKG5hbWUg
PT0gZ19pbnRlcm5fc3RyaW5nKCJlbmFibGUtZGlzcGxheS1vZi1pbnNlY3VyZS1jb250ZW50Iikp
CisgICAgICAgIHNldHRpbmdzLT5zZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChnX3Zh
bHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5f
c3RyaW5nKCJlbmFibGUtcnVubmluZy1vZi1pbnNlY3VyZS1jb250ZW50IikpCisgICAgICAgIHNl
dHRpbmdzLT5zZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChnX3ZhbHVlX2dldF9ib29s
ZWFuKCZ2YWx1ZSkpOwogCiAjaWYgRU5BQkxFKFNQRUxMQ0hFQ0spCiAgICAgZWxzZSBpZiAobmFt
ZSA9PSBnX2ludGVybl9zdHJpbmcoInNwZWxsLWNoZWNraW5nLWxhbmd1YWdlcyIpKSB7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjEwOSkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTA1LTA5ICBDaHJp
cyBFdmFucyAgPGNldmFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUGx1bWJpbmcgZm9yIG5ldyBzZXR0aW5ncy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4Mzc4CisKKyAgICAg
ICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdf
dXBkYXRlX3NldHRpbmdzKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3Rp
ZnkpOgorCiAyMDExLTA0LTI5ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEuCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmgJKHJldmlzaW9uIDg1Nzg0KQorKysgU291cmNlL1dl
YktpdC93aW4vV2ViUHJlZmVyZW5jZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzY4LDEyICszNjgs
MjQgQEAKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QWxsb3dVbml2
ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoCiAgICAgLyogW2luXSAqLyBCT09MIGFsbG93QWNjZXNz
KTsKIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhbGxvd0Rpc3BsYXlP
Zkluc2VjdXJlQ29udGVudCgKKyAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGFsbG93QWNj
ZXNzKTsKKworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBbGxvd0Rp
c3BsYXlPZkluc2VjdXJlQ29udGVudCgKKyAgICAvKiBbaW5dICovIEJPT0wgYWxsb3dBY2Nlc3Mp
OworCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFsbG93RmlsZUFjY2Vz
c0Zyb21GaWxlVVJMcygKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGFsbG93QWNjZXNz
KTsKIAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBbGxvd0ZpbGVB
Y2Nlc3NGcm9tRmlsZVVSTHMoCiAgICAgLyogW2luXSAqLyBCT09MIGFsbG93QWNjZXNzKTsKIAor
ICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhbGxvd1J1bm5pbmdPZkluc2Vj
dXJlQ29udGVudCgKKyAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGFsbG93QWNjZXNzKTsK
KworICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBbGxvd1J1bm5pbmdP
Zkluc2VjdXJlQ29udGVudCgKKyAgICAvKiBbaW5dICovIEJPT0wgYWxsb3dBY2Nlc3MpOworCiAg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGphdmFTY3JpcHRDYW5BY2Nlc3ND
bGlwYm9hcmQoCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKTsKIApJbmRl
eDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gODYxMDkpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxMS0wNS0wOSAgQ2hy
aXMgRXZhbnMgIDxjZXZhbnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFBsdW1iaW5nIGZvciBuZXcgc2V0dGluZ3MuCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODM3OAorCisgICAg
ICAgICogSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbDoKKyAgICAgICAgKiBX
ZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcmVmZXJlbmNlcy5jcHA6
CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncyk6Cisg
ICAgICAgIChXZWJQcmVmZXJlbmNlczo6YWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQpOgor
ICAgICAgICAoV2ViUHJlZmVyZW5jZXM6OnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50
KToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjphbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVu
dCk6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNv
bnRlbnQpOgorICAgICAgICAqIFdlYlByZWZlcmVuY2VzLmg6CisgICAgICAgICogV2ViVmlldy5j
cHA6CisgICAgICAgIChXZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQpOgorCiAyMDEx
LTA1LTA5ICBEbWl0cnkgTG9tb3YgIDxkc2xvbW92QGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgU2FtIFdlaW5pZy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiA4
NTc4NCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00NzY1LDExICs0NzY1LDIxIEBACiAgICAgICAgIHJldHVybiBocjsKICAgICBzZXR0aW5ncy0+
c2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoISFlbmFibGVkKTsKIAorICAgIGhy
ID0gcHJlZnNQcml2YXRlLT5hbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCgmZW5hYmxlZCk7
CisgICAgaWYgKEZBSUxFRChocikpCisgICAgICAgIHJldHVybiBocjsKKyAgICBzZXR0aW5ncy0+
c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoISFlbmFibGVkKTsKKwogICAgIGhyID0g
cHJlZnNQcml2YXRlLT5hbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoJmVuYWJsZWQpOwogICAg
IGlmIChGQUlMRUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7CiAgICAgc2V0dGluZ3MtPnNldEFs
bG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyghIWVuYWJsZWQpOwogCisgICAgaHIgPSBwcmVmc1By
aXZhdGUtPmFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KCZlbmFibGVkKTsKKyAgICBpZiAo
RkFJTEVEKGhyKSkKKyAgICAgICAgcmV0dXJuIGhyOworICAgIHNldHRpbmdzLT5zZXRBbGxvd1J1
bm5pbmdPZkluc2VjdXJlQ29udGVudCghIWVuYWJsZWQpOworCiAgICAgaHIgPSBwcmVmc1ByaXZh
dGUtPmphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoJmVuYWJsZWQpOwogICAgIGlmIChGQUlM
RUQoaHIpKQogICAgICAgICByZXR1cm4gaHI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQ
cmVmZXJlbmNlS2V5c1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9X
ZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAkocmV2aXNpb24gODU3ODQpCisrKyBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDks
NyArNDksOSBAQAogI2RlZmluZSBXZWJLaXRKYXZhU2NyaXB0RW5hYmxlZFByZWZlcmVuY2VLZXkg
IldlYktpdEphdmFTY3JpcHRFbmFibGVkIgogI2RlZmluZSBXZWJLaXRXZWJTZWN1cml0eUVuYWJs
ZWRQcmVmZXJlbmNlS2V5ICJXZWJLaXRXZWJTZWN1cml0eUVuYWJsZWQiCiAjZGVmaW5lIFdlYktp
dEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVyZW5jZUtleSAiV2ViS2l0QWxs
b3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMiCisjZGVmaW5lIFdlYktpdEFsbG93RGlzcGxh
eU9mSW5zZWN1cmVDb250ZW50UHJlZmVyZW5jZUtleSAiV2ViS2l0QWxsb3dEaXNwbGF5T2ZJbnNl
Y3VyZUNvbnRlbnQiCiAjZGVmaW5lIFdlYktpdEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc1By
ZWZlcmVuY2VLZXkgIldlYktpdEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyIKKyNkZWZpbmUg
V2ViS2l0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnRQcmVmZXJlbmNlS2V5ICJXZWJLaXRB
bGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCIKICNkZWZpbmUgV2ViS2l0SmF2YVNjcmlwdENh
bk9wZW5XaW5kb3dzQXV0b21hdGljYWxseVByZWZlcmVuY2VLZXkgIldlYktpdEphdmFTY3JpcHRD
YW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkiCiAjZGVmaW5lIFdlYktpdFBsdWdpbnNFbmFibGVk
UHJlZmVyZW5jZUtleSAiV2ViS2l0UGx1Z2luc0VuYWJsZWQiCiAjZGVmaW5lIFdlYktpdERhdGFi
YXNlc0VuYWJsZWRQcmVmZXJlbmNlS2V5ICJXZWJLaXREYXRhYmFzZXNFbmFibGVkIgpJbmRleDog
U291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcAkocmV2aXNpb24gODU3ODQpCisrKyBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNSw3
ICsyMDUsOSBAQAogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJL
aXRKYXZhU2NyaXB0RW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAgICAg
Q0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdFdlYlNlY3VyaXR5RW5h
YmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVV
UkxzUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRk
VmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50
UHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1
ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzUHJlZmVy
ZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKKyAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZh
dWx0cywgQ0ZTVFIoV2ViS2l0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnRQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhblRydWUpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRz
LCBDRlNUUihXZWJLaXRKYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkUHJlZmVyZW5jZUtleSks
IGtDRkJvb2xlYW5GYWxzZSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENG
U1RSKFdlYktpdFhTU0F1ZGl0b3JFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVl
KTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0RnJhbWVG
bGF0dGVuaW5nRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOwpAQCAtODAy
LDYgKzgwNCwyMCBAQAogICAgIHJldHVybiBTX09LOwogfQogCitIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlByZWZlcmVuY2VzOjphbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCgKKyAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGFsbG93QWNjZXNzKQoreworICAgICphbGxvd0Fj
Y2VzcyA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJl
Q29udGVudFByZWZlcmVuY2VLZXkpKTsKKyAgICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3Vy
ZUNvbnRlbnQoCisgICAgLyogW2luXSAqLyBCT09MIGFsbG93QWNjZXNzKQoreworICAgIHNldEJv
b2xWYWx1ZShDRlNUUihXZWJLaXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudFByZWZlcmVu
Y2VLZXkpLCBhbGxvd0FjY2Vzcyk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJM
cygKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGFsbG93QWNjZXNzKQogewpAQCAtODE2
LDYgKzgzMiwyMCBAQAogICAgIHJldHVybiBTX09LOwogfQogCitIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIFdlYlByZWZlcmVuY2VzOjphbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCgKKyAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGFsbG93QWNjZXNzKQoreworICAgICphbGxvd0Fj
Y2VzcyA9IGJvb2xWYWx1ZUZvcktleShDRlNUUihXZWJLaXRBbGxvd1J1bm5pbmdPZkluc2VjdXJl
Q29udGVudFByZWZlcmVuY2VLZXkpKTsKKyAgICByZXR1cm4gU19PSzsKK30KKworSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3Vy
ZUNvbnRlbnQoCisgICAgLyogW2luXSAqLyBCT09MIGFsbG93QWNjZXNzKQoreworICAgIHNldEJv
b2xWYWx1ZShDRlNUUihXZWJLaXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudFByZWZlcmVu
Y2VLZXkpLCBhbGxvd0FjY2Vzcyk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9h
cmQoCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKQogewpJbmRleDogU291
cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlc1By
aXZhdGUuaWRsCShyZXZpc2lvbiA4NTc4NCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFj
ZXMvSVdlYlByZWZlcmVuY2VzUHJpdmF0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw0ICsx
MjcsMTAgQEAKIAogICAgIEhSRVNVTFQgc2V0RnVsbFNjcmVlbkVuYWJsZWQoW2luXSBCT09MIGVu
YWJsZWQpOwogICAgIEhSRVNVTFQgaXNGdWxsU2NyZWVuRW5hYmxlZChbb3V0LCByZXR2YWxdIEJP
T0wqIGVuYWJsZWQpOworCisgICAgSFJFU1VMVCBhbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVu
dChbb3V0LCByZXR2YWxdIEJPT0wgKmFsbG93KTsKKyAgICBIUkVTVUxUIHNldEFsbG93RGlzcGxh
eU9mSW5zZWN1cmVDb250ZW50KFtpbl0gQk9PTCBhbGxvdyk7CisKKyAgICBIUkVTVUxUIGFsbG93
RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KFtvdXQsIHJldHZhbF0gQk9PTCAqYWxsb3cpOworICAg
IEhSRVNVTFQgc2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoW2luXSBCT09MIGFsbG93
KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDg2MTA5KQorKysgU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEt
MDUtMDkgIENocmlzIEV2YW5zICA8Y2V2YW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQbHVtYmluZyBmb3IgbmV3IHNldHRp
bmdzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgz
NzgKKworICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmg6CisgICAg
ICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5j
ZXMgaW5pdGlhbGl6ZV0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBhbGxvd0Rpc3BsYXlP
Zkluc2VjdXJlQ29udGVudF0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBzZXRBbGxvd0Rp
c3BsYXlPZkluc2VjdXJlQ29udGVudDpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgYWxs
b3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnRdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMg
c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQ6XSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJQcmVmZXJlbmNlc1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06Cisg
ICAgICAgICgtW1dlYlZpZXcgX3ByZWZlcmVuY2VzQ2hhbmdlZDpdKToKKwogMjAxMS0wNS0wOSAg
SmVyZW15IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVy
ZW5jZXNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkocmV2aXNpb24gODU3ODQpCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
NDgsNCArMjQ4LDEwIEBACiAtICh2b2lkKXNldEFWRm91bmRhdGlvbkVuYWJsZWQ6KEJPT0wpZmxh
ZzsKIC0gKEJPT0wpaXNBVkZvdW5kYXRpb25FbmFibGVkOwogCistIChCT09MKWFsbG93RGlzcGxh
eU9mSW5zZWN1cmVDb250ZW50OworLSAodm9pZClzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29u
dGVudDooQk9PTClmbGFnOworCistIChCT09MKWFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50
OworLSAodm9pZClzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudDooQk9PTClmbGFnOwor
CiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlz
UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZUtleXNQcml2YXRlLmgJKHJldmlzaW9uIDg1Nzg0KQorKysgU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MTIxLDYgKzEyMSw4IEBACiAjZGVmaW5lIFdlYktpdFRleHREaXJlY3Rpb25TdWJtZW51SW5jbHVz
aW9uQmVoYXZpb3JQcmVmZXJlbmNlS2V5IEAiV2ViS2l0VGV4dERpcmVjdGlvblN1Ym1lbnVJbmNs
dXNpb25CZWhhdmlvclByZWZlcmVuY2VLZXkiCiAjZGVmaW5lIFdlYktpdEVkaXRpbmdCZWhhdmlv
clByZWZlcmVuY2VLZXkgQCJXZWJLaXRFZGl0aW5nQmVoYXZpb3IiCiAjZGVmaW5lIFdlYktpdFVz
ZVByZUhUTUw1UGFyc2VyUXVpcmtzS2V5IEAiV2ViS2l0VXNlUHJlSFRNTDVQYXJzZXJRdWlya3Mi
CisjZGVmaW5lIFdlYktpdEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50UHJlZmVyZW5jZUtl
eSBAIldlYktpdEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50IgorI2RlZmluZSBXZWJLaXRB
bGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudFByZWZlcmVuY2VLZXkgQCJXZWJLaXRBbGxvd1J1
bm5pbmdPZkluc2VjdXJlQ29udGVudCIKIAogLy8gQ29yZUdyYXBoaWNzIGRlZmVycmVkIHVwZGF0
ZXMgYXJlIGRpc2FibGVkIGlmIFdlYktpdEVuYWJsZUNvYWxlc2NlZFVwZGF0ZXNQcmVmZXJlbmNl
S2V5IGlzIHNldAogLy8gdG8gTk8sIG9yIGhhcyBubyB2YWx1ZS4gIEZvciBjb21wYXRpYmlsaXR5
IHdpdGggTWFjIE9TIFggMTAuNC42LCBkZWZlcnJlZCB1cGRhdGVzIGFyZSBPRkYgYnkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDg1Nzg0KQorKysgU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQ2
LDYgKzE1NDYsOCBAQAogICAgIHNldHRpbmdzLT5zZXRDcm9zc09yaWdpbkNoZWNrSW5HZXRNYXRj
aGVkQ1NTUnVsZXNEaXNhYmxlZChbc2VsZiBfbmVlZHNVbnJlc3RyaWN0ZWRHZXRNYXRjaGVkQ1NT
UnVsZXNdKTsKICAgICBzZXR0aW5ncy0+c2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJs
ZWQoW3NlbGYgaW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWRdKTsKICAgICBzZXR0aW5n
cy0+c2V0VmFsaWRhdGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRpb24oW3NlbGYgdmFsaWRhdGlv
bk1lc3NhZ2VUaW1lck1hZ25pZmljYXRpb25dKTsKKyAgICBzZXR0aW5ncy0+c2V0QWxsb3dEaXNw
bGF5T2ZJbnNlY3VyZUNvbnRlbnQoW3ByZWZlcmVuY2VzIGFsbG93RGlzcGxheU9mSW5zZWN1cmVD
b250ZW50XSk7CisgICAgc2V0dGluZ3MtPnNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50
KFtwcmVmZXJlbmNlcyBhbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudF0pOwogI2lmIFVTRShB
VkZPVU5EQVRJT04pCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIHNldHRpbmdzLT5z
ZXRBVkZvdW5kYXRpb25FbmFibGVkKFtwcmVmZXJlbmNlcyBpc0FWRm91bmRhdGlvbkVuYWJsZWRd
ICYmIFtwcmVmZXJlbmNlcyBmdWxsU2NyZWVuRW5hYmxlZF0pOwpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiA4NTc4NCkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTM5NSw2ICszOTUsOCBAQAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6dXNl
UXVpY2tMb29rUXVpcmtzKCldLCBXZWJLaXRVc2VRdWlja0xvb2tSZXNvdXJjZUNhY2hpbmdRdWly
a3NQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aExvbmdMb25nOldl
YkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpub1F1b3RhKCldLCBXZWJLaXRBcHBsaWNh
dGlvbkNhY2hlVG90YWxRdW90YSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhMb25nTG9u
ZzpXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bm9RdW90YSgpXSwgV2ViS2l0QXBw
bGljYXRpb25DYWNoZURlZmF1bHRPcmlnaW5RdW90YSwKKyAgICAgICAgW05TTnVtYmVyIG51bWJl
cldpdGhCb29sOllFU10sICBXZWJLaXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudFByZWZl
cmVuY2VLZXksCisgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCAgV2ViS2l0
QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnRQcmVmZXJlbmNlS2V5LAogICAgICAgICBuaWxd
OwogCiAgICAgLy8gVGhpcyB2YWx1ZSBzaG91bGRuJ3QgZXZlciBjaGFuZ2UsIHdoaWNoIGlzIGFz
c3VtZWQgaW4gdGhlIGluaXRpYWxpemF0aW9uIG9mIFdlYktpdFBERkRpc3BsYXlNb2RlUHJlZmVy
ZW5jZUtleSBhYm92ZQpAQCAtMTQ5NCw2ICsxNDk2LDI2IEBACiB7CiAgICAgcmV0dXJuIFtzZWxm
IF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0QVZGb3VuZGF0aW9uRW5hYmxlZEtleV07CiB9CisKKy0g
KEJPT0wpYWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQKK3sKKyAgICByZXR1cm4gW3NlbGYg
X2Jvb2xWYWx1ZUZvcktleTogV2ViS2l0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnRQcmVm
ZXJlbmNlS2V5XTsKK30KKworLSAodm9pZClzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVu
dDooQk9PTClmbGFnCit7CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTogZmxhZyBmb3JLZXk6IFdl
YktpdEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50UHJlZmVyZW5jZUtleV07Cit9CisKKy0g
KEJPT0wpYWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQKK3sKKyAgICByZXR1cm4gW3NlbGYg
X2Jvb2xWYWx1ZUZvcktleTogV2ViS2l0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnRQcmVm
ZXJlbmNlS2V5XTsKK30KKworLSAodm9pZClzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVu
dDooQk9PTClmbGFnCit7CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTogZmxhZyBmb3JLZXk6IFdl
YktpdEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50UHJlZmVyZW5jZUtleV07Cit9CiBAZW5k
CiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViSW50ZXJuYWwpCkluZGV4OiBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29u
dHJvbGxlclF0LmNwcAkocmV2aXNpb24gNzQxOTQpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEw
LDExICs0MTAsMjEgQEAKICAgICBtX2RydC0+d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRy
aWJ1dGUoUVdlYlNldHRpbmdzOjpMb2NhbENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxzLCBlbmFi
bGVkKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dEaXNwbGF5T2ZJ
bnNlY3VyZUNvbnRlbnQoYm9vbCBlbmFibGVkKQoreworICAgIG1fZHJ0LT53ZWJQYWdlKCktPnNl
dHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OlBhZ2VzQ2FuRGlzcGxheUluc2Vj
dXJlQ29udGVudCwgZW5hYmxlZCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhib29sIGVuYWJsZWQpCiB7CiAgICAgbV9kcnQt
PndlYlBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6TG9jYWxD
b250ZW50Q2FuQWNjZXNzRmlsZVVybHMsIGVuYWJsZWQpOwogfQogCit2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChib29sIGVuYWJsZWQp
Cit7CisgICAgbV9kcnQtPndlYlBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJT
ZXR0aW5nczo6UGFnZXNDYW5SdW5JbnNlY3VyZUNvbnRlbnQsIGVuYWJsZWQpOworfQorCiB2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBcHBDYWNoZU1heGltdW1TaXplKHVuc2lnbmVkIGxv
bmcgbG9uZyBxdW90YSkKIHsKICAgICBtX2RydC0+d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRP
ZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhKHF1b3RhKTsKSW5kZXg6IFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgJ
KHJldmlzaW9uIDc0MTk0KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5LDkgQEAKICAg
ICB2b2lkIHNldE1lZGlhVHlwZShjb25zdCBRU3RyaW5nJiB0eXBlKTsKICAgICB2b2lkIHNldEZy
YW1lRmxhdHRlbmluZ0VuYWJsZWQoYm9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0QWxsb3dVbml2
ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGUpOworICAgIHZvaWQgc2V0QWxsb3dE
aXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0QWxsb3dG
aWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxlKTsKKyAgICB2b2lkIHNldEFsbG93UnVu
bmluZ09mSW5zZWN1cmVDb250ZW50KGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNldEFwcENhY2hl
TWF4aW11bVNpemUodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKTsKICAgICB2b2lkIHNldEphdmFT
Y3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNldFRpbWVsaW5l
UHJvZmlsaW5nRW5hYmxlZChib29sIGVuYWJsZSk7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJ
KHJldmlzaW9uIDc0MTk0KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91
dFRlc3RDb250cm9sbGVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQyLDYgKzQ0MiwxNSBA
QAogICAgIGdfb2JqZWN0X3NldChHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtdW5pdmVyc2Fs
LWFjY2Vzcy1mcm9tLWZpbGUtdXJpcyIsIGZsYWcsIE5VTEwpOwogfQogCit2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChib29sIGZsYWcp
Cit7CisgICAgV2ViS2l0V2ViVmlldyogdmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92
aWV3KG1haW5GcmFtZSk7CisgICAgQVNTRVJUKHZpZXcpOworCisgICAgV2ViS2l0V2ViU2V0dGlu
Z3MqIHNldHRpbmdzID0gd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh2aWV3KTsKKyAgICBn
X29iamVjdF9zZXQoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWRpc3BsYXktb2YtaW5zZWN1
cmUtY29udGVudCIsIGZsYWcsIE5VTEwpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBmbGFnKQogewogICAgIFdlYktp
dFdlYlZpZXcqIHZpZXcgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUp
OwpAQCAtNDUxLDYgKzQ2MCwxNSBAQAogICAgIGdfb2JqZWN0X3NldChHX09CSkVDVChzZXR0aW5n
cyksICJlbmFibGUtZmlsZS1hY2Nlc3MtZnJvbS1maWxlLXVyaXMiLCBmbGFnLCBOVUxMKTsKIH0K
IAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNv
bnRlbnQoYm9vbCBmbGFnKQoreworICAgIFdlYktpdFdlYlZpZXcqIHZpZXcgPSB3ZWJraXRfd2Vi
X2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOworICAgIEFTU0VSVCh2aWV3KTsKKworICAg
IFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGlu
Z3Modmlldyk7CisgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1y
dW5uaW5nLW9mLWluc2VjdXJlLWNvbnRlbnQiLCBmbGFnLCBOVUxMKTsKK30KKwogdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYm9vbCBmbGFn
KQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCShyZXZp
c2lvbiA3NDE5NCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RD
b250cm9sbGVyV3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsMTEgKzE5MiwyMSBAQAogICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCBlbmFibGVkKQoreworICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dG
aWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxlZCkKIHsKICAgICAvLyBGSVhNRTogaW1w
bGVtZW50CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93UnVubmluZ09m
SW5zZWN1cmVDb250ZW50KGJvb2wgZW5hYmxlZCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50
Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNF
bmFibGVkKGJvb2wgZmxhZykKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CkluZGV4OiBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCShyZXZp
c2lvbiA3NDE5NCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVy
VHJlZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDYyLDYgKzQ2Miw4IEBACiAgICAgW3ByZWZlcmVu
Y2VzIHNldFdlYkdMRW5hYmxlZDpOT107CiAgICAgW3ByZWZlcmVuY2VzIHNldFVzZVByZUhUTUw1
UGFyc2VyUXVpcmtzOk5PXTsKICAgICBbcHJlZmVyZW5jZXMgc2V0QXN5bmNocm9ub3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQ6Tk9dOworICAgIFtwcmVmZXJlbmNlcyBzZXRBbGxvd0Rpc3BsYXlPZklu
c2VjdXJlQ29udGVudDpZRVNdOworICAgIFtwcmVmZXJlbmNlcyBzZXRBbGxvd1J1bm5pbmdPZklu
c2VjdXJlQ29udGVudDpZRVNdOwogCiAgICAgW1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhU
VFBDb29raWVTdG9yYWdlXSBzZXRDb29raWVBY2NlcHRQb2xpY3k6TlNIVFRQQ29va2llQWNjZXB0
UG9saWN5T25seUZyb21NYWluRG9jdW1lbnREb21haW5dOwogICAgIApJbmRleDogV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxl
ck1hYy5tbQkocmV2aXNpb24gNzQxOTQpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQzMiwxMSAr
NDMyLDIxIEBACiAgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXRBbGxv
d1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMczplbmFibGVkXTsKIH0KIAordm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCBlbmFi
bGVkKQoreworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0QWxsb3dE
aXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQ6ZW5hYmxlZF07Cit9CisKIHZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhib29sIGVuYWJsZWQpCiB7
CiAgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXRBbGxvd0ZpbGVBY2Nl
c3NGcm9tRmlsZVVSTHM6ZW5hYmxlZF07CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBb
W1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIHNldEFsbG93UnVubmluZ09mSW5zZWN1
cmVDb250ZW50OmVuYWJsZWRdOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRQ
b3B1cEJsb2NraW5nRW5hYmxlZChib29sIHBvcHVwQmxvY2tpbmdFbmFibGVkKQogewogICAgIFtb
W21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0SmF2YVNjcmlwdENhbk9wZW5XaW5k
b3dzQXV0b21hdGljYWxseTohcG9wdXBCbG9ja2luZ0VuYWJsZWRdOwpJbmRleDogV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2
aXNpb24gNzQxOTQpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMDcsNiArMTMwNywxNyBAQAogICAgIHJl
dHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVS
ZWYgc2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIq
IGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0
R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0QWxsb3dEaXNwbGF5
T2ZJbnNlY3VyZUNvbnRlbnQoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0p
KTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3Rh
dGljIEpTVmFsdWVSZWYgc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgJiB3aW5kb3dzIGlt
cGxlbWVudGF0aW9uCkBAIC0xMzE5LDYgKzEzMzAsMTcgQEAKICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldEFsbG93UnVu
bmluZ09mSW5zZWN1cmVDb250ZW50KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBm
dW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAg
ICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KTsKKworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0g
c3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhp
c09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250
ZW50KEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzBdKSk7CisKKyAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVm
IHNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50c0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKIHsKICAgICAvLyBIYXMgbWFjICYgd2luZG93cyBpbXBsZW1lbnRhdGlvbgpA
QCAtMjAwNSw3ICsyMDI3LDkgQEAKICAgICAgICAgeyAicmVwYWludFN3ZWVwSG9yaXpvbnRhbGx5
IiwgcmVwYWludFN3ZWVwSG9yaXpvbnRhbGx5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
c2V0QWNjZXB0c0VkaXRpbmciLCBzZXRBY2NlcHRzRWRpdGluZ0NhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgInNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzIiwgc2V0QWxsb3dV
bml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJz
ZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCIsIHNldEFsbG93RGlzcGxheU9mSW5zZWN1
cmVDb250ZW50Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0QWxsb3dGaWxlQWNjZXNz
RnJvbUZpbGVVUkxzIiwgc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKKyAgICAgICAgeyAic2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQiLCBzZXRB
bGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
InNldEFsd2F5c0FjY2VwdENvb2tpZXMiLCBzZXRBbHdheXNBY2NlcHRDb29raWVzQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKICAgICAgICAgeyAic2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSIsIHNldEFwcENhY2hl
TWF4aW11bVNpemVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1By
b3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRBcHBsaWNhdGlvbkNh
Y2hlT3JpZ2luUXVvdGEiLCBzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGFDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJU
cmVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVt
cFJlbmRlclRyZWUuY3BwCShyZXZpc2lvbiA3NDE5NCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyMiw3ICs4
MjIsOSBAQAogICAgIENPTVB0cjxJV2ViUHJlZmVyZW5jZXNQcml2YXRlPiBwcmVmc1ByaXZhdGUo
UXVlcnksIHByZWZlcmVuY2VzKTsKICAgICBpZiAocHJlZnNQcml2YXRlKSB7CiAgICAgICAgIHBy
ZWZzUHJpdmF0ZS0+c2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoVFJVRSk7Cisg
ICAgICAgIHByZWZzUHJpdmF0ZS0+c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoVFJV
RSk7CiAgICAgICAgIHByZWZzUHJpdmF0ZS0+c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxz
KFRSVUUpOworICAgICAgICBwcmVmc1ByaXZhdGUtPnNldEFsbG93UnVubmluZ09mSW5zZWN1cmVD
b250ZW50KFRSVUUpOwogICAgICAgICBwcmVmc1ByaXZhdGUtPnNldEF1dGhvckFuZFVzZXJTdHls
ZXNFbmFibGVkKFRSVUUpOwogICAgICAgICBwcmVmc1ByaXZhdGUtPnNldERldmVsb3BlckV4dHJh
c0VuYWJsZWQoRkFMU0UpOwogICAgICAgICBwcmVmc1ByaXZhdGUtPnNldEV4cGVyaW1lbnRhbE5v
dGlmaWNhdGlvbnNFbmFibGVkKFRSVUUpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCShyZXZp
c2lvbiA3NDE5NCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0
Q29udHJvbGxlcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwNCw2ICs1MDQsMjMgQEAKICAg
ICBwcmVmc1ByaXZhdGUtPnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGVuYWJs
ZWQpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd0Rpc3BsYXlPZklu
c2VjdXJlQ29udGVudChib29sIGVuYWJsZWQpCit7CisgICAgQ09NUHRyPElXZWJWaWV3PiB3ZWJW
aWV3OworICAgIGlmIChGQUlMRUQoZnJhbWUtPndlYlZpZXcoJndlYlZpZXcpKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlcz4gcHJlZmVyZW5jZXM7CisgICAg
aWYgKEZBSUxFRCh3ZWJWaWV3LT5wcmVmZXJlbmNlcygmcHJlZmVyZW5jZXMpKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlc1ByaXZhdGU+IHByZWZzUHJpdmF0
ZShRdWVyeSwgcHJlZmVyZW5jZXMpOworICAgIGlmICghcHJlZnNQcml2YXRlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBwcmVmc1ByaXZhdGUtPnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250
ZW50KGVuYWJsZWQpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd0Zp
bGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGVkKQogewogICAgIENPTVB0cjxJV2ViVmll
dz4gd2ViVmlldzsKQEAgLTUyMSw2ICs1MzgsMjMgQEAKICAgICBwcmVmc1ByaXZhdGUtPnNldEFs
bG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhlbmFibGVkKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCBlbmFibGVk
KQoreworICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKKyAgICBpZiAoRkFJTEVEKGZyYW1l
LT53ZWJWaWV3KCZ3ZWJWaWV3KSkpCisgICAgICAgIHJldHVybjsKKworICAgIENPTVB0cjxJV2Vi
UHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzOworICAgIGlmIChGQUlMRUQod2ViVmlldy0+cHJlZmVy
ZW5jZXMoJnByZWZlcmVuY2VzKSkpCisgICAgICAgIHJldHVybjsKKworICAgIENPTVB0cjxJV2Vi
UHJlZmVyZW5jZXNQcml2YXRlPiBwcmVmc1ByaXZhdGUoUXVlcnksIHByZWZlcmVuY2VzKTsKKyAg
ICBpZiAoIXByZWZzUHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJlZnNQcml2YXRl
LT5zZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChlbmFibGVkKTsKK30KKwogdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQoYm9vbCBlbmFibGVk
KQogewogICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKSW5kZXg6IFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gNzQx
OTQpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw5IEBACiAgICAgdm9pZCByZW1vdmVBbGxWaXNp
dGVkTGlua3MoKTsKICAgICB2b2lkIHNldEFjY2VwdHNFZGl0aW5nKGJvb2wgYWNjZXB0c0VkaXRp
bmcpOwogICAgIHZvaWQgc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCk7
CisgICAgdm9pZCBzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChib29sKTsKICAgICB2
b2lkIHNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhib29sKTsKKyAgICB2b2lkIHNldEFs
bG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KGJvb2wpOwogICAgIHZvaWQgc2V0QXBwQ2FjaGVN
YXhpbXVtU2l6ZSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwogICAgIHZvaWQgc2V0QXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSk7CiAgICAgdm9p
ZCBzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92909</attachid>
            <date>2011-05-09 19:36:56 -0700</date>
            <delta_ts>2011-05-10 15:16:00 -0700</delta_ts>
            <desc>Plumbing...</desc>
            <filename>58378b_2.diff</filename>
            <type>text/plain</type>
            <size>29223</size>
            <attacher name="Chris Evans">cevans</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjA2MSkKKysrIFNvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMDUtMDkgIENo
cmlzIEV2YW5zICA8Y2V2YW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQbHVtYmluZyBmb3IgbmV3IHNldHRpbmdzLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgzNzgKKworICAg
ICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAoUVdlYlNldHRpbmdzOjpRV2Vi
U2V0dGluZ3MpOgorICAgICAgICAqIEFwaS9xd2Vic2V0dGluZ3MuaDoKKwogMjAxMS0wNS0wNyAg
Sm9lIE1hc29uICA8am1hc29uQHJpbS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuaWVs
IEJhdGVzLgpJbmRleDogU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgJKHJldmlzaW9uIDg2
MDYxKQorKysgU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc3LDcgKzc3LDkgQEAKICAgICAgICAgU2l0ZVNwZWNpZmljUXVpcmtzRW5hYmxlZCwK
ICAgICAgICAgSmF2YXNjcmlwdENhbkNsb3NlV2luZG93cywKICAgICAgICAgV2ViR0xFbmFibGVk
LAotICAgICAgICBIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQKKyAgICAgICAgSHlwZXJsaW5rQXVk
aXRpbmdFbmFibGVkLAorICAgICAgICBQYWdlc0NhbkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQsCisg
ICAgICAgIFBhZ2VzQ2FuUnVuSW5zZWN1cmVDb250ZW50CiAgICAgfTsKICAgICBlbnVtIFdlYkdy
YXBoaWMgewogICAgICAgICBNaXNzaW5nSW1hZ2VHcmFwaGljLApJbmRleDogU291cmNlL1dlYktp
dC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2Vic2V0dGluZ3MuY3BwCShyZXZpc2lvbiA4NjA2MSkKKysrIFNvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxMCw2ICs1MTAsOCBA
QAogICAgIGQtPmF0dHJpYnV0ZXMuaW5zZXJ0KFFXZWJTZXR0aW5nczo6VGlsZWRCYWNraW5nU3Rv
cmVFbmFibGVkLCBmYWxzZSk7CiAgICAgZC0+YXR0cmlidXRlcy5pbnNlcnQoUVdlYlNldHRpbmdz
OjpGcmFtZUZsYXR0ZW5pbmdFbmFibGVkLCBmYWxzZSk7CiAgICAgZC0+YXR0cmlidXRlcy5pbnNl
cnQoUVdlYlNldHRpbmdzOjpTaXRlU3BlY2lmaWNRdWlya3NFbmFibGVkLCB0cnVlKTsKKyAgICBk
LT5hdHRyaWJ1dGVzLmluc2VydChRV2ViU2V0dGluZ3M6OlBhZ2VzQ2FuRGlzcGxheUluc2VjdXJl
Q29udGVudCwgdHJ1ZSk7CisgICAgZC0+YXR0cmlidXRlcy5pbnNlcnQoUVdlYlNldHRpbmdzOjpQ
YWdlc0NhblJ1bkluc2VjdXJlQ29udGVudCwgdHJ1ZSk7CiAgICAgZC0+b2ZmbGluZVN0b3JhZ2VE
ZWZhdWx0UXVvdGEgPSA1ICogMTAyNCAqIDEwMjQ7CiAgICAgZC0+ZGVmYXVsdFRleHRFbmNvZGlu
ZyA9IFFMYXRpbjFTdHJpbmcoImlzby04ODU5LTEiKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDg2MDYxKQorKysgU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjA2LDcgKzMyMDYsOCBAQAogICAgICAgICBlbmFibGVVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVS
SSwgZW5hYmxlRmlsZUFjY2Vzc0Zyb21GaWxlVVJJLAogICAgICAgICBlbmFibGVET01QYXN0ZSwg
dGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzLCBlbmFibGVXZWJHTCwKICAgICAgICAgZW5hYmxl
U2l0ZVNwZWNpZmljUXVpcmtzLCB1c2VQYWdlQ2FjaGUsIGVuYWJsZUphdmFBcHBsZXQsCi0gICAg
ICAgIGVuYWJsZUh5cGVybGlua0F1ZGl0aW5nLCBlbmFibGVGdWxsc2NyZWVuLCBlbmFibGVETlNQ
cmVmZXRjaGluZzsKKyAgICAgICAgZW5hYmxlSHlwZXJsaW5rQXVkaXRpbmcsIGVuYWJsZUZ1bGxz
Y3JlZW4sIGVuYWJsZUROU1ByZWZldGNoaW5nLAorICAgICAgICBlbmFibGVEaXNwbGF5T2ZJbnNl
Y3VyZUNvbnRlbnQsIGVuYWJsZVJ1bm5pbmdPZkluc2VjdXJlQ29udGVudDsKIAogICAgIFdlYktp
dEVkaXRpbmdCZWhhdmlvciBlZGl0aW5nQmVoYXZpb3I7CiAKQEAgLTMyNDksNiArMzI1MCw4IEBA
CiAgICAgICAgICAgICAgICAgICJlbmFibGUtZnVsbHNjcmVlbiIsICZlbmFibGVGdWxsc2NyZWVu
LAogICAgICAgICAgICAgICAgICAiZW5hYmxlLWRucy1wcmVmZXRjaGluZyIsICZlbmFibGVETlNQ
cmVmZXRjaGluZywKICAgICAgICAgICAgICAgICAgImVuYWJsZS13ZWJnbCIsICZlbmFibGVXZWJH
TCwKKyAgICAgICAgICAgICAgICAgImVuYWJsZS1kaXNwbGF5LW9mLWluc2VjdXJlLWNvbnRlbnQi
LCAmZW5hYmxlRGlzcGxheU9mSW5zZWN1cmVDb250ZW50LAorICAgICAgICAgICAgICAgICAiZW5h
YmxlLXJ1bm5pbmctb2YtaW5zZWN1cmUtY29udGVudCIsICZlbmFibGVSdW5uaW5nT2ZJbnNlY3Vy
ZUNvbnRlbnQsCiAgICAgICAgICAgICAgICAgIE5VTEwpOwogCiAgICAgc2V0dGluZ3MtPnNldERl
ZmF1bHRUZXh0RW5jb2RpbmdOYW1lKGRlZmF1bHRFbmNvZGluZyk7CkBAIC0zMjg3LDYgKzMyOTAs
OCBAQAogICAgIHNldHRpbmdzLT5zZXRKYXZhRW5hYmxlZChlbmFibGVKYXZhQXBwbGV0KTsKICAg
ICBzZXR0aW5ncy0+c2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKGVuYWJsZUh5cGVybGlua0F1
ZGl0aW5nKTsKICAgICBzZXR0aW5ncy0+c2V0RE5TUHJlZmV0Y2hpbmdFbmFibGVkKGVuYWJsZURO
U1ByZWZldGNoaW5nKTsKKyAgICBzZXR0aW5ncy0+c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNv
bnRlbnQoZW5hYmxlRGlzcGxheU9mSW5zZWN1cmVDb250ZW50KTsKKyAgICBzZXR0aW5ncy0+c2V0
QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoZW5hYmxlUnVubmluZ09mSW5zZWN1cmVDb250
ZW50KTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBzZXR0aW5ncy0+c2V0RnVs
bFNjcmVlbkVuYWJsZWQoZW5hYmxlRnVsbHNjcmVlbik7CkBAIC0zNDE3LDYgKzM0MjIsMTAgQEAK
ICAgICAgICAgc2V0dGluZ3MtPnNldEphdmFFbmFibGVkKGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnZh
bHVlKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBnX2ludGVybl9zdHJpbmcoImVuYWJsZS1oeXBl
cmxpbmstYXVkaXRpbmciKSkKICAgICAgICAgc2V0dGluZ3MtPnNldEh5cGVybGlua0F1ZGl0aW5n
RW5hYmxlZChnX3ZhbHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOworICAgIGVsc2UgaWYgKG5hbWUg
PT0gZ19pbnRlcm5fc3RyaW5nKCJlbmFibGUtZGlzcGxheS1vZi1pbnNlY3VyZS1jb250ZW50Iikp
CisgICAgICAgIHNldHRpbmdzLT5zZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChnX3Zh
bHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5f
c3RyaW5nKCJlbmFibGUtcnVubmluZy1vZi1pbnNlY3VyZS1jb250ZW50IikpCisgICAgICAgIHNl
dHRpbmdzLT5zZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChnX3ZhbHVlX2dldF9ib29s
ZWFuKCZ2YWx1ZSkpOwogCiAjaWYgRU5BQkxFKFNQRUxMQ0hFQ0spCiAgICAgZWxzZSBpZiAobmFt
ZSA9PSBnX2ludGVybl9zdHJpbmcoInNwZWxsLWNoZWNraW5nLWxhbmd1YWdlcyIpKSB7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjA2MSkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTA1LTA5ICBDaHJp
cyBFdmFucyAgPGNldmFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUGx1bWJpbmcgZm9yIG5ldyBzZXR0aW5ncy4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4Mzc4CisKKyAgICAg
ICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdf
dXBkYXRlX3NldHRpbmdzKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zZXR0aW5nc19ub3Rp
ZnkpOgorCiAyMDExLTA1LTA2ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dp
bi9XZWJQcmVmZXJlbmNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYlBy
ZWZlcmVuY2VzLmgJKHJldmlzaW9uIDg2MDYxKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViUHJl
ZmVyZW5jZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMzY4LDEyICszNjgsMjQgQEAKICAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9t
RmlsZVVSTHMoCiAgICAgLyogW2luXSAqLyBCT09MIGFsbG93QWNjZXNzKTsKIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVu
dCgKKyAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGFsbG93QWNjZXNzKTsKKworICAgIHZp
cnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJl
Q29udGVudCgKKyAgICAvKiBbaW5dICovIEJPT0wgYWxsb3dBY2Nlc3MpOworCiAgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcygK
ICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGFsbG93QWNjZXNzKTsKIAogICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVS
THMoCiAgICAgLyogW2luXSAqLyBCT09MIGFsbG93QWNjZXNzKTsKIAorICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBhbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCgKKyAg
ICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGFsbG93QWNjZXNzKTsKKworICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVu
dCgKKyAgICAvKiBbaW5dICovIEJPT0wgYWxsb3dBY2Nlc3MpOworCiAgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoCiAgICAg
LyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBlbmFibGVkKTsKIApJbmRleDogU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZwkocmV2aXNpb24gODYwNjEpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAorMjAxMS0wNS0wOSAgQ2hyaXMgRXZhbnMgIDxjZXZh
bnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFBsdW1iaW5nIGZvciBuZXcgc2V0dGluZ3MuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODM3OAorCisgICAgICAgICogSW50ZXJmYWNl
cy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbDoKKyAgICAgICAgKiBXZWJQcmVmZXJlbmNlS2V5
c1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJQ
cmVmZXJlbmNlczo6aW5pdGlhbGl6ZURlZmF1bHRTZXR0aW5ncyk6CisgICAgICAgIChXZWJQcmVm
ZXJlbmNlczo6YWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAoV2ViUHJl
ZmVyZW5jZXM6OnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KToKKyAgICAgICAgKFdl
YlByZWZlcmVuY2VzOjphbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCk6CisgICAgICAgIChX
ZWJQcmVmZXJlbmNlczo6c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQpOgorICAgICAg
ICAqIFdlYlByZWZlcmVuY2VzLmg6CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChX
ZWJWaWV3Ojpub3RpZnlQcmVmZXJlbmNlc0NoYW5nZWQpOgorCiAyMDExLTA1LTA3ICBTaGVyaWZm
IEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByODYwMTYuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24g
ODYwNjEpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDc2NSwxMSArNDc2NSwyMSBAQAogICAgICAgICByZXR1cm4gaHI7CiAgICAgc2V0dGluZ3Mt
PnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKCEhZW5hYmxlZCk7CiAKKyAgICBo
ciA9IHByZWZzUHJpdmF0ZS0+YWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoJmVuYWJsZWQp
OworICAgIGlmIChGQUlMRUQoaHIpKQorICAgICAgICByZXR1cm4gaHI7CisgICAgc2V0dGluZ3Mt
PnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KCEhZW5hYmxlZCk7CisKICAgICBociA9
IHByZWZzUHJpdmF0ZS0+YWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKCZlbmFibGVkKTsKICAg
ICBpZiAoRkFJTEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwogICAgIHNldHRpbmdzLT5zZXRB
bGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoISFlbmFibGVkKTsKIAorICAgIGhyID0gcHJlZnNQ
cml2YXRlLT5hbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCgmZW5hYmxlZCk7CisgICAgaWYg
KEZBSUxFRChocikpCisgICAgICAgIHJldHVybiBocjsKKyAgICBzZXR0aW5ncy0+c2V0QWxsb3dS
dW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoISFlbmFibGVkKTsKKwogICAgIGhyID0gcHJlZnNQcml2
YXRlLT5qYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJvYXJkKCZlbmFibGVkKTsKICAgICBpZiAoRkFJ
TEVEKGhyKSkKICAgICAgICAgcmV0dXJuIGhyOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2Vi
UHJlZmVyZW5jZUtleXNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4v
V2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHJldmlzaW9uIDg2MDYxKQorKysgU291cmNlL1dl
YktpdC93aW4vV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5
LDcgKzQ5LDkgQEAKICNkZWZpbmUgV2ViS2l0SmF2YVNjcmlwdEVuYWJsZWRQcmVmZXJlbmNlS2V5
ICJXZWJLaXRKYXZhU2NyaXB0RW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0V2ViU2VjdXJpdHlFbmFi
bGVkUHJlZmVyZW5jZUtleSAiV2ViS2l0V2ViU2VjdXJpdHlFbmFibGVkIgogI2RlZmluZSBXZWJL
aXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZlcmVuY2VLZXkgIldlYktpdEFs
bG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzIgorI2RlZmluZSBXZWJLaXRBbGxvd0Rpc3Bs
YXlPZkluc2VjdXJlQ29udGVudFByZWZlcmVuY2VLZXkgIldlYktpdEFsbG93RGlzcGxheU9mSW5z
ZWN1cmVDb250ZW50IgogI2RlZmluZSBXZWJLaXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNQ
cmVmZXJlbmNlS2V5ICJXZWJLaXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMiCisjZGVmaW5l
IFdlYktpdEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50UHJlZmVyZW5jZUtleSAiV2ViS2l0
QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQiCiAjZGVmaW5lIFdlYktpdEphdmFTY3JpcHRD
YW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHlQcmVmZXJlbmNlS2V5ICJXZWJLaXRKYXZhU2NyaXB0
Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5IgogI2RlZmluZSBXZWJLaXRQbHVnaW5zRW5hYmxl
ZFByZWZlcmVuY2VLZXkgIldlYktpdFBsdWdpbnNFbmFibGVkIgogI2RlZmluZSBXZWJLaXREYXRh
YmFzZXNFbmFibGVkUHJlZmVyZW5jZUtleSAiV2ViS2l0RGF0YWJhc2VzRW5hYmxlZCIKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAJKHJldmlzaW9uIDg2MDYxKQorKysgU291
cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDUs
NyArMjA1LDkgQEAKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2Vi
S2l0SmF2YVNjcmlwdEVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogICAg
IENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRXZWJTZWN1cml0eUVu
YWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxl
VVJMc1ByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuRmFsc2UpOworICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVu
dFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFs
dWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc1ByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CisgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50UHJlZmVyZW5j
ZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cywgQ0ZTVFIoV2ViS2l0SmF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZFByZWZlcmVuY2VLZXkp
LCBrQ0ZCb29sZWFuRmFsc2UpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBD
RlNUUihXZWJLaXRYU1NBdWRpdG9yRW5hYmxlZFByZWZlcmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1
ZSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RSKFdlYktpdEZyYW1l
RmxhdHRlbmluZ0VuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKQEAgLTgw
Miw2ICs4MDQsMjAgQEAKICAgICByZXR1cm4gU19PSzsKIH0KIAorSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6YWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoCisg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBhbGxvd0FjY2VzcykKK3sKKyAgICAqYWxsb3dB
Y2Nlc3MgPSBib29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0QWxsb3dEaXNwbGF5T2ZJbnNlY3Vy
ZUNvbnRlbnRQcmVmZXJlbmNlS2V5KSk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldEFsbG93RGlzcGxheU9mSW5zZWN1
cmVDb250ZW50KAorICAgIC8qIFtpbl0gKi8gQk9PTCBhbGxvd0FjY2VzcykKK3sKKyAgICBzZXRC
b29sVmFsdWUoQ0ZTVFIoV2ViS2l0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnRQcmVmZXJl
bmNlS2V5KSwgYWxsb3dBY2Nlc3MpOworICAgIHJldHVybiBTX09LOworfQorCiBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjphbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVS
THMoCiAgICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBhbGxvd0FjY2VzcykKIHsKQEAgLTgx
Niw2ICs4MzIsMjAgQEAKICAgICByZXR1cm4gU19PSzsKIH0KIAorSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6YWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoCisg
ICAgLyogW3JldHZhbF1bb3V0XSAqLyBCT09MKiBhbGxvd0FjY2VzcykKK3sKKyAgICAqYWxsb3dB
Y2Nlc3MgPSBib29sVmFsdWVGb3JLZXkoQ0ZTVFIoV2ViS2l0QWxsb3dSdW5uaW5nT2ZJbnNlY3Vy
ZUNvbnRlbnRQcmVmZXJlbmNlS2V5KSk7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKK0hSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OnNldEFsbG93UnVubmluZ09mSW5zZWN1
cmVDb250ZW50KAorICAgIC8qIFtpbl0gKi8gQk9PTCBhbGxvd0FjY2VzcykKK3sKKyAgICBzZXRC
b29sVmFsdWUoQ0ZTVFIoV2ViS2l0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnRQcmVmZXJl
bmNlS2V5KSwgYWxsb3dBY2Nlc3MpOworICAgIHJldHVybiBTX09LOworfQorCiBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpqYXZhU2NyaXB0Q2FuQWNjZXNzQ2xpcGJv
YXJkKAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogZW5hYmxlZCkKIHsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlByZWZlcmVuY2VzUHJpdmF0ZS5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQ
cml2YXRlLmlkbAkocmV2aXNpb24gODYwNjEpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZh
Y2VzL0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNCAr
MTI3LDEwIEBACiAKICAgICBIUkVTVUxUIHNldEZ1bGxTY3JlZW5FbmFibGVkKFtpbl0gQk9PTCBl
bmFibGVkKTsKICAgICBIUkVTVUxUIGlzRnVsbFNjcmVlbkVuYWJsZWQoW291dCwgcmV0dmFsXSBC
T09MKiBlbmFibGVkKTsKKworICAgIEhSRVNVTFQgYWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRl
bnQoW291dCwgcmV0dmFsXSBCT09MICphbGxvdyk7CisgICAgSFJFU1VMVCBzZXRBbGxvd0Rpc3Bs
YXlPZkluc2VjdXJlQ29udGVudChbaW5dIEJPT0wgYWxsb3cpOworCisgICAgSFJFU1VMVCBhbGxv
d0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChbb3V0LCByZXR2YWxdIEJPT0wgKmFsbG93KTsKKyAg
ICBIUkVTVUxUIHNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KFtpbl0gQk9PTCBhbGxv
dyk7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjA2MSkKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEx
LTA1LTA5ICBDaHJpcyBFdmFucyAgPGNldmFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGx1bWJpbmcgZm9yIG5ldyBzZXR0
aW5ncy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4
Mzc4CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVu
Y2VzIGluaXRpYWxpemVdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgYWxsb3dEaXNwbGF5
T2ZJbnNlY3VyZUNvbnRlbnRdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgc2V0QWxsb3dE
aXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQ6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIGFs
bG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2Vz
IHNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50Ol0pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViUHJlZmVyZW5jZXNQcml2YXRlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6CisKIDIwMTEtMDUtMDQg
IFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViUHJlZmVyZW5jZXNQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkocmV2aXNpb24gODYwNjEpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDgsNCArMjQ4LDEwIEBACiAtICh2b2lkKXNldEFWRm91bmRhdGlvbkVuYWJsZWQ6
KEJPT0wpZmxhZzsKIC0gKEJPT0wpaXNBVkZvdW5kYXRpb25FbmFibGVkOwogCistIChCT09MKWFs
bG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50OworLSAodm9pZClzZXRBbGxvd0Rpc3BsYXlPZklu
c2VjdXJlQ29udGVudDooQk9PTClmbGFnOworCistIChCT09MKWFsbG93UnVubmluZ09mSW5zZWN1
cmVDb250ZW50OworLSAodm9pZClzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudDooQk9P
TClmbGFnOworCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZl
cmVuY2VLZXlzUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHJldmlzaW9uIDg2MDYxKQorKysgU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTIxLDYgKzEyMSw4IEBACiAjZGVmaW5lIFdlYktpdFRleHREaXJlY3Rpb25TdWJt
ZW51SW5jbHVzaW9uQmVoYXZpb3JQcmVmZXJlbmNlS2V5IEAiV2ViS2l0VGV4dERpcmVjdGlvblN1
Ym1lbnVJbmNsdXNpb25CZWhhdmlvclByZWZlcmVuY2VLZXkiCiAjZGVmaW5lIFdlYktpdEVkaXRp
bmdCZWhhdmlvclByZWZlcmVuY2VLZXkgQCJXZWJLaXRFZGl0aW5nQmVoYXZpb3IiCiAjZGVmaW5l
IFdlYktpdFVzZVByZUhUTUw1UGFyc2VyUXVpcmtzS2V5IEAiV2ViS2l0VXNlUHJlSFRNTDVQYXJz
ZXJRdWlya3MiCisjZGVmaW5lIFdlYktpdEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50UHJl
ZmVyZW5jZUtleSBAIldlYktpdEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50IgorI2RlZmlu
ZSBXZWJLaXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudFByZWZlcmVuY2VLZXkgQCJXZWJL
aXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCIKIAogLy8gQ29yZUdyYXBoaWNzIGRlZmVy
cmVkIHVwZGF0ZXMgYXJlIGRpc2FibGVkIGlmIFdlYktpdEVuYWJsZUNvYWxlc2NlZFVwZGF0ZXNQ
cmVmZXJlbmNlS2V5IGlzIHNldAogLy8gdG8gTk8sIG9yIGhhcyBubyB2YWx1ZS4gIEZvciBjb21w
YXRpYmlsaXR5IHdpdGggTWFjIE9TIFggMTAuNC42LCBkZWZlcnJlZCB1cGRhdGVzIGFyZSBPRkYg
YnkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDg2MDYx
KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTQ2LDYgKzE1NDYsOCBAQAogICAgIHNldHRpbmdzLT5zZXRDcm9zc09yaWdpbkNoZWNr
SW5HZXRNYXRjaGVkQ1NTUnVsZXNEaXNhYmxlZChbc2VsZiBfbmVlZHNVbnJlc3RyaWN0ZWRHZXRN
YXRjaGVkQ1NTUnVsZXNdKTsKICAgICBzZXR0aW5ncy0+c2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRh
dGlvbkVuYWJsZWQoW3NlbGYgaW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWRdKTsKICAg
ICBzZXR0aW5ncy0+c2V0VmFsaWRhdGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRpb24oW3NlbGYg
dmFsaWRhdGlvbk1lc3NhZ2VUaW1lck1hZ25pZmljYXRpb25dKTsKKyAgICBzZXR0aW5ncy0+c2V0
QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoW3ByZWZlcmVuY2VzIGFsbG93RGlzcGxheU9m
SW5zZWN1cmVDb250ZW50XSk7CisgICAgc2V0dGluZ3MtPnNldEFsbG93UnVubmluZ09mSW5zZWN1
cmVDb250ZW50KFtwcmVmZXJlbmNlcyBhbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudF0pOwog
I2lmIFVTRShBVkZPVU5EQVRJT04pCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIHNl
dHRpbmdzLT5zZXRBVkZvdW5kYXRpb25FbmFibGVkKFtwcmVmZXJlbmNlcyBpc0FWRm91bmRhdGlv
bkVuYWJsZWRdICYmIFtwcmVmZXJlbmNlcyBmdWxsU2NyZWVuRW5hYmxlZF0pOwpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiA4NjA2
MSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTM5NSw2ICszOTUsOCBAQAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0
aEJvb2w6dXNlUXVpY2tMb29rUXVpcmtzKCldLCBXZWJLaXRVc2VRdWlja0xvb2tSZXNvdXJjZUNh
Y2hpbmdRdWlya3NQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aExv
bmdMb25nOldlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlOjpub1F1b3RhKCldLCBXZWJL
aXRBcHBsaWNhdGlvbkNhY2hlVG90YWxRdW90YSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldp
dGhMb25nTG9uZzpXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bm9RdW90YSgpXSwg
V2ViS2l0QXBwbGljYXRpb25DYWNoZURlZmF1bHRPcmlnaW5RdW90YSwKKyAgICAgICAgW05TTnVt
YmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJLaXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29u
dGVudFByZWZlcmVuY2VLZXksCisgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNd
LCAgV2ViS2l0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnRQcmVmZXJlbmNlS2V5LAogICAg
ICAgICBuaWxdOwogCiAgICAgLy8gVGhpcyB2YWx1ZSBzaG91bGRuJ3QgZXZlciBjaGFuZ2UsIHdo
aWNoIGlzIGFzc3VtZWQgaW4gdGhlIGluaXRpYWxpemF0aW9uIG9mIFdlYktpdFBERkRpc3BsYXlN
b2RlUHJlZmVyZW5jZUtleSBhYm92ZQpAQCAtMTQ5NCw2ICsxNDk2LDI2IEBACiB7CiAgICAgcmV0
dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6V2ViS2l0QVZGb3VuZGF0aW9uRW5hYmxlZEtleV07
CiB9CisKKy0gKEJPT0wpYWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQKK3sKKyAgICByZXR1
cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTogV2ViS2l0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNv
bnRlbnRQcmVmZXJlbmNlS2V5XTsKK30KKworLSAodm9pZClzZXRBbGxvd0Rpc3BsYXlPZkluc2Vj
dXJlQ29udGVudDooQk9PTClmbGFnCit7CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTogZmxhZyBm
b3JLZXk6IFdlYktpdEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50UHJlZmVyZW5jZUtleV07
Cit9CisKKy0gKEJPT0wpYWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQKK3sKKyAgICByZXR1
cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTogV2ViS2l0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNv
bnRlbnRQcmVmZXJlbmNlS2V5XTsKK30KKworLSAodm9pZClzZXRBbGxvd1J1bm5pbmdPZkluc2Vj
dXJlQ29udGVudDooQk9PTClmbGFnCit7CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTogZmxhZyBm
b3JLZXk6IFdlYktpdEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50UHJlZmVyZW5jZUtleV07
Cit9CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJQcmVmZXJlbmNlcyAoV2ViSW50ZXJuYWwp
CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJv
bGxlclF0LmNwcAkocmV2aXNpb24gNzQxOTQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEwLDExICs0MTAs
MjEgQEAKICAgICBtX2RydC0+d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdl
YlNldHRpbmdzOjpMb2NhbENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxzLCBlbmFibGVkKTsKIH0K
IAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNv
bnRlbnQoYm9vbCBlbmFibGVkKQoreworICAgIG1fZHJ0LT53ZWJQYWdlKCktPnNldHRpbmdzKCkt
PnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OlBhZ2VzQ2FuRGlzcGxheUluc2VjdXJlQ29udGVu
dCwgZW5hYmxlZCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93Rmls
ZUFjY2Vzc0Zyb21GaWxlVVJMcyhib29sIGVuYWJsZWQpCiB7CiAgICAgbV9kcnQtPndlYlBhZ2Uo
KS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6TG9jYWxDb250ZW50Q2Fu
QWNjZXNzRmlsZVVybHMsIGVuYWJsZWQpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChib29sIGVuYWJsZWQpCit7CisgICAg
bV9kcnQtPndlYlBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6
UGFnZXNDYW5SdW5JbnNlY3VyZUNvbnRlbnQsIGVuYWJsZWQpOworfQorCiB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRBcHBDYWNoZU1heGltdW1TaXplKHVuc2lnbmVkIGxvbmcgbG9uZyBx
dW90YSkKIHsKICAgICBtX2RydC0+d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRPZmZsaW5lV2Vi
QXBwbGljYXRpb25DYWNoZVF1b3RhKHF1b3RhKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgJKHJldmlzaW9uIDc0MTk0KQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDksNyArMTQ5LDkgQEAKICAgICB2b2lkIHNldE1lZGlhVHlwZShjb25zdCBR
U3RyaW5nJiB0eXBlKTsKICAgICB2b2lkIHNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWQoYm9vbCBl
bmFibGUpOwogICAgIHZvaWQgc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoYm9v
bCBlbmFibGUpOworICAgIHZvaWQgc2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoYm9v
bCBlbmFibGUpOwogICAgIHZvaWQgc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wg
ZW5hYmxlKTsKKyAgICB2b2lkIHNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KGJvb2wg
ZW5hYmxlKTsKICAgICB2b2lkIHNldEFwcENhY2hlTWF4aW11bVNpemUodW5zaWduZWQgbG9uZyBs
b25nIHF1b3RhKTsKICAgICB2b2lkIHNldEphdmFTY3JpcHRQcm9maWxpbmdFbmFibGVkKGJvb2wg
ZW5hYmxlKTsKICAgICB2b2lkIHNldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZChib29sIGVuYWJs
ZSk7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJH
dGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0
Q29udHJvbGxlckd0ay5jcHAJKHJldmlzaW9uIDc0MTk0KQorKysgVG9vbHMvRHVtcFJlbmRlclRy
ZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQy
LDYgKzQ0MiwxNSBAQAogICAgIGdfb2JqZWN0X3NldChHX09CSkVDVChzZXR0aW5ncyksICJlbmFi
bGUtdW5pdmVyc2FsLWFjY2Vzcy1mcm9tLWZpbGUtdXJpcyIsIGZsYWcsIE5VTEwpOwogfQogCit2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVu
dChib29sIGZsYWcpCit7CisgICAgV2ViS2l0V2ViVmlldyogdmlldyA9IHdlYmtpdF93ZWJfZnJh
bWVfZ2V0X3dlYl92aWV3KG1haW5GcmFtZSk7CisgICAgQVNTRVJUKHZpZXcpOworCisgICAgV2Vi
S2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzID0gd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh2
aWV3KTsKKyAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWRpc3Bs
YXktb2YtaW5zZWN1cmUtY29udGVudCIsIGZsYWcsIE5VTEwpOworfQorCiB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBmbGFnKQog
ewogICAgIFdlYktpdFdlYlZpZXcqIHZpZXcgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmll
dyhtYWluRnJhbWUpOwpAQCAtNDUxLDYgKzQ2MCwxNSBAQAogICAgIGdfb2JqZWN0X3NldChHX09C
SkVDVChzZXR0aW5ncyksICJlbmFibGUtZmlsZS1hY2Nlc3MtZnJvbS1maWxlLXVyaXMiLCBmbGFn
LCBOVUxMKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dSdW5uaW5n
T2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCBmbGFnKQoreworICAgIFdlYktpdFdlYlZpZXcqIHZpZXcg
PSB3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOworICAgIEFTU0VSVCh2
aWV3KTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmll
d19nZXRfc2V0dGluZ3Modmlldyk7CisgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHNldHRpbmdz
KSwgImVuYWJsZS1ydW5uaW5nLW9mLWluc2VjdXJlLWNvbnRlbnQiLCBmbGFnLCBOVUxMKTsKK30K
Kwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJs
ZWQoYm9vbCBmbGFnKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwCShyZXZp
c2lvbiA3NDE5NCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3d4L0xheW91dFRlc3RDb250cm9s
bGVyV3guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsMTEgKzE5MiwyMSBAQAogICAgIC8vIEZJ
WE1FOiBpbXBsZW1lbnQKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dE
aXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCBlbmFibGVkKQoreworICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dGaWxlQWNj
ZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxlZCkKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50
CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93UnVubmluZ09mSW5zZWN1
cmVDb250ZW50KGJvb2wgZW5hYmxlZCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50Cit9CisK
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVk
KGJvb2wgZmxhZykKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CkluZGV4OiBUb29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCShyZXZpc2lvbiA3NDE5NCkKKysrIFRv
b2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkod29ya2luZyBjb3B5KQpA
QCAtNDYyLDYgKzQ2Miw4IEBACiAgICAgW3ByZWZlcmVuY2VzIHNldFdlYkdMRW5hYmxlZDpOT107
CiAgICAgW3ByZWZlcmVuY2VzIHNldFVzZVByZUhUTUw1UGFyc2VyUXVpcmtzOk5PXTsKICAgICBb
cHJlZmVyZW5jZXMgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQ6Tk9dOworICAg
IFtwcmVmZXJlbmNlcyBzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudDpZRVNdOworICAg
IFtwcmVmZXJlbmNlcyBzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudDpZRVNdOwogCiAg
ICAgW1tOU0hUVFBDb29raWVTdG9yYWdlIHNoYXJlZEhUVFBDb29raWVTdG9yYWdlXSBzZXRDb29r
aWVBY2NlcHRQb2xpY3k6TlNIVFRQQ29va2llQWNjZXB0UG9saWN5T25seUZyb21NYWluRG9jdW1l
bnREb21haW5dOwogICAgIApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRl
c3RDb250cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gNzQxOTQpCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTQzMiwxMSArNDMyLDIxIEBACiAgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZl
cmVuY2VzXSBzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMczplbmFibGVkXTsKIH0K
IAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNv
bnRlbnQoYm9vbCBlbmFibGVkKQoreworICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJl
bmNlc10gc2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQ6ZW5hYmxlZF07Cit9CisKIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhi
b29sIGVuYWJsZWQpCiB7CiAgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBz
ZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHM6ZW5hYmxlZF07CiB9CiAKK3ZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KGJvb2wgZW5h
YmxlZCkKK3sKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIHNldEFsbG93
UnVubmluZ09mSW5zZWN1cmVDb250ZW50OmVuYWJsZWRdOworfQorCiB2b2lkIExheW91dFRlc3RD
b250cm9sbGVyOjpzZXRQb3B1cEJsb2NraW5nRW5hYmxlZChib29sIHBvcHVwQmxvY2tpbmdFbmFi
bGVkKQogewogICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0SmF2YVNj
cmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseTohcG9wdXBCbG9ja2luZ0VuYWJsZWRdOwpJ
bmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gNzQxOTQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMDcsNiArMTMwNywxNyBAQAogICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYg
c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1l
bnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0
aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNv
bnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0
UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0QWxsb3dEaXNwbGF5T2ZJ
bnNlY3VyZUNvbnRlbnQoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0pKTsK
KworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3RhdGlj
IEpTVmFsdWVSZWYgc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzQ2FsbGJhY2soSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgJiB3aW5kb3dzIGltcGxl
bWVudGF0aW9uCkBAIC0xMzE5LDYgKzEzMzAsMTcgQEAKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldEFsbG93UnVubmlu
Z09mSW5zZWN1cmVDb250ZW50KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5j
dGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0
IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBp
ZiAoYXJndW1lbnRDb3VudCA8IDEpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KTsKKworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3Rh
dGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09i
amVjdCkpOworICAgIGNvbnRyb2xsZXItPnNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50
KEpTVmFsdWVUb0Jvb2xlYW4oY29udGV4dCwgYXJndW1lbnRzWzBdKSk7CisKKyAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHNl
dFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50c0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0
LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFy
Z3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikKIHsKICAgICAvLyBIYXMgbWFjICYgd2luZG93cyBpbXBsZW1lbnRhdGlvbgpAQCAt
MjAwNSw3ICsyMDI3LDkgQEAKICAgICAgICAgeyAicmVwYWludFN3ZWVwSG9yaXpvbnRhbGx5Iiwg
cmVwYWludFN3ZWVwSG9yaXpvbnRhbGx5Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0
QWNjZXB0c0VkaXRpbmciLCBzZXRBY2NlcHRzRWRpdGluZ0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
ICAgIHsgInNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzIiwgc2V0QWxsb3dVbml2
ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRB
bGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCIsIHNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVD
b250ZW50Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0QWxsb3dGaWxlQWNjZXNzRnJv
bUZpbGVVUkxzIiwgc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKKyAgICAgICAgeyAic2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQiLCBzZXRBbGxv
d1J1bm5pbmdPZkluc2VjdXJlQ29udGVudENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNl
dEFsd2F5c0FjY2VwdENvb2tpZXMiLCBzZXRBbHdheXNBY2NlcHRDb29raWVzQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAic2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSIsIHNldEFwcENhY2hlTWF4
aW11bVNpemVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRBcHBsaWNhdGlvbkNhY2hl
T3JpZ2luUXVvdGEiLCBzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGFDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LApJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3Bw
CShyZXZpc2lvbiA3NDE5NCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVy
VHJlZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgyMiw3ICs4MjIsOSBAQAogICAgIENPTVB0cjxJ
V2ViUHJlZmVyZW5jZXNQcml2YXRlPiBwcmVmc1ByaXZhdGUoUXVlcnksIHByZWZlcmVuY2VzKTsK
ICAgICBpZiAocHJlZnNQcml2YXRlKSB7CiAgICAgICAgIHByZWZzUHJpdmF0ZS0+c2V0QWxsb3dV
bml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoVFJVRSk7CisgICAgICAgIHByZWZzUHJpdmF0ZS0+
c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoVFJVRSk7CiAgICAgICAgIHByZWZzUHJp
dmF0ZS0+c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKFRSVUUpOworICAgICAgICBwcmVm
c1ByaXZhdGUtPnNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KFRSVUUpOwogICAgICAg
ICBwcmVmc1ByaXZhdGUtPnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKFRSVUUpOwogICAg
ICAgICBwcmVmc1ByaXZhdGUtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoRkFMU0UpOwogICAg
ICAgICBwcmVmc1ByaXZhdGUtPnNldEV4cGVyaW1lbnRhbE5vdGlmaWNhdGlvbnNFbmFibGVkKFRS
VUUpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVy
V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVz
dENvbnRyb2xsZXJXaW4uY3BwCShyZXZpc2lvbiA3NDE5NCkKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUw
NCw2ICs1MDQsMjMgQEAKICAgICBwcmVmc1ByaXZhdGUtPnNldEFsbG93VW5pdmVyc2FsQWNjZXNz
RnJvbUZpbGVVUkxzKGVuYWJsZWQpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpz
ZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChib29sIGVuYWJsZWQpCit7CisgICAgQ09N
UHRyPElXZWJWaWV3PiB3ZWJWaWV3OworICAgIGlmIChGQUlMRUQoZnJhbWUtPndlYlZpZXcoJndl
YlZpZXcpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlcz4g
cHJlZmVyZW5jZXM7CisgICAgaWYgKEZBSUxFRCh3ZWJWaWV3LT5wcmVmZXJlbmNlcygmcHJlZmVy
ZW5jZXMpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQ09NUHRyPElXZWJQcmVmZXJlbmNlc1By
aXZhdGU+IHByZWZzUHJpdmF0ZShRdWVyeSwgcHJlZmVyZW5jZXMpOworICAgIGlmICghcHJlZnNQ
cml2YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBwcmVmc1ByaXZhdGUtPnNldEFsbG93RGlz
cGxheU9mSW5zZWN1cmVDb250ZW50KGVuYWJsZWQpOworfQorCiB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGVkKQogewog
ICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKQEAgLTUyMSw2ICs1MzgsMjMgQEAKICAgICBw
cmVmc1ByaXZhdGUtPnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhlbmFibGVkKTsKIH0K
IAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNv
bnRlbnQoYm9vbCBlbmFibGVkKQoreworICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKKyAg
ICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJWaWV3KCZ3ZWJWaWV3KSkpCisgICAgICAgIHJldHVybjsK
KworICAgIENPTVB0cjxJV2ViUHJlZmVyZW5jZXM+IHByZWZlcmVuY2VzOworICAgIGlmIChGQUlM
RUQod2ViVmlldy0+cHJlZmVyZW5jZXMoJnByZWZlcmVuY2VzKSkpCisgICAgICAgIHJldHVybjsK
KworICAgIENPTVB0cjxJV2ViUHJlZmVyZW5jZXNQcml2YXRlPiBwcmVmc1ByaXZhdGUoUXVlcnks
IHByZWZlcmVuY2VzKTsKKyAgICBpZiAoIXByZWZzUHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgcHJlZnNQcml2YXRlLT5zZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChlbmFi
bGVkKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0UG9wdXBCbG9ja2luZ0Vu
YWJsZWQoYm9vbCBlbmFibGVkKQogewogICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKSW5k
ZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNp
b24gNzQxOTQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw5IEBACiAgICAgdm9pZCByZW1vdmVBbGxWaXNp
dGVkTGlua3MoKTsKICAgICB2b2lkIHNldEFjY2VwdHNFZGl0aW5nKGJvb2wgYWNjZXB0c0VkaXRp
bmcpOwogICAgIHZvaWQgc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCk7
CisgICAgdm9pZCBzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChib29sKTsKICAgICB2
b2lkIHNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhib29sKTsKKyAgICB2b2lkIHNldEFs
bG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KGJvb2wpOwogICAgIHZvaWQgc2V0QXBwQ2FjaGVN
YXhpbXVtU2l6ZSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwogICAgIHZvaWQgc2V0QXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSk7CiAgICAgdm9p
ZCBzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sKTsK
</data>
<flag name="commit-queue"
          id="85979"
          type_id="3"
          status="-"
          setter="gustavo.noronha"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93024</attachid>
            <date>2011-05-10 15:16:00 -0700</date>
            <delta_ts>2011-06-18 13:34:00 -0700</delta_ts>
            <desc>Plumbing #1</desc>
            <filename>58378c_1.diff</filename>
            <type>text/plain</type>
            <size>5036</size>
            <attacher name="Chris Evans">cevans</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNl
cy5jcHAJKHJldmlzaW9uIDg2MDYxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViUHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw5IEBACiAKICAg
ICBET01QYXN0ZUFsbG93ZWQgPSB0cnVlOwogICAgIFhTU0F1ZGl0b3JFbmFibGVkID0gZmFsc2U7
CisgICAgYWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQgPSB0cnVlOwogICAgIGFsbG93Rmls
ZUFjY2Vzc0Zyb21GaWxlVVJMcyA9IHRydWU7CisgICAgYWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNv
bnRlbnQgPSB0cnVlOwogICAgIGF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkID0gdHJ1ZTsKICAg
ICBkZWZhdWx0VGV4dEVuY29kaW5nTmFtZSA9IFdlYlN0cmluZzo6ZnJvbVVURjgoIklTTy04ODU5
LTEiKTsKICAgICBkZXZlbG9wZXJFeHRyYXNFbmFibGVkID0gdHJ1ZTsKQEAgLTEyNyw3ICsxMjks
OSBAQAogCiAgICAgc2V0dGluZ3MtPnNldERPTVBhc3RlQWxsb3dlZChET01QYXN0ZUFsbG93ZWQp
OwogICAgIHNldHRpbmdzLT5zZXRYU1NBdWRpdG9yRW5hYmxlZChYU1NBdWRpdG9yRW5hYmxlZCk7
CisgICAgc2V0dGluZ3MtPnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KGFsbG93RGlz
cGxheU9mSW5zZWN1cmVDb250ZW50KTsKICAgICBzZXR0aW5ncy0+c2V0QWxsb3dGaWxlQWNjZXNz
RnJvbUZpbGVVUkxzKGFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyk7CisgICAgc2V0dGluZ3Mt
PnNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KGFsbG93UnVubmluZ09mSW5zZWN1cmVD
b250ZW50KTsKICAgICBzZXR0aW5ncy0+c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYXV0
aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQpOwogICAgIHNldHRpbmdzLT5zZXREZWZhdWx0VGV4dEVu
Y29kaW5nTmFtZShkZWZhdWx0VGV4dEVuY29kaW5nTmFtZSk7CiAgICAgc2V0dGluZ3MtPnNldERl
dmVsb3BlckV4dHJhc0VuYWJsZWQoZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCk7CkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiA4NjA2MSkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDcgKzEzOCw5
IEBACiAgICAgYmluZE1ldGhvZCgicmVzdW1lQW5pbWF0aW9ucyIsICZMYXlvdXRUZXN0Q29udHJv
bGxlcjo6cmVzdW1lQW5pbWF0aW9ucyk7CiAgICAgYmluZE1ldGhvZCgic2FtcGxlU1ZHQW5pbWF0
aW9uRm9yRWxlbWVudEF0VGltZSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2FtcGxlU1ZHQW5p
bWF0aW9uRm9yRWxlbWVudEF0VGltZSk7CiAgICAgYmluZE1ldGhvZCgic2V0QWNjZXB0c0VkaXRp
bmciLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFjY2VwdHNFZGl0aW5nKTsKKyAgICBiaW5k
TWV0aG9kKCJzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCIsICZMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQpOwogICAgIGJpbmRNZXRo
b2QoInNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyIsICZMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRB
bGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQpOwogICAgIGJpbmRNZXRob2QoInNldEFsbG93
VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRB
bGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyk7CiAgICAgYmluZE1ldGhvZCgic2V0QWx3
YXlzQWNjZXB0Q29va2llcyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWx3YXlzQWNjZXB0
Q29va2llcyk7CiAgICAgYmluZE1ldGhvZCgic2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQi
LCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKTsK
QEAgLTEyODIsNiArMTI4NCwxNSBAQAogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCit2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQorewor
ICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpIHsK
KyAgICAgICAgbV9zaGVsbC0+cHJlZmVyZW5jZXMoKS0+YWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNv
bnRlbnQgPSBhcmd1bWVudHNbMF0udmFsdWUuYm9vbFZhbHVlOworICAgICAgICBtX3NoZWxsLT5h
cHBseVByZWZlcmVuY2VzKCk7CisgICAgfQorICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCiB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsK
ICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7
CkBAIC0xMjkxLDYgKzEzMDIsMTUgQEAKICAgICByZXN1bHQtPnNldE51bGwoKTsKIH0KIAordm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sK
KyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7
CisgICAgICAgIG1fc2hlbGwtPnByZWZlcmVuY2VzKCktPmFsbG93UnVubmluZ09mSW5zZWN1cmVD
b250ZW50ID0gYXJndW1lbnRzWzBdLnZhbHVlLmJvb2xWYWx1ZTsKKyAgICAgICAgbV9zaGVsbC0+
YXBwbHlQcmVmZXJlbmNlcygpOworICAgIH0KKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwog
Ly8gTmVlZCB0aGVzZSBjb252ZXJzaW9ucyBiZWNhdXNlIHRoZSBmb3JtYXQgb2YgdGhlIHZhbHVl
IGZvciBib29sZWFucwogLy8gbWF5IHZhcnkgLSBmb3IgZXhhbXBsZSwgb24gbWFjICIxIiBhbmQg
IjAiIGFyZSB1c2VkIGZvciBib29sZWFuLgogYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y3Bw
VmFyaWFudFRvQm9vbChjb25zdCBDcHBWYXJpYW50JiB2YWx1ZSkKSW5kZXg6IFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuaAkocmV2aXNpb24gODYwNjEp
CisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NCw3ICs1NCw5IEBACiAKICAgICBib29sIERPTVBhc3RlQWxsb3dlZDsK
ICAgICBib29sIFhTU0F1ZGl0b3JFbmFibGVkOworICAgIGJvb2wgYWxsb3dEaXNwbGF5T2ZJbnNl
Y3VyZUNvbnRlbnQ7CiAgICAgYm9vbCBhbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHM7CisgICAg
Ym9vbCBhbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudDsKICAgICBib29sIGF1dGhvckFuZFVz
ZXJTdHlsZXNFbmFibGVkOwogICAgIFdlYktpdDo6V2ViU3RyaW5nIGRlZmF1bHRUZXh0RW5jb2Rp
bmdOYW1lOwogICAgIGJvb2wgZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZDsKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAko
cmV2aXNpb24gODYwNjEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjksNyArMjY5LDkgQEAKICAgICB2
b2lkIGV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqKTsKICAgICB2b2lkIG92ZXJyaWRlUHJlZmVyZW5jZShjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzZXRBbGxvd1VuaXZlcnNhbEFjY2Vz
c0Zyb21GaWxlVVJMcyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAg
dm9pZCBzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVS
THMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgc2V0QWxs
b3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCopOwogCiAgICAgdm9pZCBzaGFkb3dSb290KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENw
cFZhcmlhbnQqKTsKICAgICB2b2lkIGVuc3VyZVNoYWRvd1Jvb3QoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCopOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93041</attachid>
            <date>2011-05-10 16:26:31 -0700</date>
            <delta_ts>2011-05-10 18:24:27 -0700</delta_ts>
            <desc>Plumbing #1</desc>
            <filename>58378c_2.diff</filename>
            <type>text/plain</type>
            <size>6090</size>
            <attacher name="Chris Evans">cevans</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNl
cy5jcHAJKHJldmlzaW9uIDg2MTY0KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViUHJlZmVyZW5jZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw5IEBACiAKICAg
ICBET01QYXN0ZUFsbG93ZWQgPSB0cnVlOwogICAgIFhTU0F1ZGl0b3JFbmFibGVkID0gZmFsc2U7
CisgICAgYWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQgPSB0cnVlOwogICAgIGFsbG93Rmls
ZUFjY2Vzc0Zyb21GaWxlVVJMcyA9IHRydWU7CisgICAgYWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNv
bnRlbnQgPSB0cnVlOwogICAgIGF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkID0gdHJ1ZTsKICAg
ICBkZWZhdWx0VGV4dEVuY29kaW5nTmFtZSA9IFdlYlN0cmluZzo6ZnJvbVVURjgoIklTTy04ODU5
LTEiKTsKICAgICBkZXZlbG9wZXJFeHRyYXNFbmFibGVkID0gdHJ1ZTsKQEAgLTEyNyw3ICsxMjks
OSBAQAogCiAgICAgc2V0dGluZ3MtPnNldERPTVBhc3RlQWxsb3dlZChET01QYXN0ZUFsbG93ZWQp
OwogICAgIHNldHRpbmdzLT5zZXRYU1NBdWRpdG9yRW5hYmxlZChYU1NBdWRpdG9yRW5hYmxlZCk7
CisgICAgc2V0dGluZ3MtPnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KGFsbG93RGlz
cGxheU9mSW5zZWN1cmVDb250ZW50KTsKICAgICBzZXR0aW5ncy0+c2V0QWxsb3dGaWxlQWNjZXNz
RnJvbUZpbGVVUkxzKGFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyk7CisgICAgc2V0dGluZ3Mt
PnNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KGFsbG93UnVubmluZ09mSW5zZWN1cmVD
b250ZW50KTsKICAgICBzZXR0aW5ncy0+c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYXV0
aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQpOwogICAgIHNldHRpbmdzLT5zZXREZWZhdWx0VGV4dEVu
Y29kaW5nTmFtZShkZWZhdWx0VGV4dEVuY29kaW5nTmFtZSk7CiAgICAgc2V0dGluZ3MtPnNldERl
dmVsb3BlckV4dHJhc0VuYWJsZWQoZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCk7CkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiA4NjE2NCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDcgKzEzOCw5
IEBACiAgICAgYmluZE1ldGhvZCgicmVzdW1lQW5pbWF0aW9ucyIsICZMYXlvdXRUZXN0Q29udHJv
bGxlcjo6cmVzdW1lQW5pbWF0aW9ucyk7CiAgICAgYmluZE1ldGhvZCgic2FtcGxlU1ZHQW5pbWF0
aW9uRm9yRWxlbWVudEF0VGltZSIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2FtcGxlU1ZHQW5p
bWF0aW9uRm9yRWxlbWVudEF0VGltZSk7CiAgICAgYmluZE1ldGhvZCgic2V0QWNjZXB0c0VkaXRp
bmciLCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFjY2VwdHNFZGl0aW5nKTsKKyAgICBiaW5k
TWV0aG9kKCJzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCIsICZMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQpOwogICAgIGJpbmRNZXRo
b2QoInNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyIsICZMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKTsKKyAgICBiaW5kTWV0aG9kKCJzZXRB
bGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQpOwogICAgIGJpbmRNZXRob2QoInNldEFsbG93
VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzIiwgJkxheW91dFRlc3RDb250cm9sbGVyOjpzZXRB
bGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyk7CiAgICAgYmluZE1ldGhvZCgic2V0QWx3
YXlzQWNjZXB0Q29va2llcyIsICZMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWx3YXlzQWNjZXB0
Q29va2llcyk7CiAgICAgYmluZE1ldGhvZCgic2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQi
LCAmTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKTsK
QEAgLTEyODIsNiArMTI4NCwxNSBAQAogICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCit2b2lk
IExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQorewor
ICAgIGlmIChhcmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpIHsK
KyAgICAgICAgbV9zaGVsbC0+cHJlZmVyZW5jZXMoKS0+YWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNv
bnRlbnQgPSBhcmd1bWVudHNbMF0udmFsdWUuYm9vbFZhbHVlOworICAgICAgICBtX3NoZWxsLT5h
cHBseVByZWZlcmVuY2VzKCk7CisgICAgfQorICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCiB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsK
ICAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7
CkBAIC0xMjkxLDYgKzEzMDIsMTUgQEAKICAgICByZXN1bHQtPnNldE51bGwoKTsKIH0KIAordm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sK
KyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKSB7
CisgICAgICAgIG1fc2hlbGwtPnByZWZlcmVuY2VzKCktPmFsbG93UnVubmluZ09mSW5zZWN1cmVD
b250ZW50ID0gYXJndW1lbnRzWzBdLnZhbHVlLmJvb2xWYWx1ZTsKKyAgICAgICAgbV9zaGVsbC0+
YXBwbHlQcmVmZXJlbmNlcygpOworICAgIH0KKyAgICByZXN1bHQtPnNldE51bGwoKTsKK30KKwog
Ly8gTmVlZCB0aGVzZSBjb252ZXJzaW9ucyBiZWNhdXNlIHRoZSBmb3JtYXQgb2YgdGhlIHZhbHVl
IGZvciBib29sZWFucwogLy8gbWF5IHZhcnkgLSBmb3IgZXhhbXBsZSwgb24gbWFjICIxIiBhbmQg
IjAiIGFyZSB1c2VkIGZvciBib29sZWFuLgogYm9vbCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6Y3Bw
VmFyaWFudFRvQm9vbChjb25zdCBDcHBWYXJpYW50JiB2YWx1ZSkKSW5kZXg6IFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuaAkocmV2aXNpb24gODYxNjQp
CisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NCw3ICs1NCw5IEBACiAKICAgICBib29sIERPTVBhc3RlQWxsb3dlZDsK
ICAgICBib29sIFhTU0F1ZGl0b3JFbmFibGVkOworICAgIGJvb2wgYWxsb3dEaXNwbGF5T2ZJbnNl
Y3VyZUNvbnRlbnQ7CiAgICAgYm9vbCBhbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHM7CisgICAg
Ym9vbCBhbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudDsKICAgICBib29sIGF1dGhvckFuZFVz
ZXJTdHlsZXNFbmFibGVkOwogICAgIFdlYktpdDo6V2ViU3RyaW5nIGRlZmF1bHRUZXh0RW5jb2Rp
bmdOYW1lOwogICAgIGJvb2wgZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZDsKSW5kZXg6IFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAko
cmV2aXNpb24gODYxNjQpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjksNyArMjY5LDkgQEAKICAgICB2
b2lkIGV2YWx1YXRlU2NyaXB0SW5Jc29sYXRlZFdvcmxkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqKTsKICAgICB2b2lkIG92ZXJyaWRlUHJlZmVyZW5jZShjb25zdCBDcHBBcmd1
bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzZXRBbGxvd1VuaXZlcnNhbEFjY2Vz
c0Zyb21GaWxlVVJMcyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CisgICAg
dm9pZCBzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChjb25zdCBDcHBBcmd1bWVudExp
c3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVS
THMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworICAgIHZvaWQgc2V0QWxs
b3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCopOwogCiAgICAgdm9pZCBzaGFkb3dSb290KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENw
cFZhcmlhbnQqKTsKICAgICB2b2lkIGVuc3VyZVNoYWRvd1Jvb3QoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCopOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gODYxODMpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxMS0wNS0xMCAgQ2hyaXMgRXZhbnMgIDxj
ZXZhbnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisK
KyAgICAgICAgQWRkIFdlYkNvcmU6OlNldHRpbmcgdG8gYmxvY2sgZGlzcGxheWluZyBhbmQvb3Ig
cnVubmluZyBpbnNlY3VyZSBjb250ZW50IG9uIHNlY3VyZSBwYWdlcworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgzNzgKKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQpOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250
ZW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2Vz
LmNwcDoKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjpyZXNldCk6CisgICAgICAgIChXZWJQcmVm
ZXJlbmNlczo6YXBwbHlUbyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
UHJlZmVyZW5jZXMuaDoKKyAgICAgICAgQWRkIHBsdW1iaW5nIGZvciBuZXcgc2V0dGluZ3MgdG8g
Q2hyb21pdW0gRFJULgorCiAyMDExLTA1LTEwICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaGluaWNoaXJvIEhhbWFqaS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93167</attachid>
            <date>2011-05-11 13:29:09 -0700</date>
            <delta_ts>2011-05-12 13:10:30 -0700</delta_ts>
            <desc>Plumbing #2</desc>
            <filename>58378d_1.diff</filename>
            <type>text/plain</type>
            <size>36328</size>
            <attacher name="Chris Evans">cevans</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjI1OCkKKysrIFNvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDUtMTEgIENo
cmlzIEV2YW5zICA8Y2V2YW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV2ViQ29yZTo6U2V0dGluZyB0byBibG9jayBk
aXNwbGF5aW5nIGFuZC9vciBydW5uaW5nIGluc2VjdXJlIGNvbnRlbnQgb24gc2VjdXJlIHBhZ2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODM3OAor
CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3M6
OlFXZWJTZXR0aW5ncyk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5oOgorICAgICAgICBQ
bHVtYmluZyBmb3IgZXhwb3NpbmcgbmV3IHNldHRpbmdzIHRvIERSVC4KKwogMjAxMS0wNS0xMSAg
U2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgpJbmRleDogU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgJKHJldmlzaW9uIDg2
MjQxKQorKysgU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc3LDcgKzc3LDkgQEAKICAgICAgICAgU2l0ZVNwZWNpZmljUXVpcmtzRW5hYmxlZCwK
ICAgICAgICAgSmF2YXNjcmlwdENhbkNsb3NlV2luZG93cywKICAgICAgICAgV2ViR0xFbmFibGVk
LAotICAgICAgICBIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQKKyAgICAgICAgSHlwZXJsaW5rQXVk
aXRpbmdFbmFibGVkLAorICAgICAgICBQYWdlc0NhbkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQsCisg
ICAgICAgIFBhZ2VzQ2FuUnVuSW5zZWN1cmVDb250ZW50CiAgICAgfTsKICAgICBlbnVtIFdlYkdy
YXBoaWMgewogICAgICAgICBNaXNzaW5nSW1hZ2VHcmFwaGljLApJbmRleDogU291cmNlL1dlYktp
dC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2Vic2V0dGluZ3MuY3BwCShyZXZpc2lvbiA4NjI0MSkKKysrIFNvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxMCw2ICs1MTAsOCBA
QAogICAgIGQtPmF0dHJpYnV0ZXMuaW5zZXJ0KFFXZWJTZXR0aW5nczo6VGlsZWRCYWNraW5nU3Rv
cmVFbmFibGVkLCBmYWxzZSk7CiAgICAgZC0+YXR0cmlidXRlcy5pbnNlcnQoUVdlYlNldHRpbmdz
OjpGcmFtZUZsYXR0ZW5pbmdFbmFibGVkLCBmYWxzZSk7CiAgICAgZC0+YXR0cmlidXRlcy5pbnNl
cnQoUVdlYlNldHRpbmdzOjpTaXRlU3BlY2lmaWNRdWlya3NFbmFibGVkLCB0cnVlKTsKKyAgICBk
LT5hdHRyaWJ1dGVzLmluc2VydChRV2ViU2V0dGluZ3M6OlBhZ2VzQ2FuRGlzcGxheUluc2VjdXJl
Q29udGVudCwgdHJ1ZSk7CisgICAgZC0+YXR0cmlidXRlcy5pbnNlcnQoUVdlYlNldHRpbmdzOjpQ
YWdlc0NhblJ1bkluc2VjdXJlQ29udGVudCwgdHJ1ZSk7CiAgICAgZC0+b2ZmbGluZVN0b3JhZ2VE
ZWZhdWx0UXVvdGEgPSA1ICogMTAyNCAqIDEwMjQ7CiAgICAgZC0+ZGVmYXVsdFRleHRFbmNvZGlu
ZyA9IFFMYXRpbjFTdHJpbmcoImlzby04ODU5LTEiKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDg2MjQxKQorKysgU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjAxLDcgKzMyMDEsOCBAQAogICAgICAgICBlbmFibGVVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVS
SSwgZW5hYmxlRmlsZUFjY2Vzc0Zyb21GaWxlVVJJLAogICAgICAgICBlbmFibGVET01QYXN0ZSwg
dGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzLCBlbmFibGVXZWJHTCwKICAgICAgICAgZW5hYmxl
U2l0ZVNwZWNpZmljUXVpcmtzLCB1c2VQYWdlQ2FjaGUsIGVuYWJsZUphdmFBcHBsZXQsCi0gICAg
ICAgIGVuYWJsZUh5cGVybGlua0F1ZGl0aW5nLCBlbmFibGVGdWxsc2NyZWVuLCBlbmFibGVETlNQ
cmVmZXRjaGluZzsKKyAgICAgICAgZW5hYmxlSHlwZXJsaW5rQXVkaXRpbmcsIGVuYWJsZUZ1bGxz
Y3JlZW4sIGVuYWJsZUROU1ByZWZldGNoaW5nLAorICAgICAgICBlbmFibGVEaXNwbGF5T2ZJbnNl
Y3VyZUNvbnRlbnQsIGVuYWJsZVJ1bm5pbmdPZkluc2VjdXJlQ29udGVudDsKIAogICAgIFdlYktp
dEVkaXRpbmdCZWhhdmlvciBlZGl0aW5nQmVoYXZpb3I7CiAKQEAgLTMyNDQsNiArMzI0NSw4IEBA
CiAgICAgICAgICAgICAgICAgICJlbmFibGUtZnVsbHNjcmVlbiIsICZlbmFibGVGdWxsc2NyZWVu
LAogICAgICAgICAgICAgICAgICAiZW5hYmxlLWRucy1wcmVmZXRjaGluZyIsICZlbmFibGVETlNQ
cmVmZXRjaGluZywKICAgICAgICAgICAgICAgICAgImVuYWJsZS13ZWJnbCIsICZlbmFibGVXZWJH
TCwKKyAgICAgICAgICAgICAgICAgImVuYWJsZS1kaXNwbGF5LW9mLWluc2VjdXJlLWNvbnRlbnQi
LCAmZW5hYmxlRGlzcGxheU9mSW5zZWN1cmVDb250ZW50LAorICAgICAgICAgICAgICAgICAiZW5h
YmxlLXJ1bm5pbmctb2YtaW5zZWN1cmUtY29udGVudCIsICZlbmFibGVSdW5uaW5nT2ZJbnNlY3Vy
ZUNvbnRlbnQsCiAgICAgICAgICAgICAgICAgIE5VTEwpOwogCiAgICAgc2V0dGluZ3MtPnNldERl
ZmF1bHRUZXh0RW5jb2RpbmdOYW1lKGRlZmF1bHRFbmNvZGluZyk7CkBAIC0zMjgyLDYgKzMyODUs
OCBAQAogICAgIHNldHRpbmdzLT5zZXRKYXZhRW5hYmxlZChlbmFibGVKYXZhQXBwbGV0KTsKICAg
ICBzZXR0aW5ncy0+c2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKGVuYWJsZUh5cGVybGlua0F1
ZGl0aW5nKTsKICAgICBzZXR0aW5ncy0+c2V0RE5TUHJlZmV0Y2hpbmdFbmFibGVkKGVuYWJsZURO
U1ByZWZldGNoaW5nKTsKKyAgICBzZXR0aW5ncy0+c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNv
bnRlbnQoZW5hYmxlRGlzcGxheU9mSW5zZWN1cmVDb250ZW50KTsKKyAgICBzZXR0aW5ncy0+c2V0
QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoZW5hYmxlUnVubmluZ09mSW5zZWN1cmVDb250
ZW50KTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBzZXR0aW5ncy0+c2V0RnVs
bFNjcmVlbkVuYWJsZWQoZW5hYmxlRnVsbHNjcmVlbik7CkBAIC0zNDEyLDYgKzM0MTcsMTAgQEAK
ICAgICAgICAgc2V0dGluZ3MtPnNldEphdmFFbmFibGVkKGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnZh
bHVlKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBnX2ludGVybl9zdHJpbmcoImVuYWJsZS1oeXBl
cmxpbmstYXVkaXRpbmciKSkKICAgICAgICAgc2V0dGluZ3MtPnNldEh5cGVybGlua0F1ZGl0aW5n
RW5hYmxlZChnX3ZhbHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOworICAgIGVsc2UgaWYgKG5hbWUg
PT0gZ19pbnRlcm5fc3RyaW5nKCJlbmFibGUtZGlzcGxheS1vZi1pbnNlY3VyZS1jb250ZW50Iikp
CisgICAgICAgIHNldHRpbmdzLT5zZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChnX3Zh
bHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5f
c3RyaW5nKCJlbmFibGUtcnVubmluZy1vZi1pbnNlY3VyZS1jb250ZW50IikpCisgICAgICAgIHNl
dHRpbmdzLT5zZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChnX3ZhbHVlX2dldF9ib29s
ZWFuKCZ2YWx1ZSkpOwogCiAjaWYgRU5BQkxFKFNQRUxMQ0hFQ0spCiAgICAgZWxzZSBpZiAobmFt
ZSA9PSBnX2ludGVybl9zdHJpbmcoInNwZWxsLWNoZWNraW5nLWxhbmd1YWdlcyIpKSB7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAJKHJl
dmlzaW9uIDg2MjQxKQorKysgU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRp
bmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCw4IEBACiAgICAgZ2Jvb2xlYW4g
ZW5hYmxlX2Z1bGxzY3JlZW47CiAgICAgZ2Jvb2xlYW4gZW5hYmxlX2Ruc19wcmVmZXRjaGluZzsK
ICAgICBnYm9vbGVhbiBlbmFibGVfd2ViZ2w7CisgICAgZ2Jvb2xlYW4gZW5hYmxlX2Rpc3BsYXlf
b2ZfaW5zZWN1cmVfY29udGVudDsKKyAgICBnYm9vbGVhbiBlbmFibGVfcnVubmluZ19vZl9pbnNl
Y3VyZV9jb250ZW50OwogfTsKIAogI2RlZmluZSBXRUJLSVRfV0VCX1NFVFRJTkdTX0dFVF9QUklW
QVRFKG9iaikgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwgV0VCS0lUX1RZUEVf
V0VCX1NFVFRJTkdTLCBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUpKQpAQCAtMTY4LDcgKzE3MCw5
IEBACiAgICAgUFJPUF9FTkFCTEVfSFlQRVJMSU5LX0FVRElUSU5HLAogICAgIFBST1BfRU5BQkxF
X0ZVTExTQ1JFRU4sCiAgICAgUFJPUF9FTkFCTEVfRE5TX1BSRUZFVENISU5HLAotICAgIFBST1Bf
RU5BQkxFX1dFQkdMCisgICAgUFJPUF9FTkFCTEVfV0VCR0wsCisgICAgUFJPUF9FTkFCTEVfUlVO
TklOR19PRl9JTlNFQ1VSRV9DT05URU5ULAorICAgIFBST1BfRU5BQkxFX0RJU1BMQVlfT0ZfSU5T
RUNVUkVfQ09OVEVOVAogfTsKIAogLy8gQ3JlYXRlIGEgZGVmYXVsdCB1c2VyIGFnZW50IHN0cmlu
ZwpAQCAtOTQ2LDcgKzk1MCwzNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciBXZWJLaXQgcHJlZmV0Y2hlcyBkb21h
aW4gbmFtZXMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbGFncykpOworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlNl
dHRpbmdzOmVuYWJsZS1kaXNwbGF5LW9mLWluc2VjdXJlLWNvbnRlbnQ6CisgICAgICoKKyAgICAg
KiBCb29sZWFuIHByb3BlcnR5IHRvIGNvbnRyb2wgd2hldGhlciBpbnNlY3VyZSAobm9uLWh0dHBz
KSBpbWFnZXMgLyBmcmFtZXMgCisgICAgICogY2FuIGJlIGxvYWRlZCBmcm9tIGh0dHBzIHBhZ2Vz
LgorICAgICAqLworICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3Rf
Y2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVf
RElTUExBWV9PRl9JTlNFQ1VSRV9DT05URU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtZGlzcGxheS1vZi1pbnNlY3Vy
ZS1jb250ZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRW5hYmxlIGRpc3BsYXkgb2YgaW5zZWN1cmUgY29udGVudCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNv
bnRyb2xzIGxvYWQgb2Ygbm9uLWh0dHBzIGRpc3BsYXkgcmVzb3VyY2VzIGZyb20gaHR0cHMgcGFn
ZXMuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdzKSk7CiAKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJTZXR0
aW5nczplbmFibGUtcnVubmluZy1vZi1pbnNlY3VyZS1jb250ZW50OgorICAgICAqCisgICAgICog
Qm9vbGVhbiBwcm9wZXJ0eSB0byBjb250cm9sIHdoZXRoZXIgaW5zZWN1cmUgKG5vbi1odHRwcykg
c2NyaXB0IC8gQ1NTIC8gCisgICAgICogcGx1Zy1pbnMgY2FuIGJlIGxvYWRlZCBmcm9tIGh0dHBz
IHBhZ2VzLgorICAgICAqLworICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdv
YmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9F
TkFCTEVfUlVOTklOR19PRl9JTlNFQ1VSRV9DT05URU5ULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtcnVubmluZy1vZi1p
bnNlY3VyZS1jb250ZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiRW5hYmxlIHJ1bm5pbmcgb2YgaW5zZWN1cmUgY29udGVudCIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkNvbnRyb2xzIGxvYWQgb2Ygbm9uLWh0dHBzIHNjcmlwdCAvIHBsdWctaW4gcmVzb3VyY2Vz
IGZyb20gaHR0cHMgcGFnZXMuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKICAgICBnX3R5cGVfY2xh
c3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUpKTsK
IH0KIApAQCAtMTEzOCw2ICsxMTY5LDEyIEBACiAgICAgY2FzZSBQUk9QX0VOQUJMRV9XRUJHTDoK
ICAgICAgICAgcHJpdi0+ZW5hYmxlX3dlYmdsID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7
CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfRElTUExBWV9PRl9JTlNFQ1VS
RV9DT05URU5UOgorICAgICAgICBwcml2LT5lbmFibGVfZGlzcGxheV9vZl9pbnNlY3VyZV9jb250
ZW50ID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUFJPUF9FTkFCTEVfUlVOTklOR19PRl9JTlNFQ1VSRV9DT05URU5UOgorICAgICAgICBwcml2
LT5lbmFibGVfcnVubmluZ19vZl9pbnNlY3VyZV9jb250ZW50ID0gZ192YWx1ZV9nZXRfYm9vbGVh
bih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNU
X1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKICAgICAg
ICAgYnJlYWs7CkBAIC0xMjk0LDYgKzEzMzEsMTIgQEAKICAgICBjYXNlIFBST1BfRU5BQkxFX1dF
QkdMOgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5lbmFibGVfd2Vi
Z2wpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0RJU1BMQVlfT0ZfSU5T
RUNVUkVfQ09OVEVOVDoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+
ZW5hYmxlX2Rpc3BsYXlfb2ZfaW5zZWN1cmVfY29udGVudCk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9FTkFCTEVfUlVOTklOR19PRl9JTlNFQ1VSRV9DT05URU5UOgorICAgICAgICBn
X3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5lbmFibGVfcnVubmluZ19vZl9pbnNlY3Vy
ZV9jb250ZW50KTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpF
Q1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAg
ICAgICBicmVhazsKQEAgLTEzNzEsNiArMTQxNCw4IEBACiAgICAgICAgICAgICAgICAgICJlbmFi
bGUtaHlwZXJsaW5rLWF1ZGl0aW5nIiwgcHJpdi0+ZW5hYmxlX2h5cGVybGlua19hdWRpdGluZywK
ICAgICAgICAgICAgICAgICAgImVuYWJsZS1mdWxsc2NyZWVuIiwgcHJpdi0+ZW5hYmxlX2Z1bGxz
Y3JlZW4sCiAgICAgICAgICAgICAgICAgICJlbmFibGUtZG5zLXByZWZldGNoaW5nIiwgcHJpdi0+
ZW5hYmxlX2Ruc19wcmVmZXRjaGluZywKKyAgICAgICAgICAgICAgICAgImVuYWJsZS1kaXNwbGF5
LW9mLWluc2VjdXJlLWNvbnRlbnQiLCBwcml2LT5lbmFibGVfZGlzcGxheV9vZl9pbnNlY3VyZV9j
b250ZW50LAorICAgICAgICAgICAgICAgICAiZW5hYmxlLXJ1bm5pbmctb2YtaW5zZWN1cmUtY29u
dGVudCIsIHByaXYtPmVuYWJsZV9ydW5uaW5nX29mX2luc2VjdXJlX2NvbnRlbnQsCiAgICAgICAg
ICAgICAgICAgIE5VTEwpKTsKIAogICAgIHJldHVybiBjb3B5OwpJbmRleDogU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwkocmV2aXNpb24gODYyNTgpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0wNS0xMSAgQ2hyaXMgRXZhbnMgIDxjZXZh
bnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBXZWJDb3JlOjpTZXR0aW5nIHRvIGJsb2NrIGRpc3BsYXlpbmcgYW5kL29y
IHJ1bm5pbmcgaW5zZWN1cmUgY29udGVudCBvbiBzZWN1cmUgcGFnZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4Mzc4CisKKyAgICAgICAgKiB3ZWJr
aXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19j
bGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3Byb3BlcnR5KToK
KyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdl
YmtpdF93ZWJfc2V0dGluZ3NfY29weSk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyk6CisgICAgICAg
ICh3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KToKKyAgICAgICAgUGx1bWJpbmcgZm9y
IGV4cG9zaW5nIG5ldyBzZXR0aW5ncyB0byBEUlQuCisKIDIwMTEtMDUtMDkgIE1hcnRpbiBSb2Jp
bnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIEZpeCBhIHRlc3QgYWZ0ZXIg
cjg2MTAyLiBTY3JvbGxiYXJzIHVwZGF0ZSBhc3luY2hyb25vdXNseSwgc28gd2UKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93aW4vV2ViUHJlZmVyZW5jZXMuaAkocmV2aXNpb24gODYyNDEpCisrKyBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjgsMTIgKzM2OCwy
NCBAQAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBbGxvd1VuaXZl
cnNhbEFjY2Vzc0Zyb21GaWxlVVJMcygKICAgICAvKiBbaW5dICovIEJPT0wgYWxsb3dBY2Nlc3Mp
OwogCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFsbG93RGlzcGxheU9m
SW5zZWN1cmVDb250ZW50KAorICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogYWxsb3dBY2Nl
c3MpOworCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFsbG93RGlz
cGxheU9mSW5zZWN1cmVDb250ZW50KAorICAgIC8qIFtpbl0gKi8gQk9PTCBhbGxvd0FjY2Vzcyk7
CisKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWxsb3dGaWxlQWNjZXNz
RnJvbUZpbGVVUkxzKAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogYWxsb3dBY2Nlc3Mp
OwogCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFsbG93RmlsZUFj
Y2Vzc0Zyb21GaWxlVVJMcygKICAgICAvKiBbaW5dICovIEJPT0wgYWxsb3dBY2Nlc3MpOwogCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFsbG93UnVubmluZ09mSW5zZWN1
cmVDb250ZW50KAorICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogYWxsb3dBY2Nlc3MpOwor
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFsbG93UnVubmluZ09m
SW5zZWN1cmVDb250ZW50KAorICAgIC8qIFtpbl0gKi8gQk9PTCBhbGxvd0FjY2Vzcyk7CisKICAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgamF2YVNjcmlwdENhbkFjY2Vzc0Ns
aXBib2FyZCgKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpOwogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjI1OCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDExLTA1LTExICBDaHJp
cyBFdmFucyAgPGNldmFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdlYkNvcmU6OlNldHRpbmcgdG8gYmxvY2sgZGlz
cGxheWluZyBhbmQvb3IgcnVubmluZyBpbnNlY3VyZSBjb250ZW50IG9uIHNlY3VyZSBwYWdlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgzNzgKKwor
ICAgICAgICAqIEludGVyZmFjZXMvSVdlYlByZWZlcmVuY2VzUHJpdmF0ZS5pZGw6CisgICAgICAg
ICogV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmg6CisgICAgICAgICogV2ViUHJlZmVyZW5jZXMu
Y3BwOgorICAgICAgICAoV2ViUHJlZmVyZW5jZXM6OmluaXRpYWxpemVEZWZhdWx0U2V0dGluZ3Mp
OgorICAgICAgICAoV2ViUHJlZmVyZW5jZXM6OmFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50
KToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjpzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29u
dGVudCk6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6YWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNv
bnRlbnQpOgorICAgICAgICAoV2ViUHJlZmVyZW5jZXM6OnNldEFsbG93UnVubmluZ09mSW5zZWN1
cmVDb250ZW50KToKKyAgICAgICAgKiBXZWJQcmVmZXJlbmNlcy5oOgorICAgICAgICAqIFdlYlZp
ZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKToKKyAg
ICAgICAgUGx1bWJpbmcgZm9yIGV4cG9zaW5nIG5ldyBzZXR0aW5ncyB0byBEUlQuCisKIDIwMTEt
MDUtMTEgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBTdGV2ZSBGYWxrZW5idXJnLgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmll
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlz
aW9uIDg2MjQxKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3NjUsMTEgKzQ3NjUsMjEgQEAKICAgICAgICAgcmV0dXJuIGhyOwogICAgIHNldHRp
bmdzLT5zZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyghIWVuYWJsZWQpOwogCisg
ICAgaHIgPSBwcmVmc1ByaXZhdGUtPmFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KCZlbmFi
bGVkKTsKKyAgICBpZiAoRkFJTEVEKGhyKSkKKyAgICAgICAgcmV0dXJuIGhyOworICAgIHNldHRp
bmdzLT5zZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCghIWVuYWJsZWQpOworCiAgICAg
aHIgPSBwcmVmc1ByaXZhdGUtPmFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcygmZW5hYmxlZCk7
CiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsKICAgICBzZXR0aW5ncy0+
c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKCEhZW5hYmxlZCk7CiAKKyAgICBociA9IHBy
ZWZzUHJpdmF0ZS0+YWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoJmVuYWJsZWQpOworICAg
IGlmIChGQUlMRUQoaHIpKQorICAgICAgICByZXR1cm4gaHI7CisgICAgc2V0dGluZ3MtPnNldEFs
bG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KCEhZW5hYmxlZCk7CisKICAgICBociA9IHByZWZz
UHJpdmF0ZS0+amF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCgmZW5hYmxlZCk7CiAgICAgaWYg
KEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2lu
L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luL1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCShyZXZpc2lvbiA4NjI0MSkKKysrIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OSw3ICs0OSw5IEBACiAjZGVmaW5lIFdlYktpdEphdmFTY3JpcHRFbmFibGVkUHJlZmVyZW5j
ZUtleSAiV2ViS2l0SmF2YVNjcmlwdEVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFdlYlNlY3VyaXR5
RW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdFdlYlNlY3VyaXR5RW5hYmxlZCIKICNkZWZpbmUg
V2ViS2l0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5ICJXZWJL
aXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyIKKyNkZWZpbmUgV2ViS2l0QWxsb3dE
aXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnRQcmVmZXJlbmNlS2V5ICJXZWJLaXRBbGxvd0Rpc3BsYXlP
Zkluc2VjdXJlQ29udGVudCIKICNkZWZpbmUgV2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVV
UkxzUHJlZmVyZW5jZUtleSAiV2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzIgorI2Rl
ZmluZSBXZWJLaXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudFByZWZlcmVuY2VLZXkgIldl
YktpdEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50IgogI2RlZmluZSBXZWJLaXRKYXZhU2Ny
aXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5UHJlZmVyZW5jZUtleSAiV2ViS2l0SmF2YVNj
cmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSIKICNkZWZpbmUgV2ViS2l0UGx1Z2luc0Vu
YWJsZWRQcmVmZXJlbmNlS2V5ICJXZWJLaXRQbHVnaW5zRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0
RGF0YWJhc2VzRW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdERhdGFiYXNlc0VuYWJsZWQiCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiA4NjI0MSkKKysr
IFNvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjA1LDcgKzIwNSw5IEBACiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RS
KFdlYktpdEphdmFTY3JpcHRFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsK
ICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0V2ViU2VjdXJp
dHlFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKICAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9t
RmlsZVVSTHNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNv
bnRlbnRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudFByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmRQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cywgQ0ZTVFIoV2ViS2l0WFNTQXVkaXRvckVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
blRydWUpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRG
cmFtZUZsYXR0ZW5pbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CkBA
IC04MDIsNiArODA0LDIwIEBACiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKK0hSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50
KAorICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogYWxsb3dBY2Nlc3MpCit7CisgICAgKmFs
bG93QWNjZXNzID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdlYktpdEFsbG93RGlzcGxheU9mSW5z
ZWN1cmVDb250ZW50UHJlZmVyZW5jZUtleSkpOworICAgIHJldHVybiBTX09LOworfQorCitIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRBbGxvd0Rpc3BsYXlPZklu
c2VjdXJlQ29udGVudCgKKyAgICAvKiBbaW5dICovIEJPT0wgYWxsb3dBY2Nlc3MpCit7CisgICAg
c2V0Qm9vbFZhbHVlKENGU1RSKFdlYktpdEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50UHJl
ZmVyZW5jZUtleSksIGFsbG93QWNjZXNzKTsKKyAgICByZXR1cm4gU19PSzsKK30KKwogSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6YWxsb3dGaWxlQWNjZXNzRnJvbUZp
bGVVUkxzKAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogYWxsb3dBY2Nlc3MpCiB7CkBA
IC04MTYsNiArODMyLDIwIEBACiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKK0hSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50
KAorICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogYWxsb3dBY2Nlc3MpCit7CisgICAgKmFs
bG93QWNjZXNzID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdlYktpdEFsbG93UnVubmluZ09mSW5z
ZWN1cmVDb250ZW50UHJlZmVyZW5jZUtleSkpOworICAgIHJldHVybiBTX09LOworfQorCitIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRBbGxvd1J1bm5pbmdPZklu
c2VjdXJlQ29udGVudCgKKyAgICAvKiBbaW5dICovIEJPT0wgYWxsb3dBY2Nlc3MpCit7CisgICAg
c2V0Qm9vbFZhbHVlKENGU1RSKFdlYktpdEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50UHJl
ZmVyZW5jZUtleSksIGFsbG93QWNjZXNzKTsKKyAgICByZXR1cm4gU19PSzsKK30KKwogSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6amF2YVNjcmlwdENhbkFjY2Vzc0Ns
aXBib2FyZCgKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpCiB7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlByZWZlcmVu
Y2VzUHJpdmF0ZS5pZGwJKHJldmlzaW9uIDg2MjQxKQorKysgU291cmNlL1dlYktpdC93aW4vSW50
ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTI3
LDQgKzEyNywxMCBAQAogCiAgICAgSFJFU1VMVCBzZXRGdWxsU2NyZWVuRW5hYmxlZChbaW5dIEJP
T0wgZW5hYmxlZCk7CiAgICAgSFJFU1VMVCBpc0Z1bGxTY3JlZW5FbmFibGVkKFtvdXQsIHJldHZh
bF0gQk9PTCogZW5hYmxlZCk7CisKKyAgICBIUkVTVUxUIGFsbG93RGlzcGxheU9mSW5zZWN1cmVD
b250ZW50KFtvdXQsIHJldHZhbF0gQk9PTCAqYWxsb3cpOworICAgIEhSRVNVTFQgc2V0QWxsb3dE
aXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoW2luXSBCT09MIGFsbG93KTsKKworICAgIEhSRVNVTFQg
YWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoW291dCwgcmV0dmFsXSBCT09MICphbGxvdyk7
CisgICAgSFJFU1VMVCBzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChbaW5dIEJPT0wg
YWxsb3cpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gODYyNTgpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAor
MjAxMS0wNS0xMSAgQ2hyaXMgRXZhbnMgIDxjZXZhbnNAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBXZWJDb3JlOjpTZXR0
aW5nIHRvIGJsb2NrIGRpc3BsYXlpbmcgYW5kL29yIHJ1bm5pbmcgaW5zZWN1cmUgY29udGVudCBv
biBzZWN1cmUgcGFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU4Mzc4CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0
ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dl
YlByZWZlcmVuY2VzIGluaXRpYWxpemVdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgYWxs
b3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnRdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMg
c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQ6XSk6CisgICAgICAgICgtW1dlYlByZWZl
cmVuY2VzIGFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50XSk6CisgICAgICAgICgtW1dlYlBy
ZWZlcmVuY2VzIHNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50Ol0pOgorICAgICAgICAq
IFdlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6CisgICAg
ICAgIFBsdW1iaW5nIGZvciBleHBvc2luZyBuZXcgc2V0dGluZ3MgdG8gRFJULgorCiAyMDExLTA1
LTEwICBBbnRvbiBEJ0F1cmlhICA8YWRhdXJpYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgJKHJldmlzaW9uIDg2MjQxKQorKysgU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjQ4LDQgKzI0OCwxMCBAQAogLSAodm9pZClzZXRBVkZvdW5kYXRpb25FbmFibGVkOihCT09M
KWZsYWc7CiAtIChCT09MKWlzQVZGb3VuZGF0aW9uRW5hYmxlZDsKIAorLSAoQk9PTClhbGxvd0Rp
c3BsYXlPZkluc2VjdXJlQ29udGVudDsKKy0gKHZvaWQpc2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3Vy
ZUNvbnRlbnQ6KEJPT0wpZmxhZzsKKworLSAoQk9PTClhbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29u
dGVudDsKKy0gKHZvaWQpc2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQ6KEJPT0wpZmxh
ZzsKKwogQGVuZApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
S2V5c1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCShyZXZpc2lvbiA4NjI0MSkKKysrIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyMSw2ICsxMjEsOCBAQAogI2RlZmluZSBXZWJLaXRUZXh0RGlyZWN0aW9uU3VibWVudUlu
Y2x1c2lvbkJlaGF2aW9yUHJlZmVyZW5jZUtleSBAIldlYktpdFRleHREaXJlY3Rpb25TdWJtZW51
SW5jbHVzaW9uQmVoYXZpb3JQcmVmZXJlbmNlS2V5IgogI2RlZmluZSBXZWJLaXRFZGl0aW5nQmVo
YXZpb3JQcmVmZXJlbmNlS2V5IEAiV2ViS2l0RWRpdGluZ0JlaGF2aW9yIgogI2RlZmluZSBXZWJL
aXRVc2VQcmVIVE1MNVBhcnNlclF1aXJrc0tleSBAIldlYktpdFVzZVByZUhUTUw1UGFyc2VyUXVp
cmtzIgorI2RlZmluZSBXZWJLaXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudFByZWZlcmVu
Y2VLZXkgQCJXZWJLaXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCIKKyNkZWZpbmUgV2Vi
S2l0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0QWxs
b3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQiCiAKIC8vIENvcmVHcmFwaGljcyBkZWZlcnJlZCB1
cGRhdGVzIGFyZSBkaXNhYmxlZCBpZiBXZWJLaXRFbmFibGVDb2FsZXNjZWRVcGRhdGVzUHJlZmVy
ZW5jZUtleSBpcyBzZXQKIC8vIHRvIE5PLCBvciBoYXMgbm8gdmFsdWUuICBGb3IgY29tcGF0aWJp
bGl0eSB3aXRoIE1hYyBPUyBYIDEwLjQuNiwgZGVmZXJyZWQgdXBkYXRlcyBhcmUgT0ZGIGJ5Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA4NjI0MSkKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTU0Niw2ICsxNTQ2LDggQEAKICAgICBzZXR0aW5ncy0+c2V0Q3Jvc3NPcmlnaW5DaGVja0luR2V0
TWF0Y2hlZENTU1J1bGVzRGlzYWJsZWQoW3NlbGYgX25lZWRzVW5yZXN0cmljdGVkR2V0TWF0Y2hl
ZENTU1J1bGVzXSk7CiAgICAgc2V0dGluZ3MtPnNldEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25F
bmFibGVkKFtzZWxmIGludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkXSk7CiAgICAgc2V0
dGluZ3MtPnNldFZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0aW9uKFtzZWxmIHZhbGlk
YXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0aW9uXSk7CisgICAgc2V0dGluZ3MtPnNldEFsbG93
RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KFtwcmVmZXJlbmNlcyBhbGxvd0Rpc3BsYXlPZkluc2Vj
dXJlQ29udGVudF0pOworICAgIHNldHRpbmdzLT5zZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29u
dGVudChbcHJlZmVyZW5jZXMgYWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnRdKTsKICNpZiBV
U0UoQVZGT1VOREFUSU9OKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBzZXR0aW5n
cy0+c2V0QVZGb3VuZGF0aW9uRW5hYmxlZChbcHJlZmVyZW5jZXMgaXNBVkZvdW5kYXRpb25FbmFi
bGVkXSAmJiBbcHJlZmVyZW5jZXMgZnVsbFNjcmVlbkVuYWJsZWRdKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkocmV2aXNpb24gODYyNDEpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zOTUsNiArMzk1LDggQEAKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29s
OnVzZVF1aWNrTG9va1F1aXJrcygpXSwgV2ViS2l0VXNlUXVpY2tMb29rUmVzb3VyY2VDYWNoaW5n
UXVpcmtzUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhMb25nTG9u
ZzpXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bm9RdW90YSgpXSwgV2ViS2l0QXBw
bGljYXRpb25DYWNoZVRvdGFsUXVvdGEsCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoTG9u
Z0xvbmc6V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om5vUXVvdGEoKV0sIFdlYktp
dEFwcGxpY2F0aW9uQ2FjaGVEZWZhdWx0T3JpZ2luUXVvdGEsCisgICAgICAgIFtOU051bWJlciBu
dW1iZXJXaXRoQm9vbDpZRVNdLCAgV2ViS2l0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnRQ
cmVmZXJlbmNlS2V5LAorICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdl
YktpdEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50UHJlZmVyZW5jZUtleSwKICAgICAgICAg
bmlsXTsKIAogICAgIC8vIFRoaXMgdmFsdWUgc2hvdWxkbid0IGV2ZXIgY2hhbmdlLCB3aGljaCBp
cyBhc3N1bWVkIGluIHRoZSBpbml0aWFsaXphdGlvbiBvZiBXZWJLaXRQREZEaXNwbGF5TW9kZVBy
ZWZlcmVuY2VLZXkgYWJvdmUKQEAgLTE0OTQsNiArMTQ5NiwyNiBAQAogewogICAgIHJldHVybiBb
c2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdEFWRm91bmRhdGlvbkVuYWJsZWRLZXldOwogfQor
CistIChCT09MKWFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50Cit7CisgICAgcmV0dXJuIFtz
ZWxmIF9ib29sVmFsdWVGb3JLZXk6IFdlYktpdEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50
UHJlZmVyZW5jZUtleV07Cit9CisKKy0gKHZvaWQpc2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNv
bnRlbnQ6KEJPT0wpZmxhZworeworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6IGZsYWcgZm9yS2V5
OiBXZWJLaXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudFByZWZlcmVuY2VLZXldOworfQor
CistIChCT09MKWFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50Cit7CisgICAgcmV0dXJuIFtz
ZWxmIF9ib29sVmFsdWVGb3JLZXk6IFdlYktpdEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50
UHJlZmVyZW5jZUtleV07Cit9CisKKy0gKHZvaWQpc2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNv
bnRlbnQ6KEJPT0wpZmxhZworeworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6IGZsYWcgZm9yS2V5
OiBXZWJLaXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudFByZWZlcmVuY2VLZXldOworfQog
QGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViUHJlZmVyZW5jZXMgKFdlYkludGVybmFsKQpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5jcHAJKHJldmlzaW9uIDg2MjQxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNCwxMSArNDE0LDIxIEBA
CiAgICAgbV9kcnQtPndlYlBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0
aW5nczo6TG9jYWxDb250ZW50Q2FuQWNjZXNzUmVtb3RlVXJscywgZW5hYmxlZCk7CiB9CiAKK3Zv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50
KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX2RydC0+d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRB
dHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpQYWdlc0NhbkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQsIGVu
YWJsZWQpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd0ZpbGVBY2Nl
c3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGVkKQogewogICAgIG1fZHJ0LT53ZWJQYWdlKCktPnNl
dHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkxvY2FsQ29udGVudENhbkFjY2Vz
c0ZpbGVVcmxzLCBlbmFibGVkKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCBlbmFibGVkKQoreworICAgIG1fZHJ0
LT53ZWJQYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OlBhZ2Vz
Q2FuUnVuSW5zZWN1cmVDb250ZW50LCBlbmFibGVkKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEp
CiB7CiAgICAgbV9kcnQtPndlYlBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0T2ZmbGluZVdlYkFwcGxp
Y2F0aW9uQ2FjaGVRdW90YShxdW90YSk7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCShyZXZpc2lvbiA4NjI0MSkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTQ5LDcgKzE0OSw5IEBACiAgICAgdm9pZCBzZXRNZWRpYVR5cGUoY29uc3QgUVN0cmlu
ZyYgdHlwZSk7CiAgICAgdm9pZCBzZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKGJvb2wgZW5hYmxl
KTsKICAgICB2b2lkIHNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5h
YmxlKTsKKyAgICB2b2lkIHNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KGJvb2wgZW5h
YmxlKTsKICAgICB2b2lkIHNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhib29sIGVuYWJs
ZSk7CisgICAgdm9pZCBzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChib29sIGVuYWJs
ZSk7CiAgICAgdm9pZCBzZXRBcHBDYWNoZU1heGltdW1TaXplKHVuc2lnbmVkIGxvbmcgbG9uZyBx
dW90YSk7CiAgICAgdm9pZCBzZXRBdXRvZmlsbGVkKGNvbnN0IFFXZWJFbGVtZW50JiwgYm9vbCBl
bmFibGUpOwogICAgIHZvaWQgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCBlbmFi
bGUpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVy
R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVz
dENvbnRyb2xsZXJHdGsuY3BwCShyZXZpc2lvbiA4NjI0MSkKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0
NCw2ICs0NDQsMTUgQEAKICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5h
YmxlLXVuaXZlcnNhbC1hY2Nlc3MtZnJvbS1maWxlLXVyaXMiLCBmbGFnLCBOVUxMKTsKIH0KIAor
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRl
bnQoYm9vbCBmbGFnKQoreworICAgIFdlYktpdFdlYlZpZXcqIHZpZXcgPSB3ZWJraXRfd2ViX2Zy
YW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOworICAgIEFTU0VSVCh2aWV3KTsKKworICAgIFdl
YktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mo
dmlldyk7CisgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1kaXNw
bGF5LW9mLWluc2VjdXJlLWNvbnRlbnQiLCBmbGFnLCBOVUxMKTsKK30KKwogdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZmxhZykK
IHsKICAgICBXZWJLaXRXZWJWaWV3KiB2aWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3Zp
ZXcobWFpbkZyYW1lKTsKQEAgLTQ1Myw2ICs0NjIsMTUgQEAKICAgICBnX29iamVjdF9zZXQoR19P
QkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWZpbGUtYWNjZXNzLWZyb20tZmlsZS11cmlzIiwgZmxh
ZywgTlVMTCk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93UnVubmlu
Z09mSW5zZWN1cmVDb250ZW50KGJvb2wgZmxhZykKK3sKKyAgICBXZWJLaXRXZWJWaWV3KiB2aWV3
ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcobWFpbkZyYW1lKTsKKyAgICBBU1NFUlQo
dmlldyk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3NldHRpbmdzKHZpZXcpOworICAgIGdfb2JqZWN0X3NldChHX09CSkVDVChzZXR0aW5n
cyksICJlbmFibGUtcnVubmluZy1vZi1pbnNlY3VyZS1jb250ZW50IiwgZmxhZywgTlVMTCk7Cit9
CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFi
bGVkKGJvb2wgZmxhZykKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAkocmV2
aXNpb24gODYyNDEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJv
bGxlcld4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDExICsxOTcsMjEgQEAKICAgICAvLyBG
SVhNRTogaW1wbGVtZW50CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93
RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KGJvb2wgZW5hYmxlZCkKK3sKKyAgICAvLyBGSVhNRTog
aW1wbGVtZW50Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93RmlsZUFj
Y2Vzc0Zyb21GaWxlVVJMcyhib29sIGVuYWJsZWQpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVu
dAogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd1J1bm5pbmdPZkluc2Vj
dXJlQ29udGVudChib29sIGVuYWJsZWQpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQor
CiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxl
ZChib29sIGZsYWcpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudApJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkocmV2aXNpb24gODYyNDEpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHdvcmtpbmcgY29weSkK
QEAgLTQ3Nyw2ICs0NzcsOCBAQAogICAgIFtwcmVmZXJlbmNlcyBzZXRXZWJHTEVuYWJsZWQ6Tk9d
OwogICAgIFtwcmVmZXJlbmNlcyBzZXRVc2VQcmVIVE1MNVBhcnNlclF1aXJrczpOT107CiAgICAg
W3ByZWZlcmVuY2VzIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOk5PXTsKKyAg
ICBbcHJlZmVyZW5jZXMgc2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQ6WUVTXTsKKyAg
ICBbcHJlZmVyZW5jZXMgc2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQ6WUVTXTsKIAog
ICAgIFtbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV0gc2V0Q29v
a2llQWNjZXB0UG9saWN5Ok5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3Vt
ZW50RG9tYWluXTsKICAgICAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRU
ZXN0Q29udHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHJldmlzaW9uIDg2MjQxKQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC01MjksMTEgKzUyOSwyMSBAQAogICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVm
ZXJlbmNlc10gc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHM6ZW5hYmxlZF07CiB9
CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVD
b250ZW50KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVy
ZW5jZXNdIHNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50OmVuYWJsZWRdOworfQorCiB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMo
Ym9vbCBlbmFibGVkKQogewogICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10g
c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzOmVuYWJsZWRdOwogfQogCit2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChib29sIGVu
YWJsZWQpCit7CisgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXRBbGxv
d1J1bm5pbmdPZkluc2VjdXJlQ29udGVudDplbmFibGVkXTsKK30KKwogdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQoYm9vbCBwb3B1cEJsb2NraW5nRW5h
YmxlZCkKIHsKICAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIHNldEphdmFT
Y3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHk6IXBvcHVwQmxvY2tpbmdFbmFibGVkXTsK
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJ
KHJldmlzaW9uIDg2MjQxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDk3LDYgKzE0OTcsMTcgQEAKICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVm
IHNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgTGF5b3V0VGVzdENvbnRy
b2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpT
T2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0QWxsb3dE
aXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVu
dHNbMF0pKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30K
Kwogc3RhdGljIEpTVmFsdWVSZWYgc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzQ2FsbGJh
Y2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1
bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgJiB3aW5k
b3dzIGltcGxlbWVudGF0aW9uCkBAIC0xNTA5LDYgKzE1MjAsMTcgQEAKICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldEFs
bG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIq
IGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0
R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0QWxsb3dSdW5uaW5n
T2ZJbnNlY3VyZUNvbnRlbnQoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0p
KTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3Rh
dGljIEpTVmFsdWVSZWYgc2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgJiB3aW5kb3dzIGlt
cGxlbWVudGF0aW9uCkBAIC0yMzI3LDcgKzIzNDksOSBAQAogICAgICAgICB7ICJyZXNldFBhZ2VW
aXNpYmlsaXR5IiwgcmVzZXRQYWdlVmlzaWJpbGl0eUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgInNldEFjY2VwdHNFZGl0aW5nIiwgc2V0QWNjZXB0c0VkaXRpbmdDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyIsIHNldEFs
bG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAg
eyAic2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQiLCBzZXRBbGxvd0Rpc3BsYXlPZklu
c2VjdXJlQ29udGVudENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEFsbG93RmlsZUFj
Y2Vzc0Zyb21GaWxlVVJMcyIsIHNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc0NhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCisgICAgICAgIHsgInNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50Iiwg
c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJzZXRBbHdheXNBY2NlcHRDb29raWVzIiwgc2V0QWx3YXlzQWNjZXB0Q29va2llc0NhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEFwcENhY2hlTWF4aW11bVNpemUiLCBzZXRBcHBD
YWNoZU1heGltdW1TaXplQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0QXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhIiwgc2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJl
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJU
cmVlLmNwcAkocmV2aXNpb24gODYyNDEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVt
cFJlbmRlclRyZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NjcsNyArODY3LDkgQEAKICAgICBD
T01QdHI8SVdlYlByZWZlcmVuY2VzUHJpdmF0ZT4gcHJlZnNQcml2YXRlKFF1ZXJ5LCBwcmVmZXJl
bmNlcyk7CiAgICAgaWYgKHByZWZzUHJpdmF0ZSkgewogICAgICAgICBwcmVmc1ByaXZhdGUtPnNl
dEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKFRSVUUpOworICAgICAgICBwcmVmc1By
aXZhdGUtPnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KFRSVUUpOwogICAgICAgICBw
cmVmc1ByaXZhdGUtPnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhUUlVFKTsKKyAgICAg
ICAgcHJlZnNQcml2YXRlLT5zZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChUUlVFKTsK
ICAgICAgICAgcHJlZnNQcml2YXRlLT5zZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChUUlVF
KTsKICAgICAgICAgcHJlZnNQcml2YXRlLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKEZBTFNF
KTsKICAgICAgICAgcHJlZnNQcml2YXRlLT5zZXRFeHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5h
YmxlZChUUlVFKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29u
dHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xh
eW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkocmV2aXNpb24gODYyNDEpCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NTgsNiArNTU4LDIzIEBACiAgICAgcHJlZnNQcml2YXRlLT5zZXRBbGxvd1VuaXZlcnNh
bEFjY2Vzc0Zyb21GaWxlVVJMcyhlbmFibGVkKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCBlbmFibGVkKQorewor
ICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKKyAgICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJW
aWV3KCZ3ZWJWaWV3KSkpCisgICAgICAgIHJldHVybjsKKworICAgIENPTVB0cjxJV2ViUHJlZmVy
ZW5jZXM+IHByZWZlcmVuY2VzOworICAgIGlmIChGQUlMRUQod2ViVmlldy0+cHJlZmVyZW5jZXMo
JnByZWZlcmVuY2VzKSkpCisgICAgICAgIHJldHVybjsKKworICAgIENPTVB0cjxJV2ViUHJlZmVy
ZW5jZXNQcml2YXRlPiBwcmVmc1ByaXZhdGUoUXVlcnksIHByZWZlcmVuY2VzKTsKKyAgICBpZiAo
IXByZWZzUHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJlZnNQcml2YXRlLT5zZXRB
bGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChlbmFibGVkKTsKK30KKwogdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxl
ZCkKIHsKICAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7CkBAIC01NzUsNiArNTkyLDIzIEBA
CiAgICAgcHJlZnNQcml2YXRlLT5zZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoZW5hYmxl
ZCk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93UnVubmluZ09mSW5z
ZWN1cmVDb250ZW50KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZp
ZXc7CisgICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBDT01QdHI8SVdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlczsKKyAgICBp
ZiAoRkFJTEVEKHdlYlZpZXctPnByZWZlcmVuY2VzKCZwcmVmZXJlbmNlcykpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBDT01QdHI8SVdlYlByZWZlcmVuY2VzUHJpdmF0ZT4gcHJlZnNQcml2YXRl
KFF1ZXJ5LCBwcmVmZXJlbmNlcyk7CisgICAgaWYgKCFwcmVmc1ByaXZhdGUpCisgICAgICAgIHJl
dHVybjsKKworICAgIHByZWZzUHJpdmF0ZS0+c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRl
bnQoZW5hYmxlZCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFBvcHVwQmxv
Y2tpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZp
ZXc7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJ
KHJldmlzaW9uIDg2MjQxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsOSBAQAogICAgIHZvaWQgcmVtb3Zl
QWxsVmlzaXRlZExpbmtzKCk7CiAgICAgdm9pZCBzZXRBY2NlcHRzRWRpdGluZyhib29sIGFjY2Vw
dHNFZGl0aW5nKTsKICAgICB2b2lkIHNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxz
KGJvb2wpOworICAgIHZvaWQgc2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCk7
CiAgICAgdm9pZCBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCk7CisgICAgdm9p
ZCBzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChib29sKTsKICAgICB2b2lkIHNldEFw
cENhY2hlTWF4aW11bVNpemUodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKTsKICAgICB2b2lkIHNl
dEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwog
ICAgIHZvaWQgc2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYm9vbCk7CkluZGV4OiBUb29s
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjI1
OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisy
MDExLTA1LTExICBDaHJpcyBFdmFucyAgPGNldmFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdlYkNvcmU6OlNldHRp
bmcgdG8gYmxvY2sgZGlzcGxheWluZyBhbmQvb3IgcnVubmluZyBpbnNlY3VyZSBjb250ZW50IG9u
IHNlY3VyZSBwYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTgzNzgKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKHNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50Q2FsbGJh
Y2spOgorICAgICAgICAoc2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnRDYWxsYmFjayk6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQpOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93UnVubmluZ09mSW5zZWN1cmVD
b250ZW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06
CisgICAgICAgIChyZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQpOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93UnVubmluZ09mSW5zZWN1cmVD
b250ZW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxl
clF0LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd0Rpc3BsYXlP
Zkluc2VjdXJlQ29udGVudCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxs
b3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0
L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4v
RHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAocmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZh
bHVlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVy
V2luLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd0Rpc3BsYXlP
Zkluc2VjdXJlQ29udGVudCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxs
b3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4
L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KToKKyAgICAgICAgKExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCk6CisgICAgICAg
IFBsdW1iaW5nIGZvciBleHBvc2luZyBuZXcgc2V0dGluZ3MgdG8gRFJULgorCiAyMDExLTA1LTEx
ICBBbGljZSBCb3hoYWxsICA8YWJveGhhbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IE9qYW4gVmFmYWkuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>93326</attachid>
            <date>2011-05-12 13:10:30 -0700</date>
            <delta_ts>2011-05-12 21:05:16 -0700</delta_ts>
            <desc>Plumbing #2</desc>
            <filename>58378d_2.diff</filename>
            <type>text/plain</type>
            <size>36328</size>
            <attacher name="Chris Evans">cevans</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjI1OCkKKysrIFNvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDUtMTEgIENo
cmlzIEV2YW5zICA8Y2V2YW5zQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgV2ViQ29yZTo6U2V0dGluZyB0byBibG9jayBk
aXNwbGF5aW5nIGFuZC9vciBydW5uaW5nIGluc2VjdXJlIGNvbnRlbnQgb24gc2VjdXJlIHBhZ2Vz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODM3OAor
CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5jcHA6CisgICAgICAgIChRV2ViU2V0dGluZ3M6
OlFXZWJTZXR0aW5ncyk6CisgICAgICAgICogQXBpL3F3ZWJzZXR0aW5ncy5oOgorICAgICAgICBQ
bHVtYmluZyBmb3IgZXhwb3NpbmcgbmV3IHNldHRpbmdzIHRvIERSVC4KKwogMjAxMS0wNS0xMSAg
U2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMg
U2VpZGVsLgpJbmRleDogU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgJKHJldmlzaW9uIDg2
MjQxKQorKysgU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnNldHRpbmdzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc3LDcgKzc3LDkgQEAKICAgICAgICAgU2l0ZVNwZWNpZmljUXVpcmtzRW5hYmxlZCwK
ICAgICAgICAgSmF2YXNjcmlwdENhbkNsb3NlV2luZG93cywKICAgICAgICAgV2ViR0xFbmFibGVk
LAotICAgICAgICBIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQKKyAgICAgICAgSHlwZXJsaW5rQXVk
aXRpbmdFbmFibGVkLAorICAgICAgICBQYWdlc0NhbkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQsCisg
ICAgICAgIFBhZ2VzQ2FuUnVuSW5zZWN1cmVDb250ZW50CiAgICAgfTsKICAgICBlbnVtIFdlYkdy
YXBoaWMgewogICAgICAgICBNaXNzaW5nSW1hZ2VHcmFwaGljLApJbmRleDogU291cmNlL1dlYktp
dC9xdC9BcGkvcXdlYnNldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0
L0FwaS9xd2Vic2V0dGluZ3MuY3BwCShyZXZpc2lvbiA4NjI0MSkKKysrIFNvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJzZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxMCw2ICs1MTAsOCBA
QAogICAgIGQtPmF0dHJpYnV0ZXMuaW5zZXJ0KFFXZWJTZXR0aW5nczo6VGlsZWRCYWNraW5nU3Rv
cmVFbmFibGVkLCBmYWxzZSk7CiAgICAgZC0+YXR0cmlidXRlcy5pbnNlcnQoUVdlYlNldHRpbmdz
OjpGcmFtZUZsYXR0ZW5pbmdFbmFibGVkLCBmYWxzZSk7CiAgICAgZC0+YXR0cmlidXRlcy5pbnNl
cnQoUVdlYlNldHRpbmdzOjpTaXRlU3BlY2lmaWNRdWlya3NFbmFibGVkLCB0cnVlKTsKKyAgICBk
LT5hdHRyaWJ1dGVzLmluc2VydChRV2ViU2V0dGluZ3M6OlBhZ2VzQ2FuRGlzcGxheUluc2VjdXJl
Q29udGVudCwgdHJ1ZSk7CisgICAgZC0+YXR0cmlidXRlcy5pbnNlcnQoUVdlYlNldHRpbmdzOjpQ
YWdlc0NhblJ1bkluc2VjdXJlQ29udGVudCwgdHJ1ZSk7CiAgICAgZC0+b2ZmbGluZVN0b3JhZ2VE
ZWZhdWx0UXVvdGEgPSA1ICogMTAyNCAqIDEwMjQ7CiAgICAgZC0+ZGVmYXVsdFRleHRFbmNvZGlu
ZyA9IFFMYXRpbjFTdHJpbmcoImlzby04ODU5LTEiKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDg2MjQxKQorKysgU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjAxLDcgKzMyMDEsOCBAQAogICAgICAgICBlbmFibGVVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVS
SSwgZW5hYmxlRmlsZUFjY2Vzc0Zyb21GaWxlVVJJLAogICAgICAgICBlbmFibGVET01QYXN0ZSwg
dGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzLCBlbmFibGVXZWJHTCwKICAgICAgICAgZW5hYmxl
U2l0ZVNwZWNpZmljUXVpcmtzLCB1c2VQYWdlQ2FjaGUsIGVuYWJsZUphdmFBcHBsZXQsCi0gICAg
ICAgIGVuYWJsZUh5cGVybGlua0F1ZGl0aW5nLCBlbmFibGVGdWxsc2NyZWVuLCBlbmFibGVETlNQ
cmVmZXRjaGluZzsKKyAgICAgICAgZW5hYmxlSHlwZXJsaW5rQXVkaXRpbmcsIGVuYWJsZUZ1bGxz
Y3JlZW4sIGVuYWJsZUROU1ByZWZldGNoaW5nLAorICAgICAgICBlbmFibGVEaXNwbGF5T2ZJbnNl
Y3VyZUNvbnRlbnQsIGVuYWJsZVJ1bm5pbmdPZkluc2VjdXJlQ29udGVudDsKIAogICAgIFdlYktp
dEVkaXRpbmdCZWhhdmlvciBlZGl0aW5nQmVoYXZpb3I7CiAKQEAgLTMyNDQsNiArMzI0NSw4IEBA
CiAgICAgICAgICAgICAgICAgICJlbmFibGUtZnVsbHNjcmVlbiIsICZlbmFibGVGdWxsc2NyZWVu
LAogICAgICAgICAgICAgICAgICAiZW5hYmxlLWRucy1wcmVmZXRjaGluZyIsICZlbmFibGVETlNQ
cmVmZXRjaGluZywKICAgICAgICAgICAgICAgICAgImVuYWJsZS13ZWJnbCIsICZlbmFibGVXZWJH
TCwKKyAgICAgICAgICAgICAgICAgImVuYWJsZS1kaXNwbGF5LW9mLWluc2VjdXJlLWNvbnRlbnQi
LCAmZW5hYmxlRGlzcGxheU9mSW5zZWN1cmVDb250ZW50LAorICAgICAgICAgICAgICAgICAiZW5h
YmxlLXJ1bm5pbmctb2YtaW5zZWN1cmUtY29udGVudCIsICZlbmFibGVSdW5uaW5nT2ZJbnNlY3Vy
ZUNvbnRlbnQsCiAgICAgICAgICAgICAgICAgIE5VTEwpOwogCiAgICAgc2V0dGluZ3MtPnNldERl
ZmF1bHRUZXh0RW5jb2RpbmdOYW1lKGRlZmF1bHRFbmNvZGluZyk7CkBAIC0zMjgyLDYgKzMyODUs
OCBAQAogICAgIHNldHRpbmdzLT5zZXRKYXZhRW5hYmxlZChlbmFibGVKYXZhQXBwbGV0KTsKICAg
ICBzZXR0aW5ncy0+c2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKGVuYWJsZUh5cGVybGlua0F1
ZGl0aW5nKTsKICAgICBzZXR0aW5ncy0+c2V0RE5TUHJlZmV0Y2hpbmdFbmFibGVkKGVuYWJsZURO
U1ByZWZldGNoaW5nKTsKKyAgICBzZXR0aW5ncy0+c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNv
bnRlbnQoZW5hYmxlRGlzcGxheU9mSW5zZWN1cmVDb250ZW50KTsKKyAgICBzZXR0aW5ncy0+c2V0
QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoZW5hYmxlUnVubmluZ09mSW5zZWN1cmVDb250
ZW50KTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBzZXR0aW5ncy0+c2V0RnVs
bFNjcmVlbkVuYWJsZWQoZW5hYmxlRnVsbHNjcmVlbik7CkBAIC0zNDEyLDYgKzM0MTcsMTAgQEAK
ICAgICAgICAgc2V0dGluZ3MtPnNldEphdmFFbmFibGVkKGdfdmFsdWVfZ2V0X2Jvb2xlYW4oJnZh
bHVlKSk7CiAgICAgZWxzZSBpZiAobmFtZSA9PSBnX2ludGVybl9zdHJpbmcoImVuYWJsZS1oeXBl
cmxpbmstYXVkaXRpbmciKSkKICAgICAgICAgc2V0dGluZ3MtPnNldEh5cGVybGlua0F1ZGl0aW5n
RW5hYmxlZChnX3ZhbHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOworICAgIGVsc2UgaWYgKG5hbWUg
PT0gZ19pbnRlcm5fc3RyaW5nKCJlbmFibGUtZGlzcGxheS1vZi1pbnNlY3VyZS1jb250ZW50Iikp
CisgICAgICAgIHNldHRpbmdzLT5zZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChnX3Zh
bHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOworICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5f
c3RyaW5nKCJlbmFibGUtcnVubmluZy1vZi1pbnNlY3VyZS1jb250ZW50IikpCisgICAgICAgIHNl
dHRpbmdzLT5zZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChnX3ZhbHVlX2dldF9ib29s
ZWFuKCZ2YWx1ZSkpOwogCiAjaWYgRU5BQkxFKFNQRUxMQ0hFQ0spCiAgICAgZWxzZSBpZiAobmFt
ZSA9PSBnX2ludGVybl9zdHJpbmcoInNwZWxsLWNoZWNraW5nLWxhbmd1YWdlcyIpKSB7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAJKHJl
dmlzaW9uIDg2MjQxKQorKysgU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRp
bmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCw4IEBACiAgICAgZ2Jvb2xlYW4g
ZW5hYmxlX2Z1bGxzY3JlZW47CiAgICAgZ2Jvb2xlYW4gZW5hYmxlX2Ruc19wcmVmZXRjaGluZzsK
ICAgICBnYm9vbGVhbiBlbmFibGVfd2ViZ2w7CisgICAgZ2Jvb2xlYW4gZW5hYmxlX2Rpc3BsYXlf
b2ZfaW5zZWN1cmVfY29udGVudDsKKyAgICBnYm9vbGVhbiBlbmFibGVfcnVubmluZ19vZl9pbnNl
Y3VyZV9jb250ZW50OwogfTsKIAogI2RlZmluZSBXRUJLSVRfV0VCX1NFVFRJTkdTX0dFVF9QUklW
QVRFKG9iaikgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwgV0VCS0lUX1RZUEVf
V0VCX1NFVFRJTkdTLCBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUpKQpAQCAtMTY4LDcgKzE3MCw5
IEBACiAgICAgUFJPUF9FTkFCTEVfSFlQRVJMSU5LX0FVRElUSU5HLAogICAgIFBST1BfRU5BQkxF
X0ZVTExTQ1JFRU4sCiAgICAgUFJPUF9FTkFCTEVfRE5TX1BSRUZFVENISU5HLAotICAgIFBST1Bf
RU5BQkxFX1dFQkdMCisgICAgUFJPUF9FTkFCTEVfV0VCR0wsCisgICAgUFJPUF9FTkFCTEVfUlVO
TklOR19PRl9JTlNFQ1VSRV9DT05URU5ULAorICAgIFBST1BfRU5BQkxFX0RJU1BMQVlfT0ZfSU5T
RUNVUkVfQ09OVEVOVAogfTsKIAogLy8gQ3JlYXRlIGEgZGVmYXVsdCB1c2VyIGFnZW50IHN0cmlu
ZwpAQCAtOTQ2LDcgKzk1MCwzNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciBXZWJLaXQgcHJlZmV0Y2hlcyBkb21h
aW4gbmFtZXMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbGFncykpOworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlNl
dHRpbmdzOmVuYWJsZS1kaXNwbGF5LW9mLWluc2VjdXJlLWNvbnRlbnQ6CisgICAgICoKKyAgICAg
KiBCb29sZWFuIHByb3BlcnR5IHRvIGNvbnRyb2wgd2hldGhlciBpbnNlY3VyZSAobm9uLWh0dHBz
KSBpbWFnZXMgLyBmcmFtZXMgCisgICAgICogY2FuIGJlIGxvYWRlZCBmcm9tIGh0dHBzIHBhZ2Vz
LgorICAgICAqLworICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3Rf
Y2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVf
RElTUExBWV9PRl9JTlNFQ1VSRV9DT05URU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtZGlzcGxheS1vZi1pbnNlY3Vy
ZS1jb250ZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiRW5hYmxlIGRpc3BsYXkgb2YgaW5zZWN1cmUgY29udGVudCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNv
bnRyb2xzIGxvYWQgb2Ygbm9uLWh0dHBzIGRpc3BsYXkgcmVzb3VyY2VzIGZyb20gaHR0cHMgcGFn
ZXMuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdzKSk7CiAKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJTZXR0
aW5nczplbmFibGUtcnVubmluZy1vZi1pbnNlY3VyZS1jb250ZW50OgorICAgICAqCisgICAgICog
Qm9vbGVhbiBwcm9wZXJ0eSB0byBjb250cm9sIHdoZXRoZXIgaW5zZWN1cmUgKG5vbi1odHRwcykg
c2NyaXB0IC8gQ1NTIC8gCisgICAgICogcGx1Zy1pbnMgY2FuIGJlIGxvYWRlZCBmcm9tIGh0dHBz
IHBhZ2VzLgorICAgICAqLworICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdv
YmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9F
TkFCTEVfUlVOTklOR19PRl9JTlNFQ1VSRV9DT05URU5ULAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtcnVubmluZy1vZi1p
bnNlY3VyZS1jb250ZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiRW5hYmxlIHJ1bm5pbmcgb2YgaW5zZWN1cmUgY29udGVudCIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIkNvbnRyb2xzIGxvYWQgb2Ygbm9uLWh0dHBzIHNjcmlwdCAvIHBsdWctaW4gcmVzb3VyY2Vz
IGZyb20gaHR0cHMgcGFnZXMuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKICAgICBnX3R5cGVfY2xh
c3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUpKTsK
IH0KIApAQCAtMTEzOCw2ICsxMTY5LDEyIEBACiAgICAgY2FzZSBQUk9QX0VOQUJMRV9XRUJHTDoK
ICAgICAgICAgcHJpdi0+ZW5hYmxlX3dlYmdsID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7
CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfRElTUExBWV9PRl9JTlNFQ1VS
RV9DT05URU5UOgorICAgICAgICBwcml2LT5lbmFibGVfZGlzcGxheV9vZl9pbnNlY3VyZV9jb250
ZW50ID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgUFJPUF9FTkFCTEVfUlVOTklOR19PRl9JTlNFQ1VSRV9DT05URU5UOgorICAgICAgICBwcml2
LT5lbmFibGVfcnVubmluZ19vZl9pbnNlY3VyZV9jb250ZW50ID0gZ192YWx1ZV9nZXRfYm9vbGVh
bih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNU
X1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKICAgICAg
ICAgYnJlYWs7CkBAIC0xMjk0LDYgKzEzMzEsMTIgQEAKICAgICBjYXNlIFBST1BfRU5BQkxFX1dF
QkdMOgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5lbmFibGVfd2Vi
Z2wpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0RJU1BMQVlfT0ZfSU5T
RUNVUkVfQ09OVEVOVDoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+
ZW5hYmxlX2Rpc3BsYXlfb2ZfaW5zZWN1cmVfY29udGVudCk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9FTkFCTEVfUlVOTklOR19PRl9JTlNFQ1VSRV9DT05URU5UOgorICAgICAgICBn
X3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5lbmFibGVfcnVubmluZ19vZl9pbnNlY3Vy
ZV9jb250ZW50KTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpF
Q1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAg
ICAgICBicmVhazsKQEAgLTEzNzEsNiArMTQxNCw4IEBACiAgICAgICAgICAgICAgICAgICJlbmFi
bGUtaHlwZXJsaW5rLWF1ZGl0aW5nIiwgcHJpdi0+ZW5hYmxlX2h5cGVybGlua19hdWRpdGluZywK
ICAgICAgICAgICAgICAgICAgImVuYWJsZS1mdWxsc2NyZWVuIiwgcHJpdi0+ZW5hYmxlX2Z1bGxz
Y3JlZW4sCiAgICAgICAgICAgICAgICAgICJlbmFibGUtZG5zLXByZWZldGNoaW5nIiwgcHJpdi0+
ZW5hYmxlX2Ruc19wcmVmZXRjaGluZywKKyAgICAgICAgICAgICAgICAgImVuYWJsZS1kaXNwbGF5
LW9mLWluc2VjdXJlLWNvbnRlbnQiLCBwcml2LT5lbmFibGVfZGlzcGxheV9vZl9pbnNlY3VyZV9j
b250ZW50LAorICAgICAgICAgICAgICAgICAiZW5hYmxlLXJ1bm5pbmctb2YtaW5zZWN1cmUtY29u
dGVudCIsIHByaXYtPmVuYWJsZV9ydW5uaW5nX29mX2luc2VjdXJlX2NvbnRlbnQsCiAgICAgICAg
ICAgICAgICAgIE5VTEwpKTsKIAogICAgIHJldHVybiBjb3B5OwpJbmRleDogU291cmNlL1dlYktp
dC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwkocmV2aXNpb24gODYyNTgpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0wNS0xMSAgQ2hyaXMgRXZhbnMgIDxjZXZh
bnNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBXZWJDb3JlOjpTZXR0aW5nIHRvIGJsb2NrIGRpc3BsYXlpbmcgYW5kL29y
IHJ1bm5pbmcgaW5zZWN1cmUgY29udGVudCBvbiBzZWN1cmUgcGFnZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4Mzc4CisKKyAgICAgICAgKiB3ZWJr
aXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19j
bGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3Byb3BlcnR5KToK
KyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdl
YmtpdF93ZWJfc2V0dGluZ3NfY29weSk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyk6CisgICAgICAg
ICh3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KToKKyAgICAgICAgUGx1bWJpbmcgZm9y
IGV4cG9zaW5nIG5ldyBzZXR0aW5ncyB0byBEUlQuCisKIDIwMTEtMDUtMDkgIE1hcnRpbiBSb2Jp
bnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIEZpeCBhIHRlc3QgYWZ0ZXIg
cjg2MTAyLiBTY3JvbGxiYXJzIHVwZGF0ZSBhc3luY2hyb25vdXNseSwgc28gd2UKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93aW4vV2ViUHJlZmVyZW5jZXMuaAkocmV2aXNpb24gODYyNDEpCisrKyBTb3VyY2UvV2Vi
S2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjgsMTIgKzM2OCwy
NCBAQAogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBzZXRBbGxvd1VuaXZl
cnNhbEFjY2Vzc0Zyb21GaWxlVVJMcygKICAgICAvKiBbaW5dICovIEJPT0wgYWxsb3dBY2Nlc3Mp
OwogCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFsbG93RGlzcGxheU9m
SW5zZWN1cmVDb250ZW50KAorICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogYWxsb3dBY2Nl
c3MpOworCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFsbG93RGlz
cGxheU9mSW5zZWN1cmVDb250ZW50KAorICAgIC8qIFtpbl0gKi8gQk9PTCBhbGxvd0FjY2Vzcyk7
CisKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgYWxsb3dGaWxlQWNjZXNz
RnJvbUZpbGVVUkxzKAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogYWxsb3dBY2Nlc3Mp
OwogCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFsbG93RmlsZUFj
Y2Vzc0Zyb21GaWxlVVJMcygKICAgICAvKiBbaW5dICovIEJPT0wgYWxsb3dBY2Nlc3MpOwogCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGFsbG93UnVubmluZ09mSW5zZWN1
cmVDb250ZW50KAorICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogYWxsb3dBY2Nlc3MpOwor
CisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIHNldEFsbG93UnVubmluZ09m
SW5zZWN1cmVDb250ZW50KAorICAgIC8qIFtpbl0gKi8gQk9PTCBhbGxvd0FjY2Vzcyk7CisKICAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgamF2YVNjcmlwdENhbkFjY2Vzc0Ns
aXBib2FyZCgKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpOwogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjI1OCkKKysrIFNvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDExLTA1LTExICBDaHJp
cyBFdmFucyAgPGNldmFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdlYkNvcmU6OlNldHRpbmcgdG8gYmxvY2sgZGlz
cGxheWluZyBhbmQvb3IgcnVubmluZyBpbnNlY3VyZSBjb250ZW50IG9uIHNlY3VyZSBwYWdlcwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTgzNzgKKwor
ICAgICAgICAqIEludGVyZmFjZXMvSVdlYlByZWZlcmVuY2VzUHJpdmF0ZS5pZGw6CisgICAgICAg
ICogV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmg6CisgICAgICAgICogV2ViUHJlZmVyZW5jZXMu
Y3BwOgorICAgICAgICAoV2ViUHJlZmVyZW5jZXM6OmluaXRpYWxpemVEZWZhdWx0U2V0dGluZ3Mp
OgorICAgICAgICAoV2ViUHJlZmVyZW5jZXM6OmFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50
KToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjpzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29u
dGVudCk6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6YWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNv
bnRlbnQpOgorICAgICAgICAoV2ViUHJlZmVyZW5jZXM6OnNldEFsbG93UnVubmluZ09mSW5zZWN1
cmVDb250ZW50KToKKyAgICAgICAgKiBXZWJQcmVmZXJlbmNlcy5oOgorICAgICAgICAqIFdlYlZp
ZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6bm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKToKKyAg
ICAgICAgUGx1bWJpbmcgZm9yIGV4cG9zaW5nIG5ldyBzZXR0aW5ncyB0byBEUlQuCisKIDIwMTEt
MDUtMTEgIEplc3NpZSBCZXJsaW4gIDxqYmVybGluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBTdGV2ZSBGYWxrZW5idXJnLgpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmll
dy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlz
aW9uIDg2MjQxKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3NjUsMTEgKzQ3NjUsMjEgQEAKICAgICAgICAgcmV0dXJuIGhyOwogICAgIHNldHRp
bmdzLT5zZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyghIWVuYWJsZWQpOwogCisg
ICAgaHIgPSBwcmVmc1ByaXZhdGUtPmFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KCZlbmFi
bGVkKTsKKyAgICBpZiAoRkFJTEVEKGhyKSkKKyAgICAgICAgcmV0dXJuIGhyOworICAgIHNldHRp
bmdzLT5zZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCghIWVuYWJsZWQpOworCiAgICAg
aHIgPSBwcmVmc1ByaXZhdGUtPmFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcygmZW5hYmxlZCk7
CiAgICAgaWYgKEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsKICAgICBzZXR0aW5ncy0+
c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKCEhZW5hYmxlZCk7CiAKKyAgICBociA9IHBy
ZWZzUHJpdmF0ZS0+YWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoJmVuYWJsZWQpOworICAg
IGlmIChGQUlMRUQoaHIpKQorICAgICAgICByZXR1cm4gaHI7CisgICAgc2V0dGluZ3MtPnNldEFs
bG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KCEhZW5hYmxlZCk7CisKICAgICBociA9IHByZWZz
UHJpdmF0ZS0+amF2YVNjcmlwdENhbkFjY2Vzc0NsaXBib2FyZCgmZW5hYmxlZCk7CiAgICAgaWYg
KEZBSUxFRChocikpCiAgICAgICAgIHJldHVybiBocjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2lu
L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luL1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCShyZXZpc2lvbiA4NjI0MSkKKysrIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OSw3ICs0OSw5IEBACiAjZGVmaW5lIFdlYktpdEphdmFTY3JpcHRFbmFibGVkUHJlZmVyZW5j
ZUtleSAiV2ViS2l0SmF2YVNjcmlwdEVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdFdlYlNlY3VyaXR5
RW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdFdlYlNlY3VyaXR5RW5hYmxlZCIKICNkZWZpbmUg
V2ViS2l0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHNQcmVmZXJlbmNlS2V5ICJXZWJL
aXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyIKKyNkZWZpbmUgV2ViS2l0QWxsb3dE
aXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnRQcmVmZXJlbmNlS2V5ICJXZWJLaXRBbGxvd0Rpc3BsYXlP
Zkluc2VjdXJlQ29udGVudCIKICNkZWZpbmUgV2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVV
UkxzUHJlZmVyZW5jZUtleSAiV2ViS2l0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzIgorI2Rl
ZmluZSBXZWJLaXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudFByZWZlcmVuY2VLZXkgIldl
YktpdEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50IgogI2RlZmluZSBXZWJLaXRKYXZhU2Ny
aXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5UHJlZmVyZW5jZUtleSAiV2ViS2l0SmF2YVNj
cmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSIKICNkZWZpbmUgV2ViS2l0UGx1Z2luc0Vu
YWJsZWRQcmVmZXJlbmNlS2V5ICJXZWJLaXRQbHVnaW5zRW5hYmxlZCIKICNkZWZpbmUgV2ViS2l0
RGF0YWJhc2VzRW5hYmxlZFByZWZlcmVuY2VLZXkgIldlYktpdERhdGFiYXNlc0VuYWJsZWQiCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJQcmVmZXJlbmNlcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC93aW4vV2ViUHJlZmVyZW5jZXMuY3BwCShyZXZpc2lvbiA4NjI0MSkKKysr
IFNvdXJjZS9XZWJLaXQvd2luL1dlYlByZWZlcmVuY2VzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjA1LDcgKzIwNSw5IEBACiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVmYXVsdHMsIENGU1RS
KFdlYktpdEphdmFTY3JpcHRFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsK
ICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0V2ViU2VjdXJp
dHlFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5UcnVlKTsKICAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9t
RmlsZVVSTHNQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKKyAgICBDRkRpY3Rpb25h
cnlBZGRWYWx1ZShkZWZhdWx0cywgQ0ZTVFIoV2ViS2l0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNv
bnRlbnRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOwogICAgIENGRGljdGlvbmFyeUFk
ZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNQ
cmVmZXJlbmNlS2V5KSwga0NGQm9vbGVhblRydWUpOworICAgIENGRGljdGlvbmFyeUFkZFZhbHVl
KGRlZmF1bHRzLCBDRlNUUihXZWJLaXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudFByZWZl
cmVuY2VLZXkpLCBrQ0ZCb29sZWFuVHJ1ZSk7CiAgICAgQ0ZEaWN0aW9uYXJ5QWRkVmFsdWUoZGVm
YXVsdHMsIENGU1RSKFdlYktpdEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmRQcmVmZXJlbmNl
S2V5KSwga0NGQm9vbGVhbkZhbHNlKTsKICAgICBDRkRpY3Rpb25hcnlBZGRWYWx1ZShkZWZhdWx0
cywgQ0ZTVFIoV2ViS2l0WFNTQXVkaXRvckVuYWJsZWRQcmVmZXJlbmNlS2V5KSwga0NGQm9vbGVh
blRydWUpOwogICAgIENGRGljdGlvbmFyeUFkZFZhbHVlKGRlZmF1bHRzLCBDRlNUUihXZWJLaXRG
cmFtZUZsYXR0ZW5pbmdFbmFibGVkUHJlZmVyZW5jZUtleSksIGtDRkJvb2xlYW5GYWxzZSk7CkBA
IC04MDIsNiArODA0LDIwIEBACiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKK0hSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50
KAorICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogYWxsb3dBY2Nlc3MpCit7CisgICAgKmFs
bG93QWNjZXNzID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdlYktpdEFsbG93RGlzcGxheU9mSW5z
ZWN1cmVDb250ZW50UHJlZmVyZW5jZUtleSkpOworICAgIHJldHVybiBTX09LOworfQorCitIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRBbGxvd0Rpc3BsYXlPZklu
c2VjdXJlQ29udGVudCgKKyAgICAvKiBbaW5dICovIEJPT0wgYWxsb3dBY2Nlc3MpCit7CisgICAg
c2V0Qm9vbFZhbHVlKENGU1RSKFdlYktpdEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50UHJl
ZmVyZW5jZUtleSksIGFsbG93QWNjZXNzKTsKKyAgICByZXR1cm4gU19PSzsKK30KKwogSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6YWxsb3dGaWxlQWNjZXNzRnJvbUZp
bGVVUkxzKAogICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogYWxsb3dBY2Nlc3MpCiB7CkBA
IC04MTYsNiArODMyLDIwIEBACiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKK0hSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgV2ViUHJlZmVyZW5jZXM6OmFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50
KAorICAgIC8qIFtyZXR2YWxdW291dF0gKi8gQk9PTCogYWxsb3dBY2Nlc3MpCit7CisgICAgKmFs
bG93QWNjZXNzID0gYm9vbFZhbHVlRm9yS2V5KENGU1RSKFdlYktpdEFsbG93UnVubmluZ09mSW5z
ZWN1cmVDb250ZW50UHJlZmVyZW5jZUtleSkpOworICAgIHJldHVybiBTX09LOworfQorCitIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlByZWZlcmVuY2VzOjpzZXRBbGxvd1J1bm5pbmdPZklu
c2VjdXJlQ29udGVudCgKKyAgICAvKiBbaW5dICovIEJPT0wgYWxsb3dBY2Nlc3MpCit7CisgICAg
c2V0Qm9vbFZhbHVlKENGU1RSKFdlYktpdEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50UHJl
ZmVyZW5jZUtleSksIGFsbG93QWNjZXNzKTsKKyAgICByZXR1cm4gU19PSzsKK30KKwogSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBXZWJQcmVmZXJlbmNlczo6amF2YVNjcmlwdENhbkFjY2Vzc0Ns
aXBib2FyZCgKICAgICAvKiBbcmV0dmFsXVtvdXRdICovIEJPT0wqIGVuYWJsZWQpCiB7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJQcmVmZXJlbmNlc1ByaXZhdGUuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlByZWZlcmVu
Y2VzUHJpdmF0ZS5pZGwJKHJldmlzaW9uIDg2MjQxKQorKysgU291cmNlL1dlYktpdC93aW4vSW50
ZXJmYWNlcy9JV2ViUHJlZmVyZW5jZXNQcml2YXRlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTI3
LDQgKzEyNywxMCBAQAogCiAgICAgSFJFU1VMVCBzZXRGdWxsU2NyZWVuRW5hYmxlZChbaW5dIEJP
T0wgZW5hYmxlZCk7CiAgICAgSFJFU1VMVCBpc0Z1bGxTY3JlZW5FbmFibGVkKFtvdXQsIHJldHZh
bF0gQk9PTCogZW5hYmxlZCk7CisKKyAgICBIUkVTVUxUIGFsbG93RGlzcGxheU9mSW5zZWN1cmVD
b250ZW50KFtvdXQsIHJldHZhbF0gQk9PTCAqYWxsb3cpOworICAgIEhSRVNVTFQgc2V0QWxsb3dE
aXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoW2luXSBCT09MIGFsbG93KTsKKworICAgIEhSRVNVTFQg
YWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoW291dCwgcmV0dmFsXSBCT09MICphbGxvdyk7
CisgICAgSFJFU1VMVCBzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChbaW5dIEJPT0wg
YWxsb3cpOwogfQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gODYyNTgpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMiBAQAor
MjAxMS0wNS0xMSAgQ2hyaXMgRXZhbnMgIDxjZXZhbnNAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBXZWJDb3JlOjpTZXR0
aW5nIHRvIGJsb2NrIGRpc3BsYXlpbmcgYW5kL29yIHJ1bm5pbmcgaW5zZWN1cmUgY29udGVudCBv
biBzZWN1cmUgcGFnZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU4Mzc4CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0
ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dl
YlByZWZlcmVuY2VzIGluaXRpYWxpemVdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgYWxs
b3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnRdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMg
c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQ6XSk6CisgICAgICAgICgtW1dlYlByZWZl
cmVuY2VzIGFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50XSk6CisgICAgICAgICgtW1dlYlBy
ZWZlcmVuY2VzIHNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50Ol0pOgorICAgICAgICAq
IFdlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJW
aWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6CisgICAg
ICAgIFBsdW1iaW5nIGZvciBleHBvc2luZyBuZXcgc2V0dGluZ3MgdG8gRFJULgorCiAyMDExLTA1
LTEwICBBbnRvbiBEJ0F1cmlhICA8YWRhdXJpYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBy
ZWZlcmVuY2VzUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgJKHJldmlzaW9uIDg2MjQxKQorKysgU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjQ4LDQgKzI0OCwxMCBAQAogLSAodm9pZClzZXRBVkZvdW5kYXRpb25FbmFibGVkOihCT09M
KWZsYWc7CiAtIChCT09MKWlzQVZGb3VuZGF0aW9uRW5hYmxlZDsKIAorLSAoQk9PTClhbGxvd0Rp
c3BsYXlPZkluc2VjdXJlQ29udGVudDsKKy0gKHZvaWQpc2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3Vy
ZUNvbnRlbnQ6KEJPT0wpZmxhZzsKKworLSAoQk9PTClhbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29u
dGVudDsKKy0gKHZvaWQpc2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQ6KEJPT0wpZmxh
ZzsKKwogQGVuZApJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
S2V5c1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCShyZXZpc2lvbiA4NjI0MSkKKysrIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyMSw2ICsxMjEsOCBAQAogI2RlZmluZSBXZWJLaXRUZXh0RGlyZWN0aW9uU3VibWVudUlu
Y2x1c2lvbkJlaGF2aW9yUHJlZmVyZW5jZUtleSBAIldlYktpdFRleHREaXJlY3Rpb25TdWJtZW51
SW5jbHVzaW9uQmVoYXZpb3JQcmVmZXJlbmNlS2V5IgogI2RlZmluZSBXZWJLaXRFZGl0aW5nQmVo
YXZpb3JQcmVmZXJlbmNlS2V5IEAiV2ViS2l0RWRpdGluZ0JlaGF2aW9yIgogI2RlZmluZSBXZWJL
aXRVc2VQcmVIVE1MNVBhcnNlclF1aXJrc0tleSBAIldlYktpdFVzZVByZUhUTUw1UGFyc2VyUXVp
cmtzIgorI2RlZmluZSBXZWJLaXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudFByZWZlcmVu
Y2VLZXkgQCJXZWJLaXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudCIKKyNkZWZpbmUgV2Vi
S2l0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0QWxs
b3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQiCiAKIC8vIENvcmVHcmFwaGljcyBkZWZlcnJlZCB1
cGRhdGVzIGFyZSBkaXNhYmxlZCBpZiBXZWJLaXRFbmFibGVDb2FsZXNjZWRVcGRhdGVzUHJlZmVy
ZW5jZUtleSBpcyBzZXQKIC8vIHRvIE5PLCBvciBoYXMgbm8gdmFsdWUuICBGb3IgY29tcGF0aWJp
bGl0eSB3aXRoIE1hYyBPUyBYIDEwLjQuNiwgZGVmZXJyZWQgdXBkYXRlcyBhcmUgT0ZGIGJ5Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA4NjI0MSkKKysr
IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MTU0Niw2ICsxNTQ2LDggQEAKICAgICBzZXR0aW5ncy0+c2V0Q3Jvc3NPcmlnaW5DaGVja0luR2V0
TWF0Y2hlZENTU1J1bGVzRGlzYWJsZWQoW3NlbGYgX25lZWRzVW5yZXN0cmljdGVkR2V0TWF0Y2hl
ZENTU1J1bGVzXSk7CiAgICAgc2V0dGluZ3MtPnNldEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25F
bmFibGVkKFtzZWxmIGludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkXSk7CiAgICAgc2V0
dGluZ3MtPnNldFZhbGlkYXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0aW9uKFtzZWxmIHZhbGlk
YXRpb25NZXNzYWdlVGltZXJNYWduaWZpY2F0aW9uXSk7CisgICAgc2V0dGluZ3MtPnNldEFsbG93
RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KFtwcmVmZXJlbmNlcyBhbGxvd0Rpc3BsYXlPZkluc2Vj
dXJlQ29udGVudF0pOworICAgIHNldHRpbmdzLT5zZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29u
dGVudChbcHJlZmVyZW5jZXMgYWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnRdKTsKICNpZiBV
U0UoQVZGT1VOREFUSU9OKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBzZXR0aW5n
cy0+c2V0QVZGb3VuZGF0aW9uRW5hYmxlZChbcHJlZmVyZW5jZXMgaXNBVkZvdW5kYXRpb25FbmFi
bGVkXSAmJiBbcHJlZmVyZW5jZXMgZnVsbFNjcmVlbkVuYWJsZWRdKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQkocmV2aXNpb24gODYyNDEpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zOTUsNiArMzk1LDggQEAKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29s
OnVzZVF1aWNrTG9va1F1aXJrcygpXSwgV2ViS2l0VXNlUXVpY2tMb29rUmVzb3VyY2VDYWNoaW5n
UXVpcmtzUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhMb25nTG9u
ZzpXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bm9RdW90YSgpXSwgV2ViS2l0QXBw
bGljYXRpb25DYWNoZVRvdGFsUXVvdGEsCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoTG9u
Z0xvbmc6V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om5vUXVvdGEoKV0sIFdlYktp
dEFwcGxpY2F0aW9uQ2FjaGVEZWZhdWx0T3JpZ2luUXVvdGEsCisgICAgICAgIFtOU051bWJlciBu
dW1iZXJXaXRoQm9vbDpZRVNdLCAgV2ViS2l0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnRQ
cmVmZXJlbmNlS2V5LAorICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdl
YktpdEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50UHJlZmVyZW5jZUtleSwKICAgICAgICAg
bmlsXTsKIAogICAgIC8vIFRoaXMgdmFsdWUgc2hvdWxkbid0IGV2ZXIgY2hhbmdlLCB3aGljaCBp
cyBhc3N1bWVkIGluIHRoZSBpbml0aWFsaXphdGlvbiBvZiBXZWJLaXRQREZEaXNwbGF5TW9kZVBy
ZWZlcmVuY2VLZXkgYWJvdmUKQEAgLTE0OTQsNiArMTQ5NiwyNiBAQAogewogICAgIHJldHVybiBb
c2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdEFWRm91bmRhdGlvbkVuYWJsZWRLZXldOwogfQor
CistIChCT09MKWFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50Cit7CisgICAgcmV0dXJuIFtz
ZWxmIF9ib29sVmFsdWVGb3JLZXk6IFdlYktpdEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50
UHJlZmVyZW5jZUtleV07Cit9CisKKy0gKHZvaWQpc2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNv
bnRlbnQ6KEJPT0wpZmxhZworeworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6IGZsYWcgZm9yS2V5
OiBXZWJLaXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudFByZWZlcmVuY2VLZXldOworfQor
CistIChCT09MKWFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50Cit7CisgICAgcmV0dXJuIFtz
ZWxmIF9ib29sVmFsdWVGb3JLZXk6IFdlYktpdEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50
UHJlZmVyZW5jZUtleV07Cit9CisKKy0gKHZvaWQpc2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNv
bnRlbnQ6KEJPT0wpZmxhZworeworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6IGZsYWcgZm9yS2V5
OiBXZWJLaXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudFByZWZlcmVuY2VLZXldOworfQog
QGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViUHJlZmVyZW5jZXMgKFdlYkludGVybmFsKQpJbmRl
eDogVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5jcHAJKHJldmlzaW9uIDg2MjQxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0
VGVzdENvbnRyb2xsZXJRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNCwxMSArNDE0LDIxIEBA
CiAgICAgbV9kcnQtPndlYlBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0
aW5nczo6TG9jYWxDb250ZW50Q2FuQWNjZXNzUmVtb3RlVXJscywgZW5hYmxlZCk7CiB9CiAKK3Zv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50
KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX2RydC0+d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRB
dHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpQYWdlc0NhbkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQsIGVu
YWJsZWQpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd0ZpbGVBY2Nl
c3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGVkKQogewogICAgIG1fZHJ0LT53ZWJQYWdlKCktPnNl
dHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OkxvY2FsQ29udGVudENhbkFjY2Vz
c0ZpbGVVcmxzLCBlbmFibGVkKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCBlbmFibGVkKQoreworICAgIG1fZHJ0
LT53ZWJQYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2ViU2V0dGluZ3M6OlBhZ2Vz
Q2FuUnVuSW5zZWN1cmVDb250ZW50LCBlbmFibGVkKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEp
CiB7CiAgICAgbV9kcnQtPndlYlBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0T2ZmbGluZVdlYkFwcGxp
Y2F0aW9uQ2FjaGVRdW90YShxdW90YSk7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9xdC9M
YXlvdXRUZXN0Q29udHJvbGxlclF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5oCShyZXZpc2lvbiA4NjI0MSkKKysrIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTQ5LDcgKzE0OSw5IEBACiAgICAgdm9pZCBzZXRNZWRpYVR5cGUoY29uc3QgUVN0cmlu
ZyYgdHlwZSk7CiAgICAgdm9pZCBzZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkKGJvb2wgZW5hYmxl
KTsKICAgICB2b2lkIHNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5h
YmxlKTsKKyAgICB2b2lkIHNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KGJvb2wgZW5h
YmxlKTsKICAgICB2b2lkIHNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhib29sIGVuYWJs
ZSk7CisgICAgdm9pZCBzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChib29sIGVuYWJs
ZSk7CiAgICAgdm9pZCBzZXRBcHBDYWNoZU1heGltdW1TaXplKHVuc2lnbmVkIGxvbmcgbG9uZyBx
dW90YSk7CiAgICAgdm9pZCBzZXRBdXRvZmlsbGVkKGNvbnN0IFFXZWJFbGVtZW50JiwgYm9vbCBl
bmFibGUpOwogICAgIHZvaWQgc2V0SmF2YVNjcmlwdFByb2ZpbGluZ0VuYWJsZWQoYm9vbCBlbmFi
bGUpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVy
R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVz
dENvbnRyb2xsZXJHdGsuY3BwCShyZXZpc2lvbiA4NjI0MSkKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0
NCw2ICs0NDQsMTUgQEAKICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5h
YmxlLXVuaXZlcnNhbC1hY2Nlc3MtZnJvbS1maWxlLXVyaXMiLCBmbGFnLCBOVUxMKTsKIH0KIAor
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRl
bnQoYm9vbCBmbGFnKQoreworICAgIFdlYktpdFdlYlZpZXcqIHZpZXcgPSB3ZWJraXRfd2ViX2Zy
YW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOworICAgIEFTU0VSVCh2aWV3KTsKKworICAgIFdl
YktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mo
dmlldyk7CisgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1kaXNw
bGF5LW9mLWluc2VjdXJlLWNvbnRlbnQiLCBmbGFnLCBOVUxMKTsKK30KKwogdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZmxhZykK
IHsKICAgICBXZWJLaXRXZWJWaWV3KiB2aWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3Zp
ZXcobWFpbkZyYW1lKTsKQEAgLTQ1Myw2ICs0NjIsMTUgQEAKICAgICBnX29iamVjdF9zZXQoR19P
QkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWZpbGUtYWNjZXNzLWZyb20tZmlsZS11cmlzIiwgZmxh
ZywgTlVMTCk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93UnVubmlu
Z09mSW5zZWN1cmVDb250ZW50KGJvb2wgZmxhZykKK3sKKyAgICBXZWJLaXRXZWJWaWV3KiB2aWV3
ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcobWFpbkZyYW1lKTsKKyAgICBBU1NFUlQo
dmlldyk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3NldHRpbmdzKHZpZXcpOworICAgIGdfb2JqZWN0X3NldChHX09CSkVDVChzZXR0aW5n
cyksICJlbmFibGUtcnVubmluZy1vZi1pbnNlY3VyZS1jb250ZW50IiwgZmxhZywgTlVMTCk7Cit9
CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFi
bGVkKGJvb2wgZmxhZykKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CkluZGV4OiBUb29scy9E
dW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJvbGxlcld4LmNwcAkocmV2
aXNpb24gODYyNDEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93eC9MYXlvdXRUZXN0Q29udHJv
bGxlcld4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk3LDExICsxOTcsMjEgQEAKICAgICAvLyBG
SVhNRTogaW1wbGVtZW50CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93
RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KGJvb2wgZW5hYmxlZCkKK3sKKyAgICAvLyBGSVhNRTog
aW1wbGVtZW50Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93RmlsZUFj
Y2Vzc0Zyb21GaWxlVVJMcyhib29sIGVuYWJsZWQpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVu
dAogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd1J1bm5pbmdPZkluc2Vj
dXJlQ29udGVudChib29sIGVuYWJsZWQpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQor
CiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxl
ZChib29sIGZsYWcpCiB7CiAgICAgLy8gRklYTUU6IGltcGxlbWVudApJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQkocmV2aXNpb24gODYyNDEpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0JKHdvcmtpbmcgY29weSkK
QEAgLTQ3Nyw2ICs0NzcsOCBAQAogICAgIFtwcmVmZXJlbmNlcyBzZXRXZWJHTEVuYWJsZWQ6Tk9d
OwogICAgIFtwcmVmZXJlbmNlcyBzZXRVc2VQcmVIVE1MNVBhcnNlclF1aXJrczpOT107CiAgICAg
W3ByZWZlcmVuY2VzIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkOk5PXTsKKyAg
ICBbcHJlZmVyZW5jZXMgc2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQ6WUVTXTsKKyAg
ICBbcHJlZmVyZW5jZXMgc2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQ6WUVTXTsKIAog
ICAgIFtbTlNIVFRQQ29va2llU3RvcmFnZSBzaGFyZWRIVFRQQ29va2llU3RvcmFnZV0gc2V0Q29v
a2llQWNjZXB0UG9saWN5Ok5TSFRUUENvb2tpZUFjY2VwdFBvbGljeU9ubHlGcm9tTWFpbkRvY3Vt
ZW50RG9tYWluXTsKICAgICAKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRU
ZXN0Q29udHJvbGxlck1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9t
YWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHJldmlzaW9uIDg2MjQxKQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC01MjksMTEgKzUyOSwyMSBAQAogICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVm
ZXJlbmNlc10gc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHM6ZW5hYmxlZF07CiB9
CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVD
b250ZW50KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVy
ZW5jZXNdIHNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50OmVuYWJsZWRdOworfQorCiB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMo
Ym9vbCBlbmFibGVkKQogewogICAgIFtbW21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10g
c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzOmVuYWJsZWRdOwogfQogCit2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChib29sIGVu
YWJsZWQpCit7CisgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXRBbGxv
d1J1bm5pbmdPZkluc2VjdXJlQ29udGVudDplbmFibGVkXTsKK30KKwogdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0UG9wdXBCbG9ja2luZ0VuYWJsZWQoYm9vbCBwb3B1cEJsb2NraW5nRW5h
YmxlZCkKIHsKICAgICBbW1ttYWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIHNldEphdmFT
Y3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHk6IXBvcHVwQmxvY2tpbmdFbmFibGVkXTsK
SW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJ
KHJldmlzaW9uIDg2MjQxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDk3LDYgKzE0OTcsMTcgQEAKICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVm
IHNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgTGF5b3V0VGVzdENvbnRy
b2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpT
T2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0QWxsb3dE
aXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVu
dHNbMF0pKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30K
Kwogc3RhdGljIEpTVmFsdWVSZWYgc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzQ2FsbGJh
Y2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1
bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgJiB3aW5k
b3dzIGltcGxlbWVudGF0aW9uCkBAIC0xNTA5LDYgKzE1MjAsMTcgQEAKICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNldEFs
bG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIq
IGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0
R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0QWxsb3dSdW5uaW5n
T2ZJbnNlY3VyZUNvbnRlbnQoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNbMF0p
KTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3Rh
dGljIEpTVmFsdWVSZWYgc2V0VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgJiB3aW5kb3dzIGlt
cGxlbWVudGF0aW9uCkBAIC0yMzI3LDcgKzIzNDksOSBAQAogICAgICAgICB7ICJyZXNldFBhZ2VW
aXNpYmlsaXR5IiwgcmVzZXRQYWdlVmlzaWJpbGl0eUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgInNldEFjY2VwdHNFZGl0aW5nIiwgc2V0QWNjZXB0c0VkaXRpbmdDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyIsIHNldEFs
bG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAg
eyAic2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQiLCBzZXRBbGxvd0Rpc3BsYXlPZklu
c2VjdXJlQ29udGVudENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEFsbG93RmlsZUFj
Y2Vzc0Zyb21GaWxlVVJMcyIsIHNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMc0NhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCisgICAgICAgIHsgInNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50Iiwg
c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJzZXRBbHdheXNBY2NlcHRDb29raWVzIiwgc2V0QWx3YXlzQWNjZXB0Q29va2llc0NhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEFwcENhY2hlTWF4aW11bVNpemUiLCBzZXRBcHBD
YWNoZU1heGltdW1TaXplQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0QXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhIiwgc2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJl
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJU
cmVlLmNwcAkocmV2aXNpb24gODYyNDEpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVt
cFJlbmRlclRyZWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NjcsNyArODY3LDkgQEAKICAgICBD
T01QdHI8SVdlYlByZWZlcmVuY2VzUHJpdmF0ZT4gcHJlZnNQcml2YXRlKFF1ZXJ5LCBwcmVmZXJl
bmNlcyk7CiAgICAgaWYgKHByZWZzUHJpdmF0ZSkgewogICAgICAgICBwcmVmc1ByaXZhdGUtPnNl
dEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKFRSVUUpOworICAgICAgICBwcmVmc1By
aXZhdGUtPnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KFRSVUUpOwogICAgICAgICBw
cmVmc1ByaXZhdGUtPnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhUUlVFKTsKKyAgICAg
ICAgcHJlZnNQcml2YXRlLT5zZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChUUlVFKTsK
ICAgICAgICAgcHJlZnNQcml2YXRlLT5zZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChUUlVF
KTsKICAgICAgICAgcHJlZnNQcml2YXRlLT5zZXREZXZlbG9wZXJFeHRyYXNFbmFibGVkKEZBTFNF
KTsKICAgICAgICAgcHJlZnNQcml2YXRlLT5zZXRFeHBlcmltZW50YWxOb3RpZmljYXRpb25zRW5h
YmxlZChUUlVFKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29u
dHJvbGxlcldpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xh
eW91dFRlc3RDb250cm9sbGVyV2luLmNwcAkocmV2aXNpb24gODYyNDEpCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01NTgsNiArNTU4LDIzIEBACiAgICAgcHJlZnNQcml2YXRlLT5zZXRBbGxvd1VuaXZlcnNh
bEFjY2Vzc0Zyb21GaWxlVVJMcyhlbmFibGVkKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCBlbmFibGVkKQorewor
ICAgIENPTVB0cjxJV2ViVmlldz4gd2ViVmlldzsKKyAgICBpZiAoRkFJTEVEKGZyYW1lLT53ZWJW
aWV3KCZ3ZWJWaWV3KSkpCisgICAgICAgIHJldHVybjsKKworICAgIENPTVB0cjxJV2ViUHJlZmVy
ZW5jZXM+IHByZWZlcmVuY2VzOworICAgIGlmIChGQUlMRUQod2ViVmlldy0+cHJlZmVyZW5jZXMo
JnByZWZlcmVuY2VzKSkpCisgICAgICAgIHJldHVybjsKKworICAgIENPTVB0cjxJV2ViUHJlZmVy
ZW5jZXNQcml2YXRlPiBwcmVmc1ByaXZhdGUoUXVlcnksIHByZWZlcmVuY2VzKTsKKyAgICBpZiAo
IXByZWZzUHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgcHJlZnNQcml2YXRlLT5zZXRB
bGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChlbmFibGVkKTsKK30KKwogdm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxl
ZCkKIHsKICAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7CkBAIC01NzUsNiArNTkyLDIzIEBA
CiAgICAgcHJlZnNQcml2YXRlLT5zZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoZW5hYmxl
ZCk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93UnVubmluZ09mSW5z
ZWN1cmVDb250ZW50KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZp
ZXc7CisgICAgaWYgKEZBSUxFRChmcmFtZS0+d2ViVmlldygmd2ViVmlldykpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBDT01QdHI8SVdlYlByZWZlcmVuY2VzPiBwcmVmZXJlbmNlczsKKyAgICBp
ZiAoRkFJTEVEKHdlYlZpZXctPnByZWZlcmVuY2VzKCZwcmVmZXJlbmNlcykpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBDT01QdHI8SVdlYlByZWZlcmVuY2VzUHJpdmF0ZT4gcHJlZnNQcml2YXRl
KFF1ZXJ5LCBwcmVmZXJlbmNlcyk7CisgICAgaWYgKCFwcmVmc1ByaXZhdGUpCisgICAgICAgIHJl
dHVybjsKKworICAgIHByZWZzUHJpdmF0ZS0+c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRl
bnQoZW5hYmxlZCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFBvcHVwQmxv
Y2tpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZp
ZXc7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJ
KHJldmlzaW9uIDg2MjQxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRy
b2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsOSBAQAogICAgIHZvaWQgcmVtb3Zl
QWxsVmlzaXRlZExpbmtzKCk7CiAgICAgdm9pZCBzZXRBY2NlcHRzRWRpdGluZyhib29sIGFjY2Vw
dHNFZGl0aW5nKTsKICAgICB2b2lkIHNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxz
KGJvb2wpOworICAgIHZvaWQgc2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCk7
CiAgICAgdm9pZCBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCk7CisgICAgdm9p
ZCBzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChib29sKTsKICAgICB2b2lkIHNldEFw
cENhY2hlTWF4aW11bVNpemUodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKTsKICAgICB2b2lkIHNl
dEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwog
ICAgIHZvaWQgc2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYm9vbCk7CkluZGV4OiBUb29s
cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4NjI1
OCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisy
MDExLTA1LTExICBDaHJpcyBFdmFucyAgPGNldmFuc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFdlYkNvcmU6OlNldHRp
bmcgdG8gYmxvY2sgZGlzcGxheWluZyBhbmQvb3IgcnVubmluZyBpbnNlY3VyZSBjb250ZW50IG9u
IHNlY3VyZSBwYWdlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTgzNzgKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKHNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50Q2FsbGJh
Y2spOgorICAgICAgICAoc2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnRDYWxsYmFjayk6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQpOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93UnVubmluZ09mSW5zZWN1cmVD
b250ZW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06
CisgICAgICAgIChyZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQpOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93UnVubmluZ09mSW5zZWN1cmVD
b250ZW50KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxl
clF0LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd0Rpc3BsYXlP
Zkluc2VjdXJlQ29udGVudCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxs
b3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3F0
L0xheW91dFRlc3RDb250cm9sbGVyUXQuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4v
RHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAgICAocmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZh
bHVlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVy
V2luLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd0Rpc3BsYXlP
Zkluc2VjdXJlQ29udGVudCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxs
b3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3d4
L0xheW91dFRlc3RDb250cm9sbGVyV3guY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KToKKyAgICAgICAgKExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCk6CisgICAgICAg
IFBsdW1iaW5nIGZvciBleHBvc2luZyBuZXcgc2V0dGluZ3MgdG8gRFJULgorCiAyMDExLTA1LTEx
ICBBbGljZSBCb3hoYWxsICA8YWJveGhhbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IE9qYW4gVmFmYWkuCg==
</data>
<flag name="review"
          id="86470"
          type_id="1"
          status="-"
          setter="tonikitoo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150237</attachid>
            <date>2012-06-29 12:50:40 -0700</date>
            <delta_ts>2012-07-02 07:00:52 -0700</delta_ts>
            <desc>Plumbing #3</desc>
            <filename>plumbing-3.diff</filename>
            <type>text/plain</type>
            <size>13001</size>
            <attacher name="Josh Rickmar">jrick</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwppbmRleCAxNWYyOTMzLi4zOTA5MzI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTItMDYtMjkgIEpvc2ggUmlja21hciAgPGpyaWNrQGRldmlvLnVz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtd
IEFkZCBXZWJDb3JlOjpTZXR0aW5nIHRvIGJsb2NrIGRpc3BsYXlpbmcgYW5kL29yIHJ1bm5pbmcK
KyAgICAgICAgaW5zZWN1cmUgY29udGVudCBvbiBzZWN1cmUgcGFnZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4Mzc4CisKKyAgICAgICAgKiB3ZWJr
aXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19j
bGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3Byb3BlcnR5KToK
KyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdl
YmtpdF93ZWJfc2V0dGluZ3NfY29weSk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyk6CisgICAgICAg
ICh3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KToKKyAgICAgICAgUGx1bWJpbmcgZm9y
IGV4cG9zaW5nIG5ldyBzZXR0aW5ncyB0byBEUlQuCisKIDIwMTItMDYtMjkgIFRvbnkgQ2hhbmcg
IDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbR1RLXSBFbmFibGUgQ1NTIGdyaWQgbGF5
b3V0IExheW91dFRlc3RzIG9uIEdUSysKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vic2V0dGluZ3MuY3BwCmluZGV4IGNlODc3ZTQuLjMzNzczZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcApAQCAtMTIzLDcgKzEyMyw5
IEBAIGVudW0gewogICAgIFBST1BfRU5BQkxFX0FDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HLAogICAg
IFBST1BfRU5BQkxFX1NNT09USF9TQ1JPTExJTkcsCiAgICAgUFJPUF9NRURJQV9QTEFZQkFDS19S
RVFVSVJFU19VU0VSX0dFU1RVUkUsCi0gICAgUFJPUF9NRURJQV9QTEFZQkFDS19BTExPV1NfSU5M
SU5FCisgICAgUFJPUF9NRURJQV9QTEFZQkFDS19BTExPV1NfSU5MSU5FLAorICAgIFBST1BfRU5B
QkxFX1JVTk5JTkdfT0ZfSU5TRUNVUkVfQ09OVEVOVCwKKyAgICBQUk9QX0VOQUJMRV9ESVNQTEFZ
X09GX0lOU0VDVVJFX0NPTlRFTlQKIH07CiAKIC8vIENyZWF0ZSBhIGRlZmF1bHQgdXNlciBhZ2Vu
dCBzdHJpbmcKQEAgLTEwMTEsNiArMTAxMywzNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Nl
dHRpbmdzX2NsYXNzX2luaXQoV2ViS2l0V2ViU2V0dGluZ3NDbGFzcyoga2xhc3MpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmxhZ3MpKTsKIAorICAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLWRpc3Bs
YXktb2YtaW5zZWN1cmUtY29udGVudAorICAgICoKKyAgICAqIEJvb2xlYW4gcHJvcGVydHkgdG8g
Y29udHJvbCB3aGV0aGVyIGluc2VjdXJlIChub24taHR0cHMpIGltYWdlcyAvIGZyYW1lcyAKKyAg
ICAqIGNhbiBiZSBsb2FkZWQgZnJvbSBodHRwcyBwYWdlcy4KKyAgICAqCisgICAgKiBTaW5jZTog
WFhYCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3Rf
Y2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9E
SVNQTEFZX09GX0lOU0VDVVJFX0NPTlRFTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWRpc3BsYXktb2YtaW5zZWN1cmUt
Y29udGVudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfKCJFbmFibGUgZGlzcGxheSBvZiBpbnNlY3VyZSBjb250ZW50IiksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJD
b250cm9scyBsb2FkIG9mIG5vbi1odHRwcyBkaXNwbGF5IHJlc291cmNlcyBmcm9tIGh0dHBzIHBh
Z2VzIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGQUxTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRp
bmdzOmVuYWJsZS1ydW5uaW5nLW9mLWluc2VjdXJlLWNvbnRlbnQKKyAgICAqCisgICAgKiBCb29s
ZWFuIHByb3BlcnR5IHRvIGNvbnRyb2wgd2hldGhlciBpbnNlY3VyZSAobm9uLWh0dHBzKSBzY3Jp
cHQgLyBDU1MgLyAKKyAgICAqIHBsdWctaW5zIGNhbiBiZSBsb2FkZWQgZnJvbSBodHRwcyBwYWdl
cy4KKyAgICAqCisgICAgKiBTaW5jZTogWFhYCisgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19p
bnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQUk9QX0VOQUJMRV9SVU5OSU5HX09GX0lOU0VDVVJFX0NPTlRFTlQsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5h
YmxlLXJ1bm5pbmctb2YtaW5zZWN1cmUtY29udGVudCIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgcnVubmluZyBvZiBp
bnNlY3VyZSBjb250ZW50IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfKCJDb250cm9scyBsb2FkIG9mIG5vbi1odHRwcyBzY3JpcHQg
LyBwbHVnLWluIHJlc291cmNlcyBmcm9tIGh0dHBzIHBhZ2VzLiIpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykp
OwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2luaXQoV2ViS2l0V2ViU2V0
dGluZ3MqIHdlYl9zZXR0aW5ncykKQEAgLTExOTUsNiArMTIyOCwxMiBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3NldHRpbmdzX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHBy
b3BfaWQsIGNvbgogICAgIGNhc2UgUFJPUF9NRURJQV9QTEFZQkFDS19BTExPV1NfSU5MSU5FOgog
ICAgICAgICBwcml2LT5tZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lID0gZ192YWx1ZV9nZXRfYm9v
bGVhbih2YWx1ZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfRElTUExB
WV9PRl9JTlNFQ1VSRV9DT05URU5UOgorICAgICAgICBwcml2LT5lbmFibGVEaXNwbGF5T2ZJbnNl
Y3VyZUNvbnRlbnQgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBQUk9QX0VOQUJMRV9SVU5OSU5HX09GX0lOU0VDVVJFX0NPTlRFTlQ6CisgICAg
ICAgIHByaXYtPmVuYWJsZVJ1bm5pbmdPZkluc2VjdXJlQ29udGVudCA9IGdfdmFsdWVfZ2V0X2Jv
b2xlYW4odmFsdWUpOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09C
SkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAg
ICAgICAgIGJyZWFrOwpAQCAtMTM2OSw2ICsxNDA4LDEyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwg
R1ZhCiAgICAgY2FzZSBQUk9QX01FRElBX1BMQVlCQUNLX0FMTE9XU19JTkxJTkU6CiAgICAgICAg
IGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPm1lZGlhUGxheWJhY2tBbGxvd3NJbmxp
bmUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0RJU1BMQVlfT0ZfSU5T
RUNVUkVfQ09OVEVOVDoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+
ZW5hYmxlRGlzcGxheU9mSW5zZWN1cmVDb250ZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX0VOQUJMRV9SVU5OSU5HX09GX0lOU0VDVVJFX0NPTlRFTlQ6CisgICAgICAgIGdfdmFs
dWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPmVuYWJsZVJ1bm5pbmdPZkluc2VjdXJlQ29udGVu
dCk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5f
SU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKICAgICAgICAgYnJl
YWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGlu
Z3Nwcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3Nw
cml2YXRlLmgKaW5kZXggNWVkMjRhNS4uZmJjM2ViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5nc3ByaXZhdGUuaApAQCAtODMsNiArODMsOCBA
QCBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSB7CiAgICAgZ2Jvb2xlYW4gZW5hYmxl
U21vb3RoU2Nyb2xsaW5nOwogICAgIGdib29sZWFuIG1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJH
ZXN0dXJlOwogICAgIGdib29sZWFuIG1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmU7CisgICAgZ2Jv
b2xlYW4gZW5hYmxlRGlzcGxheU9mSW5zZWN1cmVDb250ZW50OworICAgIGdib29sZWFuIGVuYWJs
ZVJ1bm5pbmdPZkluc2VjdXJlQ29udGVudDsKIH07CiAKIFdFQktJVF9BUEkgdm9pZCB3ZWJraXRf
d2ViX3NldHRpbmdzX2FkZF9leHRyYV9wbHVnaW5fZGlyZWN0b3J5KFdlYktpdFdlYlZpZXcqLCBj
b25zdCBnY2hhciogZGlyZWN0b3J5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcAppbmRleCBhYWM0ODdmLi43MGNkZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC0zNDEwLDYgKzM0MTAsOCBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
CiAgICAgY29yZVNldHRpbmdzLT5zZXRETlNQcmVmZXRjaGluZ0VuYWJsZWQoc2V0dGluZ3NQcml2
YXRlLT5lbmFibGVETlNQcmVmZXRjaGluZyk7CiAgICAgY29yZVNldHRpbmdzLT5zZXRNZWRpYVBs
YXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZShzZXR0aW5nc1ByaXZhdGUtPm1lZGlhUGxheWJhY2tS
ZXF1aXJlc1VzZXJHZXN0dXJlKTsKICAgICBjb3JlU2V0dGluZ3MtPnNldE1lZGlhUGxheWJhY2tB
bGxvd3NJbmxpbmUoc2V0dGluZ3NQcml2YXRlLT5tZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lKTsK
KyAgICBjb3JlU2V0dGluZ3MtPnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KHNldHRp
bmdzUHJpdmF0ZS0+ZW5hYmxlRGlzcGxheU9mSW5zZWN1cmVDb250ZW50KTsKKyAgICBjb3JlU2V0
dGluZ3MtPnNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KHNldHRpbmdzUHJpdmF0ZS0+
ZW5hYmxlUnVubmluZ09mSW5zZWN1cmVDb250ZW50KTsKIAogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCiAgICAgQWJzdHJhY3REYXRhYmFzZTo6c2V0SXNBdmFpbGFibGUoc2V0dGluZ3NQcml2YXRl
LT5lbmFibGVIVE1MNURhdGFiYXNlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCAzMWY3ZjlhLi44YTFlYTcwIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDYt
MjggIEpvc2ggUmlja21hciAgPGpyaWNrQGRldmlvLnVzPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIEFkZCBXZWJDb3JlOjpTZXR0aW5nIHRv
IGJsb2NrIGRpc3BsYXlpbmcgYW5kL29yIHJ1bm5pbmcKKyAgICAgICAgaW5zZWN1cmUgY29udGVu
dCBvbiBzZWN1cmUgcGFnZXMgb24gR1RLKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NTgzNzgKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKHNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVD
b250ZW50Q2FsbGJhY2spOgorICAgICAgICAoc2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRl
bnRDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rp
b25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHA6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3Vy
ZUNvbnRlbnQpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93UnVubmlu
Z09mSW5zZWN1cmVDb250ZW50KToKKwogMjAxMi0wNi0yOCAgT2phbiBWYWZhaSAgPG9qYW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIEZpeCByZWJhc2VsaW5pbmcgZm9yIFF0IGFuZCBBcHBsZSBw
b3J0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmlu
ZGV4IGNkMDFkMWMuLjI1ODQ0MzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAKQEAgLTE0OTIsNiArMTQ5MiwxNyBAQCBzdGF0aWMgSlNWYWx1ZVJl
ZiBzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMc0NhbGxiYWNrKEpTQ29udGV4dFJl
ZiBjb250ZQogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAor
c3RhdGljIEpTVmFsdWVSZWYgc2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnRDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQg
PCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisKKyAg
ICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRl
c3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250
cm9sbGVyLT5zZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChKU1ZhbHVlVG9Cb29sZWFu
KGNvbnRleHQsIGFyZ3VtZW50c1swXSkpOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZp
bmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRBbGxvd0ZpbGVBY2Nlc3NG
cm9tRmlsZVVSTHNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVu
Y3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAg
Ly8gSGFzIG1hYyAmIHdpbmRvd3MgaW1wbGVtZW50YXRpb24KQEAgLTE1MDQsNiArMTUxNSwxNyBA
QCBzdGF0aWMgSlNWYWx1ZVJlZiBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSgogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgc2V0QWxsb3dSdW5uaW5nT2ZJbnNl
Y3VyZUNvbnRlbnRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVu
Y3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAg
aWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCk7CisKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0
YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNP
YmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVu
dChKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1swXSkpOworCisgICAgcmV0dXJu
IEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBz
ZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4
dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBh
cmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBl
eGNlcHRpb24pCiB7CiAgICAgLy8gSGFzIG1hYyAmIHdpbmRvd3MgaW1wbGVtZW50YXRpb24KQEAg
LTIzNjIsNyArMjM4NCw5IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVy
OjpzdGF0aWNGdW5jdGlvbnMoKQogICAgICAgICB7ICJzZW5kV2ViSW50ZW50UmVzcG9uc2UiLCBz
ZW5kV2ViSW50ZW50UmVzcG9uc2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRBY2Nl
cHRzRWRpdGluZyIsIHNldEFjY2VwdHNFZGl0aW5nQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAic2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMiLCBzZXRBbGxvd1VuaXZlcnNh
bEFjY2Vzc0Zyb21GaWxlVVJMc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5
IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgInNldEFsbG93
RGlzcGxheU9mSW5zZWN1cmVDb250ZW50Iiwgc2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRl
bnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmls
ZVVSTHMiLCBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHNDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAor
ICAgICAgICB7ICJzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudCIsIHNldEFsbG93UnVu
bmluZ09mSW5zZWN1cmVDb250ZW50Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0QWx3
YXlzQWNjZXB0Q29va2llcyIsIHNldEFsd2F5c0FjY2VwdENvb2tpZXNDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJzZXRBcHBDYWNoZU1heGltdW1TaXplIiwgc2V0QXBwQ2FjaGVNYXhpbXVt
U2l6ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YSIsIHNldEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YUNhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA1NGNh
OTI3Li5lYzJjY2QwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmgKQEAgLTg5LDcgKzg5LDkgQEAgcHVibGljOgogICAgIHZvaWQgc2VuZFdlYkludGVudFJl
c3BvbnNlKEpTU3RyaW5nUmVmIHJlc3BvbnNlKTsKICAgICB2b2lkIHNldEFjY2VwdHNFZGl0aW5n
KGJvb2wgYWNjZXB0c0VkaXRpbmcpOwogICAgIHZvaWQgc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NG
cm9tRmlsZVVSTHMoYm9vbCk7CisgICAgdm9pZCBzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29u
dGVudChib29sKTsKICAgICB2b2lkIHNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhib29s
KTsKKyAgICB2b2lkIHNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KGJvb2wpOwogICAg
IHZvaWQgc2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwog
ICAgIHZvaWQgc2V0QXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHVuc2lnbmVkIGxvbmcgbG9u
ZyBxdW90YSk7CiAgICAgdm9pZCBzZXRBdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxl
ckd0ay5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJH
dGsuY3BwCmluZGV4IGE1MjU1YzMuLjRkNTc2YmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcApAQCAtNDI4LDYgKzQyOCwx
NSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zy
b21GaWxlVVJMcyhib29sIGZsYWcpCiAgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHNldHRpbmdz
KSwgImVuYWJsZS11bml2ZXJzYWwtYWNjZXNzLWZyb20tZmlsZS11cmlzIiwgZmxhZywgTlVMTCk7
CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93RGlzcGxheU9mSW5zZWN1
cmVDb250ZW50KGJvb2wgZmxhZykKK3sKKyAgICBXZWJLaXRXZWJWaWV3KiB2aWV3ID0gd2Via2l0
X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcobWFpbkZyYW1lKTsKKyAgICBBU1NFUlQodmlldyk7CisK
KyAgICBXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Nl
dHRpbmdzKHZpZXcpOworICAgIGdfb2JqZWN0X3NldChHX09CSkVDVChzZXR0aW5ncyksICJlbmFi
bGUtZGlzcGxheS1vZi1pbnNlY3VyZS1jb250ZW50IiwgZmxhZywgTlVMTCk7Cit9CisKIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhib29s
IGZsYWcpCiB7CiAgICAgV2ViS2l0V2ViVmlldyogdmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0
X3dlYl92aWV3KG1haW5GcmFtZSk7CkBAIC00MzcsNiArNDQ2LDE1IEBAIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhib29sIGZsYWcpCiAg
ICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1maWxlLWFjY2Vzcy1m
cm9tLWZpbGUtdXJpcyIsIGZsYWcsIE5VTEwpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChib29sIGZsYWcpCit7CisgICAg
V2ViS2l0V2ViVmlldyogdmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5G
cmFtZSk7CisgICAgQVNTRVJUKHZpZXcpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRp
bmdzID0gd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh2aWV3KTsKKyAgICBnX29iamVjdF9z
ZXQoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLXJ1bm5pbmctb2YtaW5zZWN1cmUtY29udGVu
dCIsIGZsYWcsIE5VTEwpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBdXRo
b3JBbmRVc2VyU3R5bGVzRW5hYmxlZChib29sIGZsYWcpCiB7CiAgICAgLy8gRklYTUU6IGltcGxl
bWVudAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150416</attachid>
            <date>2012-07-02 07:00:52 -0700</date>
            <delta_ts>2012-07-02 08:01:31 -0700</delta_ts>
            <desc>Plumbing #3</desc>
            <filename>plumbing-3.diff</filename>
            <type>text/plain</type>
            <size>12981</size>
            <attacher name="Josh Rickmar">jrick</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwppbmRleCAxNWYyOTMzLi4zOTA5MzI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTItMDYtMjkgIEpvc2ggUmlja21hciAgPGpyaWNrQGRldmlvLnVz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtd
IEFkZCBXZWJDb3JlOjpTZXR0aW5nIHRvIGJsb2NrIGRpc3BsYXlpbmcgYW5kL29yIHJ1bm5pbmcK
KyAgICAgICAgaW5zZWN1cmUgY29udGVudCBvbiBzZWN1cmUgcGFnZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4Mzc4CisKKyAgICAgICAgKiB3ZWJr
aXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19j
bGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3Byb3BlcnR5KToK
KyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdl
YmtpdF93ZWJfc2V0dGluZ3NfY29weSk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyk6CisgICAgICAg
ICh3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KToKKyAgICAgICAgUGx1bWJpbmcgZm9y
IGV4cG9zaW5nIG5ldyBzZXR0aW5ncyB0byBEUlQuCisKIDIwMTItMDYtMjkgIFRvbnkgQ2hhbmcg
IDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbR1RLXSBFbmFibGUgQ1NTIGdyaWQgbGF5
b3V0IExheW91dFRlc3RzIG9uIEdUSysKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vic2V0dGluZ3MuY3BwCmluZGV4IGNlODc3ZTQuLjRkNjgwNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcApAQCAtMTIzLDcgKzEyMyw5
IEBAIGVudW0gewogICAgIFBST1BfRU5BQkxFX0FDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HLAogICAg
IFBST1BfRU5BQkxFX1NNT09USF9TQ1JPTExJTkcsCiAgICAgUFJPUF9NRURJQV9QTEFZQkFDS19S
RVFVSVJFU19VU0VSX0dFU1RVUkUsCi0gICAgUFJPUF9NRURJQV9QTEFZQkFDS19BTExPV1NfSU5M
SU5FCisgICAgUFJPUF9NRURJQV9QTEFZQkFDS19BTExPV1NfSU5MSU5FLAorICAgIFBST1BfRU5B
QkxFX1JVTk5JTkdfT0ZfSU5TRUNVUkVfQ09OVEVOVCwKKyAgICBQUk9QX0VOQUJMRV9ESVNQTEFZ
X09GX0lOU0VDVVJFX0NPTlRFTlQKIH07CiAKIC8vIENyZWF0ZSBhIGRlZmF1bHQgdXNlciBhZ2Vu
dCBzdHJpbmcKQEAgLTEwMTEsNiArMTAxMywzMyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Nl
dHRpbmdzX2NsYXNzX2luaXQoV2ViS2l0V2ViU2V0dGluZ3NDbGFzcyoga2xhc3MpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmxhZ3MpKTsKIAorICAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLWRpc3Bs
YXktb2YtaW5zZWN1cmUtY29udGVudAorICAgICoKKyAgICAqIEJvb2xlYW4gcHJvcGVydHkgdG8g
Y29udHJvbCB3aGV0aGVyIGluc2VjdXJlIChub24taHR0cHMpIGltYWdlcyAvIGZyYW1lcyAKKyAg
ICAqIGNhbiBiZSBsb2FkZWQgZnJvbSBodHRwcyBwYWdlcy4KKyAgICAqLworICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0RJU1BMQVlfT0ZfSU5TRUNVUkVfQ09OVEVO
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29s
ZWFuKCJlbmFibGUtZGlzcGxheS1vZi1pbnNlY3VyZS1jb250ZW50IiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBkaXNw
bGF5IG9mIGluc2VjdXJlIGNvbnRlbnQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkNvbnRyb2xzIGxvYWQgb2Ygbm9uLWh0dHBz
IGRpc3BsYXkgcmVzb3VyY2VzIGZyb20gaHR0cHMgcGFnZXMiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOwor
CisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtcnVubmluZy1vZi1pbnNl
Y3VyZS1jb250ZW50CisgICAgKgorICAgICogQm9vbGVhbiBwcm9wZXJ0eSB0byBjb250cm9sIHdo
ZXRoZXIgaW5zZWN1cmUgKG5vbi1odHRwcykgc2NyaXB0IC8gQ1NTIC8gCisgICAgKiBwbHVnLWlu
cyBjYW4gYmUgbG9hZGVkIGZyb20gaHR0cHMgcGFnZXMuCisgICAgKi8KKyAgICBnX29iamVjdF9j
bGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9SVU5OSU5HX09GX0lOU0VDVVJFX0NPTlRFTlQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVh
bigiZW5hYmxlLXJ1bm5pbmctb2YtaW5zZWN1cmUtY29udGVudCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgcnVubmlu
ZyBvZiBpbnNlY3VyZSBjb250ZW50IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJDb250cm9scyBsb2FkIG9mIG5vbi1odHRwcyBz
Y3JpcHQgLyBwbHVnLWluIHJlc291cmNlcyBmcm9tIGh0dHBzIHBhZ2VzLiIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
YWdzKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfaW5pdChXZWJLaXRX
ZWJTZXR0aW5ncyogd2ViX3NldHRpbmdzKQpAQCAtMTE5NSw2ICsxMjI0LDEyIEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3Vp
bnQgcHJvcF9pZCwgY29uCiAgICAgY2FzZSBQUk9QX01FRElBX1BMQVlCQUNLX0FMTE9XU19JTkxJ
TkU6CiAgICAgICAgIHByaXYtPm1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmUgPSBnX3ZhbHVlX2dl
dF9ib29sZWFuKHZhbHVlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9E
SVNQTEFZX09GX0lOU0VDVVJFX0NPTlRFTlQ6CisgICAgICAgIHByaXYtPmVuYWJsZURpc3BsYXlP
Zkluc2VjdXJlQ29udGVudCA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1JVTk5JTkdfT0ZfSU5TRUNVUkVfQ09OVEVOVDoK
KyAgICAgICAgcHJpdi0+ZW5hYmxlUnVubmluZ09mSW5zZWN1cmVDb250ZW50ID0gZ192YWx1ZV9n
ZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVj
KTsKICAgICAgICAgYnJlYWs7CkBAIC0xMzY5LDYgKzE0MDQsMTIgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9w
X2lkLCBHVmEKICAgICBjYXNlIFBST1BfTUVESUFfUExBWUJBQ0tfQUxMT1dTX0lOTElORToKICAg
ICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+bWVkaWFQbGF5YmFja0FsbG93
c0lubGluZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfRElTUExBWV9P
Rl9JTlNFQ1VSRV9DT05URU5UOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBw
cml2LT5lbmFibGVEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfRU5BQkxFX1JVTk5JTkdfT0ZfSU5TRUNVUkVfQ09OVEVOVDoKKyAgICAgICAg
Z192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+ZW5hYmxlUnVubmluZ09mSW5zZWN1cmVD
b250ZW50KTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1Rf
V0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJz
ZXR0aW5nc3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0
aW5nc3ByaXZhdGUuaAppbmRleCA1ZWQyNGE1Li5mYmMzZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3Nwcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzcHJpdmF0ZS5oCkBAIC04Myw2ICs4
Myw4IEBAIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlIHsKICAgICBnYm9vbGVhbiBl
bmFibGVTbW9vdGhTY3JvbGxpbmc7CiAgICAgZ2Jvb2xlYW4gbWVkaWFQbGF5YmFja1JlcXVpcmVz
VXNlckdlc3R1cmU7CiAgICAgZ2Jvb2xlYW4gbWVkaWFQbGF5YmFja0FsbG93c0lubGluZTsKKyAg
ICBnYm9vbGVhbiBlbmFibGVEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQ7CisgICAgZ2Jvb2xlYW4g
ZW5hYmxlUnVubmluZ09mSW5zZWN1cmVDb250ZW50OwogfTsKIAogV0VCS0lUX0FQSSB2b2lkIHdl
YmtpdF93ZWJfc2V0dGluZ3NfYWRkX2V4dHJhX3BsdWdpbl9kaXJlY3RvcnkoV2ViS2l0V2ViVmll
dyosIGNvbnN0IGdjaGFyKiBkaXJlY3RvcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwCmluZGV4IGFhYzQ4N2YuLjcwY2RkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTM0MTAsNiArMzQxMCw4IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKICAgICBjb3JlU2V0dGluZ3MtPnNldEROU1ByZWZldGNoaW5nRW5hYmxlZChzZXR0aW5n
c1ByaXZhdGUtPmVuYWJsZUROU1ByZWZldGNoaW5nKTsKICAgICBjb3JlU2V0dGluZ3MtPnNldE1l
ZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKHNldHRpbmdzUHJpdmF0ZS0+bWVkaWFQbGF5
YmFja1JlcXVpcmVzVXNlckdlc3R1cmUpOwogICAgIGNvcmVTZXR0aW5ncy0+c2V0TWVkaWFQbGF5
YmFja0FsbG93c0lubGluZShzZXR0aW5nc1ByaXZhdGUtPm1lZGlhUGxheWJhY2tBbGxvd3NJbmxp
bmUpOworICAgIGNvcmVTZXR0aW5ncy0+c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQo
c2V0dGluZ3NQcml2YXRlLT5lbmFibGVEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQpOworICAgIGNv
cmVTZXR0aW5ncy0+c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoc2V0dGluZ3NQcml2
YXRlLT5lbmFibGVSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQpOwogCiAjaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKICAgICBBYnN0cmFjdERhdGFiYXNlOjpzZXRJc0F2YWlsYWJsZShzZXR0aW5nc1By
aXZhdGUtPmVuYWJsZUhUTUw1RGF0YWJhc2UpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGFkNDZjZjMuLjhlOGRiNzYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAx
Mi0wNi0yOCAgSm9zaCBSaWNrbWFyICA8anJpY2tAZGV2aW8udXM+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gQWRkIFdlYkNvcmU6OlNldHRp
bmcgdG8gYmxvY2sgZGlzcGxheWluZyBhbmQvb3IgcnVubmluZworICAgICAgICBpbnNlY3VyZSBj
b250ZW50IG9uIHNlY3VyZSBwYWdlcyBvbiBHVEsrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODM3OAorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoc2V0QWxsb3dEaXNwbGF5T2ZJbnNl
Y3VyZUNvbnRlbnRDYWxsYmFjayk6CisgICAgICAgIChzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJl
Q29udGVudENhbGxiYWNrKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNG
dW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3Rr
LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd0Rpc3BsYXlPZklu
c2VjdXJlQ29udGVudCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dS
dW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQpOgorCiAyMDEyLTA2LTI5ICBPc3dhbGQgQnVkZGVuaGFn
ZW4gIDxvc3dhbGQuYnVkZGVuaGFnZW5Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gU2ltcGxp
ZnkgZGV0ZWN0aW9uIG9mIG5vbi1pbnN0YWxsZWQgbW9kdWxlIGZpbGUKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBjZDAxZDFjLi4yNTg0NDM2
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBA
IC0xNDkyLDYgKzE0OTIsMTcgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0QWxsb3dVbml2ZXJzYWxB
Y2Nlc3NGcm9tRmlsZVVSTHNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGUKICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNl
dEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3Qg
YXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2Jq
ZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0QWxsb3dEaXNw
bGF5T2ZJbnNlY3VyZUNvbnRlbnQoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNb
MF0pKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwog
c3RhdGljIEpTVmFsdWVSZWYgc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgJiB3aW5kb3dz
IGltcGxlbWVudGF0aW9uCkBAIC0xNTA0LDYgKzE1MTUsMTcgQEAgc3RhdGljIEpTVmFsdWVSZWYg
c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEoKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0
YXRpYyBKU1ZhbHVlUmVmIHNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50Q2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwg
MSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAg
TGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0
Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJv
bGxlci0+c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoSlNWYWx1ZVRvQm9vbGVhbihj
b250ZXh0LCBhcmd1bWVudHNbMF0pKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgc2V0VGFiS2V5Q3ljbGVzVGhyb3Vn
aEVsZW1lbnRzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3Qg
SlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8v
IEhhcyBtYWMgJiB3aW5kb3dzIGltcGxlbWVudGF0aW9uCkBAIC0yMzYyLDcgKzIzODQsOSBAQCBK
U1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkK
ICAgICAgICAgeyAic2VuZFdlYkludGVudFJlc3BvbnNlIiwgc2VuZFdlYkludGVudFJlc3BvbnNl
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0QWNjZXB0c0VkaXRpbmciLCBzZXRBY2Nl
cHRzRWRpdGluZ0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEFsbG93VW5pdmVyc2Fs
QWNjZXNzRnJvbUZpbGVVUkxzIiwgc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHND
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29u
dGVudCIsIHNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50Q2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAic2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzIiwgc2V0QWxsb3dGaWxl
QWNjZXNzRnJvbUZpbGVVUkxzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0QWxsb3dS
dW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQiLCBzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVu
dENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEFsd2F5c0FjY2VwdENvb2tpZXMiLCBz
ZXRBbHdheXNBY2NlcHRDb29raWVzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0QXBw
Q2FjaGVNYXhpbXVtU2l6ZSIsIHNldEFwcENhY2hlTWF4aW11bVNpemVDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEiLCBzZXRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGFDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggNTRjYTkyNy4uZWMyY2NkMCAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC04OSw3ICs4OSw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmRXZWJJbnRlbnRSZXNwb25zZShKU1N0cmluZ1JlZiBy
ZXNwb25zZSk7CiAgICAgdm9pZCBzZXRBY2NlcHRzRWRpdGluZyhib29sIGFjY2VwdHNFZGl0aW5n
KTsKICAgICB2b2lkIHNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wpOwor
ICAgIHZvaWQgc2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCk7CiAgICAgdm9p
ZCBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCk7CisgICAgdm9pZCBzZXRBbGxv
d1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChib29sKTsKICAgICB2b2lkIHNldEFwcENhY2hlTWF4
aW11bVNpemUodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKTsKICAgICB2b2lkIHNldEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwogICAgIHZvaWQg
c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCBhNTI1NWMz
Li40ZDU3NmJiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVz
dENvbnRyb2xsZXJHdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRU
ZXN0Q29udHJvbGxlckd0ay5jcHAKQEAgLTQyOCw2ICs0MjgsMTUgQEAgdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBmbGFn
KQogICAgIGdfb2JqZWN0X3NldChHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtdW5pdmVyc2Fs
LWFjY2Vzcy1mcm9tLWZpbGUtdXJpcyIsIGZsYWcsIE5VTEwpOwogfQogCit2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChib29sIGZsYWcp
Cit7CisgICAgV2ViS2l0V2ViVmlldyogdmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92
aWV3KG1haW5GcmFtZSk7CisgICAgQVNTRVJUKHZpZXcpOworCisgICAgV2ViS2l0V2ViU2V0dGlu
Z3MqIHNldHRpbmdzID0gd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh2aWV3KTsKKyAgICBn
X29iamVjdF9zZXQoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWRpc3BsYXktb2YtaW5zZWN1
cmUtY29udGVudCIsIGZsYWcsIE5VTEwpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBmbGFnKQogewogICAgIFdlYktp
dFdlYlZpZXcqIHZpZXcgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUp
OwpAQCAtNDM3LDYgKzQ0NiwxNSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxv
d0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBmbGFnKQogICAgIGdfb2JqZWN0X3NldChHX09C
SkVDVChzZXR0aW5ncyksICJlbmFibGUtZmlsZS1hY2Nlc3MtZnJvbS1maWxlLXVyaXMiLCBmbGFn
LCBOVUxMKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dSdW5uaW5n
T2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCBmbGFnKQoreworICAgIFdlYktpdFdlYlZpZXcqIHZpZXcg
PSB3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOworICAgIEFTU0VSVCh2
aWV3KTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmll
d19nZXRfc2V0dGluZ3Modmlldyk7CisgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHNldHRpbmdz
KSwgImVuYWJsZS1ydW5uaW5nLW9mLWluc2VjdXJlLWNvbnRlbnQiLCBmbGFnLCBOVUxMKTsKK30K
Kwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJs
ZWQoYm9vbCBmbGFnKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQK
</data>
<flag name="commit-queue"
          id="158664"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150422</attachid>
            <date>2012-07-02 08:01:31 -0700</date>
            <delta_ts>2012-07-02 08:26:38 -0700</delta_ts>
            <desc>Plumbing #3</desc>
            <filename>plumbing-3.diff</filename>
            <type>text/plain</type>
            <size>17710</size>
            <attacher name="Josh Rickmar">jrick</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwppbmRleCAxNWYyOTMzLi4zOTA5MzI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTItMDYtMjkgIEpvc2ggUmlja21hciAgPGpyaWNrQGRldmlvLnVz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtd
IEFkZCBXZWJDb3JlOjpTZXR0aW5nIHRvIGJsb2NrIGRpc3BsYXlpbmcgYW5kL29yIHJ1bm5pbmcK
KyAgICAgICAgaW5zZWN1cmUgY29udGVudCBvbiBzZWN1cmUgcGFnZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4Mzc4CisKKyAgICAgICAgKiB3ZWJr
aXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19j
bGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3Byb3BlcnR5KToK
KyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdl
YmtpdF93ZWJfc2V0dGluZ3NfY29weSk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyk6CisgICAgICAg
ICh3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KToKKyAgICAgICAgUGx1bWJpbmcgZm9y
IGV4cG9zaW5nIG5ldyBzZXR0aW5ncyB0byBEUlQuCisKIDIwMTItMDYtMjkgIFRvbnkgQ2hhbmcg
IDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbR1RLXSBFbmFibGUgQ1NTIGdyaWQgbGF5
b3V0IExheW91dFRlc3RzIG9uIEdUSysKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vic2V0dGluZ3MuY3BwCmluZGV4IGNlODc3ZTQuLjRkNjgwNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcApAQCAtMTIzLDcgKzEyMyw5
IEBAIGVudW0gewogICAgIFBST1BfRU5BQkxFX0FDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HLAogICAg
IFBST1BfRU5BQkxFX1NNT09USF9TQ1JPTExJTkcsCiAgICAgUFJPUF9NRURJQV9QTEFZQkFDS19S
RVFVSVJFU19VU0VSX0dFU1RVUkUsCi0gICAgUFJPUF9NRURJQV9QTEFZQkFDS19BTExPV1NfSU5M
SU5FCisgICAgUFJPUF9NRURJQV9QTEFZQkFDS19BTExPV1NfSU5MSU5FLAorICAgIFBST1BfRU5B
QkxFX1JVTk5JTkdfT0ZfSU5TRUNVUkVfQ09OVEVOVCwKKyAgICBQUk9QX0VOQUJMRV9ESVNQTEFZ
X09GX0lOU0VDVVJFX0NPTlRFTlQKIH07CiAKIC8vIENyZWF0ZSBhIGRlZmF1bHQgdXNlciBhZ2Vu
dCBzdHJpbmcKQEAgLTEwMTEsNiArMTAxMywzMyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Nl
dHRpbmdzX2NsYXNzX2luaXQoV2ViS2l0V2ViU2V0dGluZ3NDbGFzcyoga2xhc3MpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmxhZ3MpKTsKIAorICAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLWRpc3Bs
YXktb2YtaW5zZWN1cmUtY29udGVudAorICAgICoKKyAgICAqIEJvb2xlYW4gcHJvcGVydHkgdG8g
Y29udHJvbCB3aGV0aGVyIGluc2VjdXJlIChub24taHR0cHMpIGltYWdlcyAvIGZyYW1lcyAKKyAg
ICAqIGNhbiBiZSBsb2FkZWQgZnJvbSBodHRwcyBwYWdlcy4KKyAgICAqLworICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0RJU1BMQVlfT0ZfSU5TRUNVUkVfQ09OVEVO
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29s
ZWFuKCJlbmFibGUtZGlzcGxheS1vZi1pbnNlY3VyZS1jb250ZW50IiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBkaXNw
bGF5IG9mIGluc2VjdXJlIGNvbnRlbnQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkNvbnRyb2xzIGxvYWQgb2Ygbm9uLWh0dHBz
IGRpc3BsYXkgcmVzb3VyY2VzIGZyb20gaHR0cHMgcGFnZXMiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOwor
CisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtcnVubmluZy1vZi1pbnNl
Y3VyZS1jb250ZW50CisgICAgKgorICAgICogQm9vbGVhbiBwcm9wZXJ0eSB0byBjb250cm9sIHdo
ZXRoZXIgaW5zZWN1cmUgKG5vbi1odHRwcykgc2NyaXB0IC8gQ1NTIC8gCisgICAgKiBwbHVnLWlu
cyBjYW4gYmUgbG9hZGVkIGZyb20gaHR0cHMgcGFnZXMuCisgICAgKi8KKyAgICBnX29iamVjdF9j
bGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9SVU5OSU5HX09GX0lOU0VDVVJFX0NPTlRFTlQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVh
bigiZW5hYmxlLXJ1bm5pbmctb2YtaW5zZWN1cmUtY29udGVudCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgcnVubmlu
ZyBvZiBpbnNlY3VyZSBjb250ZW50IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJDb250cm9scyBsb2FkIG9mIG5vbi1odHRwcyBz
Y3JpcHQgLyBwbHVnLWluIHJlc291cmNlcyBmcm9tIGh0dHBzIHBhZ2VzLiIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
YWdzKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfaW5pdChXZWJLaXRX
ZWJTZXR0aW5ncyogd2ViX3NldHRpbmdzKQpAQCAtMTE5NSw2ICsxMjI0LDEyIEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3Vp
bnQgcHJvcF9pZCwgY29uCiAgICAgY2FzZSBQUk9QX01FRElBX1BMQVlCQUNLX0FMTE9XU19JTkxJ
TkU6CiAgICAgICAgIHByaXYtPm1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmUgPSBnX3ZhbHVlX2dl
dF9ib29sZWFuKHZhbHVlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9E
SVNQTEFZX09GX0lOU0VDVVJFX0NPTlRFTlQ6CisgICAgICAgIHByaXYtPmVuYWJsZURpc3BsYXlP
Zkluc2VjdXJlQ29udGVudCA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1JVTk5JTkdfT0ZfSU5TRUNVUkVfQ09OVEVOVDoK
KyAgICAgICAgcHJpdi0+ZW5hYmxlUnVubmluZ09mSW5zZWN1cmVDb250ZW50ID0gZ192YWx1ZV9n
ZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVj
KTsKICAgICAgICAgYnJlYWs7CkBAIC0xMzY5LDYgKzE0MDQsMTIgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9w
X2lkLCBHVmEKICAgICBjYXNlIFBST1BfTUVESUFfUExBWUJBQ0tfQUxMT1dTX0lOTElORToKICAg
ICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+bWVkaWFQbGF5YmFja0FsbG93
c0lubGluZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfRElTUExBWV9P
Rl9JTlNFQ1VSRV9DT05URU5UOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBw
cml2LT5lbmFibGVEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfRU5BQkxFX1JVTk5JTkdfT0ZfSU5TRUNVUkVfQ09OVEVOVDoKKyAgICAgICAg
Z192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+ZW5hYmxlUnVubmluZ09mSW5zZWN1cmVD
b250ZW50KTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1Rf
V0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJz
ZXR0aW5nc3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0
aW5nc3ByaXZhdGUuaAppbmRleCA1ZWQyNGE1Li5mYmMzZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3Nwcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzcHJpdmF0ZS5oCkBAIC04Myw2ICs4
Myw4IEBAIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlIHsKICAgICBnYm9vbGVhbiBl
bmFibGVTbW9vdGhTY3JvbGxpbmc7CiAgICAgZ2Jvb2xlYW4gbWVkaWFQbGF5YmFja1JlcXVpcmVz
VXNlckdlc3R1cmU7CiAgICAgZ2Jvb2xlYW4gbWVkaWFQbGF5YmFja0FsbG93c0lubGluZTsKKyAg
ICBnYm9vbGVhbiBlbmFibGVEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQ7CisgICAgZ2Jvb2xlYW4g
ZW5hYmxlUnVubmluZ09mSW5zZWN1cmVDb250ZW50OwogfTsKIAogV0VCS0lUX0FQSSB2b2lkIHdl
YmtpdF93ZWJfc2V0dGluZ3NfYWRkX2V4dHJhX3BsdWdpbl9kaXJlY3RvcnkoV2ViS2l0V2ViVmll
dyosIGNvbnN0IGdjaGFyKiBkaXJlY3RvcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwCmluZGV4IGFhYzQ4N2YuLjcwY2RkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTM0MTAsNiArMzQxMCw4IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKICAgICBjb3JlU2V0dGluZ3MtPnNldEROU1ByZWZldGNoaW5nRW5hYmxlZChzZXR0aW5n
c1ByaXZhdGUtPmVuYWJsZUROU1ByZWZldGNoaW5nKTsKICAgICBjb3JlU2V0dGluZ3MtPnNldE1l
ZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKHNldHRpbmdzUHJpdmF0ZS0+bWVkaWFQbGF5
YmFja1JlcXVpcmVzVXNlckdlc3R1cmUpOwogICAgIGNvcmVTZXR0aW5ncy0+c2V0TWVkaWFQbGF5
YmFja0FsbG93c0lubGluZShzZXR0aW5nc1ByaXZhdGUtPm1lZGlhUGxheWJhY2tBbGxvd3NJbmxp
bmUpOworICAgIGNvcmVTZXR0aW5ncy0+c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQo
c2V0dGluZ3NQcml2YXRlLT5lbmFibGVEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQpOworICAgIGNv
cmVTZXR0aW5ncy0+c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoc2V0dGluZ3NQcml2
YXRlLT5lbmFibGVSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQpOwogCiAjaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKICAgICBBYnN0cmFjdERhdGFiYXNlOjpzZXRJc0F2YWlsYWJsZShzZXR0aW5nc1By
aXZhdGUtPmVuYWJsZUhUTUw1RGF0YWJhc2UpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGFkNDZjZjMuLjhlOGRiNzYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAx
Mi0wNi0yOCAgSm9zaCBSaWNrbWFyICA8anJpY2tAZGV2aW8udXM+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gQWRkIFdlYkNvcmU6OlNldHRp
bmcgdG8gYmxvY2sgZGlzcGxheWluZyBhbmQvb3IgcnVubmluZworICAgICAgICBpbnNlY3VyZSBj
b250ZW50IG9uIHNlY3VyZSBwYWdlcyBvbiBHVEsrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODM3OAorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoc2V0QWxsb3dEaXNwbGF5T2ZJbnNl
Y3VyZUNvbnRlbnRDYWxsYmFjayk6CisgICAgICAgIChzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJl
Q29udGVudENhbGxiYWNrKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNG
dW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3Rr
LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd0Rpc3BsYXlPZklu
c2VjdXJlQ29udGVudCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dS
dW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQpOgorCiAyMDEyLTA2LTI5ICBPc3dhbGQgQnVkZGVuaGFn
ZW4gIDxvc3dhbGQuYnVkZGVuaGFnZW5Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gU2ltcGxp
ZnkgZGV0ZWN0aW9uIG9mIG5vbi1pbnN0YWxsZWQgbW9kdWxlIGZpbGUKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBjZDAxZDFjLi4yNTg0NDM2
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBA
IC0xNDkyLDYgKzE0OTIsMTcgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0QWxsb3dVbml2ZXJzYWxB
Y2Nlc3NGcm9tRmlsZVVSTHNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGUKICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNl
dEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3Qg
YXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2Jq
ZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0QWxsb3dEaXNw
bGF5T2ZJbnNlY3VyZUNvbnRlbnQoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNb
MF0pKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwog
c3RhdGljIEpTVmFsdWVSZWYgc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgJiB3aW5kb3dz
IGltcGxlbWVudGF0aW9uCkBAIC0xNTA0LDYgKzE1MTUsMTcgQEAgc3RhdGljIEpTVmFsdWVSZWYg
c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEoKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0
YXRpYyBKU1ZhbHVlUmVmIHNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50Q2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwg
MSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAg
TGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0
Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJv
bGxlci0+c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoSlNWYWx1ZVRvQm9vbGVhbihj
b250ZXh0LCBhcmd1bWVudHNbMF0pKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgc2V0VGFiS2V5Q3ljbGVzVGhyb3Vn
aEVsZW1lbnRzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3Qg
SlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8v
IEhhcyBtYWMgJiB3aW5kb3dzIGltcGxlbWVudGF0aW9uCkBAIC0yMzYyLDcgKzIzODQsOSBAQCBK
U1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkK
ICAgICAgICAgeyAic2VuZFdlYkludGVudFJlc3BvbnNlIiwgc2VuZFdlYkludGVudFJlc3BvbnNl
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0QWNjZXB0c0VkaXRpbmciLCBzZXRBY2Nl
cHRzRWRpdGluZ0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEFsbG93VW5pdmVyc2Fs
QWNjZXNzRnJvbUZpbGVVUkxzIiwgc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHND
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29u
dGVudCIsIHNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50Q2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAic2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzIiwgc2V0QWxsb3dGaWxl
QWNjZXNzRnJvbUZpbGVVUkxzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0QWxsb3dS
dW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQiLCBzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVu
dENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEFsd2F5c0FjY2VwdENvb2tpZXMiLCBz
ZXRBbHdheXNBY2NlcHRDb29raWVzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0QXBw
Q2FjaGVNYXhpbXVtU2l6ZSIsIHNldEFwcENhY2hlTWF4aW11bVNpemVDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEiLCBzZXRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGFDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggNTRjYTkyNy4uZWMyY2NkMCAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC04OSw3ICs4OSw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmRXZWJJbnRlbnRSZXNwb25zZShKU1N0cmluZ1JlZiBy
ZXNwb25zZSk7CiAgICAgdm9pZCBzZXRBY2NlcHRzRWRpdGluZyhib29sIGFjY2VwdHNFZGl0aW5n
KTsKICAgICB2b2lkIHNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wpOwor
ICAgIHZvaWQgc2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCk7CiAgICAgdm9p
ZCBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCk7CisgICAgdm9pZCBzZXRBbGxv
d1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChib29sKTsKICAgICB2b2lkIHNldEFwcENhY2hlTWF4
aW11bVNpemUodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKTsKICAgICB2b2lkIHNldEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwogICAgIHZvaWQg
c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcAppbmRleCAwNzBhZjhj
Li5jNzA0NTUzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVz
dENvbnRyb2xsZXJFZmwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRU
ZXN0Q29udHJvbGxlckVmbC5jcHAKQEAgLTM3NSwxMSArMzc1LDIxIEBAIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wpCiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd0ZpbGVBY2Nlc3NG
cm9tRmlsZVVSTHMoYm9vbCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudENhbGxi
YWNrKGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYm9vbCBmbGFnKQogewog
ICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJs
ZWQoYnJvd3Nlci0+bWFpblZpZXcoKSwgZmxhZyk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJHdGsuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcAppbmRleCBhNTI1NWMzLi40ZDU3
NmJiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRy
b2xsZXJHdGsuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9MYXlvdXRUZXN0Q29u
dHJvbGxlckd0ay5jcHAKQEAgLTQyOCw2ICs0MjgsMTUgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBmbGFnKQogICAg
IGdfb2JqZWN0X3NldChHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtdW5pdmVyc2FsLWFjY2Vz
cy1mcm9tLWZpbGUtdXJpcyIsIGZsYWcsIE5VTEwpOwogfQogCit2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChib29sIGZsYWcpCit7Cisg
ICAgV2ViS2l0V2ViVmlldyogdmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1h
aW5GcmFtZSk7CisgICAgQVNTRVJUKHZpZXcpOworCisgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHNl
dHRpbmdzID0gd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh2aWV3KTsKKyAgICBnX29iamVj
dF9zZXQoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLWRpc3BsYXktb2YtaW5zZWN1cmUtY29u
dGVudCIsIGZsYWcsIE5VTEwpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRB
bGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBmbGFnKQogewogICAgIFdlYktpdFdlYlZp
ZXcqIHZpZXcgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOwpAQCAt
NDM3LDYgKzQ0NiwxNSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd0ZpbGVB
Y2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBmbGFnKQogICAgIGdfb2JqZWN0X3NldChHX09CSkVDVChz
ZXR0aW5ncyksICJlbmFibGUtZmlsZS1hY2Nlc3MtZnJvbS1maWxlLXVyaXMiLCBmbGFnLCBOVUxM
KTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dSdW5uaW5nT2ZJbnNl
Y3VyZUNvbnRlbnQoYm9vbCBmbGFnKQoreworICAgIFdlYktpdFdlYlZpZXcqIHZpZXcgPSB3ZWJr
aXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUpOworICAgIEFTU0VSVCh2aWV3KTsK
KworICAgIFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmlld19nZXRf
c2V0dGluZ3Modmlldyk7CisgICAgZ19vYmplY3Rfc2V0KEdfT0JKRUNUKHNldHRpbmdzKSwgImVu
YWJsZS1ydW5uaW5nLW9mLWluc2VjdXJlLWNvbnRlbnQiLCBmbGFnLCBOVUxMKTsKK30KKwogdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYm9v
bCBmbGFnKQogewogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbSBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQppbmRleCA4ODQ1NzJlLi44
ODdiMjAyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENv
bnRyb2xsZXJNYWMubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RD
b250cm9sbGVyTWFjLm1tCkBAIC01ODEsMTEgKzU4MSwyMSBAQCB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRBbGxvd1VuaXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhib29sIGVuYWJsZWQp
CiAgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXRBbGxvd1VuaXZlcnNh
bEFjY2Vzc0Zyb21GaWxlVVJMczplbmFibGVkXTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCBlbmFibGVkKQorewor
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxlZCkKIHsKICAgICBbW1tt
YWluRnJhbWUgd2ViVmlld10gcHJlZmVyZW5jZXNdIHNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxl
VVJMczplbmFibGVkXTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dS
dW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCBlbmFibGVkKQoreworICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0UG9wdXBCbG9ja2lu
Z0VuYWJsZWQoYm9vbCBwb3B1cEJsb2NraW5nRW5hYmxlZCkKIHsKICAgICBbW1ttYWluRnJhbWUg
d2ViVmlld10gcHJlZmVyZW5jZXNdIHNldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRp
Y2FsbHk6IXBvcHVwQmxvY2tpbmdFbmFibGVkXTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJRdC5jcHAKaW5kZXggNTEyYmRhMS4uOWRiNDE2MSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5jcHAKQEAgLTQ2MiwxMSArNDYyLDIxIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxlZCkKICAgICBtX2Ry
dC0+d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdzOjpMb2Nh
bENvbnRlbnRDYW5BY2Nlc3NSZW1vdGVVcmxzLCBlbmFibGVkKTsKIH0KIAordm9pZCBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCBlbmFi
bGVkKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcworfQorCiB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGVk
KQogewogICAgIG1fZHJ0LT53ZWJQYWdlKCktPnNldHRpbmdzKCktPnNldEF0dHJpYnV0ZShRV2Vi
U2V0dGluZ3M6OkxvY2FsQ29udGVudENhbkFjY2Vzc0ZpbGVVcmxzLCBlbmFibGVkKTsKIH0KIAor
dm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRl
bnQoYm9vbCBlbmFibGVkKQoreworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcworfQorCiB2
b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBcHBDYWNoZU1heGltdW1TaXplKHVuc2lnbmVk
IGxvbmcgbG9uZyBxdW90YSkKIHsKICAgICBtX2RydC0+d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5z
ZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZVF1b3RhKHF1b3RhKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuaAppbmRleCBhZGJlOTE0Li4z
MzM2ZmI5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29u
dHJvbGxlclF0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRy
b2xsZXJRdC5oCkBAIC0xNTYsNyArMTU2LDkgQEAgcHVibGljIHNsb3RzOgogICAgIHZvaWQgc2V0
RnJhbWVGbGF0dGVuaW5nRW5hYmxlZChib29sIGVuYWJsZSk7CiAgICAgdm9pZCBzZXRNb2NrU2Ny
b2xsYmFyc0VuYWJsZWQoYm9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0QWxsb3dVbml2ZXJzYWxB
Y2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGUpOworICAgIHZvaWQgc2V0QWxsb3dEaXNwbGF5
T2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0QWxsb3dGaWxlQWNj
ZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxlKTsKKyAgICB2b2lkIHNldEFsbG93UnVubmluZ09m
SW5zZWN1cmVDb250ZW50KGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNldEFwcENhY2hlTWF4aW11
bVNpemUodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKTsKICAgICB2b2lkIHNldEF1dG9maWxsZWQo
Y29uc3QgUVdlYkVsZW1lbnQmLCBib29sIGVuYWJsZSk7CiAgICAgdm9pZCBzZXRWYWx1ZUZvclVz
ZXIoY29uc3QgUVdlYkVsZW1lbnQmLCBjb25zdCBRU3RyaW5nJiB2YWx1ZSk7CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcAppbmRl
eCA5ZDAzYWJjLi5mOGZmYmExIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
TGF5b3V0VGVzdENvbnRyb2xsZXJXaW4uY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKQEAgLTU0Myw2ICs1NDMsMTEgQEAgdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMo
Ym9vbCBlbmFibGVkKQogICAgIHByZWZzUHJpdmF0ZS0+c2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NG
cm9tRmlsZVVSTHMoZW5hYmxlZCk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KGJvb2wgZW5hYmxlZCkKK3sKKyAgICAvLyBG
SVhNRTogaW1wbGVtZW50IQorfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxv
d0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGVkKQogewogICAgIENPTVB0cjxJV2Vi
Vmlldz4gd2ViVmlldzsKQEAgLTU2MCw2ICs1NjUsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxlZCkKICAgICBw
cmVmc1ByaXZhdGUtPnNldEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhlbmFibGVkKTsKIH0K
IAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNv
bnRlbnQoYm9vbCBlbmFibGVkKQoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQhCit9CisKIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFBvcHVwQmxvY2tpbmdFbmFibGVkKGJvb2wgZW5h
YmxlZCkKIHsKICAgICBDT01QdHI8SVdlYlZpZXc+IHdlYlZpZXc7Cg==
</data>
<flag name="commit-queue"
          id="158669"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150427</attachid>
            <date>2012-07-02 08:26:38 -0700</date>
            <delta_ts>2012-07-05 06:03:00 -0700</delta_ts>
            <desc>Plumbing #3</desc>
            <filename>plumbing-3.diff</filename>
            <type>text/plain</type>
            <size>17702</size>
            <attacher name="Josh Rickmar">jrick</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwppbmRleCAxNWYyOTMzLi4zOTA5MzI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTItMDYtMjkgIEpvc2ggUmlja21hciAgPGpyaWNrQGRldmlvLnVz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtd
IEFkZCBXZWJDb3JlOjpTZXR0aW5nIHRvIGJsb2NrIGRpc3BsYXlpbmcgYW5kL29yIHJ1bm5pbmcK
KyAgICAgICAgaW5zZWN1cmUgY29udGVudCBvbiBzZWN1cmUgcGFnZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4Mzc4CisKKyAgICAgICAgKiB3ZWJr
aXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19j
bGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3Byb3BlcnR5KToK
KyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdl
YmtpdF93ZWJfc2V0dGluZ3NfY29weSk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyk6CisgICAgICAg
ICh3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KToKKyAgICAgICAgUGx1bWJpbmcgZm9y
IGV4cG9zaW5nIG5ldyBzZXR0aW5ncyB0byBEUlQuCisKIDIwMTItMDYtMjkgIFRvbnkgQ2hhbmcg
IDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbR1RLXSBFbmFibGUgQ1NTIGdyaWQgbGF5
b3V0IExheW91dFRlc3RzIG9uIEdUSysKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vic2V0dGluZ3MuY3BwCmluZGV4IGNlODc3ZTQuLjRkNjgwNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcApAQCAtMTIzLDcgKzEyMyw5
IEBAIGVudW0gewogICAgIFBST1BfRU5BQkxFX0FDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HLAogICAg
IFBST1BfRU5BQkxFX1NNT09USF9TQ1JPTExJTkcsCiAgICAgUFJPUF9NRURJQV9QTEFZQkFDS19S
RVFVSVJFU19VU0VSX0dFU1RVUkUsCi0gICAgUFJPUF9NRURJQV9QTEFZQkFDS19BTExPV1NfSU5M
SU5FCisgICAgUFJPUF9NRURJQV9QTEFZQkFDS19BTExPV1NfSU5MSU5FLAorICAgIFBST1BfRU5B
QkxFX1JVTk5JTkdfT0ZfSU5TRUNVUkVfQ09OVEVOVCwKKyAgICBQUk9QX0VOQUJMRV9ESVNQTEFZ
X09GX0lOU0VDVVJFX0NPTlRFTlQKIH07CiAKIC8vIENyZWF0ZSBhIGRlZmF1bHQgdXNlciBhZ2Vu
dCBzdHJpbmcKQEAgLTEwMTEsNiArMTAxMywzMyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3Nl
dHRpbmdzX2NsYXNzX2luaXQoV2ViS2l0V2ViU2V0dGluZ3NDbGFzcyoga2xhc3MpCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmxhZ3MpKTsKIAorICAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLWRpc3Bs
YXktb2YtaW5zZWN1cmUtY29udGVudAorICAgICoKKyAgICAqIEJvb2xlYW4gcHJvcGVydHkgdG8g
Y29udHJvbCB3aGV0aGVyIGluc2VjdXJlIChub24taHR0cHMpIGltYWdlcyAvIGZyYW1lcyAKKyAg
ICAqIGNhbiBiZSBsb2FkZWQgZnJvbSBodHRwcyBwYWdlcy4KKyAgICAqLworICAgIGdfb2JqZWN0
X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0RJU1BMQVlfT0ZfSU5TRUNVUkVfQ09OVEVO
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29s
ZWFuKCJlbmFibGUtZGlzcGxheS1vZi1pbnNlY3VyZS1jb250ZW50IiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBkaXNw
bGF5IG9mIGluc2VjdXJlIGNvbnRlbnQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIkNvbnRyb2xzIGxvYWQgb2Ygbm9uLWh0dHBz
IGRpc3BsYXkgcmVzb3VyY2VzIGZyb20gaHR0cHMgcGFnZXMiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOwor
CisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtcnVubmluZy1vZi1pbnNl
Y3VyZS1jb250ZW50CisgICAgKgorICAgICogQm9vbGVhbiBwcm9wZXJ0eSB0byBjb250cm9sIHdo
ZXRoZXIgaW5zZWN1cmUgKG5vbi1odHRwcykgc2NyaXB0IC8gQ1NTIC8gCisgICAgKiBwbHVnLWlu
cyBjYW4gYmUgbG9hZGVkIGZyb20gaHR0cHMgcGFnZXMuCisgICAgKi8KKyAgICBnX29iamVjdF9j
bGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9SVU5OSU5HX09GX0lOU0VDVVJFX0NPTlRFTlQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVh
bigiZW5hYmxlLXJ1bm5pbmctb2YtaW5zZWN1cmUtY29udGVudCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgcnVubmlu
ZyBvZiBpbnNlY3VyZSBjb250ZW50IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJDb250cm9scyBsb2FkIG9mIG5vbi1odHRwcyBz
Y3JpcHQgLyBwbHVnLWluIHJlc291cmNlcyBmcm9tIGh0dHBzIHBhZ2VzLiIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZs
YWdzKSk7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfaW5pdChXZWJLaXRX
ZWJTZXR0aW5ncyogd2ViX3NldHRpbmdzKQpAQCAtMTE5NSw2ICsxMjI0LDEyIEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3Vp
bnQgcHJvcF9pZCwgY29uCiAgICAgY2FzZSBQUk9QX01FRElBX1BMQVlCQUNLX0FMTE9XU19JTkxJ
TkU6CiAgICAgICAgIHByaXYtPm1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmUgPSBnX3ZhbHVlX2dl
dF9ib29sZWFuKHZhbHVlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9E
SVNQTEFZX09GX0lOU0VDVVJFX0NPTlRFTlQ6CisgICAgICAgIHByaXYtPmVuYWJsZURpc3BsYXlP
Zkluc2VjdXJlQ29udGVudCA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX1JVTk5JTkdfT0ZfSU5TRUNVUkVfQ09OVEVOVDoK
KyAgICAgICAgcHJpdi0+ZW5hYmxlUnVubmluZ09mSW5zZWN1cmVDb250ZW50ID0gZ192YWx1ZV9n
ZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVj
KTsKICAgICAgICAgYnJlYWs7CkBAIC0xMzY5LDYgKzE0MDQsMTIgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9w
X2lkLCBHVmEKICAgICBjYXNlIFBST1BfTUVESUFfUExBWUJBQ0tfQUxMT1dTX0lOTElORToKICAg
ICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+bWVkaWFQbGF5YmFja0FsbG93
c0lubGluZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfRElTUExBWV9P
Rl9JTlNFQ1VSRV9DT05URU5UOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBw
cml2LT5lbmFibGVEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfRU5BQkxFX1JVTk5JTkdfT0ZfSU5TRUNVUkVfQ09OVEVOVDoKKyAgICAgICAg
Z192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+ZW5hYmxlUnVubmluZ09mSW5zZWN1cmVD
b250ZW50KTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1Rf
V0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJz
ZXR0aW5nc3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0
aW5nc3ByaXZhdGUuaAppbmRleCA1ZWQyNGE1Li5mYmMzZWI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3Nwcml2YXRlLmgKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzcHJpdmF0ZS5oCkBAIC04Myw2ICs4
Myw4IEBAIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlIHsKICAgICBnYm9vbGVhbiBl
bmFibGVTbW9vdGhTY3JvbGxpbmc7CiAgICAgZ2Jvb2xlYW4gbWVkaWFQbGF5YmFja1JlcXVpcmVz
VXNlckdlc3R1cmU7CiAgICAgZ2Jvb2xlYW4gbWVkaWFQbGF5YmFja0FsbG93c0lubGluZTsKKyAg
ICBnYm9vbGVhbiBlbmFibGVEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQ7CisgICAgZ2Jvb2xlYW4g
ZW5hYmxlUnVubmluZ09mSW5zZWN1cmVDb250ZW50OwogfTsKIAogV0VCS0lUX0FQSSB2b2lkIHdl
YmtpdF93ZWJfc2V0dGluZ3NfYWRkX2V4dHJhX3BsdWdpbl9kaXJlY3RvcnkoV2ViS2l0V2ViVmll
dyosIGNvbnN0IGdjaGFyKiBkaXJlY3RvcnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwCmluZGV4IGFhYzQ4N2YuLjcwY2RkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTM0MTAsNiArMzQxMCw4IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0dGluZ3MoV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKICAgICBjb3JlU2V0dGluZ3MtPnNldEROU1ByZWZldGNoaW5nRW5hYmxlZChzZXR0aW5n
c1ByaXZhdGUtPmVuYWJsZUROU1ByZWZldGNoaW5nKTsKICAgICBjb3JlU2V0dGluZ3MtPnNldE1l
ZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKHNldHRpbmdzUHJpdmF0ZS0+bWVkaWFQbGF5
YmFja1JlcXVpcmVzVXNlckdlc3R1cmUpOwogICAgIGNvcmVTZXR0aW5ncy0+c2V0TWVkaWFQbGF5
YmFja0FsbG93c0lubGluZShzZXR0aW5nc1ByaXZhdGUtPm1lZGlhUGxheWJhY2tBbGxvd3NJbmxp
bmUpOworICAgIGNvcmVTZXR0aW5ncy0+c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQo
c2V0dGluZ3NQcml2YXRlLT5lbmFibGVEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQpOworICAgIGNv
cmVTZXR0aW5ncy0+c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoc2V0dGluZ3NQcml2
YXRlLT5lbmFibGVSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQpOwogCiAjaWYgRU5BQkxFKFNRTF9E
QVRBQkFTRSkKICAgICBBYnN0cmFjdERhdGFiYXNlOjpzZXRJc0F2YWlsYWJsZShzZXR0aW5nc1By
aXZhdGUtPmVuYWJsZUhUTUw1RGF0YWJhc2UpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGFkNDZjZjMuLjhlOGRiNzYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAx
Mi0wNi0yOCAgSm9zaCBSaWNrbWFyICA8anJpY2tAZGV2aW8udXM+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0dUS10gQWRkIFdlYkNvcmU6OlNldHRp
bmcgdG8gYmxvY2sgZGlzcGxheWluZyBhbmQvb3IgcnVubmluZworICAgICAgICBpbnNlY3VyZSBj
b250ZW50IG9uIHNlY3VyZSBwYWdlcyBvbiBHVEsrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODM3OAorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoc2V0QWxsb3dEaXNwbGF5T2ZJbnNl
Y3VyZUNvbnRlbnRDYWxsYmFjayk6CisgICAgICAgIChzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJl
Q29udGVudENhbGxiYWNrKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNG
dW5jdGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
Lmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3Rr
LmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd0Rpc3BsYXlPZklu
c2VjdXJlQ29udGVudCk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dS
dW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQpOgorCiAyMDEyLTA2LTI5ICBPc3dhbGQgQnVkZGVuaGFn
ZW4gIDxvc3dhbGQuYnVkZGVuaGFnZW5Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gU2ltcGxp
ZnkgZGV0ZWN0aW9uIG9mIG5vbi1pbnN0YWxsZWQgbW9kdWxlIGZpbGUKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBjZDAxZDFjLi4yNTg0NDM2
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBA
IC0xNDkyLDYgKzE0OTIsMTcgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2V0QWxsb3dVbml2ZXJzYWxB
Y2Nlc3NGcm9tRmlsZVVSTHNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGUKICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHNl
dEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3Qg
YXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiog
ZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwgMSkKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgTGF5b3V0VGVzdENvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2Jq
ZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0QWxsb3dEaXNw
bGF5T2ZJbnNlY3VyZUNvbnRlbnQoSlNWYWx1ZVRvQm9vbGVhbihjb250ZXh0LCBhcmd1bWVudHNb
MF0pKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwog
c3RhdGljIEpTVmFsdWVSZWYgc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8vIEhhcyBtYWMgJiB3aW5kb3dz
IGltcGxlbWVudGF0aW9uCkBAIC0xNTA0LDYgKzE1MTUsMTcgQEAgc3RhdGljIEpTVmFsdWVSZWYg
c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRl
eHQsIEoKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0
YXRpYyBKU1ZhbHVlUmVmIHNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50Q2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENvdW50IDwg
MSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAg
TGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0
Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJv
bGxlci0+c2V0QWxsb3dSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQoSlNWYWx1ZVRvQm9vbGVhbihj
b250ZXh0LCBhcmd1bWVudHNbMF0pKTsKKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgc2V0VGFiS2V5Q3ljbGVzVGhyb3Vn
aEVsZW1lbnRzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0
aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3Qg
SlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIC8v
IEhhcyBtYWMgJiB3aW5kb3dzIGltcGxlbWVudGF0aW9uCkBAIC0yMzYyLDcgKzIzODQsOSBAQCBK
U1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKCkK
ICAgICAgICAgeyAic2VuZFdlYkludGVudFJlc3BvbnNlIiwgc2VuZFdlYkludGVudFJlc3BvbnNl
Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0QWNjZXB0c0VkaXRpbmciLCBzZXRBY2Nl
cHRzRWRpdGluZ0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEFsbG93VW5pdmVyc2Fs
QWNjZXNzRnJvbUZpbGVVUkxzIiwgc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHND
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJzZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29u
dGVudCIsIHNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50Q2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAic2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzIiwgc2V0QWxsb3dGaWxl
QWNjZXNzRnJvbUZpbGVVUkxzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAic2V0QWxsb3dS
dW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQiLCBzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVu
dENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInNldEFsd2F5c0FjY2VwdENvb2tpZXMiLCBz
ZXRBbHdheXNBY2NlcHRDb29raWVzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAic2V0QXBw
Q2FjaGVNYXhpbXVtU2l6ZSIsIHNldEFwcENhY2hlTWF4aW11bVNpemVDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJzZXRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEiLCBzZXRBcHBsaWNh
dGlvbkNhY2hlT3JpZ2luUXVvdGFDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggNTRjYTkyNy4uZWMyY2NkMCAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC04OSw3ICs4OSw5
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNlbmRXZWJJbnRlbnRSZXNwb25zZShKU1N0cmluZ1JlZiBy
ZXNwb25zZSk7CiAgICAgdm9pZCBzZXRBY2NlcHRzRWRpdGluZyhib29sIGFjY2VwdHNFZGl0aW5n
KTsKICAgICB2b2lkIHNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wpOwor
ICAgIHZvaWQgc2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCk7CiAgICAgdm9p
ZCBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCk7CisgICAgdm9pZCBzZXRBbGxv
d1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChib29sKTsKICAgICB2b2lkIHNldEFwcENhY2hlTWF4
aW11bVNpemUodW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKTsKICAgICB2b2lkIHNldEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YSh1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpOwogICAgIHZvaWQg
c2V0QXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVzdENvbnRyb2xsZXJFZmwuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvZWZsL0xheW91dFRlc3RDb250cm9sbGVyRWZsLmNwcAppbmRleCAwNzBhZjhj
Li5mNjVkY2Q1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvTGF5b3V0VGVz
dENvbnRyb2xsZXJFZmwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9MYXlvdXRU
ZXN0Q29udHJvbGxlckVmbC5jcHAKQEAgLTM3NSwxMSArMzc1LDIxIEBAIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wpCiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd0ZpbGVBY2Nlc3NG
cm9tRmlsZVVSTHMoYm9vbCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIExh
eW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChib29s
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xs
ZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wgZmxhZykKIHsKICAgICBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGJyb3dz
ZXItPm1haW5WaWV3KCksIGZsYWcpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Z3RrL0xheW91dFRlc3RDb250cm9sbGVyR3RrLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2d0
ay9MYXlvdXRUZXN0Q29udHJvbGxlckd0ay5jcHAKaW5kZXggYTUyNTVjMy4uNGQ1NzZiYiAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0xheW91dFRlc3RDb250cm9sbGVyR3Rr
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9ndGsvTGF5b3V0VGVzdENvbnRyb2xsZXJH
dGsuY3BwCkBAIC00MjgsNiArNDI4LDE1IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZmxhZykKICAgICBnX29iamVj
dF9zZXQoR19PQkpFQ1Qoc2V0dGluZ3MpLCAiZW5hYmxlLXVuaXZlcnNhbC1hY2Nlc3MtZnJvbS1m
aWxlLXVyaXMiLCBmbGFnLCBOVUxMKTsKIH0KIAordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0QWxsb3dEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoYm9vbCBmbGFnKQoreworICAgIFdlYktp
dFdlYlZpZXcqIHZpZXcgPSB3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhtYWluRnJhbWUp
OworICAgIEFTU0VSVCh2aWV3KTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzKiBzZXR0aW5ncyA9
IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Modmlldyk7CisgICAgZ19vYmplY3Rfc2V0KEdf
T0JKRUNUKHNldHRpbmdzKSwgImVuYWJsZS1kaXNwbGF5LW9mLWluc2VjdXJlLWNvbnRlbnQiLCBm
bGFnLCBOVUxMKTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dGaWxl
QWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZmxhZykKIHsKICAgICBXZWJLaXRXZWJWaWV3KiB2aWV3
ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcobWFpbkZyYW1lKTsKQEAgLTQzNyw2ICs0
NDYsMTUgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dGaWxlQWNjZXNzRnJv
bUZpbGVVUkxzKGJvb2wgZmxhZykKICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qoc2V0dGluZ3Mp
LCAiZW5hYmxlLWZpbGUtYWNjZXNzLWZyb20tZmlsZS11cmlzIiwgZmxhZywgTlVMTCk7CiB9CiAK
K3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250
ZW50KGJvb2wgZmxhZykKK3sKKyAgICBXZWJLaXRXZWJWaWV3KiB2aWV3ID0gd2Via2l0X3dlYl9m
cmFtZV9nZXRfd2ViX3ZpZXcobWFpbkZyYW1lKTsKKyAgICBBU1NFUlQodmlldyk7CisKKyAgICBX
ZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdz
KHZpZXcpOworICAgIGdfb2JqZWN0X3NldChHX09CSkVDVChzZXR0aW5ncyksICJlbmFibGUtcnVu
bmluZy1vZi1pbnNlY3VyZS1jb250ZW50IiwgZmxhZywgTlVMTCk7Cit9CisKIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldEF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKGJvb2wgZmxhZykK
IHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0KaW5kZXggODg0NTcyZS4uODg3YjIwMiAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVy
TWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxl
ck1hYy5tbQpAQCAtNTgxLDExICs1ODEsMjEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NGcm9tRmlsZVVSTHMoYm9vbCBlbmFibGVkKQogICAgIFtb
W21haW5GcmFtZSB3ZWJWaWV3XSBwcmVmZXJlbmNlc10gc2V0QWxsb3dVbml2ZXJzYWxBY2Nlc3NG
cm9tRmlsZVVSTHM6ZW5hYmxlZF07CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KGJvb2wgZW5hYmxlZCkKK3sKKyAgICAvLyBG
SVhNRTogaW1wbGVtZW50Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93
RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhib29sIGVuYWJsZWQpCiB7CiAgICAgW1tbbWFpbkZyYW1l
IHdlYlZpZXddIHByZWZlcmVuY2VzXSBzZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHM6ZW5h
YmxlZF07CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93UnVubmluZ09m
SW5zZWN1cmVDb250ZW50KGJvb2wgZW5hYmxlZCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50
Cit9CisKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFBvcHVwQmxvY2tpbmdFbmFibGVk
KGJvb2wgcG9wdXBCbG9ja2luZ0VuYWJsZWQpCiB7CiAgICAgW1tbbWFpbkZyYW1lIHdlYlZpZXdd
IHByZWZlcmVuY2VzXSBzZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5OiFw
b3B1cEJsb2NraW5nRW5hYmxlZF07CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9x
dC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xh
eW91dFRlc3RDb250cm9sbGVyUXQuY3BwCmluZGV4IDUxMmJkYTEuLjlkYjQxNjEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCisr
KyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQuY3BwCkBA
IC00NjIsMTEgKzQ2MiwyMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd1Vu
aXZlcnNhbEFjY2Vzc0Zyb21GaWxlVVJMcyhib29sIGVuYWJsZWQpCiAgICAgbV9kcnQtPndlYlBh
Z2UoKS0+c2V0dGluZ3MoKS0+c2V0QXR0cmlidXRlKFFXZWJTZXR0aW5nczo6TG9jYWxDb250ZW50
Q2FuQWNjZXNzUmVtb3RlVXJscywgZW5hYmxlZCk7CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KGJvb2wgZW5hYmxlZCkKK3sK
KyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxlZCkKIHsKICAg
ICBtX2RydC0+d2ViUGFnZSgpLT5zZXR0aW5ncygpLT5zZXRBdHRyaWJ1dGUoUVdlYlNldHRpbmdz
OjpMb2NhbENvbnRlbnRDYW5BY2Nlc3NGaWxlVXJscywgZW5hYmxlZCk7CiB9CiAKK3ZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KGJvb2wg
ZW5hYmxlZCkKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMKK30KKwogdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0QXBwQ2FjaGVNYXhpbXVtU2l6ZSh1bnNpZ25lZCBsb25nIGxv
bmcgcXVvdGEpCiB7CiAgICAgbV9kcnQtPndlYlBhZ2UoKS0+c2V0dGluZ3MoKS0+c2V0T2ZmbGlu
ZVdlYkFwcGxpY2F0aW9uQ2FjaGVRdW90YShxdW90YSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmggYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9xdC9MYXlvdXRUZXN0Q29udHJvbGxlclF0LmgKaW5kZXggYWRiZTkxNC4uMzMzNmZiOSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvTGF5b3V0VGVzdENvbnRyb2xsZXJR
dC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0xheW91dFRlc3RDb250cm9sbGVyUXQu
aApAQCAtMTU2LDcgKzE1Niw5IEBAIHB1YmxpYyBzbG90czoKICAgICB2b2lkIHNldEZyYW1lRmxh
dHRlbmluZ0VuYWJsZWQoYm9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0TW9ja1Njcm9sbGJhcnNF
bmFibGVkKGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJv
bUZpbGVVUkxzKGJvb2wgZW5hYmxlKTsKKyAgICB2b2lkIHNldEFsbG93RGlzcGxheU9mSW5zZWN1
cmVDb250ZW50KGJvb2wgZW5hYmxlKTsKICAgICB2b2lkIHNldEFsbG93RmlsZUFjY2Vzc0Zyb21G
aWxlVVJMcyhib29sIGVuYWJsZSk7CisgICAgdm9pZCBzZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJl
Q29udGVudChib29sIGVuYWJsZSk7CiAgICAgdm9pZCBzZXRBcHBDYWNoZU1heGltdW1TaXplKHVu
c2lnbmVkIGxvbmcgbG9uZyBxdW90YSk7CiAgICAgdm9pZCBzZXRBdXRvZmlsbGVkKGNvbnN0IFFX
ZWJFbGVtZW50JiwgYm9vbCBlbmFibGUpOwogICAgIHZvaWQgc2V0VmFsdWVGb3JVc2VyKGNvbnN0
IFFXZWJFbGVtZW50JiwgY29uc3QgUVN0cmluZyYgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRlc3RDb250cm9sbGVyV2luLmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9MYXlvdXRUZXN0Q29udHJvbGxlcldpbi5jcHAKaW5kZXggOWQwM2Fi
Yy4uZjhmZmJhMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0xheW91dFRl
c3RDb250cm9sbGVyV2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vTGF5b3V0
VGVzdENvbnRyb2xsZXJXaW4uY3BwCkBAIC01NDMsNiArNTQzLDExIEBAIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5h
YmxlZCkKICAgICBwcmVmc1ByaXZhdGUtPnNldEFsbG93VW5pdmVyc2FsQWNjZXNzRnJvbUZpbGVV
UkxzKGVuYWJsZWQpOwogfQogCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBbGxvd0Rp
c3BsYXlPZkluc2VjdXJlQ29udGVudChib29sIGVuYWJsZWQpCit7CisgICAgLy8gRklYTUU6IGlt
cGxlbWVudCEKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWxsb3dGaWxlQWNj
ZXNzRnJvbUZpbGVVUkxzKGJvb2wgZW5hYmxlZCkKIHsKICAgICBDT01QdHI8SVdlYlZpZXc+IHdl
YlZpZXc7CkBAIC01NjAsNiArNTY1LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dEFsbG93RmlsZUFjY2Vzc0Zyb21GaWxlVVJMcyhib29sIGVuYWJsZWQpCiAgICAgcHJlZnNQcml2
YXRlLT5zZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHMoZW5hYmxlZCk7CiB9CiAKK3ZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KGJv
b2wgZW5hYmxlZCkKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IQorfQorCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRQb3B1cEJsb2NraW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB7
CiAgICAgQ09NUHRyPElXZWJWaWV3PiB3ZWJWaWV3Owo=
</data>
<flag name="review"
          id="158889"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150612</attachid>
            <date>2012-07-03 08:13:57 -0700</date>
            <delta_ts>2012-07-05 06:03:00 -0700</delta_ts>
            <desc>Plumbing #3</desc>
            <filename>plumbing-3.diff</filename>
            <type>text/plain</type>
            <size>6264</size>
            <attacher name="Josh Rickmar">jrick</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwppbmRleCBiMWE3YzFjLi5jMzVjODE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTItMDctMDMgIEpvc2ggUmlja21hciAgPGpyaWNrQGRldmlvLnVz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtd
IEFkZCBXZWJDb3JlOjpTZXR0aW5nIHRvIGJsb2NrIGRpc3BsYXlpbmcgYW5kL29yIHJ1bm5pbmcK
KyAgICAgICAgaW5zZWN1cmUgY29udGVudCBvbiBzZWN1cmUgcGFnZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4Mzc4CisKKyAgICAgICAgKiB3ZWJr
aXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19j
bGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3Byb3BlcnR5KToK
KyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdl
YmtpdF93ZWJfc2V0dGluZ3NfY29weSk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyk6CisgICAgICAg
ICh3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KToKKwogMjAxMi0wNy0wMiAgQmVuamFt
aW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBEbyBub3QgZG8gYW55
IGxvZ2dpbmcgaW5pdGlhbGl6YXRpb24gd2hlbiBsb2dnaW5nIGlzIGRpc2FibGVkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwIGIvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcAppbmRleCBjZTg3N2U0
Li40NzkyNmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
c2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0
aW5ncy5jcHAKQEAgLTEyMyw3ICsxMjMsOSBAQCBlbnVtIHsKICAgICBQUk9QX0VOQUJMRV9BQ0NF
TEVSQVRFRF9DT01QT1NJVElORywKICAgICBQUk9QX0VOQUJMRV9TTU9PVEhfU0NST0xMSU5HLAog
ICAgIFBST1BfTUVESUFfUExBWUJBQ0tfUkVRVUlSRVNfVVNFUl9HRVNUVVJFLAotICAgIFBST1Bf
TUVESUFfUExBWUJBQ0tfQUxMT1dTX0lOTElORQorICAgIFBST1BfTUVESUFfUExBWUJBQ0tfQUxM
T1dTX0lOTElORSwKKyAgICBQUk9QX0VOQUJMRV9SVU5OSU5HX09GX0lOU0VDVVJFX0NPTlRFTlQs
CisgICAgUFJPUF9FTkFCTEVfRElTUExBWV9PRl9JTlNFQ1VSRV9DT05URU5UCiB9OwogCiAvLyBD
cmVhdGUgYSBkZWZhdWx0IHVzZXIgYWdlbnQgc3RyaW5nCkBAIC0xMDExLDYgKzEwMTMsMzcgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19jbGFzc19pbml0KFdlYktpdFdlYlNldHRp
bmdzQ2xhc3MqIGtsYXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVFJVRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CiAKKyAgICAvKioKKyAgICAqIFdlYktp
dFdlYlNldHRpbmdzOmVuYWJsZS1kaXNwbGF5LW9mLWluc2VjdXJlLWNvbnRlbnQKKyAgICAqCisg
ICAgKiBCb29sZWFuIHByb3BlcnR5IHRvIGNvbnRyb2wgd2hldGhlciBpbnNlY3VyZSAobm9uLWh0
dHBzKSBpbWFnZXMgLyBmcmFtZXMgCisgICAgKiBjYW4gYmUgbG9hZGVkIGZyb20gaHR0cHMgcGFn
ZXMuCisgICAgKgorICAgICogU2luY2U6IDEuOS41CisgICAgKi8KKyAgICBnX29iamVjdF9jbGFz
c19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9ESVNQTEFZX09GX0lOU0VDVVJFX0NPTlRFTlQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigi
ZW5hYmxlLWRpc3BsYXktb2YtaW5zZWN1cmUtY29udGVudCIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJFbmFibGUgZGlzcGxheSBv
ZiBpbnNlY3VyZSBjb250ZW50IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBfKCJDb250cm9scyBsb2FkIG9mIG5vbi1odHRwcyBkaXNw
bGF5IHJlc291cmNlcyBmcm9tIGh0dHBzIHBhZ2VzIiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKworICAg
IC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLXJ1bm5pbmctb2YtaW5zZWN1cmUt
Y29udGVudAorICAgICoKKyAgICAqIEJvb2xlYW4gcHJvcGVydHkgdG8gY29udHJvbCB3aGV0aGVy
IGluc2VjdXJlIChub24taHR0cHMpIHNjcmlwdCAvIENTUyAvIAorICAgICogcGx1Zy1pbnMgY2Fu
IGJlIGxvYWRlZCBmcm9tIGh0dHBzIHBhZ2VzLgorICAgICoKKyAgICAqIFNpbmNlOiAxLjkuNQor
ICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFCTEVfUlVOTklO
R19PRl9JTlNFQ1VSRV9DT05URU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1ydW5uaW5nLW9mLWluc2VjdXJlLWNvbnRl
bnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXygiRW5hYmxlIHJ1bm5pbmcgb2YgaW5zZWN1cmUgY29udGVudCIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiQ29udHJv
bHMgbG9hZCBvZiBub24taHR0cHMgc2NyaXB0IC8gcGx1Zy1pbiByZXNvdXJjZXMgZnJvbSBodHRw
cyBwYWdlcy4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbGFncykpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X3NldHRpbmdzX2luaXQoV2ViS2l0V2ViU2V0dGluZ3MqIHdlYl9zZXR0aW5ncykKQEAgLTExOTUs
NiArMTIyOCwxMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9wcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbgogICAgIGNhc2UgUFJPUF9NRURJ
QV9QTEFZQkFDS19BTExPV1NfSU5MSU5FOgogICAgICAgICBwcml2LT5tZWRpYVBsYXliYWNrQWxs
b3dzSW5saW5lID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9FTkFCTEVfRElTUExBWV9PRl9JTlNFQ1VSRV9DT05URU5UOgorICAgICAg
ICBwcml2LT5lbmFibGVEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQgPSBnX3ZhbHVlX2dldF9ib29s
ZWFuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9SVU5OSU5H
X09GX0lOU0VDVVJFX0NPTlRFTlQ6CisgICAgICAgIHByaXYtPmVuYWJsZVJ1bm5pbmdPZkluc2Vj
dXJlQ29udGVudCA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBicmVhazsK
ICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQo
b2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTM2OSw2ICsxNDA4
LDEyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KEdPYmpl
Y3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhCiAgICAgY2FzZSBQUk9QX01FRElBX1BMQVlC
QUNLX0FMTE9XU19JTkxJTkU6CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHBy
aXYtPm1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBST1BfRU5BQkxFX0RJU1BMQVlfT0ZfSU5TRUNVUkVfQ09OVEVOVDoKKyAgICAgICAgZ192YWx1
ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+ZW5hYmxlRGlzcGxheU9mSW5zZWN1cmVDb250ZW50
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9SVU5OSU5HX09GX0lOU0VD
VVJFX0NPTlRFTlQ6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPmVu
YWJsZVJ1bm5pbmdPZkluc2VjdXJlQ29udGVudCk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1
bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHBy
b3BfaWQsIHBzcGVjKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3Nwcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3Nwcml2YXRlLmgKaW5kZXggNWVkMjRhNS4uZmJjM2Vi
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdz
cHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5n
c3ByaXZhdGUuaApAQCAtODMsNiArODMsOCBAQCBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzUHJp
dmF0ZSB7CiAgICAgZ2Jvb2xlYW4gZW5hYmxlU21vb3RoU2Nyb2xsaW5nOwogICAgIGdib29sZWFu
IG1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlOwogICAgIGdib29sZWFuIG1lZGlhUGxh
eWJhY2tBbGxvd3NJbmxpbmU7CisgICAgZ2Jvb2xlYW4gZW5hYmxlRGlzcGxheU9mSW5zZWN1cmVD
b250ZW50OworICAgIGdib29sZWFuIGVuYWJsZVJ1bm5pbmdPZkluc2VjdXJlQ29udGVudDsKIH07
CiAKIFdFQktJVF9BUEkgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2FkZF9leHRyYV9wbHVnaW5f
ZGlyZWN0b3J5KFdlYktpdFdlYlZpZXcqLCBjb25zdCBnY2hhciogZGlyZWN0b3J5KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCBhYWM0ODdmLi43MGNk
ZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC0z
NDEwLDYgKzM0MTAsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRp
bmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgY29yZVNldHRpbmdzLT5zZXRETlNQcmVm
ZXRjaGluZ0VuYWJsZWQoc2V0dGluZ3NQcml2YXRlLT5lbmFibGVETlNQcmVmZXRjaGluZyk7CiAg
ICAgY29yZVNldHRpbmdzLT5zZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZShzZXR0
aW5nc1ByaXZhdGUtPm1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKTsKICAgICBjb3Jl
U2V0dGluZ3MtPnNldE1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmUoc2V0dGluZ3NQcml2YXRlLT5t
ZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lKTsKKyAgICBjb3JlU2V0dGluZ3MtPnNldEFsbG93RGlz
cGxheU9mSW5zZWN1cmVDb250ZW50KHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxlRGlzcGxheU9mSW5z
ZWN1cmVDb250ZW50KTsKKyAgICBjb3JlU2V0dGluZ3MtPnNldEFsbG93UnVubmluZ09mSW5zZWN1
cmVDb250ZW50KHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxlUnVubmluZ09mSW5zZWN1cmVDb250ZW50
KTsKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiAgICAgQWJzdHJhY3REYXRhYmFzZTo6c2V0
SXNBdmFpbGFibGUoc2V0dGluZ3NQcml2YXRlLT5lbmFibGVIVE1MNURhdGFiYXNlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150931</attachid>
            <date>2012-07-05 06:03:00 -0700</date>
            <delta_ts>2022-02-28 04:01:52 -0800</delta_ts>
            <desc>Plumbing #3</desc>
            <filename>plumbing-3.diff</filename>
            <type>text/plain</type>
            <size>6274</size>
            <attacher name="Josh Rickmar">jrick</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwppbmRleCBiMWE3YzFjLi5jMzVjODE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTItMDctMDMgIEpvc2ggUmlja21hciAgPGpyaWNrQGRldmlvLnVz
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtd
IEFkZCBXZWJDb3JlOjpTZXR0aW5nIHRvIGJsb2NrIGRpc3BsYXlpbmcgYW5kL29yIHJ1bm5pbmcK
KyAgICAgICAgaW5zZWN1cmUgY29udGVudCBvbiBzZWN1cmUgcGFnZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4Mzc4CisKKyAgICAgICAgKiB3ZWJr
aXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19j
bGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3Byb3BlcnR5KToK
KyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdl
YmtpdF93ZWJfc2V0dGluZ3NfY29weSk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyk6CisgICAgICAg
ICh3ZWJraXRfd2ViX3ZpZXdfc2V0dGluZ3Nfbm90aWZ5KToKKwogMjAxMi0wNy0wMiAgQmVuamFt
aW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBEbyBub3QgZG8gYW55
IGxvZ2dpbmcgaW5pdGlhbGl6YXRpb24gd2hlbiBsb2dnaW5nIGlzIGRpc2FibGVkCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwIGIvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcAppbmRleCBjZTg3N2U0
Li5mNTUyNzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
c2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0
aW5ncy5jcHAKQEAgLTEyMyw3ICsxMjMsOSBAQCBlbnVtIHsKICAgICBQUk9QX0VOQUJMRV9BQ0NF
TEVSQVRFRF9DT01QT1NJVElORywKICAgICBQUk9QX0VOQUJMRV9TTU9PVEhfU0NST0xMSU5HLAog
ICAgIFBST1BfTUVESUFfUExBWUJBQ0tfUkVRVUlSRVNfVVNFUl9HRVNUVVJFLAotICAgIFBST1Bf
TUVESUFfUExBWUJBQ0tfQUxMT1dTX0lOTElORQorICAgIFBST1BfTUVESUFfUExBWUJBQ0tfQUxM
T1dTX0lOTElORSwKKyAgICBQUk9QX0VOQUJMRV9SVU5OSU5HX09GX0lOU0VDVVJFX0NPTlRFTlQs
CisgICAgUFJPUF9FTkFCTEVfRElTUExBWV9PRl9JTlNFQ1VSRV9DT05URU5UCiB9OwogCiAvLyBD
cmVhdGUgYSBkZWZhdWx0IHVzZXIgYWdlbnQgc3RyaW5nCkBAIC0xMDExLDYgKzEwMTMsMzggQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19jbGFzc19pbml0KFdlYktpdFdlYlNldHRp
bmdzQ2xhc3MqIGtsYXNzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVFJVRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CiAKKyAgICAvKioKKyAgICAqIFdlYktp
dFdlYlNldHRpbmdzOmVuYWJsZS1kaXNwbGF5LW9mLWluc2VjdXJlLWNvbnRlbnQKKyAgICAqCisg
ICAgKiBXaGV0aGVyIGlzIGl0IHBvc3NpYmxlIGZvciBwYWdlcyBsb2FkZWQgdmlhIEhUVFBTIHRv
IGRpc3BsYXkKKyAgICAqIHN1YnJlc291cmNlcywgc3VjaCBhcyBpbWFnZXMgYW5kIGZyYW1lcywg
ZnJvbSBub24tSFRUUFMgVVJMcy4KKyAgICAqCisgICAgKiBTaW5jZTogMS45LjUKKyAgICAqLwor
ICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfRU5BQkxFX0RJU1BMQVlfT0ZfSU5T
RUNVUkVfQ09OVEVOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFy
YW1fc3BlY19ib29sZWFuKCJlbmFibGUtZGlzcGxheS1vZi1pbnNlY3VyZS1jb250ZW50IiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8o
IkVuYWJsZSBkaXNwbGF5IG9mIGluc2VjdXJlIGNvbnRlbnQiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIldoZXRoZXIgbm9uLUhU
VFBTIHJlc291cmNlcyBjYW4gZGlzcGxheSBvbiBIVFRQUyBwYWdlcy4iKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFn
cykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0aW5nczplbmFibGUtcnVubmluZy1v
Zi1pbnNlY3VyZS1jb250ZW50CisgICAgKgorICAgICogV2hldGhlciBpcyBpdCBwb3NzaWJsZSBm
b3IgcGFnZXMgbG9hZGVkIHZpYSBIVFRQUyB0byBydW4KKyAgICAqIHN1YnJlc291cmNlcywgc3Vj
aCBhcyBDU1MsIHNjcmlwdHMgYW5kIHBsdWdpbnMsIGZyb20gbm9uLUhUVFBTCisgICAgKiBVUkxz
LgorICAgICoKKyAgICAqIFNpbmNlOiAxLjkuNQorICAgICovCisgICAgZ19vYmplY3RfY2xhc3Nf
aW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUFJPUF9FTkFCTEVfUlVOTklOR19PRl9JTlNFQ1VSRV9DT05URU5ULAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVu
YWJsZS1ydW5uaW5nLW9mLWluc2VjdXJlLWNvbnRlbnQiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIHJ1bm5pbmcgb2Yg
aW5zZWN1cmUgY29udGVudCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXygiV2hldGhlciBub24tSFRUUFMgcmVzb3VyY2VzIGNhbiBy
dW4gb24gSFRUUFMgcGFnZXMuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKIH0KIAogc3RhdGljIHZvaWQg
d2Via2l0X3dlYl9zZXR0aW5nc19pbml0KFdlYktpdFdlYlNldHRpbmdzKiB3ZWJfc2V0dGluZ3Mp
CkBAIC0xMTk1LDYgKzEyMjksMTIgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19z
ZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb24KICAgICBjYXNl
IFBST1BfTUVESUFfUExBWUJBQ0tfQUxMT1dTX0lOTElORToKICAgICAgICAgcHJpdi0+bWVkaWFQ
bGF5YmFja0FsbG93c0lubGluZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOwogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0RJU1BMQVlfT0ZfSU5TRUNVUkVfQ09OVEVO
VDoKKyAgICAgICAgcHJpdi0+ZW5hYmxlRGlzcGxheU9mSW5zZWN1cmVDb250ZW50ID0gZ192YWx1
ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFC
TEVfUlVOTklOR19PRl9JTlNFQ1VSRV9DT05URU5UOgorICAgICAgICBwcml2LT5lbmFibGVSdW5u
aW5nT2ZJbnNlY3VyZUNvbnRlbnQgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BS
T1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAgICBicmVhazsKQEAgLTEz
NjksNiArMTQwOSwxMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9wcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYQogICAgIGNhc2UgUFJPUF9N
RURJQV9QTEFZQkFDS19BTExPV1NfSU5MSU5FOgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFu
KHZhbHVlLCBwcml2LT5tZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lKTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBQUk9QX0VOQUJMRV9ESVNQTEFZX09GX0lOU0VDVVJFX0NPTlRFTlQ6CisgICAg
ICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPmVuYWJsZURpc3BsYXlPZkluc2Vj
dXJlQ29udGVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfUlVOTklO
R19PRl9JTlNFQ1VSRV9DT05URU5UOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVl
LCBwcml2LT5lbmFibGVSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQpOworICAgICAgICBicmVhazsK
ICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQo
b2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzcHJpdmF0ZS5oIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzcHJpdmF0ZS5oCmluZGV4IDVlZDI0
YTUuLmZiYzNlYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJzZXR0aW5nc3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vic2V0dGluZ3Nwcml2YXRlLmgKQEAgLTgzLDYgKzgzLDggQEAgc3RydWN0IF9XZWJLaXRXZWJT
ZXR0aW5nc1ByaXZhdGUgewogICAgIGdib29sZWFuIGVuYWJsZVNtb290aFNjcm9sbGluZzsKICAg
ICBnYm9vbGVhbiBtZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZTsKICAgICBnYm9vbGVh
biBtZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lOworICAgIGdib29sZWFuIGVuYWJsZURpc3BsYXlP
Zkluc2VjdXJlQ29udGVudDsKKyAgICBnYm9vbGVhbiBlbmFibGVSdW5uaW5nT2ZJbnNlY3VyZUNv
bnRlbnQ7CiB9OwogCiBXRUJLSVRfQVBJIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19hZGRfZXh0
cmFfcGx1Z2luX2RpcmVjdG9yeShXZWJLaXRXZWJWaWV3KiwgY29uc3QgZ2NoYXIqIGRpcmVjdG9y
eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggYWFj
NDg3Zi4uNzBjZGQxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmNwcApAQCAtMzQxMCw2ICszNDEwLDggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3Vw
ZGF0ZV9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGNvcmVTZXR0aW5ncy0+
c2V0RE5TUHJlZmV0Y2hpbmdFbmFibGVkKHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxlRE5TUHJlZmV0
Y2hpbmcpOwogICAgIGNvcmVTZXR0aW5ncy0+c2V0TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdl
c3R1cmUoc2V0dGluZ3NQcml2YXRlLT5tZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZSk7
CiAgICAgY29yZVNldHRpbmdzLT5zZXRNZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lKHNldHRpbmdz
UHJpdmF0ZS0+bWVkaWFQbGF5YmFja0FsbG93c0lubGluZSk7CisgICAgY29yZVNldHRpbmdzLT5z
ZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJlQ29udGVudChzZXR0aW5nc1ByaXZhdGUtPmVuYWJsZURp
c3BsYXlPZkluc2VjdXJlQ29udGVudCk7CisgICAgY29yZVNldHRpbmdzLT5zZXRBbGxvd1J1bm5p
bmdPZkluc2VjdXJlQ29udGVudChzZXR0aW5nc1ByaXZhdGUtPmVuYWJsZVJ1bm5pbmdPZkluc2Vj
dXJlQ29udGVudCk7CiAKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogICAgIEFic3RyYWN0RGF0
YWJhc2U6OnNldElzQXZhaWxhYmxlKHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxlSFRNTDVEYXRhYmFz
ZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155814</attachid>
            <date>2012-08-01 08:36:23 -0700</date>
            <delta_ts>2012-11-12 06:15:21 -0800</delta_ts>
            <desc>Plumbing #3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>6234</size>
            <attacher name="Josh Rickmar">jrick</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwppbmRleCA1OTk0M2M3Li4wYTIzMzkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTItMDctMDMgIEpvc2ggUmlja21hciAgPGpyaWNrQGRldmlvLnVz
PgorCisgICAgICAgIEFkZCBXZWJDb3JlOjpTZXR0aW5nIHRvIGJsb2NrIGRpc3BsYXlpbmcgYW5k
L29yIHJ1bm5pbmcgaW5zZWN1cmUgY29udGVudCBvbiBzZWN1cmUgcGFnZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4Mzc4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vic2V0
dGluZ3MuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19jbGFzc19pbml0KToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtp
dF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGlu
Z3NfY29weSk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyk6CisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfc2V0dGluZ3Nfbm90aWZ5KToKKwogMjAxMi0wNy0zMSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjEyNDIwNy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJz
ZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3Mu
Y3BwCmluZGV4IGNlODc3ZTQuLmY1NTI3ODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcApAQCAtMTIzLDcgKzEyMyw5IEBAIGVudW0gewogICAg
IFBST1BfRU5BQkxFX0FDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HLAogICAgIFBST1BfRU5BQkxFX1NN
T09USF9TQ1JPTExJTkcsCiAgICAgUFJPUF9NRURJQV9QTEFZQkFDS19SRVFVSVJFU19VU0VSX0dF
U1RVUkUsCi0gICAgUFJPUF9NRURJQV9QTEFZQkFDS19BTExPV1NfSU5MSU5FCisgICAgUFJPUF9N
RURJQV9QTEFZQkFDS19BTExPV1NfSU5MSU5FLAorICAgIFBST1BfRU5BQkxFX1JVTk5JTkdfT0Zf
SU5TRUNVUkVfQ09OVEVOVCwKKyAgICBQUk9QX0VOQUJMRV9ESVNQTEFZX09GX0lOU0VDVVJFX0NP
TlRFTlQKIH07CiAKIC8vIENyZWF0ZSBhIGRlZmF1bHQgdXNlciBhZ2VudCBzdHJpbmcKQEAgLTEw
MTEsNiArMTAxMywzOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2NsYXNzX2lu
aXQoV2ViS2l0V2ViU2V0dGluZ3NDbGFzcyoga2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKIAorICAg
IC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5hYmxlLWRpc3BsYXktb2YtaW5zZWN1cmUt
Y29udGVudAorICAgICoKKyAgICAqIFdoZXRoZXIgaXMgaXQgcG9zc2libGUgZm9yIHBhZ2VzIGxv
YWRlZCB2aWEgSFRUUFMgdG8gZGlzcGxheQorICAgICogc3VicmVzb3VyY2VzLCBzdWNoIGFzIGlt
YWdlcyBhbmQgZnJhbWVzLCBmcm9tIG5vbi1IVFRQUyBVUkxzLgorICAgICoKKyAgICAqIFNpbmNl
OiAxLjkuNQorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2Jq
ZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9FTkFC
TEVfRElTUExBWV9PRl9JTlNFQ1VSRV9DT05URU5ULAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJsZS1kaXNwbGF5LW9mLWluc2Vj
dXJlLWNvbnRlbnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXygiRW5hYmxlIGRpc3BsYXkgb2YgaW5zZWN1cmUgY29udGVudCIpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XygiV2hldGhlciBub24tSFRUUFMgcmVzb3VyY2VzIGNhbiBkaXNwbGF5IG9uIEhUVFBTIHBhZ2Vz
LiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVFJVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGZsYWdzKSk7CisKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdz
OmVuYWJsZS1ydW5uaW5nLW9mLWluc2VjdXJlLWNvbnRlbnQKKyAgICAqCisgICAgKiBXaGV0aGVy
IGlzIGl0IHBvc3NpYmxlIGZvciBwYWdlcyBsb2FkZWQgdmlhIEhUVFBTIHRvIHJ1bgorICAgICog
c3VicmVzb3VyY2VzLCBzdWNoIGFzIENTUywgc2NyaXB0cyBhbmQgcGx1Z2lucywgZnJvbSBub24t
SFRUUFMKKyAgICAqIFVSTHMuCisgICAgKgorICAgICogU2luY2U6IDEuOS41CisgICAgKi8KKyAg
ICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX0VOQUJMRV9SVU5OSU5HX09GX0lOU0VD
VVJFX0NPTlRFTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFt
X3NwZWNfYm9vbGVhbigiZW5hYmxlLXJ1bm5pbmctb2YtaW5zZWN1cmUtY29udGVudCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJF
bmFibGUgcnVubmluZyBvZiBpbnNlY3VyZSBjb250ZW50IiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJXaGV0aGVyIG5vbi1IVFRQ
UyByZXNvdXJjZXMgY2FuIHJ1biBvbiBIVFRQUyBwYWdlcy4iKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncykpOwog
fQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2luaXQoV2ViS2l0V2ViU2V0dGlu
Z3MqIHdlYl9zZXR0aW5ncykKQEAgLTExOTUsNiArMTIyOSwxMiBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3NldHRpbmdzX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3Bf
aWQsIGNvbgogICAgIGNhc2UgUFJPUF9NRURJQV9QTEFZQkFDS19BTExPV1NfSU5MSU5FOgogICAg
ICAgICBwcml2LT5tZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lID0gZ192YWx1ZV9nZXRfYm9vbGVh
bih2YWx1ZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfRElTUExBWV9P
Rl9JTlNFQ1VSRV9DT05URU5UOgorICAgICAgICBwcml2LT5lbmFibGVEaXNwbGF5T2ZJbnNlY3Vy
ZUNvbnRlbnQgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQUk9QX0VOQUJMRV9SVU5OSU5HX09GX0lOU0VDVVJFX0NPTlRFTlQ6CisgICAgICAg
IHByaXYtPmVuYWJsZVJ1bm5pbmdPZkluc2VjdXJlQ29udGVudCA9IGdfdmFsdWVfZ2V0X2Jvb2xl
YW4odmFsdWUpOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVD
VF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtMTM2OSw2ICsxNDA5LDEyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1Zh
CiAgICAgY2FzZSBQUk9QX01FRElBX1BMQVlCQUNLX0FMTE9XU19JTkxJTkU6CiAgICAgICAgIGdf
dmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPm1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmUp
OwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0RJU1BMQVlfT0ZfSU5TRUNV
UkVfQ09OVEVOVDoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbih2YWx1ZSwgcHJpdi0+ZW5h
YmxlRGlzcGxheU9mSW5zZWN1cmVDb250ZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQ
Uk9QX0VOQUJMRV9SVU5OSU5HX09GX0lOU0VDVVJFX0NPTlRFTlQ6CisgICAgICAgIGdfdmFsdWVf
c2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPmVuYWJsZVJ1bm5pbmdPZkluc2VjdXJlQ29udGVudCk7
CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5W
QUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKICAgICAgICAgYnJlYWs7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3Nw
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3Nwcml2
YXRlLmgKaW5kZXggNWVkMjRhNS4uZmJjM2ViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5nc3ByaXZhdGUuaApAQCAtODMsNiArODMsOCBAQCBz
dHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSB7CiAgICAgZ2Jvb2xlYW4gZW5hYmxlU21v
b3RoU2Nyb2xsaW5nOwogICAgIGdib29sZWFuIG1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0
dXJlOwogICAgIGdib29sZWFuIG1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmU7CisgICAgZ2Jvb2xl
YW4gZW5hYmxlRGlzcGxheU9mSW5zZWN1cmVDb250ZW50OworICAgIGdib29sZWFuIGVuYWJsZVJ1
bm5pbmdPZkluc2VjdXJlQ29udGVudDsKIH07CiAKIFdFQktJVF9BUEkgdm9pZCB3ZWJraXRfd2Vi
X3NldHRpbmdzX2FkZF9leHRyYV9wbHVnaW5fZGlyZWN0b3J5KFdlYktpdFdlYlZpZXcqLCBjb25z
dCBnY2hhciogZGlyZWN0b3J5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcAppbmRleCA2ZGJkNWExLi44MjUzOGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC0zNDE0LDYgKzM0MTQsOCBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfdXBkYXRlX3NldHRpbmdzKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAg
ICAgY29yZVNldHRpbmdzLT5zZXRETlNQcmVmZXRjaGluZ0VuYWJsZWQoc2V0dGluZ3NQcml2YXRl
LT5lbmFibGVETlNQcmVmZXRjaGluZyk7CiAgICAgY29yZVNldHRpbmdzLT5zZXRNZWRpYVBsYXli
YWNrUmVxdWlyZXNVc2VyR2VzdHVyZShzZXR0aW5nc1ByaXZhdGUtPm1lZGlhUGxheWJhY2tSZXF1
aXJlc1VzZXJHZXN0dXJlKTsKICAgICBjb3JlU2V0dGluZ3MtPnNldE1lZGlhUGxheWJhY2tBbGxv
d3NJbmxpbmUoc2V0dGluZ3NQcml2YXRlLT5tZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lKTsKKyAg
ICBjb3JlU2V0dGluZ3MtPnNldEFsbG93RGlzcGxheU9mSW5zZWN1cmVDb250ZW50KHNldHRpbmdz
UHJpdmF0ZS0+ZW5hYmxlRGlzcGxheU9mSW5zZWN1cmVDb250ZW50KTsKKyAgICBjb3JlU2V0dGlu
Z3MtPnNldEFsbG93UnVubmluZ09mSW5zZWN1cmVDb250ZW50KHNldHRpbmdzUHJpdmF0ZS0+ZW5h
YmxlUnVubmluZ09mSW5zZWN1cmVDb250ZW50KTsKIAogI2lmIEVOQUJMRShTUUxfREFUQUJBU0Up
CiAgICAgQWJzdHJhY3REYXRhYmFzZTo6c2V0SXNBdmFpbGFibGUoc2V0dGluZ3NQcml2YXRlLT5l
bmFibGVIVE1MNURhdGFiYXNlKTsK
</data>
<flag name="review"
          id="165356"
          type_id="1"
          status="-"
          setter="gustavo"
    />
    <flag name="commit-queue"
          id="185890"
          type_id="3"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173635</attachid>
            <date>2012-11-12 06:15:21 -0800</date>
            <delta_ts>2012-11-12 14:24:49 -0800</delta_ts>
            <desc>Plumbing #3</desc>
            <filename>plumbing3.patch</filename>
            <type>text/plain</type>
            <size>6209</size>
            <attacher name="Josh Rickmar">jrick</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwppbmRleCBlYzFkMGVmLi4zZjJhMzg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTItMDctMDMgIEpvc2ggUmlja21hciAgPGpyaWNrQGRldmlvLnVz
PgorCisgICAgICAgIEFkZCBXZWJDb3JlOjpTZXR0aW5nIHRvIGJsb2NrIGRpc3BsYXlpbmcgYW5k
L29yIHJ1bm5pbmcgaW5zZWN1cmUgY29udGVudCBvbiBzZWN1cmUgcGFnZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4Mzc4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vic2V0
dGluZ3MuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19jbGFzc19pbml0KToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtp
dF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGlu
Z3NfY29weSk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyk6CisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfc2V0dGluZ3Nfbm90aWZ5KToKKwogMjAxMi0xMS0wNSAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbGF5ZXIgYm9yZGVycyB0byBjbGVhbmlu
ZyBhcHBlYXIgYW5kIGRpc2FwcGVhciBvbiBzd2l0Y2hpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCmluZGV4IGRkODAxNzUuLjI4YzE5MzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcApAQCAt
MTIwLDcgKzEyMCw5IEBAIGVudW0gewogICAgIFBST1BfRU5BQkxFX1NNT09USF9TQ1JPTExJTkcs
CiAgICAgUFJPUF9NRURJQV9QTEFZQkFDS19SRVFVSVJFU19VU0VSX0dFU1RVUkUsCiAgICAgUFJP
UF9NRURJQV9QTEFZQkFDS19BTExPV1NfSU5MSU5FLAotICAgIFBST1BfRU5BQkxFX0NTU19TSEFE
RVJTCisgICAgUFJPUF9FTkFCTEVfQ1NTX1NIQURFUlMsCisgICAgUFJPUF9FTkFCTEVfUlVOTklO
R19PRl9JTlNFQ1VSRV9DT05URU5ULAorICAgIFBST1BfRU5BQkxFX0RJU1BMQVlfT0ZfSU5TRUNV
UkVfQ09OVEVOVAogfTsKIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19maW5hbGl6
ZShHT2JqZWN0KiBvYmplY3QpOwpAQCAtOTgxLDYgKzk4MywzNyBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3NldHRpbmdzX2NsYXNzX2luaXQoV2ViS2l0V2ViU2V0dGluZ3NDbGFzcyoga2xhc3Mp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsYWdzKSk7CiAKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVu
YWJsZS1kaXNwbGF5LW9mLWluc2VjdXJlLWNvbnRlbnQKKyAgICAqCisgICAgKiBXaGV0aGVyIHBh
Z2VzIGxvYWRlZCB2aWEgSFRUUFMgc2hvdWxkIGxvYWQgc3VicmVzb3VyY2VzIHN1Y2ggYXMKKyAg
ICAqIGltYWdlcyBhbmQgZnJhbWVzIGZyb20gbm9uLUhUVFBTIFVSTHMuIAorICAgICoKKyAgICAq
IFNpbmNlOiAyLjAKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
Z29iamVjdF9jbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1Bf
RU5BQkxFX0RJU1BMQVlfT0ZfSU5TRUNVUkVfQ09OVEVOVCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuKCJlbmFibGUtZGlzcGxheS1vZi1p
bnNlY3VyZS1jb250ZW50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF8oIkVuYWJsZSBkaXNwbGF5IG9mIGluc2VjdXJlIGNvbnRlbnQi
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF8oIldoZXRoZXIgbm9uLUhUVFBTIHJlc291cmNlcyBjYW4gZGlzcGxheSBvbiBIVFRQUyBw
YWdlcy4iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFRSVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbGFncykpOworCisgICAgLyoqCisgICAgKiBXZWJLaXRXZWJTZXR0
aW5nczplbmFibGUtcnVubmluZy1vZi1pbnNlY3VyZS1jb250ZW50CisgICAgKgorICAgICogV2hl
dGhlciBwYWdlcyBsb2FkZWQgdmlhIEhUVFBTIHNob3VsZCBydW4gc3VicmVzb3VyY2VzIHN1Y2gg
YXMKKyAgICAqIENTUywgc2NyaXB0cywgYW5kIHBsdWdpbnMgZnJvbSBub24tSFRUUFMgVVJMcy4g
CisgICAgKgorICAgICogU2luY2U6IDIuMAorICAgICovCisgICAgZ19vYmplY3RfY2xhc3NfaW5z
dGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUFJPUF9FTkFCTEVfUlVOTklOR19PRl9JTlNFQ1VSRV9DT05URU5ULAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4oImVuYWJs
ZS1ydW5uaW5nLW9mLWluc2VjdXJlLWNvbnRlbnQiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiRW5hYmxlIHJ1bm5pbmcgb2YgaW5z
ZWN1cmUgY29udGVudCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXygiV2hldGhlciBub24tSFRUUFMgcmVzb3VyY2VzIGNhbiBydW4g
b24gSFRUUFMgcGFnZXMuIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBUUlVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKIH0KIAogc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl9zZXR0aW5nc19pbml0KFdlYktpdFdlYlNldHRpbmdzKiB3ZWJfc2V0dGluZ3MpCkBA
IC0xMTcxLDYgKzEyMDQsMTIgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRf
cHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb24KICAgICBjYXNlIFBS
T1BfTUVESUFfUExBWUJBQ0tfQUxMT1dTX0lOTElORToKICAgICAgICAgcHJpdi0+bWVkaWFQbGF5
YmFja0FsbG93c0lubGluZSA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOwogICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFBST1BfRU5BQkxFX0RJU1BMQVlfT0ZfSU5TRUNVUkVfQ09OVEVOVDoK
KyAgICAgICAgcHJpdi0+ZW5hYmxlRGlzcGxheU9mSW5zZWN1cmVDb250ZW50ID0gZ192YWx1ZV9n
ZXRfYm9vbGVhbih2YWx1ZSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVf
UlVOTklOR19PRl9JTlNFQ1VSRV9DT05URU5UOgorICAgICAgICBwcml2LT5lbmFibGVSdW5uaW5n
T2ZJbnNlY3VyZUNvbnRlbnQgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVlKTsKKyAgICAgICAg
YnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BF
UlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAgICBicmVhazsKQEAgLTEzNTEs
NiArMTM5MCwxMiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9wcm9wZXJ0
eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYQogICAgIGNhc2UgUFJPUF9NRURJ
QV9QTEFZQkFDS19BTExPV1NfSU5MSU5FOgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZh
bHVlLCBwcml2LT5tZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lKTsKICAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBQUk9QX0VOQUJMRV9ESVNQTEFZX09GX0lOU0VDVVJFX0NPTlRFTlQ6CisgICAgICAg
IGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPmVuYWJsZURpc3BsYXlPZkluc2VjdXJl
Q29udGVudCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9FTkFCTEVfUlVOTklOR19P
Rl9JTlNFQ1VSRV9DT05URU5UOgorICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBw
cml2LT5lbmFibGVSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQpOworICAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2Jq
ZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzcHJpdmF0ZS5oIGIvU291cmNlL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzcHJpdmF0ZS5oCmluZGV4IDgwYzg0YWYu
LjM4N2NiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJz
ZXR0aW5nc3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
c2V0dGluZ3Nwcml2YXRlLmgKQEAgLTg1LDYgKzg1LDggQEAgc3RydWN0IF9XZWJLaXRXZWJTZXR0
aW5nc1ByaXZhdGUgewogICAgIGdib29sZWFuIGVuYWJsZUNTU1NoYWRlcnM7CiAgICAgZ2Jvb2xl
YW4gbWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmU7CiAgICAgZ2Jvb2xlYW4gbWVkaWFQ
bGF5YmFja0FsbG93c0lubGluZTsKKyAgICBnYm9vbGVhbiBlbmFibGVEaXNwbGF5T2ZJbnNlY3Vy
ZUNvbnRlbnQ7CisgICAgZ2Jvb2xlYW4gZW5hYmxlUnVubmluZ09mSW5zZWN1cmVDb250ZW50Owog
fTsKIAogV0VCS0lUX0FQSSB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfYWRkX2V4dHJhX3BsdWdp
bl9kaXJlY3RvcnkoV2ViS2l0V2ViVmlldyosIGNvbnN0IGdjaGFyKiBkaXJlY3RvcnkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IDVhYzA0ODQuLmNi
MjAzYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAg
LTM0MDEsNiArMzQwMSw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld191cGRhdGVfc2V0
dGluZ3MoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBjb3JlU2V0dGluZ3MtPnNldEROU1By
ZWZldGNoaW5nRW5hYmxlZChzZXR0aW5nc1ByaXZhdGUtPmVuYWJsZUROU1ByZWZldGNoaW5nKTsK
ICAgICBjb3JlU2V0dGluZ3MtPnNldE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKHNl
dHRpbmdzUHJpdmF0ZS0+bWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUpOwogICAgIGNv
cmVTZXR0aW5ncy0+c2V0TWVkaWFQbGF5YmFja0FsbG93c0lubGluZShzZXR0aW5nc1ByaXZhdGUt
Pm1lZGlhUGxheWJhY2tBbGxvd3NJbmxpbmUpOworICAgIGNvcmVTZXR0aW5ncy0+c2V0QWxsb3dE
aXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQoc2V0dGluZ3NQcml2YXRlLT5lbmFibGVEaXNwbGF5T2ZJ
bnNlY3VyZUNvbnRlbnQpOworICAgIGNvcmVTZXR0aW5ncy0+c2V0QWxsb3dSdW5uaW5nT2ZJbnNl
Y3VyZUNvbnRlbnQoc2V0dGluZ3NQcml2YXRlLT5lbmFibGVSdW5uaW5nT2ZJbnNlY3VyZUNvbnRl
bnQpOwogCiAjaWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKICAgICBBYnN0cmFjdERhdGFiYXNlOjpz
ZXRJc0F2YWlsYWJsZShzZXR0aW5nc1ByaXZhdGUtPmVuYWJsZUhUTUw1RGF0YWJhc2UpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>173727</attachid>
            <date>2012-11-12 14:24:49 -0800</date>
            <delta_ts>2012-11-12 18:48:16 -0800</delta_ts>
            <desc>plumbing #3</desc>
            <filename>plumbing3.patch</filename>
            <type>text/plain</type>
            <size>5737</size>
            <attacher name="Josh Rickmar">jrick</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZwppbmRleCBlYzFkMGVmLi4zZjJhMzg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTItMDctMDMgIEpvc2ggUmlja21hciAgPGpyaWNrQGRldmlvLnVz
PgorCisgICAgICAgIEFkZCBXZWJDb3JlOjpTZXR0aW5nIHRvIGJsb2NrIGRpc3BsYXlpbmcgYW5k
L29yIHJ1bm5pbmcgaW5zZWN1cmUgY29udGVudCBvbiBzZWN1cmUgcGFnZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4Mzc4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vic2V0
dGluZ3MuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19jbGFzc19pbml0KToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtp
dF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGlu
Z3NfY29weSk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAo
d2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyk6CisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfc2V0dGluZ3Nfbm90aWZ5KToKKwogMjAxMi0xMS0wNSAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbGF5ZXIgYm9yZGVycyB0byBjbGVhbmlu
ZyBhcHBlYXIgYW5kIGRpc2FwcGVhciBvbiBzd2l0Y2hpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCmluZGV4IGRkODAxNzUuLmZmNTFlYmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcApAQCAt
MTIwLDcgKzEyMCw5IEBAIGVudW0gewogICAgIFBST1BfRU5BQkxFX1NNT09USF9TQ1JPTExJTkcs
CiAgICAgUFJPUF9NRURJQV9QTEFZQkFDS19SRVFVSVJFU19VU0VSX0dFU1RVUkUsCiAgICAgUFJP
UF9NRURJQV9QTEFZQkFDS19BTExPV1NfSU5MSU5FLAotICAgIFBST1BfRU5BQkxFX0NTU19TSEFE
RVJTCisgICAgUFJPUF9FTkFCTEVfQ1NTX1NIQURFUlMsCisgICAgUFJPUF9FTkFCTEVfUlVOTklO
R19PRl9JTlNFQ1VSRV9DT05URU5ULAorICAgIFBST1BfRU5BQkxFX0RJU1BMQVlfT0ZfSU5TRUNV
UkVfQ09OVEVOVAogfTsKIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19maW5hbGl6
ZShHT2JqZWN0KiBvYmplY3QpOwpAQCAtOTgxLDYgKzk4MywzNyBAQCBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3NldHRpbmdzX2NsYXNzX2luaXQoV2ViS2l0V2ViU2V0dGluZ3NDbGFzcyoga2xhc3Mp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZsYWdzKSk7CiAKKyAgICAvKioKKyAgICAqIFdlYktpdFdlYlNldHRpbmdzOmVu
YWJsZS1kaXNwbGF5LW9mLWluc2VjdXJlLWNvbnRlbnQKKyAgICAqCisgICAgKiBXaGV0aGVyIHBh
Z2VzIGxvYWRlZCB2aWEgSFRUUFMgc2hvdWxkIGxvYWQgc3VicmVzb3VyY2VzIHN1Y2ggYXMKKyAg
ICAqIGltYWdlcyBhbmQgZnJhbWVzIGZyb20gbm9uLUhUVFBTIFVSTHMuIAorICAgICoKKyAgICAq
IFNpbmNlOiAyLjAKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
Z29iamVjdF9jbGFzcywKKyAgICAgICAgUFJPUF9FTkFCTEVfRElTUExBWV9PRl9JTlNFQ1VSRV9D
T05URU5ULAorICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLWRpc3BsYXktb2Yt
aW5zZWN1cmUtY29udGVudCIsCisgICAgICAgICAgICBfKCJFbmFibGUgZGlzcGxheSBvZiBpbnNl
Y3VyZSBjb250ZW50IiksCisgICAgICAgICAgICBfKCJXaGV0aGVyIG5vbi1IVFRQUyByZXNvdXJj
ZXMgY2FuIGRpc3BsYXkgb24gSFRUUFMgcGFnZXMuIiksCisgICAgICAgICAgICBUUlVFLAorICAg
ICAgICAgICAgZmxhZ3MpKTsKKworICAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6ZW5h
YmxlLXJ1bm5pbmctb2YtaW5zZWN1cmUtY29udGVudAorICAgICoKKyAgICAqIFdoZXRoZXIgcGFn
ZXMgbG9hZGVkIHZpYSBIVFRQUyBzaG91bGQgcnVuIHN1YnJlc291cmNlcyBzdWNoIGFzCisgICAg
KiBDU1MsIHNjcmlwdHMsIGFuZCBwbHVnaW5zIGZyb20gbm9uLUhUVFBTIFVSTHMuIAorICAgICoK
KyAgICAqIFNpbmNlOiAyLjAKKyAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJv
cGVydHkoZ29iamVjdF9jbGFzcywKKyAgICAgICAgUFJPUF9FTkFCTEVfUlVOTklOR19PRl9JTlNF
Q1VSRV9DT05URU5ULAorICAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbigiZW5hYmxlLXJ1bm5p
bmctb2YtaW5zZWN1cmUtY29udGVudCIsCisgICAgICAgICAgICBfKCJFbmFibGUgcnVubmluZyBv
ZiBpbnNlY3VyZSBjb250ZW50IiksCisgICAgICAgICAgICBfKCJXaGV0aGVyIG5vbi1IVFRQUyBy
ZXNvdXJjZXMgY2FuIHJ1biBvbiBIVFRQUyBwYWdlcy4iKSwKKyAgICAgICAgICAgIFRSVUUsCisg
ICAgICAgICAgICBmbGFncykpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdz
X2luaXQoV2ViS2l0V2ViU2V0dGluZ3MqIHdlYl9zZXR0aW5ncykKQEAgLTExNzEsNiArMTIwNCwx
MiBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9wcm9wZXJ0eShHT2JqZWN0
KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbgogICAgIGNhc2UgUFJPUF9NRURJQV9QTEFZQkFD
S19BTExPV1NfSU5MSU5FOgogICAgICAgICBwcml2LT5tZWRpYVBsYXliYWNrQWxsb3dzSW5saW5l
ID0gZ192YWx1ZV9nZXRfYm9vbGVhbih2YWx1ZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
UFJPUF9FTkFCTEVfRElTUExBWV9PRl9JTlNFQ1VSRV9DT05URU5UOgorICAgICAgICBwcml2LT5l
bmFibGVEaXNwbGF5T2ZJbnNlY3VyZUNvbnRlbnQgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZhbHVl
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9SVU5OSU5HX09GX0lOU0VD
VVJFX0NPTlRFTlQ6CisgICAgICAgIHByaXYtPmVuYWJsZVJ1bm5pbmdPZkluc2VjdXJlQ29udGVu
dCA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOworICAgICAgICBicmVhazsKICAgICBkZWZh
dWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBw
cm9wX2lkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTM1MSw2ICsxMzkwLDEyIEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVj
dCwgZ3VpbnQgcHJvcF9pZCwgR1ZhCiAgICAgY2FzZSBQUk9QX01FRElBX1BMQVlCQUNLX0FMTE9X
U19JTkxJTkU6CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPm1lZGlh
UGxheWJhY2tBbGxvd3NJbmxpbmUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRU5B
QkxFX0RJU1BMQVlfT0ZfSU5TRUNVUkVfQ09OVEVOVDoKKyAgICAgICAgZ192YWx1ZV9zZXRfYm9v
bGVhbih2YWx1ZSwgcHJpdi0+ZW5hYmxlRGlzcGxheU9mSW5zZWN1cmVDb250ZW50KTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VOQUJMRV9SVU5OSU5HX09GX0lOU0VDVVJFX0NPTlRF
TlQ6CisgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPmVuYWJsZVJ1bm5p
bmdPZkluc2VjdXJlQ29udGVudCk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBz
cGVjKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vic2V0dGluZ3Nwcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vic2V0dGluZ3Nwcml2YXRlLmgKaW5kZXggODBjODRhZi4uMzg3Y2IwNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzcHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5nc3ByaXZhdGUu
aApAQCAtODUsNiArODUsOCBAQCBzdHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSB7CiAg
ICAgZ2Jvb2xlYW4gZW5hYmxlQ1NTU2hhZGVyczsKICAgICBnYm9vbGVhbiBtZWRpYVBsYXliYWNr
UmVxdWlyZXNVc2VyR2VzdHVyZTsKICAgICBnYm9vbGVhbiBtZWRpYVBsYXliYWNrQWxsb3dzSW5s
aW5lOworICAgIGdib29sZWFuIGVuYWJsZURpc3BsYXlPZkluc2VjdXJlQ29udGVudDsKKyAgICBn
Ym9vbGVhbiBlbmFibGVSdW5uaW5nT2ZJbnNlY3VyZUNvbnRlbnQ7CiB9OwogCiBXRUJLSVRfQVBJ
IHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19hZGRfZXh0cmFfcGx1Z2luX2RpcmVjdG9yeShXZWJL
aXRXZWJWaWV3KiwgY29uc3QgZ2NoYXIqIGRpcmVjdG9yeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggNWFjMDQ4NC4uY2IyMDNhYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtMzQwMSw2ICszNDAxLDgg
QEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyhXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQogICAgIGNvcmVTZXR0aW5ncy0+c2V0RE5TUHJlZmV0Y2hpbmdFbmFibGVk
KHNldHRpbmdzUHJpdmF0ZS0+ZW5hYmxlRE5TUHJlZmV0Y2hpbmcpOwogICAgIGNvcmVTZXR0aW5n
cy0+c2V0TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoc2V0dGluZ3NQcml2YXRlLT5t
ZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZSk7CiAgICAgY29yZVNldHRpbmdzLT5zZXRN
ZWRpYVBsYXliYWNrQWxsb3dzSW5saW5lKHNldHRpbmdzUHJpdmF0ZS0+bWVkaWFQbGF5YmFja0Fs
bG93c0lubGluZSk7CisgICAgY29yZVNldHRpbmdzLT5zZXRBbGxvd0Rpc3BsYXlPZkluc2VjdXJl
Q29udGVudChzZXR0aW5nc1ByaXZhdGUtPmVuYWJsZURpc3BsYXlPZkluc2VjdXJlQ29udGVudCk7
CisgICAgY29yZVNldHRpbmdzLT5zZXRBbGxvd1J1bm5pbmdPZkluc2VjdXJlQ29udGVudChzZXR0
aW5nc1ByaXZhdGUtPmVuYWJsZVJ1bm5pbmdPZkluc2VjdXJlQ29udGVudCk7CiAKICNpZiBFTkFC
TEUoU1FMX0RBVEFCQVNFKQogICAgIEFic3RyYWN0RGF0YWJhc2U6OnNldElzQXZhaWxhYmxlKHNl
dHRpbmdzUHJpdmF0ZS0+ZW5hYmxlSFRNTDVEYXRhYmFzZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>