<?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>73883</bug_id>
          
          <creation_ts>2011-12-05 18:10:14 -0800</creation_ts>
          <short_desc>Give embedders a chance to handle postMessage calls</short_desc>
          <delta_ts>2012-01-06 12:45:28 -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>UI Events</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>75316</dependson>
          <blocked>73337</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Karl Koscher">supersat</reporter>
          <assigned_to name="Karl Koscher">supersat</assigned_to>
          <cc>abarth</cc>
    
    <cc>creis</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>fishd</cc>
    
    <cc>japhet</cc>
    
    <cc>rakuco</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>515569</commentid>
    <comment_count>0</comment_count>
    <who name="Karl Koscher">supersat</who>
    <bug_when>2011-12-05 18:10:14 -0800</bug_when>
    <thetext>To support cross-process postMessage calls in Chromium (bug 73337), we need to intercept postMessage calls to proxy windows. Originally we were just going to add a native event listener on the Chromium side, but that required more changes to WebKit and was a bit of a hack. See bug 73359 for a discuss about moving to this approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515574</commentid>
    <comment_count>1</comment_count>
      <attachid>117975</attachid>
    <who name="Karl Koscher">supersat</who>
    <bug_when>2011-12-05 18:24:46 -0800</bug_when>
    <thetext>Created attachment 117975
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515578</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-05 18:35:01 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515589</commentid>
    <comment_count>3</comment_count>
      <attachid>117975</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-05 18:56:19 -0800</bug_when>
    <thetext>Comment on attachment 117975
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        No new tests. (OOPS!)

It would be helpful to explain in the ChangeLog why we&apos;re making this change.  Also, you&apos;ll need to say something about testing here.  Perhaps we should add something to DumpRenderTree to test this change?  Alternatively, we can use an API test, which might be easier.

&gt; Source/WebCore/page/DOMWindow.cpp:916
&gt; +      return;

Four-space indent, pls.

&gt; Source/WebKit/chromium/public/WebFrameClient.h:395
&gt; +    virtual bool interceptPostMessage(int64 frameId,

Why the frameId?  Most of these callbacks seem to use a WebFrame* for context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515590</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-05 18:56:42 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; To support cross-process postMessage calls in Chromium (bug 73337), we need to intercept postMessage calls to proxy windows. Originally we were just going to add a native event listener on the Chromium side, but that required more changes to WebKit and was a bit of a hack. See bug 73359 for a discuss about moving to this approach.

^^^ This is great text for the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515606</commentid>
    <comment_count>5</comment_count>
      <attachid>117975</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-05 19:51:09 -0800</bug_when>
    <thetext>Comment on attachment 117975
Patch

Attachment 117975 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10733827

New failing tests:
fast/dom/Window/window-postmessage-args.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515981</commentid>
    <comment_count>6</comment_count>
      <attachid>117975</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-12-06 09:44:03 -0800</bug_when>
    <thetext>Comment on attachment 117975
Patch

Why FrameLoaderClient? You are not loading anything here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515988</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-06 09:58:41 -0800</bug_when>
    <thetext>&gt; Why FrameLoaderClient? You are not loading anything here.

Which client would you prefer?  FrameLoaderClient contains a number of functions not directly related to loading.  Maybe we should split those off into a new client?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516427</commentid>
    <comment_count>8</comment_count>
      <attachid>118156</attachid>
    <who name="Karl Koscher">supersat</who>
    <bug_when>2011-12-06 18:21:23 -0800</bug_when>
    <thetext>Created attachment 118156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516430</commentid>
    <comment_count>9</comment_count>
    <who name="Karl Koscher">supersat</who>
    <bug_when>2011-12-06 18:30:58 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 117975 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=117975&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        No new tests. (OOPS!)
&gt; 
&gt; It would be helpful to explain in the ChangeLog why we&apos;re making this change.  Also, you&apos;ll need to say something about testing here.  Perhaps we should add something to DumpRenderTree to test this change?  Alternatively, we can use an API test, which might be easier.

ChangeLog updated, and a layout test added.

 
&gt; &gt; Source/WebCore/page/DOMWindow.cpp:916
&gt; &gt; +      return;
&gt; 
&gt; Four-space indent, pls.

Fixed.

 
&gt; &gt; Source/WebKit/chromium/public/WebFrameClient.h:395
&gt; &gt; +    virtual bool interceptPostMessage(int64 frameId,
&gt; 
&gt; Why the frameId?  Most of these callbacks seem to use a WebFrame* for context.

Updated to pass a WebFrame*

As for using FrameLoaderClient, it&apos;s the only way to get to WebFrameClient, which seems like the most appropriate place for the callback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>516691</commentid>
    <comment_count>10</comment_count>
      <attachid>118156</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-12-07 09:58:13 -0800</bug_when>
    <thetext>Comment on attachment 118156
Patch

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

&gt; Source/WebCore/page/DOMWindow.cpp:913
&gt; +    RefPtr&lt;MessageEvent&gt; event = timer-&gt;event(document());

I&apos;m curious why it is better to add interception code here instead of just adding
an event handler on the window.

&gt; Source/WebKit/chromium/public/WebFrameClient.h:397
&gt; +                                      WebDOMEvent) { return false; }

why not pass WebDOMMessageEvent here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517175</commentid>
    <comment_count>11</comment_count>
      <attachid>118156</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-07 21:40:14 -0800</bug_when>
    <thetext>Comment on attachment 118156
Patch

Attachment 118156 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10797086

New failing tests:
http/tests/security/mixedContent/data-url-iframe-in-main-frame.html
platform/chromium/http/tests/security/mixedContent/insecure-script-in-main-frame-blocked.html
http/tests/security/mixedContent/redirect-https-to-http-iframe-in-main-frame.html
http/tests/security/mixedContent/redirect-http-to-https-iframe-in-main-frame.html
platform/chromium/http/tests/security/mixedContent/insecure-image-in-main-frame-allowed.html
platform/chromium/http/tests/security/mixedContent/insecure-image-in-main-frame-blocked.html
http/tests/security/mixedContent/about-blank-iframe-in-main-frame.html
http/tests/security/mixedContent/insecure-image-in-main-frame.html
http/tests/security/mixedContent/insecure-iframe-in-main-frame.html
platform/chromium/http/tests/security/mixedContent/insecure-script-in-main-frame-allowed.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518430</commentid>
    <comment_count>12</comment_count>
      <attachid>118618</attachid>
    <who name="Karl Koscher">supersat</who>
    <bug_when>2011-12-09 12:57:27 -0800</bug_when>
    <thetext>Created attachment 118618
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518436</commentid>
    <comment_count>13</comment_count>
      <attachid>118618</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-12-09 13:13:48 -0800</bug_when>
    <thetext>Comment on attachment 118618
Patch

Attachment 118618 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10834273</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518467</commentid>
    <comment_count>14</comment_count>
      <attachid>118618</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-09 13:47:44 -0800</bug_when>
    <thetext>Comment on attachment 118618
Patch

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

&gt; Source/WebCore/loader/FrameLoader.h:289
&gt; +    // Returns true if the embedder intercepted the postMessage call
&gt; +    bool interceptPostMessage(SecurityOrigin* target, PassRefPtr&lt;MessageEvent&gt;) const;

We should not need to edit FrameLoader in this patch.  The FrameLoaderClient is public to avoid needing these trampolines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518538</commentid>
    <comment_count>15</comment_count>
      <attachid>118643</attachid>
    <who name="Karl Koscher">supersat</who>
    <bug_when>2011-12-09 14:39:32 -0800</bug_when>
    <thetext>Created attachment 118643
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518638</commentid>
    <comment_count>16</comment_count>
      <attachid>118643</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-12-09 16:51:38 -0800</bug_when>
    <thetext>Comment on attachment 118643
Patch

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

&gt; Source/WebCore/page/DOMWindow.cpp:919
&gt; +    if (m_frame-&gt;loader()-&gt;client()-&gt;interceptPostMessage(timer-&gt;targetOrigin(), event))

nit: I would prefer a more specific name that conveys what is going on at the
point of this notification.  interceptPostMessage sounds like it might be called
when postMessage is called, but actually it is called before dispatchEvent.
Perhaps a slightly better name for this would be willDispatchMessageEvent.

However, I have a slight problem with that name since it is possible that the
security check will prevent dispatchEvent from being called.  This brings me
back to my previous concern.  I would prefer if we put this notification
after the security check.  This probably means that we&apos;d need to ensure that
the SecurityOrigin of the Document is setup right, but perhaps that would
actually be a good thing for keeping the design of out-of-process iframes
simpler and easier to maintain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518713</commentid>
    <comment_count>17</comment_count>
    <who name="Karl Koscher">supersat</who>
    <bug_when>2011-12-09 18:15:55 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; nit: I would prefer a more specific name that conveys what is going on at the
&gt; point of this notification.  interceptPostMessage sounds like it might be called
&gt; when postMessage is called, but actually it is called before dispatchEvent.
&gt; Perhaps a slightly better name for this would be willDispatchMessageEvent.

It is essentially called when postMessage is called. I could move it into DOMWindow::postMessage, although the comments there suggest that most of the processing should happen in DOMWindow::postMessageTimerFired. 

&gt; However, I have a slight problem with that name since it is possible that the
&gt; security check will prevent dispatchEvent from being called.  This brings me
&gt; back to my previous concern.  I would prefer if we put this notification
&gt; after the security check.  This probably means that we&apos;d need to ensure that
&gt; the SecurityOrigin of the Document is setup right, but perhaps that would
&gt; actually be a good thing for keeping the design of out-of-process iframes
&gt; simpler and easier to maintain.

We have to do the same security check in the target renderer process to avoid a TOCTTOU security bug where the target origin could change while the message event is in flight. I&apos;m pretty sure we&apos;ll need to do the same thing with out-of-process iframes, since the iframe&apos;s origin can change while an IPC is in flight. Keeping the proxy&apos;s SecurityOrigin in sync would add a fair amount of complexity that really wouldn&apos;t let us simplify anything.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519352</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-12-12 11:16:43 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; nit: I would prefer a more specific name that conveys what is going on at the
&gt; &gt; point of this notification.  interceptPostMessage sounds like it might be called
&gt; &gt; when postMessage is called, but actually it is called before dispatchEvent.
&gt; &gt; Perhaps a slightly better name for this would be willDispatchMessageEvent.
&gt; 
&gt; It is essentially called when postMessage is called. I could move it into DOMWindow::postMessage, although the comments there suggest that most of the processing should happen in DOMWindow::postMessageTimerFired. 
&gt; 
&gt; &gt; However, I have a slight problem with that name since it is possible that the
&gt; &gt; security check will prevent dispatchEvent from being called.  This brings me
&gt; &gt; back to my previous concern.  I would prefer if we put this notification
&gt; &gt; after the security check.  This probably means that we&apos;d need to ensure that
&gt; &gt; the SecurityOrigin of the Document is setup right, but perhaps that would
&gt; &gt; actually be a good thing for keeping the design of out-of-process iframes
&gt; &gt; simpler and easier to maintain.
&gt; 
&gt; We have to do the same security check in the target renderer process to avoid a TOCTTOU security bug where the target origin could change while the message event is in flight. I&apos;m pretty sure we&apos;ll need to do the same thing with out-of-process iframes, since the iframe&apos;s origin can change while an IPC is in flight.

So, your argument is that we should skip the check locally because it will be wasted work?  That makes sense.


&gt; Keeping the proxy&apos;s SecurityOrigin in sync would add a fair amount of complexity that really wouldn&apos;t let us simplify anything.

It would simply the notification that you are proposing adding.  My concern is not just about whether your hook makes sense for this application, but I&apos;m concerned about whether it will make sense to future applications.  Someone else may want to hook postMessage, so we should make sure that it makes sense on its own.  For this reason, getting the name right is worth the effort to avoid future confusion.

When you forward the MessageEvent, do you just repeat the postMessage in the target process?  I assume that the existing security checks run in the target process, so we don&apos;t have to duplicate any security checking code, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>519363</commentid>
    <comment_count>19</comment_count>
    <who name="Karl Koscher">supersat</who>
    <bug_when>2011-12-12 11:43:11 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; &gt; Keeping the proxy&apos;s SecurityOrigin in sync would add a fair amount of complexity that really wouldn&apos;t let us simplify anything.
&gt; 
&gt; It would simply the notification that you are proposing adding.  My concern is not just about whether your hook makes sense for this application, but I&apos;m concerned about whether it will make sense to future applications.  Someone else may want to hook postMessage, so we should make sure that it makes sense on its own.  For this reason, getting the name right is worth the effort to avoid future confusion.

Two ideas come to mind. One is to name it something like interceptInsecurePostMessage / interceptUncheckedPostMessage, and the other is to explicitly pass the result of WebKit&apos;s origin check.

If it still seems too risky, I can look into what would be involved in keeping the proxies&apos; SecurityOrigins in sync. 

&gt; When you forward the MessageEvent, do you just repeat the postMessage in the target process?  I assume that the existing security checks run in the target process, so we don&apos;t have to duplicate any security checking code, right?

This is currently being done on the Chromium side to minimize the changes to WebKit. Bug 73359 would have moved the check into SecurityOrigin so it could be shared by Chromium and WebKit. Another alternative is to add another method to DOMWindow to let external postMessages be injected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524049</commentid>
    <comment_count>20</comment_count>
      <attachid>118643</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-19 11:18:17 -0800</bug_when>
    <thetext>Comment on attachment 118643
Patch

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

&gt; Source/WebCore/dom/MessageEvent.h:31
&gt; +#include &quot;fileapi/Blob.h&quot;

This isn&apos;t standard webkit style.

&gt; Source/WebKit/chromium/public/WebDOMMessageEvent.h:38
&gt; +#include &quot;dom/Event.h&quot;
&gt; +#include &quot;dom/MessageEvent.h&quot;

These are also not standard WebKit style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524868</commentid>
    <comment_count>21</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2011-12-20 15:14:36 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; Two ideas come to mind. One is to name it something like interceptInsecurePostMessage / interceptUncheckedPostMessage, and the other is to explicitly pass the result of WebKit&apos;s origin check.
&gt; 
&gt; If it still seems too risky, I can look into what would be involved in keeping the proxies&apos; SecurityOrigins in sync. 

I don&apos;t think we want to try to keep the SecurityOrigins in sync across processes.  Finding an appropriate name to convey that the security check still needs to happen seems like the right thing to me.  It allows the embedder to handle a postMessage event externally, whether that&apos;s in another WebKit process (like our intended use case) or some other entity in a different application.

I&apos;m not super-familiar with the WebKit API naming scheme, but something close to Darin&apos;s suggestion would be willCheckAndDispatchMessageEvent.

Darin, does that sound right to you?

Karl, can you fix the includes that Eric pointed out?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525070</commentid>
    <comment_count>22</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-12-20 20:32:14 -0800</bug_when>
    <thetext>The various platforms all have differnet ways of adding directories to their include path.  Windows requires editing the vcproj file (which you can do in your text editor).  I would suggest searching for existing include paths for examples.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525866</commentid>
    <comment_count>23</comment_count>
      <attachid>120247</attachid>
    <who name="Karl Koscher">supersat</who>
    <bug_when>2011-12-21 17:20:16 -0800</bug_when>
    <thetext>Created attachment 120247
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525868</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-21 17:22:05 -0800</bug_when>
    <thetext>Attachment 120247 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
First, rewinding head to replay your work on top of it...
Applying: Inform the scrolling coordinator when scrollbar layers come and go
Using index info to reconstruct a base tree...
&lt;stdin&gt;:474806: trailing whitespace.
        [Chromium] DatabaseTrackerChromium: iterating DatabaseSet races with Database disposal on worker thread 
&lt;stdin&gt;:474827: trailing whitespace.
        Nothing to test, just removing redundant code. Correct behavior tested by 
&lt;stdin&gt;:475346: trailing whitespace.
    
warning: 3 lines add whitespace errors.
Falling back to patching base and 3-way merge...
warning: too many files (created: 167528 deleted: 3), skipping inexact rename detection
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/chromium/test_expectations.txt
CONFLICT (content): Merge conflict in LayoutTests/platform/chromium/test_expectations.txt
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Auto-merging Source/WebCore/page/ScrollingCoordinator.h
CONFLICT (content): Merge conflict in Source/WebCore/page/ScrollingCoordinator.h
Auto-merging Source/WebCore/page/mac/ScrollingCoordinatorMac.mm
CONFLICT (content): Merge conflict in Source/WebCore/page/mac/ScrollingCoordinatorMac.mm
Auto-merging Source/WebCore/platform/ScrollView.cpp
Auto-merging Source/WebCore/rendering/RenderLayerCompositor.cpp
CONFLICT (content): Merge conflict in Source/WebCore/rendering/RenderLayerCompositor.cpp
Auto-merging Source/WebKit2/ChangeLog
CONFLICT (content): Merge conflict in Source/WebKit2/ChangeLog
Auto-merging Tools/ChangeLog
CONFLICT (content): Merge conflict in Tools/ChangeLog
Auto-merging Tools/Scripts/build-webkit
Auto-merging Tools/Scripts/webkitdirs.pm
CONFLICT (content): Merge conflict in Tools/Scripts/webkitdirs.pm
Failed to merge in the changes.
Patch failed at 0001 Inform the scrolling coordinator when scrollbar layers come and go

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 158.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>525879</commentid>
    <comment_count>25</comment_count>
    <who name="Karl Koscher">supersat</who>
    <bug_when>2011-12-21 17:30:37 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; The various platforms all have differnet ways of adding directories to their include path.  Windows requires editing the vcproj file (which you can do in your text editor).  I would suggest searching for existing include paths for examples.

Eric, can you take a look at why it&apos;s failing the style check now? The output doesn&apos;t seem to make sense, and I&apos;m not sure how to run it through the EWS again without uploading the same patch again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526001</commentid>
    <comment_count>26</comment_count>
      <attachid>120247</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-21 22:04:22 -0800</bug_when>
    <thetext>Comment on attachment 120247
Patch

Attachment 120247 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11001280

New failing tests:
http/tests/security/mixedContent/data-url-iframe-in-main-frame.html
platform/chromium/http/tests/security/mixedContent/insecure-script-in-main-frame-blocked.html
http/tests/security/mixedContent/redirect-https-to-http-iframe-in-main-frame.html
http/tests/security/mixedContent/redirect-http-to-https-iframe-in-main-frame.html
platform/chromium/http/tests/security/mixedContent/insecure-image-in-main-frame-allowed.html
http/tests/inspector-enabled/dedicated-workers-list.html
http/tests/inspector/network-preflight-options.html
http/tests/security/mixedContent/insecure-css-in-main-frame.html
platform/chromium/http/tests/security/mixedContent/insecure-iframe-in-main-frame-allowed.html
platform/chromium/http/tests/security/mixedContent/insecure-image-in-main-frame-blocked.html
http/tests/security/mixedContent/about-blank-iframe-in-main-frame.html
http/tests/security/mixedContent/insecure-image-in-main-frame.html
platform/chromium/http/tests/security/mixedContent/insecure-iframe-in-main-frame-blocked.html
http/tests/security/mixedContent/insecure-iframe-in-main-frame.html
platform/chromium/http/tests/security/mixedContent/insecure-script-in-main-frame-allowed.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526044</commentid>
    <comment_count>27</comment_count>
      <attachid>120247</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-21 23:24:20 -0800</bug_when>
    <thetext>Comment on attachment 120247
Patch

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

&gt; Source/WebKit/efl/CMakeListsEfl.txt:13
&gt; +    &quot;${WEBCORE_DIR}/fileapi&quot;

I don&apos;t understand why this is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526045</commentid>
    <comment_count>28</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-21 23:26:15 -0800</bug_when>
    <thetext>&gt; Eric, can you take a look at why it&apos;s failing the style check now?

Sorry, the style bot was borked for a few hours.  Should be fixed now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526049</commentid>
    <comment_count>29</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-21 23:28:02 -0800</bug_when>
    <thetext>This patch is in a confusing state.  Do we really need to add fileapi to the include path?  I don&apos;t understand what in this patch is requiring us to do that.

Also, you appear to have broken a number of tests that use postMessage.  Are those breakages real?  Also, your patch doesn&apos;t seem to compile on AppleWindows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526050</commentid>
    <comment_count>30</comment_count>
      <attachid>120247</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-21 23:28:40 -0800</bug_when>
    <thetext>Comment on attachment 120247
Patch

Clearing the review flag.  I think the content of this patch is great, but we&apos;ll probably need a tweaked version that builds and passes tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526422</commentid>
    <comment_count>31</comment_count>
    <who name="Karl Koscher">supersat</who>
    <bug_when>2011-12-22 12:09:03 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; This patch is in a confusing state.  Do we really need to add fileapi to the include path?  I don&apos;t understand what in this patch is requiring us to do that.

Including MessageEvent.h in FrameLoaderClient.h (so that we pass around a DOMMessageEvent, not just a DOMEvent) causes the build to break under EFL and Windows (and maybe Mac) because it can&apos;t locate fileapi/Blob.h. An earlier patch fixed this with #include &quot;fileapi/Blob.h&quot;, but this isn&apos;t correct WebKit style.

Would a more correct fix be to move Blob.h?

&gt; Also, you appear to have broken a number of tests that use postMessage.  Are those breakages real?  Also, your patch doesn&apos;t seem to compile on AppleWindows.

AFAICT, they are only sort of real. If the TestShell&apos;s shouldDumpFrameLoadCallbacks is set, we now print out that willCheckAndDispatchMessageEvent is called since it&apos;s a frame loader callback (and it&apos;s used by the test for this patch). Should I just re-baseline these tests where this is the case?

Finally, is there any way to test the build on Mac without having a Mac?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526437</commentid>
    <comment_count>32</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-22 12:20:09 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; (In reply to comment #29)
&gt; &gt; This patch is in a confusing state.  Do we really need to add fileapi to the include path?  I don&apos;t understand what in this patch is requiring us to do that.
&gt; 
&gt; Including MessageEvent.h in FrameLoaderClient.h (so that we pass around a DOMMessageEvent, not just a DOMEvent) causes the build to break under EFL and Windows (and maybe Mac) because it can&apos;t locate fileapi/Blob.h. An earlier patch fixed this with #include &quot;fileapi/Blob.h&quot;, but this isn&apos;t correct WebKit style.
&gt; 
&gt; Would a more correct fix be to move Blob.h?

I see.  We&apos;re adding the include path to the WebKit layer and it already exists at the WebCore layer.  Ok.  That makes sense.

&gt; AFAICT, they are only sort of real. If the TestShell&apos;s shouldDumpFrameLoadCallbacks is set, we now print out that willCheckAndDispatchMessageEvent is called since it&apos;s a frame loader callback (and it&apos;s used by the test for this patch). Should I just re-baseline these tests where this is the case?

It sounds like you should.  Generally, we prefer the tests to all be green when a patch lands.  Sometimes that involves changing the expected results for tests, which we review at the same time we review the change that causes the change in expectations.

&gt; Finally, is there any way to test the build on Mac without having a Mac?

Unfortunately not.  This is a consequence of Apple not licensing Mac OS X for use inside a virtual machine.  Without the ability to run Mac OS X inside a virtual machine, we are unable to run code (including the build scripts) from non-committers.

The WebKit project has a strong Mac bias.  The vast majority of the core developers use Macs and it&apos;s generally difficult to contributor to the project without a Mac.  If you&apos;re planning to make more changes to WebKit, I would encourage you to get a Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526513</commentid>
    <comment_count>33</comment_count>
      <attachid>120380</attachid>
    <who name="Karl Koscher">supersat</who>
    <bug_when>2011-12-22 14:30:47 -0800</bug_when>
    <thetext>Created attachment 120380
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526540</commentid>
    <comment_count>34</comment_count>
      <attachid>120380</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-22 14:49:14 -0800</bug_when>
    <thetext>Comment on attachment 120380
Patch

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

&gt; Source/WebCore/loader/FrameLoaderClient.h:325
&gt; +        // Returns true if the embedder intercepted the postMessage call
&gt; +        virtual bool willCheckAndDispatchMessageEvent(SecurityOrigin* /*target*/, PassRefPtr&lt;MessageEvent&gt;) const { return false; }

Why PassRefPtr?  Is the client expected to take ownership of the MessageEvent?  From the caller, it looks like not, so this should probably just be a MessageEvent*

&gt; Source/WebKit/chromium/public/WebDOMMessageEvent.h:55
&gt; +    WebDOMMessageEvent(const WTF::PassRefPtr&lt;WebCore::MessageEvent&gt;&amp; e) : WebDOMEvent(e) { }

explicit

&gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:1212
&gt; +        fputs(&quot; - willCheckAndDispatchMessageEvent\n&quot;, stdout);

You&apos;ve only made this change in the Chromium version of DumpRenderTree, but you&apos;ve updated a bunch of cross-platform test results to contain this string.  Doesn&apos;t that mean those tests will fail in non-Chromium ports?  I would skip this print statement.  It looks like more trouble than it&apos;s worth.

&gt; LayoutTests/platform/chromium/fast/events/intercept-postmessage.html:15
&gt; +          layoutTestController.interceptPostMessage = true;

We probably need a test that proves that we allow intercepting before the security check because some review comments were worried about messing that up in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526542</commentid>
    <comment_count>35</comment_count>
    <who name="Karl Koscher">supersat</who>
    <bug_when>2011-12-22 14:51:34 -0800</bug_when>
    <thetext>(In reply to comment #34)
&gt; &gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:1212
&gt; &gt; +        fputs(&quot; - willCheckAndDispatchMessageEvent\n&quot;, stdout);
&gt; 
&gt; You&apos;ve only made this change in the Chromium version of DumpRenderTree, but you&apos;ve updated a bunch of cross-platform test results to contain this string.  Doesn&apos;t that mean those tests will fail in non-Chromium ports?  I would skip this print statement.  It looks like more trouble than it&apos;s worth.

Err... right. I&apos;ll remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526642</commentid>
    <comment_count>36</comment_count>
      <attachid>120411</attachid>
    <who name="Karl Koscher">supersat</who>
    <bug_when>2011-12-22 16:53:34 -0800</bug_when>
    <thetext>Created attachment 120411
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526649</commentid>
    <comment_count>37</comment_count>
      <attachid>120411</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-22 17:03:16 -0800</bug_when>
    <thetext>Comment on attachment 120411
Patch

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

&gt; Source/WebCore/page/DOMWindow.cpp:919
&gt; +    if (m_frame-&gt;loader()-&gt;client()-&gt;willCheckAndDispatchMessageEvent(timer-&gt;targetOrigin(), PassRefPtr&lt;MessageEvent&gt;(event).leakRef()))

Can m_frame be null here?  Perhaps we should check isCurrentlyDisplayedInFrame() ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526650</commentid>
    <comment_count>38</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-22 17:03:40 -0800</bug_when>
    <thetext>This looks great.  I think we&apos;re one null check away from landing this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526664</commentid>
    <comment_count>39</comment_count>
      <attachid>120418</attachid>
    <who name="Karl Koscher">supersat</who>
    <bug_when>2011-12-22 17:32:15 -0800</bug_when>
    <thetext>Created attachment 120418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526813</commentid>
    <comment_count>40</comment_count>
      <attachid>120418</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-23 03:45:47 -0800</bug_when>
    <thetext>Comment on attachment 120418
Patch

Clearing flags on attachment: 120418

Committed r103620: &lt;http://trac.webkit.org/changeset/103620&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526814</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-23 03:45:55 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527709</commentid>
    <comment_count>42</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-12-28 10:54:53 -0800</bug_when>
    <thetext>Rolled out because of crashes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529186</commentid>
    <comment_count>43</comment_count>
      <attachid>121024</attachid>
    <who name="Charles Reis">creis</who>
    <bug_when>2012-01-03 17:13:03 -0800</bug_when>
    <thetext>Created attachment 121024
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529189</commentid>
    <comment_count>44</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2012-01-03 17:14:37 -0800</bug_when>
    <thetext>I&apos;ve added a null check to Karl&apos;s patch in FrameLoaderClientImpl::willCheckAndDispatchMessageEvent, which should prevent the crashes we saw.  All the accesses to m_webFrame-&gt;client() in that file are similarly guarded, so it seems consistent to me.  Can we try again?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529202</commentid>
    <comment_count>45</comment_count>
      <attachid>121024</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-03 17:29:48 -0800</bug_when>
    <thetext>Comment on attachment 121024
Patch

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529279</commentid>
    <comment_count>46</comment_count>
      <attachid>121024</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-03 20:38:58 -0800</bug_when>
    <thetext>Comment on attachment 121024
Patch

Clearing flags on attachment: 121024

Committed r104005: &lt;http://trac.webkit.org/changeset/104005&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529280</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-03 20:39:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531152</commentid>
    <comment_count>48</comment_count>
      <attachid>121024</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2012-01-06 10:36:37 -0800</bug_when>
    <thetext>Comment on attachment 121024
Patch

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

&gt; LayoutTests/platform/chromium/fast/events/intercept-postmessage.html:40
&gt; +        window.layoutTestController.dumpFrameLoadCallbacks();

This test is producing two outputs: See http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;tests=platform%2Fchromium%2Ffast%2Fevents%2Fintercept-postmessage.html depending on whether the intercepted messages occur before or after the frame loading messages. 

Are the frame loading messages necessary? If not, it sounds like a simple fix would be to remove laoutTestController.dumpFrameLoadCallbacks()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531162</commentid>
    <comment_count>49</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2012-01-06 10:46:41 -0800</bug_when>
    <thetext>(In reply to comment #48)
&gt; (From update of attachment 121024 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=121024&amp;action=review
&gt; 
&gt; &gt; LayoutTests/platform/chromium/fast/events/intercept-postmessage.html:40
&gt; &gt; +        window.layoutTestController.dumpFrameLoadCallbacks();
&gt; 
&gt; This test is producing two outputs: See http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;tests=platform%2Fchromium%2Ffast%2Fevents%2Fintercept-postmessage.html depending on whether the intercepted messages occur before or after the frame loading messages. 
&gt; 
&gt; Are the frame loading messages necessary? If not, it sounds like a simple fix would be to remove laoutTestController.dumpFrameLoadCallbacks()

No, I think it should be safe to remove them.  We just care that the &quot;intercepted postMessage&quot; lines show up.  Thanks for the suggestion.

I can get to it later this morning if that&apos;s soon enough.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531291</commentid>
    <comment_count>50</comment_count>
    <who name="Charles Reis">creis</who>
    <bug_when>2012-01-06 12:45:28 -0800</bug_when>
    <thetext>(In reply to comment #49)
&gt; (In reply to comment #48)
&gt; &gt; (From update of attachment 121024 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=121024&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; LayoutTests/platform/chromium/fast/events/intercept-postmessage.html:40
&gt; &gt; &gt; +        window.layoutTestController.dumpFrameLoadCallbacks();
&gt; &gt; 
&gt; &gt; This test is producing two outputs: See http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;tests=platform%2Fchromium%2Ffast%2Fevents%2Fintercept-postmessage.html depending on whether the intercepted messages occur before or after the frame loading messages. 
&gt; &gt; 
&gt; &gt; Are the frame loading messages necessary? If not, it sounds like a simple fix would be to remove laoutTestController.dumpFrameLoadCallbacks()
&gt; 
&gt; No, I think it should be safe to remove them.  We just care that the &quot;intercepted postMessage&quot; lines show up.  Thanks for the suggestion.
&gt; 
&gt; I can get to it later this morning if that&apos;s soon enough.

I&apos;ve posted a fix for review to https://bugs.webkit.org/show_bug.cgi?id=75718.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117975</attachid>
            <date>2011-12-05 18:24:46 -0800</date>
            <delta_ts>2011-12-06 18:21:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73883-20111205182445.patch</filename>
            <type>text/plain</type>
            <size>9061</size>
            <attacher name="Karl Koscher">supersat</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU4YjBlZGU2ZWY3NTc3
MDZjYWU1MmZjNmY2M2EwYWE0NDIzZGZjNy4uZTczMWFjYzYzNDk3NmRjZWRlNjNhODgwMDhiYTA1
MDRmMTEyNzJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDExLTEyLTA1ICBLYXJs
IEtvc2NoZXIgIDxzdXBlcnNhdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgR2l2ZSBlbWJlZGRl
cnMgYSBjaGFuY2UgdG8gaGFuZGxlIHBvc3RNZXNzYWdlIGNhbGxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzg4MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisg
ICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjppbnRlcmNlcHRQb3N0TWVzc2FnZSk6IGFzayB0aGUgRnJhbWVMb2FkZXJDbGllbnQg
aWYgaXQgd2FudHMgdG8KKyAgICAgICAgICAgIGhhbmRsZSB0aGlzIHBvc3RNZXNzYWdlCisgICAg
ICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVy
Q2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudDo6aW50ZXJjZXB0
UG9zdE1lc3NhZ2UpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1lc3NhZ2VUaW1lckZpcmVkKTogYWRkIGEgY2FsbCB0byBG
cmFtZUxvYWRlcjo6aW50ZXJjZXB0UG9zdE1lc3NhZ2UKKwogMjAxMS0xMi0wNSAgQ2hyaXMgRmxl
aXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBhcmlhLWhpZGRlbiBk
b2Vzbid0IHdvcmsgb24gaWZyYW1lIGVsZW1lbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IGMwMTk5OTM3MjM4NzAxYTMwYzViZGYxOWNjMDM2ZTE4NGY3MTU2NWEuLmYyZTYyZGUxYTdm
YWIxZjI1M2NmOGZmYzgwYjQ0ZDcyMGE2NGY2OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTItMDUgIEthcmwgS29zY2hlciAgPHN1cGVyc2F0QGNo
cm9taXVtLm9yZz4KKworICAgICAgICBHaXZlIGVtYmVkZGVycyBhIGNoYW5jZSB0byBoYW5kbGUg
cG9zdE1lc3NhZ2UgY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTczODgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWVDbGllbnQ6OmludGVyY2VwdFBvc3RNZXNzYWdlKTogaW50ZXJmYWNlIHRvIGdpdmUgdGhl
IGVtYmVkZGVyIGEgY2hhbmNlCisgICAgICAgICAgICB0byBoYW5kbGUgdGhpcyBwb3N0TWVzc2Fn
ZSBjYWxsCisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6aW50ZXJjZXB0UG9zdE1lc3NhZ2UpOiBD
YWxsIGludGVyY2VwdFBvc3RNZXNzYWdlIG9uCisgICAgICAgICAgICBXZWJGcmFtZUNsaWVudAor
ICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaDoKKwogMjAxMS0xMi0wNSAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIEFub3RoZXIgYXR0ZW1wdGVk
IGJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDY3YzZj
YmE0MDkwZmM4OWFmNGMxNjcyZjZiMjhhM2EzNDA3MWU3MjEuLmI3MTgxMTNmYjJkNWYyMjRlMDg3
OTI2ZTZjMTQ5NmRjOTFjMmY4ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cApAQCAtNzMsNiArNzMsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgi
CisjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5o
IgogI2luY2x1ZGUgIk1haW5SZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAg
LTMyOTUsNiArMzI5NiwxMSBAQCBOZXR3b3JraW5nQ29udGV4dCogRnJhbWVMb2FkZXI6Om5ldHdv
cmtpbmdDb250ZXh0KCkgY29uc3QKICAgICByZXR1cm4gbV9uZXR3b3JraW5nQ29udGV4dC5nZXQo
KTsKIH0KIAorYm9vbCBGcmFtZUxvYWRlcjo6aW50ZXJjZXB0UG9zdE1lc3NhZ2UoU2VjdXJpdHlP
cmlnaW4qIHRhcmdldCwgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2ZW50KSBjb25zdAorewor
ICAgIHJldHVybiBtX2NsaWVudC0+aW50ZXJjZXB0UG9zdE1lc3NhZ2UodGFyZ2V0LCBldmVudCk7
Cit9CisKIGJvb2wgRnJhbWVMb2FkZXJDbGllbnQ6Omhhc0hUTUxWaWV3KCkgY29uc3QKIHsKICAg
ICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggMWU3N2I3
YzYyOWQxODI2ZWM4Yjc4NGNmZDMxZjlhNWYzZTc2MzdhOC4uNDQ4MDZiZjJjNDI2ODQ3ZWZiZWM0
OGI3ZDZiYTcwNDUyNmRjZjBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAg
LTYxLDYgKzYxLDcgQEAgY2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRm9ybVN1Ym1pc3Npb247CiBj
bGFzcyBGcmFtZUxvYWRlckNsaWVudDsKIGNsYXNzIEZyYW1lTmV0d29ya2luZ0NvbnRleHQ7Citj
bGFzcyBNZXNzYWdlRXZlbnQ7CiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uOwogY2xhc3MgTmV0d29y
a2luZ0NvbnRleHQ7CiBjbGFzcyBQYWdlOwpAQCAtMjg0LDYgKzI4NSw5IEBAIHB1YmxpYzoKIAog
ICAgIE5ldHdvcmtpbmdDb250ZXh0KiBuZXR3b3JraW5nQ29udGV4dCgpIGNvbnN0OwogCisgICAg
Ly8gUmV0dXJucyB0cnVlIGlmIHRoZSBlbWJlZGRlciBpbnRlcmNlcHRlZCB0aGUgcG9zdE1lc3Nh
Z2UgY2FsbAorICAgIGJvb2wgaW50ZXJjZXB0UG9zdE1lc3NhZ2UoU2VjdXJpdHlPcmlnaW4qIHRh
cmdldCwgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+KSBjb25zdDsKKwogI2lmIEVOQUJMRShXRUJf
QVJDSElWRSkgfHwgRU5BQkxFKE1IVE1MKQogICAgIEFyY2hpdmUqIGFyY2hpdmUoKSBjb25zdCB7
IHJldHVybiBtX2FyY2hpdmUuZ2V0KCk7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaAppbmRleCBiZTc0YjdjMzJhMWU3YjFkZGVkOWEzMjJiMGU4ZjIz
NzYwZWQyZmVmLi40Y2JjMjQ0ZWZhZjRiMmFhYzEzYzNkNTE2MzFmOTU2MGVjODExYmYwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtNzksNiArNzksNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSFRNTFBsdWdJbkVsZW1lbnQ7CiAgICAg
Y2xhc3MgSW50U2l6ZTsKICAgICBjbGFzcyBLVVJMOworICAgIGNsYXNzIE1lc3NhZ2VFdmVudDsK
ICAgICBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uOwogICAgIGNsYXNzIFBhZ2U7CiAgICAgY2xhc3Mg
UHJvdGVjdGlvblNwYWNlOwpAQCAtMzE5LDYgKzMyMCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0
ZU5ldHdvcmtpbmdDb250ZXh0KCkgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQ
YWludEJyb2tlbkltYWdlKGNvbnN0IEtVUkwmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAg
ICAgICAgdmlydHVhbCBib29sIGludGVyY2VwdFBvc3RNZXNzYWdlKFNlY3VyaXR5T3JpZ2luKiB0
YXJnZXQsIFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50PikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKaW5kZXggNzM0N2MyOTIzOTgzYzhmZjc4NTAwM2IxM2RmM2Y2NmY1M2RmY2JiNy4uMzMwYzlh
YzM0ZTVhM2ZmM2NhN2U5Njk0MzJkZDE5MmNjNjA0YzkyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcApAQCAtOTEwLDYgKzkxMCwxMSBAQCB2b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2VU
aW1lckZpcmVkKFBhc3NPd25QdHI8UG9zdE1lc3NhZ2VUaW1lcj4gdCkKICAgICBpZiAoIWRvY3Vt
ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIEdpdmUgdGhlIGVtYmVkZGVyIGEgY2hh
bmNlIHRvIGludGVyY2VwdCB0aGlzIHBvc3RNZXNzYWdlIGJlY2F1c2UgdGhpcworICAgIC8vIERP
TVdpbmRvdyBtaWdodCBiZSBhIHByb3h5IGZvciBhbm90aGVyIGluIENocm9taXVtCisgICAgaWYg
KG1fZnJhbWUtPmxvYWRlcigpLT5pbnRlcmNlcHRQb3N0TWVzc2FnZSh0aW1lci0+dGFyZ2V0T3Jp
Z2luKCksIHRpbWVyLT5ldmVudChkb2N1bWVudCgpKSkpCisgICAgICByZXR1cm47CisKICAgICBp
ZiAodGltZXItPnRhcmdldE9yaWdpbigpKSB7CiAgICAgICAgIC8vIENoZWNrIHRhcmdldCBvcmln
aW4gbm93IHNpbmNlIHRoZSB0YXJnZXQgZG9jdW1lbnQgbWF5IGhhdmUgY2hhbmdlZCBzaW5jZSB0
aGUgc2ltZXIgd2FzIHNjaGVkdWxlZC4KICAgICAgICAgaWYgKCF0aW1lci0+dGFyZ2V0T3JpZ2lu
KCktPmlzU2FtZVNjaGVtZUhvc3RQb3J0KGRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVu
dC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAppbmRl
eCBiMjEzMjI5OGUxMmUzYjZmMjE0ZWUzMDRjMzUzY2JmMWU1YjI2NzVkLi5iZWI2ZTc3NjAzN2U0
NDk1M2Q1YmRkODA0ZDliOGM1NGY2MGRmZmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKQEAgLTMxLDkgKzMxLDExIEBACiAjaWZuZGVmIFdl
YkZyYW1lQ2xpZW50X2gKICNkZWZpbmUgV2ViRnJhbWVDbGllbnRfaAogCisjaW5jbHVkZSAiV2Vi
RE9NTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldl
Yk5hdmlnYXRpb25Qb2xpY3kuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uVHlwZS5oIgorI2lu
Y2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiV2ViU3RvcmFnZVF1b3RhVHlw
ZS5oIgogI2luY2x1ZGUgIldlYlRleHREaXJlY3Rpb24uaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJDb21tb24uaCIKQEAgLTUwLDYgKzUyLDcgQEAgY2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZUhv
c3Q7CiBjbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudDsKIGNsYXNzIFdlYkNvb2tp
ZUphcjsKIGNsYXNzIFdlYkRhdGFTb3VyY2U7CitjbGFzcyBXZWJET01FdmVudDsKIGNsYXNzIFdl
YkZvcm1FbGVtZW50OwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJbnRlbnRTZXJ2aWNlSW5m
bzsKQEAgLTU4LDcgKzYxLDYgQEAgY2xhc3MgV2ViTWVkaWFQbGF5ZXI7CiBjbGFzcyBXZWJNZWRp
YVBsYXllckNsaWVudDsKIGNsYXNzIFdlYk5vZGU7CiBjbGFzcyBXZWJQbHVnaW47Ci1jbGFzcyBX
ZWJTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFdlYlNoYXJlZFdvcmtlcjsKIGNsYXNzIFdlYlN0b3Jh
Z2VRdW90YUNhbGxiYWNrczsKIGNsYXNzIFdlYlN0cmluZzsKQEAgLTM4NSw2ICszODcsMTUgQEAg
cHVibGljOgogICAgIC8vIHRoZSBXZWJGcmFtZSBzdGFydGluZyB0aGUgYWN0aXZpdHkuCiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoSW50ZW50KFdlYkZyYW1lKiwgY29uc3QgV2ViSW50ZW50Jikg
eyB9CiAKKyAgICAvLyBNZXNzYWdlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8vIE5vdGlmaWVzIHRoZSBlbWJlZGRlciB0aGF0
IGEgcG9zdE1lc3NhZ2Ugd2FzIGlzc3VlZCBvbiB0aGlzIGZyYW1lLCBhbmQKKyAgICAvLyBnaXZl
cyB0aGUgZW1iZWRkZXIgYSBjaGFuY2UgdG8gaGFuZGxlIGl0IGluc3RlYWQgb2YgV2ViS2l0LiBS
ZXR1cm5zIHRydWUKKyAgICAvLyBpZiB0aGUgZW1iZWRkZXIgaGFuZGxlZCBpdC4KKyAgICB2aXJ0
dWFsIGJvb2wgaW50ZXJjZXB0UG9zdE1lc3NhZ2UoaW50NjQgZnJhbWVJZCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViU2VjdXJpdHlPcmlnaW4gdGFyZ2V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJET01FdmVudCBldmVudCkgeyBy
ZXR1cm4gZmFsc2U7IH0KKwogcHJvdGVjdGVkOgogICAgIH5XZWJGcmFtZUNsaWVudCgpIHsgfQog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuY3BwCmluZGV4IDBkZDFkYjhjN2FkYmQxMDk1ZTU0MTRhNWZkOGI2ZWFhYTA2MDdmYjku
LmRjZDMzYTc5MjNmNDQwNDU3NTNjZjFkODMzNWQ4NDYwZTEwYTIwM2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcApAQCAt
NDcsNiArNDcsNyBAQAogI2luY2x1ZGUgIkhUTUxBcHBsZXRFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTEZvcm1FbGVtZW50LmgiICAvLyBuZWVkZWQgYnkgRm9ybVN0YXRlLmgKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKKyNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJNSU1FVHlw
ZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIK
QEAgLTU4LDYgKzU5LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3RyaW5nRXh0cmFzLmgiCisjaW5jbHVkZSAiV2ViRE9N
RXZlbnQuaCIKICNpbmNsdWRlICJXZWJEYXRhU291cmNlSW1wbC5oIgogI2luY2x1ZGUgIldlYkRl
dlRvb2xzQWdlbnRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViRG9jdW1lbnQuaCIKQEAgLTE2MTYs
NCArMTYxOCwxMSBAQCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IEZyYW1lTG9h
ZGVyQ2xpZW50SW1wbDo6Y3JlYXRlTmV0d29ya2luZ0NvbnRleAogICAgIHJldHVybiBGcmFtZU5l
dHdvcmtpbmdDb250ZXh0SW1wbDo6Y3JlYXRlKG1fd2ViRnJhbWUtPmZyYW1lKCkpOwogfQogCiti
b29sIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6aW50ZXJjZXB0UG9zdE1lc3NhZ2UoU2VjdXJpdHlP
cmlnaW4qIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4gZXZlbnQpIGNvbnN0Cit7CisgICAgcmV0
dXJuIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5pbnRlcmNlcHRQb3N0TWVzc2FnZSgKKyAgICAgICAg
bV93ZWJGcmFtZS0+aWRlbnRpZmllcigpLCBXZWJTZWN1cml0eU9yaWdpbih0YXJnZXQpLCBXZWJE
T01FdmVudChldmVudCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKaW5kZXggMjIy
OTRmOTBjMzNhNjgzZTg5OTM2NWQ4OTBhZWQyMTMzZDViNDQ4OC4uNmU3YWEwZjBmYWM5MDgzMjYx
M2M4NTkxZTVjNjA5NjBkYjgyZWNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKQEAgLTIwNiw2ICsyMDYsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpZE5vdEFsbG93UGx1Z2lucygpOwogCiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtp
bmdDb250ZXh0KCk7CisgICAgdmlydHVhbCBib29sIGludGVyY2VwdFBvc3RNZXNzYWdlKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luKiB0YXJnZXQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6TWVzc2FnZUV2
ZW50PikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBtYWtlRG9jdW1lbnRWaWV3KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118156</attachid>
            <date>2011-12-06 18:21:23 -0800</date>
            <delta_ts>2011-12-09 12:57:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73883-20111206182122.patch</filename>
            <type>text/plain</type>
            <size>16381</size>
            <attacher name="Karl Koscher">supersat</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGU4MzBjNTQ0ZDE5NGU5
MzI1YjA2M2I5OTM3YTU2ZGU2NWUwZGI1Yi4uOTdhMDM3MzBiMzcxMmZjMjA4OWRlM2UyYjhlNDhl
OWNlMGZiZWRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDExLTEyLTA2ICBLYXJs
IEtvc2NoZXIgIDxzdXBlcnNhdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgR2l2ZSBlbWJlZGRl
cnMgYSBjaGFuY2UgdG8gaGFuZGxlIHBvc3RNZXNzYWdlIGNhbGxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzg4MworCisgICAgICAgIFRvIHN1cHBv
cnQgY3Jvc3MtcHJvY2VzcyBwb3N0TWVzc2FnZSBjYWxscyBpbiBDaHJvbWl1bSAoYnVnIDczMzM3
KSwgd2UgbmVlZCB0byBpbnRlcmNlcHQgCisgICAgICAgIHBvc3RNZXNzYWdlIGNhbGxzIHRvIHBy
b3h5IHdpbmRvd3MuIE9yaWdpbmFsbHkgd2Ugd2VyZSBqdXN0IGdvaW5nIHRvIGFkZCBhIG5hdGl2
ZSBldmVudAorICAgICAgICBsaXN0ZW5lciBvbiB0aGUgQ2hyb21pdW0gc2lkZSwgYnV0IHRoYXQg
cmVxdWlyZWQgbW9yZSBjaGFuZ2VzIHRvIFdlYktpdCBhbmQgd2FzIGEgYml0IG9mCisgICAgICAg
IGEgaGFjay4gU2VlIGJ1ZyA3MzM1OSBmb3IgYSBkaXNjdXNzIGFib3V0IG1vdmluZyB0byB0aGlz
IGFwcHJvYWNoLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3Q6IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL2ludGVyY2VwdC1wb3N0bWVz
c2FnZS5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmludGVyY2VwdFBvc3RNZXNzYWdlKTogYXNrIHRoZSBGcmFt
ZUxvYWRlckNsaWVudCBpZiBpdCB3YW50cyB0bworICAgICAgICAgICAgaGFuZGxlIHRoaXMgcG9z
dE1lc3NhZ2UKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50OjppbnRlcmNlcHRQb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0TWVzc2FnZVRpbWVyRmlyZWQpOiBh
ZGQgYSBjYWxsIHRvIEZyYW1lTG9hZGVyOjppbnRlcmNlcHRQb3N0TWVzc2FnZQorCiAyMDExLTEy
LTA2ICBSdWJlbiAgPGNocm9taXVtQGh5YnJpZHNvdXJjZS5vcmc+CiAKICAgICAgICAgRW5hYmxl
IHdlYiBhdWRpbyBieSBkZWZhdWx0IG9uIG5vbi1NYWMgUE9TSVggcGxhdGZvcm1zCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IGQ4MzFhNDk2NmNkZjAyM2RiMmE2MDE1NWE1MGUyZGE5NTRl
OTJhZTMuLjFlYjg5YzkwMGMyN2JlZDY0MWViNTFmZmEyNDE1ZWRiZjE2NzllZDQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTItMDYgIEthcmwgS29z
Y2hlciAgPHN1cGVyc2F0QGNocm9taXVtLm9yZz4KKworICAgICAgICBHaXZlIGVtYmVkZGVycyBh
IGNoYW5jZSB0byBoYW5kbGUgcG9zdE1lc3NhZ2UgY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczODgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6OmludGVyY2VwdFBvc3RNZXNzYWdlKTogaW50
ZXJmYWNlIHRvIGdpdmUgdGhlIGVtYmVkZGVyIGEgY2hhbmNlCisgICAgICAgICAgICB0byBoYW5k
bGUgdGhpcyBwb3N0TWVzc2FnZSBjYWxsCisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6aW50ZXJj
ZXB0UG9zdE1lc3NhZ2UpOiBDYWxsIGludGVyY2VwdFBvc3RNZXNzYWdlIG9uCisgICAgICAgICAg
ICBXZWJGcmFtZUNsaWVudAorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaDoK
KwogMjAxMS0xMi0wNiAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBbY2hyb21pdW1dIFNldCBvcGFxdWUgZmxhZyBmb3IgSW1hZ2VMYXllckNocm9taXVtCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBjNGIwN2U2OGQxMTU3Y2Y5NTI3
YmYwZmJlZDVmYzdlYzA5YWI3OWJkLi5mNTA1NDgxNDdmYTlkMDI0OWVkOWY4YjI3MjdlYmM1M2Qx
MWYxMmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTc0LDYgKzc0
LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgorI2luY2x1ZGUgIk1l
c3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJN
YWluUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC0zMzExLDYgKzMzMTIs
MTEgQEAgTmV0d29ya2luZ0NvbnRleHQqIEZyYW1lTG9hZGVyOjpuZXR3b3JraW5nQ29udGV4dCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fbmV0d29ya2luZ0NvbnRleHQuZ2V0KCk7CiB9CiAKK2Jvb2wg
RnJhbWVMb2FkZXI6OmludGVyY2VwdFBvc3RNZXNzYWdlKFNlY3VyaXR5T3JpZ2luKiB0YXJnZXQs
IFBhc3NSZWZQdHI8TWVzc2FnZUV2ZW50PiBldmVudCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9j
bGllbnQtPmludGVyY2VwdFBvc3RNZXNzYWdlKHRhcmdldCwgZXZlbnQpOworfQorCiBib29sIEZy
YW1lTG9hZGVyQ2xpZW50OjpoYXNIVE1MVmlldygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IDFlNzdiN2M2MjlkMTgyNmVjOGI3
ODRjZmQzMWY5YTVmM2U3NjM3YTguLjQ0ODA2YmYyYzQyNjg0N2VmYmVjNDhiN2Q2YmE3MDQ1MjZk
Y2YwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC02MSw2ICs2MSw3IEBA
IGNsYXNzIEZvcm1TdGF0ZTsKIGNsYXNzIEZvcm1TdWJtaXNzaW9uOwogY2xhc3MgRnJhbWVMb2Fk
ZXJDbGllbnQ7CiBjbGFzcyBGcmFtZU5ldHdvcmtpbmdDb250ZXh0OworY2xhc3MgTWVzc2FnZUV2
ZW50OwogY2xhc3MgTmF2aWdhdGlvbkFjdGlvbjsKIGNsYXNzIE5ldHdvcmtpbmdDb250ZXh0Owog
Y2xhc3MgUGFnZTsKQEAgLTI4NCw2ICsyODUsOSBAQCBwdWJsaWM6CiAKICAgICBOZXR3b3JraW5n
Q29udGV4dCogbmV0d29ya2luZ0NvbnRleHQoKSBjb25zdDsKIAorICAgIC8vIFJldHVybnMgdHJ1
ZSBpZiB0aGUgZW1iZWRkZXIgaW50ZXJjZXB0ZWQgdGhlIHBvc3RNZXNzYWdlIGNhbGwKKyAgICBi
b29sIGludGVyY2VwdFBvc3RNZXNzYWdlKFNlY3VyaXR5T3JpZ2luKiB0YXJnZXQsIFBhc3NSZWZQ
dHI8TWVzc2FnZUV2ZW50PikgY29uc3Q7CisKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVO
QUJMRShNSFRNTCkKICAgICBBcmNoaXZlKiBhcmNoaXZlKCkgY29uc3QgeyByZXR1cm4gbV9hcmNo
aXZlLmdldCgpOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKaW5kZXggYmU3NGI3YzMyYTFlN2IxZGRlZDlhMzIyYjBlOGYyMzc2MGVkMmZlZi4uNGNi
YzI0NGVmYWY0YjJhYWMxM2MzZDUxNjMxZjk1NjBlYzgxMWJmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTc5LDYgKzc5LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgIGNsYXNzIEhUTUxQbHVnSW5FbGVtZW50OwogICAgIGNsYXNzIEludFNpemU7
CiAgICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBNZXNzYWdlRXZlbnQ7CiAgICAgY2xhc3MgTmF2
aWdhdGlvbkFjdGlvbjsKICAgICBjbGFzcyBQYWdlOwogICAgIGNsYXNzIFByb3RlY3Rpb25TcGFj
ZTsKQEAgLTMxOSw2ICszMjAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29u
dGV4dCgpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFn
ZShjb25zdCBLVVJMJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgICAgIHZpcnR1YWwg
Ym9vbCBpbnRlcmNlcHRQb3N0TWVzc2FnZShTZWN1cml0eU9yaWdpbiogdGFyZ2V0LCBQYXNzUmVm
UHRyPE1lc3NhZ2VFdmVudD4pIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDU3MTJk
NjZmMzRmOGZlOGI3ODY3ZjQxNTNmOGIwMmZlOWZjMjlhNmMuLjFiYWMxNDc4ZmMxYWZmMGNiZmNl
NmM1MmZlNmNmN2NlMzkxMWE4YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTkx
MCw2ICs5MTAsMTMgQEAgdm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlVGltZXJGaXJlZChQYXNz
T3duUHRyPFBvc3RNZXNzYWdlVGltZXI+IHQpCiAgICAgaWYgKCFkb2N1bWVudCgpKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBSZWZQdHI8TWVzc2FnZUV2ZW50PiBldmVudCA9IHRpbWVyLT5ldmVu
dChkb2N1bWVudCgpKTsKKworICAgIC8vIEdpdmUgdGhlIGVtYmVkZGVyIGEgY2hhbmNlIHRvIGlu
dGVyY2VwdCB0aGlzIHBvc3RNZXNzYWdlIGJlY2F1c2UgdGhpcworICAgIC8vIERPTVdpbmRvdyBt
aWdodCBiZSBhIHByb3h5IGZvciBhbm90aGVyIGluIENocm9taXVtCisgICAgaWYgKG1fZnJhbWUt
PmxvYWRlcigpLT5pbnRlcmNlcHRQb3N0TWVzc2FnZSh0aW1lci0+dGFyZ2V0T3JpZ2luKCksIGV2
ZW50KSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKHRpbWVyLT50YXJnZXRPcmlnaW4oKSkg
ewogICAgICAgICAvLyBDaGVjayB0YXJnZXQgb3JpZ2luIG5vdyBzaW5jZSB0aGUgdGFyZ2V0IGRv
Y3VtZW50IG1heSBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIHNpbWVyIHdhcyBzY2hlZHVsZWQuCiAg
ICAgICAgIGlmICghdGltZXItPnRhcmdldE9yaWdpbigpLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChk
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgewpAQCAtOTIwLDcgKzkyNyw3IEBAIHZvaWQg
RE9NV2luZG93Ojpwb3N0TWVzc2FnZVRpbWVyRmlyZWQoUGFzc093blB0cjxQb3N0TWVzc2FnZVRp
bWVyPiB0KQogICAgICAgICB9CiAgICAgfQogCi0gICAgZGlzcGF0Y2hFdmVudCh0aW1lci0+ZXZl
bnQoZG9jdW1lbnQoKSkpOworICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQpOwogfQogCiBET01TZWxl
Y3Rpb24qIERPTVdpbmRvdzo6Z2V0U2VsZWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCmluZGV4IGIyMTMyMjk4ZTEyZTNiNmYyMTRlZTMw
NGMzNTNjYmYxZTViMjY3NWQuLmRlZmMwMDQ2NzQ2YjMzZDVjNDczYTk1M2QxMGZkNTQ2MDJlZDgw
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQu
aApAQCAtMzEsOSArMzEsMTEgQEAKICNpZm5kZWYgV2ViRnJhbWVDbGllbnRfaAogI2RlZmluZSBX
ZWJGcmFtZUNsaWVudF9oCiAKKyNpbmNsdWRlICJXZWJET01NZXNzYWdlRXZlbnQuaCIKICNpbmNs
dWRlICJXZWJJY29uVVJMLmgiCiAjaW5jbHVkZSAiV2ViTmF2aWdhdGlvblBvbGljeS5oIgogI2lu
Y2x1ZGUgIldlYk5hdmlnYXRpb25UeXBlLmgiCisjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4u
aCIKICNpbmNsdWRlICJXZWJTdG9yYWdlUXVvdGFUeXBlLmgiCiAjaW5jbHVkZSAiV2ViVGV4dERp
cmVjdGlvbi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgpAQCAtNTAsNiArNTIs
NyBAQCBjbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdDsKIGNsYXNzIFdlYkFwcGxpY2F0aW9u
Q2FjaGVIb3N0Q2xpZW50OwogY2xhc3MgV2ViQ29va2llSmFyOwogY2xhc3MgV2ViRGF0YVNvdXJj
ZTsKK2NsYXNzIFdlYkRPTUV2ZW50OwogY2xhc3MgV2ViRm9ybUVsZW1lbnQ7CiBjbGFzcyBXZWJG
cmFtZTsKIGNsYXNzIFdlYkludGVudFNlcnZpY2VJbmZvOwpAQCAtNTgsNyArNjEsNiBAQCBjbGFz
cyBXZWJNZWRpYVBsYXllcjsKIGNsYXNzIFdlYk1lZGlhUGxheWVyQ2xpZW50OwogY2xhc3MgV2Vi
Tm9kZTsKIGNsYXNzIFdlYlBsdWdpbjsKLWNsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOwogY2xhc3Mg
V2ViU2hhcmVkV29ya2VyOwogY2xhc3MgV2ViU3RvcmFnZVF1b3RhQ2FsbGJhY2tzOwogY2xhc3Mg
V2ViU3RyaW5nOwpAQCAtMzg1LDYgKzM4NywxNSBAQCBwdWJsaWM6CiAgICAgLy8gdGhlIFdlYkZy
YW1lIHN0YXJ0aW5nIHRoZSBhY3Rpdml0eS4KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnRl
bnQoV2ViRnJhbWUqLCBjb25zdCBXZWJJbnRlbnQmKSB7IH0KIAorICAgIC8vIE1lc3NhZ2VzIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisg
ICAgLy8gTm90aWZpZXMgdGhlIGVtYmVkZGVyIHRoYXQgYSBwb3N0TWVzc2FnZSB3YXMgaXNzdWVk
IG9uIHRoaXMgZnJhbWUsIGFuZAorICAgIC8vIGdpdmVzIHRoZSBlbWJlZGRlciBhIGNoYW5jZSB0
byBoYW5kbGUgaXQgaW5zdGVhZCBvZiBXZWJLaXQuIFJldHVybnMgdHJ1ZQorICAgIC8vIGlmIHRo
ZSBlbWJlZGRlciBoYW5kbGVkIGl0LgorICAgIHZpcnR1YWwgYm9vbCBpbnRlcmNlcHRQb3N0TWVz
c2FnZShXZWJGcmFtZSogc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBXZWJTZWN1cml0eU9yaWdpbiB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdlYkRPTUV2ZW50KSB7IHJldHVybiBmYWxzZTsgfQorCiBwcm90ZWN0ZWQ6
CiAgICAgfldlYkZyYW1lQ2xpZW50KCkgeyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKaW5kZXggMGRkMWRiOGM3YWRi
ZDEwOTVlNTQxNGE1ZmQ4YjZlYWFhMDYwN2ZiOS4uYTNhODYwNTBiZTAzZDg4ZTg0MDEyNWFlMmIw
YmRkOTdmNTJhMzVkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiSFRN
TEFwcGxldEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIgIC8vIG5lZWRl
ZCBieSBGb3JtU3RhdGUuaAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIk1lc3Nh
Z2VFdmVudC5oIgogI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJNb3Vz
ZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtNTgsNiArNTksNyBAQAogI2luY2x1ZGUg
IlJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdHJp
bmdFeHRyYXMuaCIKKyNpbmNsdWRlICJXZWJET01FdmVudC5oIgogI2luY2x1ZGUgIldlYkRhdGFT
b3VyY2VJbXBsLmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudFByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJEb2N1bWVudC5oIgpAQCAtMTYxNiw0ICsxNjE4LDExIEBAIFBhc3NSZWZQdHI8RnJh
bWVOZXR3b3JraW5nQ29udGV4dD4gRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpjcmVhdGVOZXR3b3Jr
aW5nQ29udGV4CiAgICAgcmV0dXJuIEZyYW1lTmV0d29ya2luZ0NvbnRleHRJbXBsOjpjcmVhdGUo
bV93ZWJGcmFtZS0+ZnJhbWUoKSk7CiB9CiAKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpp
bnRlcmNlcHRQb3N0TWVzc2FnZShTZWN1cml0eU9yaWdpbiogdGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NSZWZQdHI8TWVzc2FnZUV2
ZW50PiBldmVudCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJGcmFtZS0+Y2xpZW50KCktPmlu
dGVyY2VwdFBvc3RNZXNzYWdlKAorICAgICAgICBtX3dlYkZyYW1lLCBXZWJTZWN1cml0eU9yaWdp
bih0YXJnZXQpLCBXZWJET01FdmVudChldmVudCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJ
bXBsLmgKaW5kZXggMjIyOTRmOTBjMzNhNjgzZTg5OTM2NWQ4OTBhZWQyMTMzZDViNDQ4OC4uNmU3
YWEwZjBmYWM5MDgzMjYxM2M4NTkxZTVjNjA5NjBkYjgyZWNhYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKQEAgLTIwNiw2ICsy
MDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZE5vdEFsbG93UGx1Z2lucygpOwog
CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+
IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7CisgICAgdmlydHVhbCBib29sIGludGVyY2VwdFBv
c3RNZXNzYWdlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0YXJnZXQsIFBhc3NSZWZQdHI8V2Vi
Q29yZTo6TWVzc2FnZUV2ZW50PikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBtYWtlRG9j
dW1lbnRWaWV3KCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggOGUzMWUxZTAyOTI3YzY3M2Y5NmEyYjY0Y2Ey
MGVmYWE4NTc1YmI4My4uYTNlMTVjZTA1NjFhZTU3YjUxNDU5Y2E0MTQzZTllNmQ1NThlYzdmMyAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcApAQCAtMjQ4LDYgKzI0OCw3IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpM
YXlvdXRUZXN0Q29udHJvbGxlcihUZXN0U2hlbGwqIHNoZWxsKQogICAgIGJpbmRQcm9wZXJ0eSgi
d2ViSGlzdG9yeUl0ZW1Db3VudCIsICZtX3dlYkhpc3RvcnlJdGVtQ291bnQpOwogICAgIGJpbmRQ
cm9wZXJ0eSgidGl0bGVUZXh0RGlyZWN0aW9uIiwgJm1fdGl0bGVUZXh0RGlyZWN0aW9uKTsKICAg
ICBiaW5kUHJvcGVydHkoInBsYXRmb3JtTmFtZSIsICZtX3BsYXRmb3JtTmFtZSk7CisgICAgYmlu
ZFByb3BlcnR5KCJpbnRlcmNlcHRQb3N0TWVzc2FnZSIsICZtX2ludGVyY2VwdFBvc3RNZXNzYWdl
KTsKIH0KIAogTGF5b3V0VGVzdENvbnRyb2xsZXI6On5MYXlvdXRUZXN0Q29udHJvbGxlcigpCkBA
IC02MzUsNiArNjM2LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVzZXQoKQogICAg
IG1fd2ViSGlzdG9yeUl0ZW1Db3VudC5zZXQoMCk7CiAgICAgbV90aXRsZVRleHREaXJlY3Rpb24u
c2V0KCJsdHIiKTsKICAgICBtX3BsYXRmb3JtTmFtZS5zZXQoImNocm9taXVtIik7CisgICAgbV9p
bnRlcmNlcHRQb3N0TWVzc2FnZS5zZXQoZmFsc2UpOwogICAgIG1fdXNlclN0eWxlU2hlZXRMb2Nh
dGlvbiA9IFdlYlVSTCgpOwogICAgIG1faXNQcmludGluZyA9IGZhbHNlOwogCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRl
eCAxMTJlMjk3ODZmMTdhNGNkYzZjMmUwMjY2NzQwNDAyYTM4ODk1ZGUzLi43ZDViMjFkMWViNzM3
YjhmZDQxMWRmMGZlYjVlMjk4YjkwYzE5N2Y1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTQ2OCw2ICs0NjgsMTEg
QEAgcHVibGljOgogICAgICAgICBtX3RpdGxlVGV4dERpcmVjdGlvbi5zZXQoZGlyID09IFdlYktp
dDo6V2ViVGV4dERpcmVjdGlvbkxlZnRUb1JpZ2h0ID8gImx0ciIgOiAicnRsIik7CiAgICAgfQog
CisgICAgYm9vbCBzaG91bGRJbnRlcmNlcHRQb3N0TWVzc2FnZSgpCisgICAgeworICAgICAgICBy
ZXR1cm4gbV9pbnRlcmNlcHRQb3N0TWVzc2FnZS5pc0Jvb2woKSAmJiBtX2ludGVyY2VwdFBvc3RN
ZXNzYWdlLnRvQm9vbGVhbigpOworICAgIH0KKwogICAgIHZvaWQgc2V0SXNQcmludGluZyhib29s
IHZhbHVlKSB7IG1faXNQcmludGluZyA9IHZhbHVlOyB9CiAgICAgYm9vbCBpc1ByaW50aW5nKCkg
eyByZXR1cm4gbV9pc1ByaW50aW5nOyB9CiAKQEAgLTY3OSw2ICs2ODQsOSBAQCBwcml2YXRlOgog
ICAgIC8vIEJvdW5kIHZhcmlhYmxlIHRvIHJldHVybiB0aGUgbmFtZSBvZiB0aGlzIHBsYXRmb3Jt
IChjaHJvbWl1bSkuCiAgICAgQ3BwVmFyaWFudCBtX3BsYXRmb3JtTmFtZTsKIAorICAgIC8vIEJv
dW5kIHZhcmlhYmxlIHRvIHNldCB3aGV0aGVyIHBvc3RNZXNzYWdlcyBzaG91bGQgYmUgaW50ZXJj
ZXB0ZWQgb3Igbm90CisgICAgQ3BwVmFyaWFudCBtX2ludGVyY2VwdFBvc3RNZXNzYWdlOworCiAg
ICAgV2ViS2l0OjpXZWJVUkwgbV91c2VyU3R5bGVTaGVldExvY2F0aW9uOwogCiAgICAgT3duUHRy
PFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jaz4gbV9zcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3Qu
Y3BwCmluZGV4IDJiZDgyZWFiZDI0NjdiYWI1OWU5NzY1YTAwNmQ0YTBmMjVjZWVmMWIuLmI4YTQz
YzQwMmJlM2VmNjRkZTk4ZmQyYjI2ZjUzMDhiMmU3ODdhYzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViQ29uc29sZU1lc3NhZ2Uu
aCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudURhdGEuaCIKKyNpbmNsdWRlICJXZWJET01NZXNz
YWdlRXZlbnQuaCIKICNpbmNsdWRlICJXZWJEYXRhU291cmNlLmgiCiAjaW5jbHVkZSAiV2ViRGV2
aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViRHJhZ0Rh
dGEuaCIKQEAgLTExOTgsNiArMTE5OSwxNiBAQCB2b2lkIFdlYlZpZXdIb3N0OjpvcGVuRmlsZVN5
c3RlbShXZWJGcmFtZSogZnJhbWUsIFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgbG9uZwogICAg
IHdlYmtpdF9zdXBwb3J0OjpPcGVuRmlsZVN5c3RlbShmcmFtZSwgdHlwZSwgc2l6ZSwgY3JlYXRl
LCBjYWxsYmFja3MpOwogfQogCitib29sIFdlYlZpZXdIb3N0OjppbnRlcmNlcHRQb3N0TWVzc2Fn
ZShXZWJGcmFtZSogc291cmNlLCBXZWJTZWN1cml0eU9yaWdpbiB0YXJnZXQsIFdlYkRPTUV2ZW50
IGV2ZW50KQoreworICAgIGlmIChtX3NoZWxsLT5zaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tz
KCkpIHsKKyAgICAgICAgcHJpbnRGcmFtZURlc2NyaXB0aW9uKHNvdXJjZSk7CisgICAgICAgIGZw
dXRzKCIgLSBpbnRlcmNlcHRQb3N0TWVzc2FnZVxuIiwgc3Rkb3V0KTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gbV9zaGVsbC0+bGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+c2hvdWxkSW50ZXJjZXB0UG9z
dE1lc3NhZ2UoKTsKK30KKwogLy8gUHVibGljIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBXZWJWaWV3SG9zdDo6
V2ViVmlld0hvc3QoVGVzdFNoZWxsKiBzaGVsbCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJWaWV3SG9zdC5oCmluZGV4IDkyMjE2M2FiOWFlNThmZGQ0NDZiYjQ5MGViNTJlNzQz
MjRhNzBiMmUuLjQ2OTNlNTM2ZmUxMmZhYzBkZTU1NDhkOGMwNDVkMjcwNmVlN2RkOTMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAtMjEzLDYgKzIx
Myw3IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2ViU3BlbGxDaGVja0Ns
aWVudCwgcHVibGljIFdlYktpdDo6V2ViVmlld0NsCiAgICAgdmlydHVhbCB2b2lkIGRpZFJ1bklu
c2VjdXJlQ29udGVudChXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJTZWN1cml0
eU9yaWdpbiYsIGNvbnN0IFdlYktpdDo6V2ViVVJMJik7CiAgICAgdmlydHVhbCB2b2lkIGRpZERl
dGVjdFhTUyhXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJVUkwmLCBib29sIGRp
ZEJsb2NrRW50aXJlUGFnZSk7CiAgICAgdmlydHVhbCB2b2lkIG9wZW5GaWxlU3lzdGVtKFdlYktp
dDo6V2ViRnJhbWUqLCBXZWJLaXQ6OldlYkZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBzaXpl
LCBib29sIGNyZWF0ZSwgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKik7CisgICAgdmly
dHVhbCBib29sIGludGVyY2VwdFBvc3RNZXNzYWdlKFdlYktpdDo6V2ViRnJhbWUqIHNvdXJjZSwg
V2ViS2l0OjpXZWJTZWN1cml0eU9yaWdpbiB0YXJnZXQsIFdlYktpdDo6V2ViRE9NRXZlbnQpOwog
CiAgICAgV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sqIGRldmljZU9yaWVu
dGF0aW9uQ2xpZW50TW9jaygpOwogICAgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZmFzdC9ldmVudHMvaW50ZXJjZXB0LXBvc3RtZXNzYWdlLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL2ludGVyY2VwdC1w
b3N0bWVzc2FnZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVkZTBjZTU4ZGYyMzkyNTFjY2Yz
NzBjYzg1ODUzZmJiNjEzYWQ4ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL2ludGVyY2VwdC1wb3N0bWVzc2FnZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSw3IEBACittYWluIGZyYW1lIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9y
RnJhbWUKK21haW4gZnJhbWUgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQorbWFpbiBm
cmFtZSAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGludGVyY2VwdFBvc3RN
ZXNzYWdlCittYWluIGZyYW1lIC0gaW50ZXJjZXB0UG9zdE1lc3NhZ2UKK1JFQ1YxCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL2ludGVyY2Vw
dC1wb3N0bWVzc2FnZS5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9l
dmVudHMvaW50ZXJjZXB0LXBvc3RtZXNzYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDUzNzY5OWYyMGQw
MGZjYWYyNDQyZTIyMDg4ZDI3MzNiZmZlYjQ0YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL2ludGVyY2VwdC1wb3N0bWVzc2FnZS5o
dG1sCkBAIC0wLDAgKzEsNDcgQEAKKzxodG1sPgorICA8aGVhZD4KKyAgICA8c2NyaXB0PgorICAg
ICAgZnVuY3Rpb24gd3JpdGUoc3RyKSB7CisgICAgICAgIHByZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdjb25zb2xlJyk7CisgICAgICAgIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZShzdHIgKyAnXG4nKTsKKyAgICAgICAgcHJlLmFwcGVuZENoaWxkKHRleHQpOworICAgICAgfQor
CisgICAgICBmdW5jdGlvbiByZWN2TXNnMShlKSB7CisgICAgICAgIHdyaXRlKCJSRUNWMSIpOwor
ICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3ZNc2cxLCBm
YWxzZSk7CisKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5pbnRlcmNlcHRQb3N0TWVzc2FnZSA9IHRydWU7CisK
KyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2TXNnMiwgZmFs
c2UpOworICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2UoIk1lc3NhZ2UgMiIsICIqIik7CisgICAg
ICAgCisgICAgICAgIC8vIFdlIG5lZWQgdG8gY2FsbCBzZXRUaW1lb3V0IGhlcmUgYmVjYXVzZSB3
ZSBpbnRlcmNlcHQgdGhlIG5leHQgZXZlbnQuCisgICAgICAgIC8vIElmIHRoaXMgdGVzdCBiZWNv
bWVzIGZsYWt5LCB5b3UgbWF5IG5lZWQgdG8gaW5jcmVhc2UgdGhpcyB0aW1lb3V0LgorICAgICAg
ICB3aW5kb3cuc2V0VGltZW91dCgiZG9uZSgpIiwgNTApOworICAgICAgfQorCisgICAgICBmdW5j
dGlvbiByZWN2TXNnMihlKSB7CisgICAgICAgIHdyaXRlKCJSRUNWMiIpOworICAgICAgfQorCisg
ICAgICBmdW5jdGlvbiBkb25lKCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7CisgICAgICB9CisKKyAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwg
cmVjdk1zZzEsIGZhbHNlKTsKKworICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEZyYW1lTG9hZENh
bGxiYWNrcygpOworICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgp
OworICAgICAgfQorCisgICAgICB3aW5kb3cucG9zdE1lc3NhZ2UoIk1lc3NhZ2UgMSIsICIqIik7
CisgICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+PHByZSBpZD0iY29uc29sZSI+PC9w
cmU+PC9ib2R5PgorPC9odG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118618</attachid>
            <date>2011-12-09 12:57:27 -0800</date>
            <delta_ts>2011-12-09 14:39:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73883-20111209125726.patch</filename>
            <type>text/plain</type>
            <size>17370</size>
            <attacher name="Karl Koscher">supersat</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2NmMmNiM2YzNDEzNGVm
OWUxNzYyYjBhNWQzZjZiMTZmZTE1MTE5YS4uYjVlNzI5NjIzNTYyYWMzNmNmNGJhNDViNjcxMTgx
ZTM1ODNlY2I4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDExLTEyLTA5ICBLYXJs
IEtvc2NoZXIgIDxzdXBlcnNhdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgR2l2ZSBlbWJlZGRl
cnMgYSBjaGFuY2UgdG8gaGFuZGxlIHBvc3RNZXNzYWdlIGNhbGxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzg4MworCisgICAgICAgIFRvIHN1cHBv
cnQgY3Jvc3MtcHJvY2VzcyBwb3N0TWVzc2FnZSBjYWxscyBpbiBDaHJvbWl1bSAoYnVnIDczMzM3
KSwgd2UgbmVlZCB0byBpbnRlcmNlcHQgCisgICAgICAgIHBvc3RNZXNzYWdlIGNhbGxzIHRvIHBy
b3h5IHdpbmRvd3MuIE9yaWdpbmFsbHkgd2Ugd2VyZSBqdXN0IGdvaW5nIHRvIGFkZCBhIG5hdGl2
ZSBldmVudAorICAgICAgICBsaXN0ZW5lciBvbiB0aGUgQ2hyb21pdW0gc2lkZSwgYnV0IHRoYXQg
cmVxdWlyZWQgbW9yZSBjaGFuZ2VzIHRvIFdlYktpdCBhbmQgd2FzIGEgYml0IG9mCisgICAgICAg
IGEgaGFjay4gU2VlIGJ1ZyA3MzM1OSBmb3IgYSBkaXNjdXNzIGFib3V0IG1vdmluZyB0byB0aGlz
IGFwcHJvYWNoLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3Q6IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL2ludGVyY2VwdC1wb3N0bWVz
c2FnZS5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OmludGVyY2VwdFBvc3RNZXNzYWdlKTogYXNrIHRoZSBGcmFt
ZUxvYWRlckNsaWVudCBpZiBpdCB3YW50cyB0bworICAgICAgICAgICAgaGFuZGxlIHRoaXMgcG9z
dE1lc3NhZ2UKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2Fk
ZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xp
ZW50OjppbnRlcmNlcHRQb3N0TWVzc2FnZSk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0TWVzc2FnZVRpbWVyRmlyZWQpOiBh
ZGQgYSBjYWxsIHRvIEZyYW1lTG9hZGVyOjppbnRlcmNlcHRQb3N0TWVzc2FnZQorCiAyMDExLTEy
LTA4ICBFcmlrIEFydmlkc3NvbiAgPGFydkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ29kZUdl
bmVyYXRvclY4OiBGaXggaXNzdWUgd2l0aCBvdmVybG9hZGVkIHN0YXRpYyBjb25kaXRpb25hbCBt
ZXRob2RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDY5YmNhY2VkMzVjY2FmZDU0OGEx
YTZjMzk2ZGNhMGUxYzMxMTE5ZWQuLjEzMWI3ZTRkMWE1YjY2OGM1MzkzM2IxMTE2ZGY4YWJhNzNm
M2JkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEt
MTItMDkgIEthcmwgS29zY2hlciAgPHN1cGVyc2F0QGNocm9taXVtLm9yZz4KKworICAgICAgICBH
aXZlIGVtYmVkZGVycyBhIGNoYW5jZSB0byBoYW5kbGUgcG9zdE1lc3NhZ2UgY2FsbHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczODgzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJh
bWVDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6OmludGVyY2VwdFBv
c3RNZXNzYWdlKTogaW50ZXJmYWNlIHRvIGdpdmUgdGhlIGVtYmVkZGVyIGEgY2hhbmNlCisgICAg
ICAgICAgICB0byBoYW5kbGUgdGhpcyBwb3N0TWVzc2FnZSBjYWxsCisgICAgICAgICogc3JjL0Zy
YW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6aW50ZXJjZXB0UG9zdE1lc3NhZ2UpOiBDYWxsIGludGVyY2VwdFBvc3RNZXNzYWdl
IG9uCisgICAgICAgICAgICBXZWJGcmFtZUNsaWVudAorICAgICAgICAqIHNyYy9GcmFtZUxvYWRl
ckNsaWVudEltcGwuaDoKKwogMjAxMS0xMi0wOCAgRWxsaW90IFBvZ2VyICA8ZXBvZ2VyQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgQ2hyb21pdW0gREVQUyByb2xsIDExMjk3NCAtPiAxMTM2MDMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGM0YjA3ZTY4ZDExNTdjZjk1Mjdi
ZjBmYmVkNWZjN2VjMDlhYjc5YmQuLmY1MDU0ODE0N2ZhOWQwMjQ5ZWQ5ZjhiMjcyN2ViYzUzZDEx
ZjEyZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtNzQsNiArNzQs
NyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5jbHVkZSAiTWVz
c2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1h
aW5SZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTMzMTEsNiArMzMxMiwx
MSBAQCBOZXR3b3JraW5nQ29udGV4dCogRnJhbWVMb2FkZXI6Om5ldHdvcmtpbmdDb250ZXh0KCkg
Y29uc3QKICAgICByZXR1cm4gbV9uZXR3b3JraW5nQ29udGV4dC5nZXQoKTsKIH0KIAorYm9vbCBG
cmFtZUxvYWRlcjo6aW50ZXJjZXB0UG9zdE1lc3NhZ2UoU2VjdXJpdHlPcmlnaW4qIHRhcmdldCwg
UGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2ZW50KSBjb25zdAoreworICAgIHJldHVybiBtX2Ns
aWVudC0+aW50ZXJjZXB0UG9zdE1lc3NhZ2UodGFyZ2V0LCBldmVudCk7Cit9CisKIGJvb2wgRnJh
bWVMb2FkZXJDbGllbnQ6Omhhc0hUTUxWaWV3KCkgY29uc3QKIHsKICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKaW5kZXggMWU3N2I3YzYyOWQxODI2ZWM4Yjc4
NGNmZDMxZjlhNWYzZTc2MzdhOC4uNDQ4MDZiZjJjNDI2ODQ3ZWZiZWM0OGI3ZDZiYTcwNDUyNmRj
ZjBmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTYxLDYgKzYxLDcgQEAg
Y2xhc3MgRm9ybVN0YXRlOwogY2xhc3MgRm9ybVN1Ym1pc3Npb247CiBjbGFzcyBGcmFtZUxvYWRl
ckNsaWVudDsKIGNsYXNzIEZyYW1lTmV0d29ya2luZ0NvbnRleHQ7CitjbGFzcyBNZXNzYWdlRXZl
bnQ7CiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uOwogY2xhc3MgTmV0d29ya2luZ0NvbnRleHQ7CiBj
bGFzcyBQYWdlOwpAQCAtMjg0LDYgKzI4NSw5IEBAIHB1YmxpYzoKIAogICAgIE5ldHdvcmtpbmdD
b250ZXh0KiBuZXR3b3JraW5nQ29udGV4dCgpIGNvbnN0OwogCisgICAgLy8gUmV0dXJucyB0cnVl
IGlmIHRoZSBlbWJlZGRlciBpbnRlcmNlcHRlZCB0aGUgcG9zdE1lc3NhZ2UgY2FsbAorICAgIGJv
b2wgaW50ZXJjZXB0UG9zdE1lc3NhZ2UoU2VjdXJpdHlPcmlnaW4qIHRhcmdldCwgUGFzc1JlZlB0
cjxNZXNzYWdlRXZlbnQ+KSBjb25zdDsKKwogI2lmIEVOQUJMRShXRUJfQVJDSElWRSkgfHwgRU5B
QkxFKE1IVE1MKQogICAgIEFyY2hpdmUqIGFyY2hpdmUoKSBjb25zdCB7IHJldHVybiBtX2FyY2hp
dmUuZ2V0KCk7IH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGll
bnQuaAppbmRleCBiZTc0YjdjMzJhMWU3YjFkZGVkOWEzMjJiMGU4ZjIzNzYwZWQyZmVmLi5mNTgx
OWNlZDc5YWJjMGE0ZjU1ZGU2ZjhlNTU4MjY2NGQ3ODVkODA1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMzEsNiArMzEsNyBAQAogCiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIkljb25VUkwuaCIKKyNpbmNsdWRlICJNZXNz
YWdlRXZlbnQuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIApAQCAtMzE5LDYgKzMyMCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtp
bmdDb250ZXh0KCkgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRQYWludEJyb2tl
bkltYWdlKGNvbnN0IEtVUkwmKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICAgICAgdmly
dHVhbCBib29sIGludGVyY2VwdFBvc3RNZXNzYWdlKFNlY3VyaXR5T3JpZ2luKiB0YXJnZXQsIFBh
c3NSZWZQdHI8TWVzc2FnZUV2ZW50PikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXgg
NTcxMmQ2NmYzNGY4ZmU4Yjc4NjdmNDE1M2Y4YjAyZmU5ZmMyOWE2Yy4uMWJhYzE0NzhmYzFhZmYw
Y2JmY2U2YzUyZmU2Y2Y3Y2UzOTExYThiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApA
QCAtOTEwLDYgKzkxMCwxMyBAQCB2b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2VUaW1lckZpcmVk
KFBhc3NPd25QdHI8UG9zdE1lc3NhZ2VUaW1lcj4gdCkKICAgICBpZiAoIWRvY3VtZW50KCkpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIFJlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2ZW50ID0gdGltZXIt
PmV2ZW50KGRvY3VtZW50KCkpOworCisgICAgLy8gR2l2ZSB0aGUgZW1iZWRkZXIgYSBjaGFuY2Ug
dG8gaW50ZXJjZXB0IHRoaXMgcG9zdE1lc3NhZ2UgYmVjYXVzZSB0aGlzCisgICAgLy8gRE9NV2lu
ZG93IG1pZ2h0IGJlIGEgcHJveHkgZm9yIGFub3RoZXIgaW4gQ2hyb21pdW0KKyAgICBpZiAobV9m
cmFtZS0+bG9hZGVyKCktPmludGVyY2VwdFBvc3RNZXNzYWdlKHRpbWVyLT50YXJnZXRPcmlnaW4o
KSwgZXZlbnQpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAodGltZXItPnRhcmdldE9yaWdp
bigpKSB7CiAgICAgICAgIC8vIENoZWNrIHRhcmdldCBvcmlnaW4gbm93IHNpbmNlIHRoZSB0YXJn
ZXQgZG9jdW1lbnQgbWF5IGhhdmUgY2hhbmdlZCBzaW5jZSB0aGUgc2ltZXIgd2FzIHNjaGVkdWxl
ZC4KICAgICAgICAgaWYgKCF0aW1lci0+dGFyZ2V0T3JpZ2luKCktPmlzU2FtZVNjaGVtZUhvc3RQ
b3J0KGRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7CkBAIC05MjAsNyArOTI3LDcgQEAg
dm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlVGltZXJGaXJlZChQYXNzT3duUHRyPFBvc3RNZXNz
YWdlVGltZXI+IHQpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBkaXNwYXRjaEV2ZW50KHRpbWVy
LT5ldmVudChkb2N1bWVudCgpKSk7CisgICAgZGlzcGF0Y2hFdmVudChldmVudCk7CiB9CiAKIERP
TVNlbGVjdGlvbiogRE9NV2luZG93OjpnZXRTZWxlY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRE9NTWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJET01NZXNzYWdlRXZlbnQuaAppbmRleCAxODFjN2M0YmE1
ZDAwNjUzNjVhZmUyYjZlNWViMDNmMWNhNmM3Y2YzLi4yMzA4ODVmMDAxNzE0ZGE2NDRmYTZkMzI3
YjhhNzEzNmFlMTY0ODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJET01NZXNzYWdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJET01NZXNzYWdlRXZlbnQuaApAQCAtMzQsNyArMzQsOCBAQAogI2luY2x1ZGUgIldlYk1l
c3NhZ2VQb3J0Q2hhbm5lbC5oIgogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7IGNsYXNzIEV2ZW50OyB9CisjaW5jbHVkZSAiZG9tL0V2ZW50LmgiCisjaW5j
bHVkZSAiZG9tL01lc3NhZ2VFdmVudC5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtNDYsNiArNDcsMTAgQEAgY2xhc3MgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogY2xhc3Mg
V2ViRE9NTWVzc2FnZUV2ZW50IDogcHVibGljIFdlYkRPTUV2ZW50IHsKIHB1YmxpYzoKICAgICBX
RUJLSVRfRVhQT1JUIHZvaWQgaW5pdE1lc3NhZ2VFdmVudChjb25zdCBXZWJTdHJpbmcmIHR5cGUs
IGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIGNvbnN0IFdlYlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSYgbWVzc2FnZURhdGEsIGNvbnN0IFdlYlN0cmluZyYgb3JpZ2luLCBjb25zdCBXZWJG
cmFtZSogc291cmNlRnJhbWUsIGNvbnN0IFdlYlN0cmluZyYgbGFzdEV2ZW50SWQpOworCisjaWYg
V0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViRE9NTWVzc2FnZUV2ZW50KGNvbnN0IFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpNZXNzYWdlRXZlbnQ+JiBlKSA6IFdlYkRPTUV2ZW50KGUpIHsg
fQorI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCmluZGV4IGIyMTMyMjk4ZTEyZTNiNmYy
MTRlZTMwNGMzNTNjYmYxZTViMjY3NWQuLmIyYmJkYjIxNDMxMzYwZTAwNjBkNjNlNzkwNTE3NTky
NGVmOTdlMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZy
YW1lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVD
bGllbnQuaApAQCAtMzEsOSArMzEsMTEgQEAKICNpZm5kZWYgV2ViRnJhbWVDbGllbnRfaAogI2Rl
ZmluZSBXZWJGcmFtZUNsaWVudF9oCiAKKyNpbmNsdWRlICJXZWJET01NZXNzYWdlRXZlbnQuaCIK
ICNpbmNsdWRlICJXZWJJY29uVVJMLmgiCiAjaW5jbHVkZSAiV2ViTmF2aWdhdGlvblBvbGljeS5o
IgogI2luY2x1ZGUgIldlYk5hdmlnYXRpb25UeXBlLmgiCisjaW5jbHVkZSAiV2ViU2VjdXJpdHlP
cmlnaW4uaCIKICNpbmNsdWRlICJXZWJTdG9yYWdlUXVvdGFUeXBlLmgiCiAjaW5jbHVkZSAiV2Vi
VGV4dERpcmVjdGlvbi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgpAQCAtNTAs
NiArNTIsNyBAQCBjbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdDsKIGNsYXNzIFdlYkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0Q2xpZW50OwogY2xhc3MgV2ViQ29va2llSmFyOwogY2xhc3MgV2ViRGF0
YVNvdXJjZTsKK2NsYXNzIFdlYkRPTUV2ZW50OwogY2xhc3MgV2ViRm9ybUVsZW1lbnQ7CiBjbGFz
cyBXZWJGcmFtZTsKIGNsYXNzIFdlYkludGVudFNlcnZpY2VJbmZvOwpAQCAtNTgsNyArNjEsNiBA
QCBjbGFzcyBXZWJNZWRpYVBsYXllcjsKIGNsYXNzIFdlYk1lZGlhUGxheWVyQ2xpZW50OwogY2xh
c3MgV2ViTm9kZTsKIGNsYXNzIFdlYlBsdWdpbjsKLWNsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOwog
Y2xhc3MgV2ViU2hhcmVkV29ya2VyOwogY2xhc3MgV2ViU3RvcmFnZVF1b3RhQ2FsbGJhY2tzOwog
Y2xhc3MgV2ViU3RyaW5nOwpAQCAtMzg1LDYgKzM4NywxNSBAQCBwdWJsaWM6CiAgICAgLy8gdGhl
IFdlYkZyYW1lIHN0YXJ0aW5nIHRoZSBhY3Rpdml0eS4KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hJbnRlbnQoV2ViRnJhbWUqLCBjb25zdCBXZWJJbnRlbnQmKSB7IH0KIAorICAgIC8vIE1lc3Nh
Z2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorCisgICAgLy8gTm90aWZpZXMgdGhlIGVtYmVkZGVyIHRoYXQgYSBwb3N0TWVzc2FnZSB3YXMg
aXNzdWVkIG9uIHRoaXMgZnJhbWUsIGFuZAorICAgIC8vIGdpdmVzIHRoZSBlbWJlZGRlciBhIGNo
YW5jZSB0byBoYW5kbGUgaXQgaW5zdGVhZCBvZiBXZWJLaXQuIFJldHVybnMgdHJ1ZQorICAgIC8v
IGlmIHRoZSBlbWJlZGRlciBoYW5kbGVkIGl0LgorICAgIHZpcnR1YWwgYm9vbCBpbnRlcmNlcHRQ
b3N0TWVzc2FnZShXZWJGcmFtZSogc291cmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBXZWJTZWN1cml0eU9yaWdpbiB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYkRPTU1lc3NhZ2VFdmVudCkgeyByZXR1cm4gZmFsc2U7IH0K
KwogcHJvdGVjdGVkOgogICAgIH5XZWJGcmFtZUNsaWVudCgpIHsgfQogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCmluZGV4
IDBkZDFkYjhjN2FkYmQxMDk1ZTU0MTRhNWZkOGI2ZWFhYTA2MDdmYjkuLmU3YzZjZWNhNjQyMzk1
YjdiODQ3ZGUzMzJmNTkxODYzOGNlZDJiZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcApAQCAtNDcsNiArNDcsNyBAQAog
I2luY2x1ZGUgIkhUTUxBcHBsZXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50
LmgiICAvLyBuZWVkZWQgYnkgRm9ybVN0YXRlLmgKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNp
bmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTU4LDYgKzU5LDcg
QEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiU3RyaW5nRXh0cmFzLmgiCisjaW5jbHVkZSAiV2ViRE9NRXZlbnQuaCIKICNpbmNs
dWRlICJXZWJEYXRhU291cmNlSW1wbC5oIgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRQcml2
YXRlLmgiCiAjaW5jbHVkZSAiV2ViRG9jdW1lbnQuaCIKQEAgLTE2MTYsNCArMTYxOCwxMSBAQCBQ
YXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6
Y3JlYXRlTmV0d29ya2luZ0NvbnRleAogICAgIHJldHVybiBGcmFtZU5ldHdvcmtpbmdDb250ZXh0
SW1wbDo6Y3JlYXRlKG1fd2ViRnJhbWUtPmZyYW1lKCkpOwogfQogCitib29sIEZyYW1lTG9hZGVy
Q2xpZW50SW1wbDo6aW50ZXJjZXB0UG9zdE1lc3NhZ2UoU2VjdXJpdHlPcmlnaW4qIHRhcmdldCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzUmVm
UHRyPE1lc3NhZ2VFdmVudD4gZXZlbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViRnJhbWUt
PmNsaWVudCgpLT5pbnRlcmNlcHRQb3N0TWVzc2FnZSgKKyAgICAgICAgbV93ZWJGcmFtZSwgV2Vi
U2VjdXJpdHlPcmlnaW4odGFyZ2V0KSwgV2ViRE9NTWVzc2FnZUV2ZW50KGV2ZW50KSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAppbmRleCAyMjI5NGY5MGMzM2E2ODNlODk5MzY1ZDg5
MGFlZDIxMzNkNWI0NDg4Li42ZTdhYTBmMGZhYzkwODMyNjEzYzg1OTFlNWM2MDk2MGRiODJlY2Fj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuaApAQCAtMjA2LDYgKzIwNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlk
Tm90QWxsb3dQbHVnaW5zKCk7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJh
bWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKKyAgICB2aXJ0
dWFsIGJvb2wgaW50ZXJjZXB0UG9zdE1lc3NhZ2UoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRh
cmdldCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpNZXNzYWdlRXZlbnQ+KSBjb25zdDsKIAogcHJpdmF0
ZToKICAgICB2b2lkIG1ha2VEb2N1bWVudFZpZXcoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCA4ZTMxZTFl
MDI5MjdjNjczZjk2YTJiNjRjYTIwZWZhYTg1NzViYjgzLi5hM2UxNWNlMDU2MWFlNTdiNTE0NTlj
YTQxNDNlOWU2ZDU1OGVjN2YzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0yNDgsNiArMjQ4LDcgQEAgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKFRlc3RTaGVsbCogc2hlbGwp
CiAgICAgYmluZFByb3BlcnR5KCJ3ZWJIaXN0b3J5SXRlbUNvdW50IiwgJm1fd2ViSGlzdG9yeUl0
ZW1Db3VudCk7CiAgICAgYmluZFByb3BlcnR5KCJ0aXRsZVRleHREaXJlY3Rpb24iLCAmbV90aXRs
ZVRleHREaXJlY3Rpb24pOwogICAgIGJpbmRQcm9wZXJ0eSgicGxhdGZvcm1OYW1lIiwgJm1fcGxh
dGZvcm1OYW1lKTsKKyAgICBiaW5kUHJvcGVydHkoImludGVyY2VwdFBvc3RNZXNzYWdlIiwgJm1f
aW50ZXJjZXB0UG9zdE1lc3NhZ2UpOwogfQogCiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6fkxheW91
dFRlc3RDb250cm9sbGVyKCkKQEAgLTYzNSw2ICs2MzYsNyBAQCB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpyZXNldCgpCiAgICAgbV93ZWJIaXN0b3J5SXRlbUNvdW50LnNldCgwKTsKICAgICBt
X3RpdGxlVGV4dERpcmVjdGlvbi5zZXQoImx0ciIpOwogICAgIG1fcGxhdGZvcm1OYW1lLnNldCgi
Y2hyb21pdW0iKTsKKyAgICBtX2ludGVyY2VwdFBvc3RNZXNzYWdlLnNldChmYWxzZSk7CiAgICAg
bV91c2VyU3R5bGVTaGVldExvY2F0aW9uID0gV2ViVVJMKCk7CiAgICAgbV9pc1ByaW50aW5nID0g
ZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oCmluZGV4IDExMmUyOTc4NmYxN2E0Y2RjNmMyZTAyNjY3NDA0MDJhMzg4
OTVkZTMuLjdkNWIyMWQxZWI3MzdiOGZkNDExZGYwZmViNWUyOThiOTBjMTk3ZjUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIu
aApAQCAtNDY4LDYgKzQ2OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fdGl0bGVUZXh0RGlyZWN0
aW9uLnNldChkaXIgPT0gV2ViS2l0OjpXZWJUZXh0RGlyZWN0aW9uTGVmdFRvUmlnaHQgPyAibHRy
IiA6ICJydGwiKTsKICAgICB9CiAKKyAgICBib29sIHNob3VsZEludGVyY2VwdFBvc3RNZXNzYWdl
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ludGVyY2VwdFBvc3RNZXNzYWdlLmlzQm9vbCgp
ICYmIG1faW50ZXJjZXB0UG9zdE1lc3NhZ2UudG9Cb29sZWFuKCk7CisgICAgfQorCiAgICAgdm9p
ZCBzZXRJc1ByaW50aW5nKGJvb2wgdmFsdWUpIHsgbV9pc1ByaW50aW5nID0gdmFsdWU7IH0KICAg
ICBib29sIGlzUHJpbnRpbmcoKSB7IHJldHVybiBtX2lzUHJpbnRpbmc7IH0KIApAQCAtNjc5LDYg
KzY4NCw5IEBAIHByaXZhdGU6CiAgICAgLy8gQm91bmQgdmFyaWFibGUgdG8gcmV0dXJuIHRoZSBu
YW1lIG9mIHRoaXMgcGxhdGZvcm0gKGNocm9taXVtKS4KICAgICBDcHBWYXJpYW50IG1fcGxhdGZv
cm1OYW1lOwogCisgICAgLy8gQm91bmQgdmFyaWFibGUgdG8gc2V0IHdoZXRoZXIgcG9zdE1lc3Nh
Z2VzIHNob3VsZCBiZSBpbnRlcmNlcHRlZCBvciBub3QKKyAgICBDcHBWYXJpYW50IG1faW50ZXJj
ZXB0UG9zdE1lc3NhZ2U7CisKICAgICBXZWJLaXQ6OldlYlVSTCBtX3VzZXJTdHlsZVNoZWV0TG9j
YXRpb247CiAKICAgICBPd25QdHI8V2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
PiBtX3NwZWVjaElucHV0Q29udHJvbGxlck1vY2s7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggMmJkODJlYWJkMjQ2N2JhYjU5ZTk3NjVhMDA2
ZDRhMGYyNWNlZWYxYi4uYjhhNDNjNDAyYmUzZWY2NGRlOThmZDJiMjZmNTMwOGIyZTc4N2FjNyAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApAQCAt
MzksNiArMzksNyBAQAogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNTdHJpbmcuaCIKICNpbmNsdWRl
ICJXZWJDb25zb2xlTWVzc2FnZS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51RGF0YS5oIgor
I2luY2x1ZGUgIldlYkRPTU1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIldlYkRhdGFTb3VyY2Uu
aCIKICNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCIKICNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJEcmFnRGF0YS5oIgpAQCAtMTE5OCw2ICsxMTk5LDE2IEBAIHZvaWQgV2Vi
Vmlld0hvc3Q6Om9wZW5GaWxlU3lzdGVtKFdlYkZyYW1lKiBmcmFtZSwgV2ViRmlsZVN5c3RlbTo6
VHlwZSB0eXBlLCBsb25nCiAgICAgd2Via2l0X3N1cHBvcnQ6Ok9wZW5GaWxlU3lzdGVtKGZyYW1l
LCB0eXBlLCBzaXplLCBjcmVhdGUsIGNhbGxiYWNrcyk7CiB9CiAKK2Jvb2wgV2ViVmlld0hvc3Q6
OmludGVyY2VwdFBvc3RNZXNzYWdlKFdlYkZyYW1lKiBzb3VyY2UsIFdlYlNlY3VyaXR5T3JpZ2lu
IHRhcmdldCwgV2ViRE9NRXZlbnQgZXZlbnQpCit7CisgICAgaWYgKG1fc2hlbGwtPnNob3VsZER1
bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkgeworICAgICAgICBwcmludEZyYW1lRGVzY3JpcHRpb24o
c291cmNlKTsKKyAgICAgICAgZnB1dHMoIiAtIGludGVyY2VwdFBvc3RNZXNzYWdlXG4iLCBzdGRv
dXQpOworICAgIH0KKworICAgIHJldHVybiBtX3NoZWxsLT5sYXlvdXRUZXN0Q29udHJvbGxlcigp
LT5zaG91bGRJbnRlcmNlcHRQb3N0TWVzc2FnZSgpOworfQorCiAvLyBQdWJsaWMgZnVuY3Rpb25z
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCiAKIFdlYlZpZXdIb3N0OjpXZWJWaWV3SG9zdChUZXN0U2hlbGwqIHNoZWxsKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXggOTIyMTYzYWI5YWU1
OGZkZDQ0NmJiNDkwZWI1MmU3NDMyNGE3MGIyZS4uNDY5M2U1MzZmZTEyZmFjMGRlNTU0OGQ4YzA0
NWQyNzA2ZWU3ZGQ5MyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5oCkBAIC0yMTMsNiArMjEzLDcgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2Vi
S2l0OjpXZWJTcGVsbENoZWNrQ2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2wKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYktpdDo6V2ViRnJhbWUqLCBjb25z
dCBXZWJLaXQ6OldlYlNlY3VyaXR5T3JpZ2luJiwgY29uc3QgV2ViS2l0OjpXZWJVUkwmKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBXZWJL
aXQ6OldlYlVSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKTsKICAgICB2aXJ0dWFsIHZvaWQg
b3BlbkZpbGVTeXN0ZW0oV2ViS2l0OjpXZWJGcmFtZSosIFdlYktpdDo6V2ViRmlsZVN5c3RlbTo6
VHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1D
YWxsYmFja3MqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaW50ZXJjZXB0UG9zdE1lc3NhZ2UoV2ViS2l0
OjpXZWJGcmFtZSogc291cmNlLCBXZWJLaXQ6OldlYlNlY3VyaXR5T3JpZ2luIHRhcmdldCwgV2Vi
S2l0OjpXZWJET01FdmVudCk7CiAKICAgICBXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jayogZGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCk7CiAgICAgCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy9pbnRlcmNlcHQtcG9z
dG1lc3NhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFz
dC9ldmVudHMvaW50ZXJjZXB0LXBvc3RtZXNzYWdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
NWRlMGNlNThkZjIzOTI1MWNjZjM3MGNjODU4NTNmYmI2MTNhZDhkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvaW50ZXJjZXB0LXBv
c3RtZXNzYWdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK21haW4gZnJhbWUgLSBkaWRG
aW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRpZEhhbmRsZU9ubG9hZEV2
ZW50c0ZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCittYWluIGZy
YW1lIC0gaW50ZXJjZXB0UG9zdE1lc3NhZ2UKK21haW4gZnJhbWUgLSBpbnRlcmNlcHRQb3N0TWVz
c2FnZQorUkVDVjEKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
ZmFzdC9ldmVudHMvaW50ZXJjZXB0LXBvc3RtZXNzYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy9pbnRlcmNlcHQtcG9zdG1lc3NhZ2UuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kNTM3Njk5ZjIwZDAwZmNhZjI0NDJlMjIwODhkMjczM2JmZmViNDRjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvaW50
ZXJjZXB0LXBvc3RtZXNzYWdlLmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPGh0bWw+CisgIDxoZWFk
PgorICAgIDxzY3JpcHQ+CisgICAgICBmdW5jdGlvbiB3cml0ZShzdHIpIHsKKyAgICAgICAgcHJl
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKKyAgICAgICAgdGV4dCA9IGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKHN0ciArICdcbicpOworICAgICAgICBwcmUuYXBwZW5kQ2hp
bGQodGV4dCk7CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIHJlY3ZNc2cxKGUpIHsKKyAgICAg
ICAgd3JpdGUoIlJFQ1YxIik7CisgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJt
ZXNzYWdlIiwgcmVjdk1zZzEsIGZhbHNlKTsKKworICAgICAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmludGVyY2VwdFBv
c3RNZXNzYWdlID0gdHJ1ZTsKKworICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVz
c2FnZSIsIHJlY3ZNc2cyLCBmYWxzZSk7CisgICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZSgiTWVz
c2FnZSAyIiwgIioiKTsKKyAgICAgICAKKyAgICAgICAgLy8gV2UgbmVlZCB0byBjYWxsIHNldFRp
bWVvdXQgaGVyZSBiZWNhdXNlIHdlIGludGVyY2VwdCB0aGUgbmV4dCBldmVudC4KKyAgICAgICAg
Ly8gSWYgdGhpcyB0ZXN0IGJlY29tZXMgZmxha3ksIHlvdSBtYXkgbmVlZCB0byBpbmNyZWFzZSB0
aGlzIHRpbWVvdXQuCisgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCJkb25lKCkiLCA1MCk7Cisg
ICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIHJlY3ZNc2cyKGUpIHsKKyAgICAgICAgd3JpdGUoIlJF
Q1YyIik7CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIGRvbmUoKSB7CisgICAgICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgd2luZG93LmxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgIH0KKworICAgICAgd2luZG93LmFkZEV2ZW50
TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2TXNnMSwgZmFsc2UpOworCisgICAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCk7CisgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICB9CisKKyAgICAgIHdpbmRvdy5wb3N0TWVzc2Fn
ZSgiTWVzc2FnZSAxIiwgIioiKTsKKyAgICA8L3NjcmlwdD4KKyAgPC9oZWFkPgorICA8Ym9keT48
cHJlIGlkPSJjb25zb2xlIj48L3ByZT48L2JvZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118643</attachid>
            <date>2011-12-09 14:39:32 -0800</date>
            <delta_ts>2011-12-21 17:20:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73883-20111209143931.patch</filename>
            <type>text/plain</type>
            <size>16378</size>
            <attacher name="Karl Koscher">supersat</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMzgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2NmMmNiM2YzNDEzNGVm
OWUxNzYyYjBhNWQzZjZiMTZmZTE1MTE5YS4uZDljNjkwMjQ5OGNmMzU3YjQ2OGMyYzI1NTQxMDg3
YjU0MjllMmNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDExLTEyLTA5ICBLYXJs
IEtvc2NoZXIgIDxzdXBlcnNhdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgR2l2ZSBlbWJlZGRl
cnMgYSBjaGFuY2UgdG8gaGFuZGxlIHBvc3RNZXNzYWdlIGNhbGxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzg4MworCisgICAgICAgIFRvIHN1cHBv
cnQgY3Jvc3MtcHJvY2VzcyBwb3N0TWVzc2FnZSBjYWxscyBpbiBDaHJvbWl1bSAoYnVnIDczMzM3
KSwgd2UgbmVlZCB0byBpbnRlcmNlcHQgCisgICAgICAgIHBvc3RNZXNzYWdlIGNhbGxzIHRvIHBy
b3h5IHdpbmRvd3MuIE9yaWdpbmFsbHkgd2Ugd2VyZSBqdXN0IGdvaW5nIHRvIGFkZCBhIG5hdGl2
ZSBldmVudAorICAgICAgICBsaXN0ZW5lciBvbiB0aGUgQ2hyb21pdW0gc2lkZSwgYnV0IHRoYXQg
cmVxdWlyZWQgbW9yZSBjaGFuZ2VzIHRvIFdlYktpdCBhbmQgd2FzIGEgYml0IG9mCisgICAgICAg
IGEgaGFjay4gU2VlIGJ1ZyA3MzM1OSBmb3IgYSBkaXNjdXNzIGFib3V0IG1vdmluZyB0byB0aGlz
IGFwcHJvYWNoLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3Q6IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL2ludGVyY2VwdC1wb3N0bWVz
c2FnZS5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50OjppbnRlcmNlcHRQb3N0TWVzc2FnZSk6IG5l
dyBtZXRob2QgdG8gYWxsb3cgdGhlIGVtYmVkZGVyIHRvCisgICAgICAgICAgICBpbnRlcmNlcHQg
cG9zdE1lc3NhZ2UgY2FsbHMKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3c6OnBvc3RNZXNzYWdlVGltZXJGaXJlZCk6IGFkZCBhIGNhbGwg
dG8gRnJhbWVMb2FkZXJDbGllbnQ6OmludGVyY2VwdFBvc3RNZXNzYWdlCisKIDIwMTEtMTItMDgg
IEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9taXVtLm9yZz4KIAogICAgICAgICBDb2RlR2VuZXJh
dG9yVjg6IEZpeCBpc3N1ZSB3aXRoIG92ZXJsb2FkZWQgc3RhdGljIGNvbmRpdGlvbmFsIG1ldGhv
ZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNjliY2FjZWQzNWNjYWZkNTQ4YTFhNmMz
OTZkY2EwZTFjMzExMTllZC4uMTMxYjdlNGQxYTViNjY4YzUzOTMzYjExMTZkZjhhYmE3M2YzYmQ4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMS0xMi0w
OSAgS2FybCBLb3NjaGVyICA8c3VwZXJzYXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEdpdmUg
ZW1iZWRkZXJzIGEgY2hhbmNlIHRvIGhhbmRsZSBwb3N0TWVzc2FnZSBjYWxscworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM4ODMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNs
aWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6aW50ZXJjZXB0UG9zdE1l
c3NhZ2UpOiBpbnRlcmZhY2UgdG8gZ2l2ZSB0aGUgZW1iZWRkZXIgYSBjaGFuY2UKKyAgICAgICAg
ICAgIHRvIGhhbmRsZSB0aGlzIHBvc3RNZXNzYWdlIGNhbGwKKyAgICAgICAgKiBzcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjppbnRlcmNlcHRQb3N0TWVzc2FnZSk6IENhbGwgaW50ZXJjZXB0UG9zdE1lc3NhZ2Ugb24K
KyAgICAgICAgICAgIFdlYkZyYW1lQ2xpZW50CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5oOgorCiAyMDExLTEyLTA4ICBFbGxpb3QgUG9nZXIgIDxlcG9nZXJAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBDaHJvbWl1bSBERVBTIHJvbGwgMTEyOTc0IC0+IDExMzYwMwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL01lc3NhZ2VFdmVudC5oCmluZGV4IDNhOTY4OGEyMTU1MDg0N2RkYjE1NWE2M2NkOWRlNzk3
N2QwNDI1YTEuLmJkZTQ1OGJmMGVmMDQ3NGU0YTc1Y2I0ZTQ4MGJlZjJjNGNlZTE5NjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZUV2ZW50LmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpZm5kZWYgTWVzc2Fn
ZUV2ZW50X2gKICNkZWZpbmUgTWVzc2FnZUV2ZW50X2gKIAotI2luY2x1ZGUgIkJsb2IuaCIKKyNp
bmNsdWRlICJmaWxlYXBpL0Jsb2IuaCIKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRl
ICJFdmVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGJlNzRiN2MzMmExZTdiMWRkZWQ5YTMyMmIwZThm
MjM3NjBlZDJmZWYuLjI3ZTJiYjIxODI0ZDdiNTQ3MTNlYzYwNWM3NDg4YmJjZDk2ZTRlZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCkBAIC0zMSw2ICszMSw3
IEBACiAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCiAjaW5jbHVkZSAiSWNvblVSTC5o
IgorI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC0zMTksNiArMzIwLDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RnJhbWVOZXR3b3JraW5nQ29udGV4
dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKSA9IDA7CiAKICAgICAgICAgdmlydHVhbCBib29s
IHNob3VsZFBhaW50QnJva2VuSW1hZ2UoY29uc3QgS1VSTCYpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KKworICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGVtYmVkZGVyIGludGVyY2VwdGVk
IHRoZSBwb3N0TWVzc2FnZSBjYWxsCisgICAgICAgIHZpcnR1YWwgYm9vbCBpbnRlcmNlcHRQb3N0
TWVzc2FnZShTZWN1cml0eU9yaWdpbiogdGFyZ2V0LCBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4p
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDU3MTJkNjZmMzRmOGZlOGI3ODY3ZjQx
NTNmOGIwMmZlOWZjMjlhNmMuLmVmOTZkZmNlYWQ1NTNhYjUwNzM3ODBlMmEzNGM2N2I1Mzc2ZmRh
YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTYwLDYgKzYwLDcgQEAKICNpbmNs
dWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZFJlcXVlc3QuaCIKICNpbmNsdWRlICJG
cmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAi
RnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1l
T3duZXJFbGVtZW50LmgiCkBAIC05MTAsNiArOTExLDE0IEBAIHZvaWQgRE9NV2luZG93Ojpwb3N0
TWVzc2FnZVRpbWVyRmlyZWQoUGFzc093blB0cjxQb3N0TWVzc2FnZVRpbWVyPiB0KQogICAgIGlm
ICghZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgUmVmUHRyPE1lc3NhZ2VFdmVu
dD4gZXZlbnQgPSB0aW1lci0+ZXZlbnQoZG9jdW1lbnQoKSk7CisKKyAgICAvLyBHaXZlIHRoZSBl
bWJlZGRlciBhIGNoYW5jZSB0byBpbnRlcmNlcHQgdGhpcyBwb3N0TWVzc2FnZSBiZWNhdXNlIHRo
aXMKKyAgICAvLyBET01XaW5kb3cgbWlnaHQgYmUgYSBwcm94eSBmb3IgYW5vdGhlciBpbiBicm93
c2VycyB0aGF0IHN1cHBvcnQKKyAgICAvLyBwb3N0TWVzc2FnZSBjYWxscyBhY3Jvc3MgV2ViS2l0
IGluc3RhbmNlcy4KKyAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT5pbnRlcmNl
cHRQb3N0TWVzc2FnZSh0aW1lci0+dGFyZ2V0T3JpZ2luKCksIGV2ZW50KSkKKyAgICAgICAgcmV0
dXJuOworCiAgICAgaWYgKHRpbWVyLT50YXJnZXRPcmlnaW4oKSkgewogICAgICAgICAvLyBDaGVj
ayB0YXJnZXQgb3JpZ2luIG5vdyBzaW5jZSB0aGUgdGFyZ2V0IGRvY3VtZW50IG1heSBoYXZlIGNo
YW5nZWQgc2luY2UgdGhlIHNpbWVyIHdhcyBzY2hlZHVsZWQuCiAgICAgICAgIGlmICghdGltZXIt
PnRhcmdldE9yaWdpbigpLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChkb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpKSkgewpAQCAtOTIwLDcgKzkyOSw3IEBAIHZvaWQgRE9NV2luZG93Ojpwb3N0TWVz
c2FnZVRpbWVyRmlyZWQoUGFzc093blB0cjxQb3N0TWVzc2FnZVRpbWVyPiB0KQogICAgICAgICB9
CiAgICAgfQogCi0gICAgZGlzcGF0Y2hFdmVudCh0aW1lci0+ZXZlbnQoZG9jdW1lbnQoKSkpOwor
ICAgIGRpc3BhdGNoRXZlbnQoZXZlbnQpOwogfQogCiBET01TZWxlY3Rpb24qIERPTVdpbmRvdzo6
Z2V0U2VsZWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkRPTU1lc3NhZ2VFdmVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RE9NTWVzc2FnZUV2ZW50LmgKaW5kZXggMTgxYzdjNGJhNWQwMDY1MzY1YWZlMmI2ZTVlYjAzZjFj
YTZjN2NmMy4uMjMwODg1ZjAwMTcxNGRhNjQ0ZmE2ZDMyN2I4YTcxMzZhZTE2NDgzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRE9NTWVzc2FnZUV2ZW50LmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRE9NTWVzc2FnZUV2ZW50LmgK
QEAgLTM0LDcgKzM0LDggQEAKICNpbmNsdWRlICJXZWJNZXNzYWdlUG9ydENoYW5uZWwuaCIKIAog
I2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBFdmVu
dDsgfQorI2luY2x1ZGUgImRvbS9FdmVudC5oIgorI2luY2x1ZGUgImRvbS9NZXNzYWdlRXZlbnQu
aCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ2LDYgKzQ3LDEwIEBAIGNsYXNz
IFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIGNsYXNzIFdlYkRPTU1lc3NhZ2VFdmVudCA6IHB1
YmxpYyBXZWJET01FdmVudCB7CiBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIGluaXRN
ZXNzYWdlRXZlbnQoY29uc3QgV2ViU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBj
YW5jZWxhYmxlLCBjb25zdCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUmIG1lc3NhZ2VEYXRhLCBj
b25zdCBXZWJTdHJpbmcmIG9yaWdpbiwgY29uc3QgV2ViRnJhbWUqIHNvdXJjZUZyYW1lLCBjb25z
dCBXZWJTdHJpbmcmIGxhc3RFdmVudElkKTsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgor
ICAgIFdlYkRPTU1lc3NhZ2VFdmVudChjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6TWVz
c2FnZUV2ZW50PiYgZSkgOiBXZWJET01FdmVudChlKSB7IH0KKyNlbmRpZgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJGcmFtZUNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJh
bWVDbGllbnQuaAppbmRleCBiMjEzMjI5OGUxMmUzYjZmMjE0ZWUzMDRjMzUzY2JmMWU1YjI2NzVk
Li5iMmJiZGIyMTQzMTM2MGUwMDYwZDYzZTc5MDUxNzU5MjRlZjk3ZTFmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKQEAgLTMxLDkgKzMxLDEx
IEBACiAjaWZuZGVmIFdlYkZyYW1lQ2xpZW50X2gKICNkZWZpbmUgV2ViRnJhbWVDbGllbnRfaAog
CisjaW5jbHVkZSAiV2ViRE9NTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViSWNvblVSTC5o
IgogI2luY2x1ZGUgIldlYk5hdmlnYXRpb25Qb2xpY3kuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0
aW9uVHlwZS5oIgorI2luY2x1ZGUgIldlYlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiV2Vi
U3RvcmFnZVF1b3RhVHlwZS5oIgogI2luY2x1ZGUgIldlYlRleHREaXJlY3Rpb24uaCIKICNpbmNs
dWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKQEAgLTUwLDYgKzUyLDcgQEAgY2xhc3MgV2ViQXBw
bGljYXRpb25DYWNoZUhvc3Q7CiBjbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudDsK
IGNsYXNzIFdlYkNvb2tpZUphcjsKIGNsYXNzIFdlYkRhdGFTb3VyY2U7CitjbGFzcyBXZWJET01F
dmVudDsKIGNsYXNzIFdlYkZvcm1FbGVtZW50OwogY2xhc3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJ
bnRlbnRTZXJ2aWNlSW5mbzsKQEAgLTU4LDcgKzYxLDYgQEAgY2xhc3MgV2ViTWVkaWFQbGF5ZXI7
CiBjbGFzcyBXZWJNZWRpYVBsYXllckNsaWVudDsKIGNsYXNzIFdlYk5vZGU7CiBjbGFzcyBXZWJQ
bHVnaW47Ci1jbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKIGNsYXNzIFdlYlNoYXJlZFdvcmtlcjsK
IGNsYXNzIFdlYlN0b3JhZ2VRdW90YUNhbGxiYWNrczsKIGNsYXNzIFdlYlN0cmluZzsKQEAgLTM4
NSw2ICszODcsMTUgQEAgcHVibGljOgogICAgIC8vIHRoZSBXZWJGcmFtZSBzdGFydGluZyB0aGUg
YWN0aXZpdHkuCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoSW50ZW50KFdlYkZyYW1lKiwgY29u
c3QgV2ViSW50ZW50JikgeyB9CiAKKyAgICAvLyBNZXNzYWdlcyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8vIE5vdGlmaWVzIHRo
ZSBlbWJlZGRlciB0aGF0IGEgcG9zdE1lc3NhZ2Ugd2FzIGlzc3VlZCBvbiB0aGlzIGZyYW1lLCBh
bmQKKyAgICAvLyBnaXZlcyB0aGUgZW1iZWRkZXIgYSBjaGFuY2UgdG8gaGFuZGxlIGl0IGluc3Rl
YWQgb2YgV2ViS2l0LiBSZXR1cm5zIHRydWUKKyAgICAvLyBpZiB0aGUgZW1iZWRkZXIgaGFuZGxl
ZCBpdC4KKyAgICB2aXJ0dWFsIGJvb2wgaW50ZXJjZXB0UG9zdE1lc3NhZ2UoV2ViRnJhbWUqIHNv
dXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViU2VjdXJpdHlP
cmlnaW4gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJE
T01NZXNzYWdlRXZlbnQpIHsgcmV0dXJuIGZhbHNlOyB9CisKIHByb3RlY3RlZDoKICAgICB+V2Vi
RnJhbWVDbGllbnQoKSB7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAppbmRleCAwZGQxZGI4YzdhZGJkMTA5NWU1NDE0
YTVmZDhiNmVhYWEwNjA3ZmI5Li5lN2M2Y2VjYTY0MjM5NWI3Yjg0N2RlMzMyZjU5MTg2MzhjZWQy
YmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNs
aWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJIVE1MQXBwbGV0RWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIiAgLy8gbmVlZGVkIGJ5IEZvcm1T
dGF0ZS5oCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiTWVzc2FnZUV2ZW50Lmgi
CiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCkBAIC01OCw2ICs1OSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VM
b2FkZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0cmluZ0V4dHJhcy5o
IgorI2luY2x1ZGUgIldlYkRPTUV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViRGF0YVNvdXJjZUltcGwu
aCIKICNpbmNsdWRlICJXZWJEZXZUb29sc0FnZW50UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYkRv
Y3VtZW50LmgiCkBAIC0xNjE2LDQgKzE2MTgsMTEgQEAgUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtp
bmdDb250ZXh0PiBGcmFtZUxvYWRlckNsaWVudEltcGw6OmNyZWF0ZU5ldHdvcmtpbmdDb250ZXgK
ICAgICByZXR1cm4gRnJhbWVOZXR3b3JraW5nQ29udGV4dEltcGw6OmNyZWF0ZShtX3dlYkZyYW1l
LT5mcmFtZSgpKTsKIH0KIAorYm9vbCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmludGVyY2VwdFBv
c3RNZXNzYWdlKFNlY3VyaXR5T3JpZ2luKiB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2ZW50
KSBjb25zdAoreworICAgIHJldHVybiBtX3dlYkZyYW1lLT5jbGllbnQoKS0+aW50ZXJjZXB0UG9z
dE1lc3NhZ2UoCisgICAgICAgIG1fd2ViRnJhbWUsIFdlYlNlY3VyaXR5T3JpZ2luKHRhcmdldCks
IFdlYkRPTU1lc3NhZ2VFdmVudChldmVudCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBs
LmgKaW5kZXggMjIyOTRmOTBjMzNhNjgzZTg5OTM2NWQ4OTBhZWQyMTMzZDViNDQ4OC4uNmU3YWEw
ZjBmYWM5MDgzMjYxM2M4NTkxZTVjNjA5NjBkYjgyZWNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKQEAgLTIwNiw2ICsyMDYs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZE5vdEFsbG93UGx1Z2lucygpOwogCiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IGNy
ZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7CisgICAgdmlydHVhbCBib29sIGludGVyY2VwdFBvc3RN
ZXNzYWdlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0YXJnZXQsIFBhc3NSZWZQdHI8V2ViQ29y
ZTo6TWVzc2FnZUV2ZW50PikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBtYWtlRG9jdW1l
bnRWaWV3KCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggOGUzMWUxZTAyOTI3YzY3M2Y5NmEyYjY0Y2EyMGVm
YWE4NTc1YmI4My4uYTNlMTVjZTA1NjFhZTU3YjUxNDU5Y2E0MTQzZTllNmQ1NThlYzdmMyAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcApAQCAtMjQ4LDYgKzI0OCw3IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlv
dXRUZXN0Q29udHJvbGxlcihUZXN0U2hlbGwqIHNoZWxsKQogICAgIGJpbmRQcm9wZXJ0eSgid2Vi
SGlzdG9yeUl0ZW1Db3VudCIsICZtX3dlYkhpc3RvcnlJdGVtQ291bnQpOwogICAgIGJpbmRQcm9w
ZXJ0eSgidGl0bGVUZXh0RGlyZWN0aW9uIiwgJm1fdGl0bGVUZXh0RGlyZWN0aW9uKTsKICAgICBi
aW5kUHJvcGVydHkoInBsYXRmb3JtTmFtZSIsICZtX3BsYXRmb3JtTmFtZSk7CisgICAgYmluZFBy
b3BlcnR5KCJpbnRlcmNlcHRQb3N0TWVzc2FnZSIsICZtX2ludGVyY2VwdFBvc3RNZXNzYWdlKTsK
IH0KIAogTGF5b3V0VGVzdENvbnRyb2xsZXI6On5MYXlvdXRUZXN0Q29udHJvbGxlcigpCkBAIC02
MzUsNiArNjM2LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVzZXQoKQogICAgIG1f
d2ViSGlzdG9yeUl0ZW1Db3VudC5zZXQoMCk7CiAgICAgbV90aXRsZVRleHREaXJlY3Rpb24uc2V0
KCJsdHIiKTsKICAgICBtX3BsYXRmb3JtTmFtZS5zZXQoImNocm9taXVtIik7CisgICAgbV9pbnRl
cmNlcHRQb3N0TWVzc2FnZS5zZXQoZmFsc2UpOwogICAgIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlv
biA9IFdlYlVSTCgpOwogICAgIG1faXNQcmludGluZyA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCAx
MTJlMjk3ODZmMTdhNGNkYzZjMmUwMjY2NzQwNDAyYTM4ODk1ZGUzLi43ZDViMjFkMWViNzM3Yjhm
ZDQxMWRmMGZlYjVlMjk4YjkwYzE5N2Y1IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTQ2OCw2ICs0NjgsMTEgQEAg
cHVibGljOgogICAgICAgICBtX3RpdGxlVGV4dERpcmVjdGlvbi5zZXQoZGlyID09IFdlYktpdDo6
V2ViVGV4dERpcmVjdGlvbkxlZnRUb1JpZ2h0ID8gImx0ciIgOiAicnRsIik7CiAgICAgfQogCisg
ICAgYm9vbCBzaG91bGRJbnRlcmNlcHRQb3N0TWVzc2FnZSgpCisgICAgeworICAgICAgICByZXR1
cm4gbV9pbnRlcmNlcHRQb3N0TWVzc2FnZS5pc0Jvb2woKSAmJiBtX2ludGVyY2VwdFBvc3RNZXNz
YWdlLnRvQm9vbGVhbigpOworICAgIH0KKwogICAgIHZvaWQgc2V0SXNQcmludGluZyhib29sIHZh
bHVlKSB7IG1faXNQcmludGluZyA9IHZhbHVlOyB9CiAgICAgYm9vbCBpc1ByaW50aW5nKCkgeyBy
ZXR1cm4gbV9pc1ByaW50aW5nOyB9CiAKQEAgLTY3OSw2ICs2ODQsOSBAQCBwcml2YXRlOgogICAg
IC8vIEJvdW5kIHZhcmlhYmxlIHRvIHJldHVybiB0aGUgbmFtZSBvZiB0aGlzIHBsYXRmb3JtIChj
aHJvbWl1bSkuCiAgICAgQ3BwVmFyaWFudCBtX3BsYXRmb3JtTmFtZTsKIAorICAgIC8vIEJvdW5k
IHZhcmlhYmxlIHRvIHNldCB3aGV0aGVyIHBvc3RNZXNzYWdlcyBzaG91bGQgYmUgaW50ZXJjZXB0
ZWQgb3Igbm90CisgICAgQ3BwVmFyaWFudCBtX2ludGVyY2VwdFBvc3RNZXNzYWdlOworCiAgICAg
V2ViS2l0OjpXZWJVUkwgbV91c2VyU3R5bGVTaGVldExvY2F0aW9uOwogCiAgICAgT3duUHRyPFdl
YktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jaz4gbV9zcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3Bw
CmluZGV4IDJiZDgyZWFiZDI0NjdiYWI1OWU5NzY1YTAwNmQ0YTBmMjVjZWVmMWIuLmI4YTQzYzQw
MmJlM2VmNjRkZTk4ZmQyYjI2ZjUzMDhiMmU3ODdhYzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRl
ICJwbGF0Zm9ybS9XZWJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViQ29uc29sZU1lc3NhZ2UuaCIK
ICNpbmNsdWRlICJXZWJDb250ZXh0TWVudURhdGEuaCIKKyNpbmNsdWRlICJXZWJET01NZXNzYWdl
RXZlbnQuaCIKICNpbmNsdWRlICJXZWJEYXRhU291cmNlLmgiCiAjaW5jbHVkZSAiV2ViRGV2aWNl
T3JpZW50YXRpb25DbGllbnRNb2NrLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViRHJhZ0RhdGEu
aCIKQEAgLTExOTgsNiArMTE5OSwxNiBAQCB2b2lkIFdlYlZpZXdIb3N0OjpvcGVuRmlsZVN5c3Rl
bShXZWJGcmFtZSogZnJhbWUsIFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgbG9uZwogICAgIHdl
YmtpdF9zdXBwb3J0OjpPcGVuRmlsZVN5c3RlbShmcmFtZSwgdHlwZSwgc2l6ZSwgY3JlYXRlLCBj
YWxsYmFja3MpOwogfQogCitib29sIFdlYlZpZXdIb3N0OjppbnRlcmNlcHRQb3N0TWVzc2FnZShX
ZWJGcmFtZSogc291cmNlLCBXZWJTZWN1cml0eU9yaWdpbiB0YXJnZXQsIFdlYkRPTUV2ZW50IGV2
ZW50KQoreworICAgIGlmIChtX3NoZWxsLT5zaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkp
IHsKKyAgICAgICAgcHJpbnRGcmFtZURlc2NyaXB0aW9uKHNvdXJjZSk7CisgICAgICAgIGZwdXRz
KCIgLSBpbnRlcmNlcHRQb3N0TWVzc2FnZVxuIiwgc3Rkb3V0KTsKKyAgICB9CisKKyAgICByZXR1
cm4gbV9zaGVsbC0+bGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+c2hvdWxkSW50ZXJjZXB0UG9zdE1l
c3NhZ2UoKTsKK30KKwogLy8gUHVibGljIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBXZWJWaWV3SG9zdDo6V2Vi
Vmlld0hvc3QoVGVzdFNoZWxsKiBzaGVsbCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJWaWV3SG9zdC5oCmluZGV4IDkyMjE2M2FiOWFlNThmZGQ0NDZiYjQ5MGViNTJlNzQzMjRh
NzBiMmUuLjQ2OTNlNTM2ZmUxMmZhYzBkZTU1NDhkOGMwNDVkMjcwNmVlN2RkOTMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAtMjEzLDYgKzIxMyw3
IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2ViU3BlbGxDaGVja0NsaWVu
dCwgcHVibGljIFdlYktpdDo6V2ViVmlld0NsCiAgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2Vj
dXJlQ29udGVudChXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJTZWN1cml0eU9y
aWdpbiYsIGNvbnN0IFdlYktpdDo6V2ViVVJMJik7CiAgICAgdmlydHVhbCB2b2lkIGRpZERldGVj
dFhTUyhXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJVUkwmLCBib29sIGRpZEJs
b2NrRW50aXJlUGFnZSk7CiAgICAgdmlydHVhbCB2b2lkIG9wZW5GaWxlU3lzdGVtKFdlYktpdDo6
V2ViRnJhbWUqLCBXZWJLaXQ6OldlYkZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBzaXplLCBi
b29sIGNyZWF0ZSwgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKik7CisgICAgdmlydHVh
bCBib29sIGludGVyY2VwdFBvc3RNZXNzYWdlKFdlYktpdDo6V2ViRnJhbWUqIHNvdXJjZSwgV2Vi
S2l0OjpXZWJTZWN1cml0eU9yaWdpbiB0YXJnZXQsIFdlYktpdDo6V2ViRE9NRXZlbnQpOwogCiAg
ICAgV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sqIGRldmljZU9yaWVudGF0
aW9uQ2xpZW50TW9jaygpOwogICAgIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vZmFzdC9ldmVudHMvaW50ZXJjZXB0LXBvc3RtZXNzYWdlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL2ludGVyY2VwdC1wb3N0
bWVzc2FnZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVkZTBjZTU4ZGYyMzkyNTFjY2YzNzBj
Yzg1ODUzZmJiNjEzYWQ4ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2Zhc3QvZXZlbnRzL2ludGVyY2VwdC1wb3N0bWVzc2FnZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw3IEBACittYWluIGZyYW1lIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJh
bWUKK21haW4gZnJhbWUgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQorbWFpbiBmcmFt
ZSAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGludGVyY2VwdFBvc3RNZXNz
YWdlCittYWluIGZyYW1lIC0gaW50ZXJjZXB0UG9zdE1lc3NhZ2UKK1JFQ1YxCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL2ludGVyY2VwdC1w
b3N0bWVzc2FnZS5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVu
dHMvaW50ZXJjZXB0LXBvc3RtZXNzYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDUzNzY5OWYyMGQwMGZj
YWYyNDQyZTIyMDg4ZDI3MzNiZmZlYjQ0YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL2ludGVyY2VwdC1wb3N0bWVzc2FnZS5odG1s
CkBAIC0wLDAgKzEsNDcgQEAKKzxodG1sPgorICA8aGVhZD4KKyAgICA8c2NyaXB0PgorICAgICAg
ZnVuY3Rpb24gd3JpdGUoc3RyKSB7CisgICAgICAgIHByZSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdjb25zb2xlJyk7CisgICAgICAgIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShz
dHIgKyAnXG4nKTsKKyAgICAgICAgcHJlLmFwcGVuZENoaWxkKHRleHQpOworICAgICAgfQorCisg
ICAgICBmdW5jdGlvbiByZWN2TXNnMShlKSB7CisgICAgICAgIHdyaXRlKCJSRUNWMSIpOworICAg
ICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3ZNc2cxLCBmYWxz
ZSk7CisKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5pbnRlcmNlcHRQb3N0TWVzc2FnZSA9IHRydWU7CisKKyAg
ICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2TXNnMiwgZmFsc2Up
OworICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2UoIk1lc3NhZ2UgMiIsICIqIik7CisgICAgICAg
CisgICAgICAgIC8vIFdlIG5lZWQgdG8gY2FsbCBzZXRUaW1lb3V0IGhlcmUgYmVjYXVzZSB3ZSBp
bnRlcmNlcHQgdGhlIG5leHQgZXZlbnQuCisgICAgICAgIC8vIElmIHRoaXMgdGVzdCBiZWNvbWVz
IGZsYWt5LCB5b3UgbWF5IG5lZWQgdG8gaW5jcmVhc2UgdGhpcyB0aW1lb3V0LgorICAgICAgICB3
aW5kb3cuc2V0VGltZW91dCgiZG9uZSgpIiwgNTApOworICAgICAgfQorCisgICAgICBmdW5jdGlv
biByZWN2TXNnMihlKSB7CisgICAgICAgIHdyaXRlKCJSRUNWMiIpOworICAgICAgfQorCisgICAg
ICBmdW5jdGlvbiBkb25lKCkgeworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
CisgICAgICB9CisKKyAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVj
dk1zZzEsIGZhbHNlKTsKKworICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEZyYW1lTG9hZENhbGxi
YWNrcygpOworICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
ICAgICAgfQorCisgICAgICB3aW5kb3cucG9zdE1lc3NhZ2UoIk1lc3NhZ2UgMSIsICIqIik7Cisg
ICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHk+PHByZSBpZD0iY29uc29sZSI+PC9wcmU+
PC9ib2R5PgorPC9odG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120247</attachid>
            <date>2011-12-21 17:20:16 -0800</date>
            <delta_ts>2011-12-22 14:30:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73883-20111221172008.patch</filename>
            <type>text/plain</type>
            <size>19505</size>
            <attacher name="Karl Koscher">supersat</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTNmNGRhNTdmYjJhNTZi
MWY0ODY0NjQxZjEwZDYzYjYwMTg5YWFkMC4uODgyMGUzMDVjYTM5OGQ4ZTk2OTgzM2QxMmNjZDhm
ZDdmYjRhNjBkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDExLTEyLTIxICBLYXJs
IEtvc2NoZXIgIDxzdXBlcnNhdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgR2l2ZSBlbWJlZGRl
cnMgYSBjaGFuY2UgdG8gaGFuZGxlIHBvc3RNZXNzYWdlIGNhbGxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzg4MworCisgICAgICAgIFRvIHN1cHBv
cnQgY3Jvc3MtcHJvY2VzcyBwb3N0TWVzc2FnZSBjYWxscyBpbiBDaHJvbWl1bSAoYnVnIDczMzM3
KSwgd2UgbmVlZCB0byBpbnRlcmNlcHQgCisgICAgICAgIHBvc3RNZXNzYWdlIGNhbGxzIHRvIHBy
b3h5IHdpbmRvd3MuIE9yaWdpbmFsbHkgd2Ugd2VyZSBqdXN0IGdvaW5nIHRvIGFkZCBhIG5hdGl2
ZSBldmVudAorICAgICAgICBsaXN0ZW5lciBvbiB0aGUgQ2hyb21pdW0gc2lkZSwgYnV0IHRoYXQg
cmVxdWlyZWQgbW9yZSBjaGFuZ2VzIHRvIFdlYktpdCBhbmQgd2FzIGEgYml0IG9mCisgICAgICAg
IGEgaGFjay4gU2VlIGJ1ZyA3MzM1OSBmb3IgYSBkaXNjdXNzIGFib3V0IG1vdmluZyB0byB0aGlz
IGFwcHJvYWNoLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3Q6IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL2ludGVyY2VwdC1wb3N0bWVz
c2FnZS5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50Ojp3aWxsQ2hlY2tBbmREaXNwYXRjaFBvc3RN
ZXNzYWdlKTogbmV3IG1ldGhvZCB0byBhbGxvdyB0aGUKKyAgICAgICAgICAgIGVtYmVkZGVyIHRv
IGludGVyY2VwdCBwb3N0TWVzc2FnZSBjYWxscworICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1lc3NhZ2VUaW1lckZpcmVkKTog
YWRkIGEgY2FsbCB0bworICAgICAgICAgICAgRnJhbWVMb2FkZXJDbGllbnQ6OndpbGxDaGVja0Fu
ZERpc3BhdGNoUG9zdE1lc3NhZ2UKKwogMjAxMS0xMi0yMSAgQW5kcmVhcyBLbGluZyAgPGtsaW5n
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgQXV0b21hdGUgZWxlbWVudHMnIHJlZ2lzdHJhdGlvbiBh
cyBkb2N1bWVudCBuYW1lZEl0ZW0vZXh0cmFOYW1lZEl0ZW0uCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IDdhOTcyYjhmM2RmMDFiZjRkNjhiMTQyY2RiNDBkNzA3YjFmY2NjM2EuLmE1ZmRh
MWU5ZmUxYTI2NTIwMmZiNmViNWQzYTY2ZTQyYWY1ZDg1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTItMjEgIEthcmwgS29zY2hlciAgPHN1cGVy
c2F0QGNocm9taXVtLm9yZz4KKworICAgICAgICBHaXZlIGVtYmVkZGVycyBhIGNoYW5jZSB0byBo
YW5kbGUgcG9zdE1lc3NhZ2UgY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTczODgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWVDbGllbnQ6OndpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KTogCisg
ICAgICAgICAgICBpbnRlcmZhY2UgdG8gZ2l2ZSB0aGUgZW1iZWRkZXIgYSBjaGFuY2UgdG8gaGFu
ZGxlIHRoaXMgcG9zdE1lc3NhZ2UgY2FsbAorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OndpbGxD
aGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KTogQ2FsbCAKKyAgICAgICAgICAgIHdpbGxDaGVj
a0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50IG9uIFdlYkZyYW1lQ2xpZW50CisgICAgICAgICogc3Jj
L0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorCiAyMDExLTEyLTIwICBBbmRyZXkgS29zeWFrb3Yg
IDxjYXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW0V4dGVuc2lv
biBBUEldIHJlZmFjdG9yIGV4dGVuc2lvbiBBUEkgYnVpbGQgY29kZSwgZXhwb3NlIGV4cGVyaW1l
bnRhbCBBUElzIGNvbmRpdGlvbmFsbHkgaW4gY2hyb21pdW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNDUxN2IzNjQ4ZTIyMzhmNDEzZmVkY2QwMmExMmY3
N2M1NDUwMmQ5Ny4uMTlmNjA1MTMxNzY4YjFhNDJlNzMyMmVlOGZlMTJhM2YzZjhmNTA1OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTMxLDYgKzMxLDcg
QEAKIAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJJY29uVVJMLmgi
CisjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTMxOSw2ICszMjAsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0
PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkUGFpbnRCcm9rZW5JbWFnZShjb25zdCBLVVJMJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQorCisgICAgICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZW1iZWRkZXIgaW50ZXJjZXB0ZWQg
dGhlIHBvc3RNZXNzYWdlIGNhbGwKKyAgICAgICAgdmlydHVhbCBib29sIHdpbGxDaGVja0FuZERp
c3BhdGNoTWVzc2FnZUV2ZW50KFNlY3VyaXR5T3JpZ2luKiB0YXJnZXQsIFBhc3NSZWZQdHI8TWVz
c2FnZUV2ZW50PikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggYTNlMDU5MWNmYjZj
MWRjZDgyNDE3NTRmMDRhYzQwNGYyNGRjZDM1Zi4uZWY1NzdmYzdhYWFmMjFkNjg4YTBkMDU2NDI5
ZDYzYzIzY2RmNWQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNjAsNiArNjAs
NyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgog
I2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIK
ICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRl
ICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKQEAgLTkxMCw4ICs5MTEsMTYgQEAgdm9pZCBET01X
aW5kb3c6OnBvc3RNZXNzYWdlVGltZXJGaXJlZChQYXNzT3duUHRyPFBvc3RNZXNzYWdlVGltZXI+
IHQpCiAgICAgaWYgKCFkb2N1bWVudCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBSZWZQdHI8
TWVzc2FnZUV2ZW50PiBldmVudCA9IHRpbWVyLT5ldmVudChkb2N1bWVudCgpKTsKKworICAgIC8v
IEdpdmUgdGhlIGVtYmVkZGVyIGEgY2hhbmNlIHRvIGludGVyY2VwdCB0aGlzIHBvc3RNZXNzYWdl
IGJlY2F1c2UgdGhpcworICAgIC8vIERPTVdpbmRvdyBtaWdodCBiZSBhIHByb3h5IGZvciBhbm90
aGVyIGluIGJyb3dzZXJzIHRoYXQgc3VwcG9ydAorICAgIC8vIHBvc3RNZXNzYWdlIGNhbGxzIGFj
cm9zcyBXZWJLaXQgaW5zdGFuY2VzLgorICAgIGlmIChtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50
KCktPndpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KHRpbWVyLT50YXJnZXRPcmlnaW4o
KSwgZXZlbnQpKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAodGltZXItPnRhcmdldE9yaWdp
bigpKSB7Ci0gICAgICAgIC8vIENoZWNrIHRhcmdldCBvcmlnaW4gbm93IHNpbmNlIHRoZSB0YXJn
ZXQgZG9jdW1lbnQgbWF5IGhhdmUgY2hhbmdlZCBzaW5jZSB0aGUgc2ltZXIgd2FzIHNjaGVkdWxl
ZC4KKyAgICAgICAgLy8gQ2hlY2sgdGFyZ2V0IG9yaWdpbiBub3cgc2luY2UgdGhlIHRhcmdldCBk
b2N1bWVudCBtYXkgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSB0aW1lciB3YXMgc2NoZWR1bGVkLgog
ICAgICAgICBpZiAoIXRpbWVyLT50YXJnZXRPcmlnaW4oKS0+aXNTYW1lU2NoZW1lSG9zdFBvcnQo
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKICAgICAgICAgICAgIFN0cmluZyBtZXNz
YWdlID0gIlVuYWJsZSB0byBwb3N0IG1lc3NhZ2UgdG8gIiArIHRpbWVyLT50YXJnZXRPcmlnaW4o
KS0+dG9TdHJpbmcoKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuIFJlY2lwaWVu
dCBoYXMgb3JpZ2luICIgKyBkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygp
ICsgIi5cbiI7CkBAIC05MjAsNyArOTI5LDcgQEAgdm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdl
VGltZXJGaXJlZChQYXNzT3duUHRyPFBvc3RNZXNzYWdlVGltZXI+IHQpCiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICBkaXNwYXRjaEV2ZW50KHRpbWVyLT5ldmVudChkb2N1bWVudCgpKSk7CisgICAg
ZGlzcGF0Y2hFdmVudChldmVudCk7CiB9CiAKIERPTVNlbGVjdGlvbiogRE9NV2luZG93OjpnZXRT
ZWxlY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RE9NTWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJET01N
ZXNzYWdlRXZlbnQuaAppbmRleCBmYTdlYjZkY2M5NzhkNmI1OWEzZmJmZGUxNTFmN2VkMGUwYjhj
NGY1Li42YWMwZWM1ZjA0YTJjMDI1MTU4ZjBmNTEzZWEzNTQyZjQwYTU1ZmNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJET01NZXNzYWdlRXZlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJET01NZXNzYWdlRXZlbnQuaApAQCAt
MzUsNyArMzUsOCBAQAogI2luY2x1ZGUgInBsYXRmb3JtL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIgogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCi1uYW1lc3BhY2UgV2ViQ29yZSB7IGNs
YXNzIEV2ZW50OyB9CisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJNZXNzYWdlRXZlbnQu
aCIKICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQ5LDYgKzUwLDEwIEBAIHB1Ymxp
YzoKIAogICAgIFdFQktJVF9FWFBPUlQgV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlIGRhdGEoKSBj
b25zdDsKICAgICBXRUJLSVRfRVhQT1JUIFdlYlN0cmluZyBvcmlnaW4oKSBjb25zdDsKKworI2lm
IFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYkRPTU1lc3NhZ2VFdmVudChjb25zdCBXVEY6
OlBhc3NSZWZQdHI8V2ViQ29yZTo6TWVzc2FnZUV2ZW50PiYgZSkgOiBXZWJET01FdmVudChlKSB7
IH0KKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAppbmRleCBiMjEzMjI5OGUxMmUzYjZm
MjE0ZWUzMDRjMzUzY2JmMWU1YjI2NzVkLi5jYWU2YWZhOGE0ZTBkM2JiMzg2YmFmZDkyMTMyM2Nm
NmNiYzFmYTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
cmFtZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1l
Q2xpZW50LmgKQEAgLTMxLDkgKzMxLDExIEBACiAjaWZuZGVmIFdlYkZyYW1lQ2xpZW50X2gKICNk
ZWZpbmUgV2ViRnJhbWVDbGllbnRfaAogCisjaW5jbHVkZSAiV2ViRE9NTWVzc2FnZUV2ZW50Lmgi
CiAjaW5jbHVkZSAiV2ViSWNvblVSTC5oIgogI2luY2x1ZGUgIldlYk5hdmlnYXRpb25Qb2xpY3ku
aCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uVHlwZS5oIgorI2luY2x1ZGUgIldlYlNlY3VyaXR5
T3JpZ2luLmgiCiAjaW5jbHVkZSAiV2ViU3RvcmFnZVF1b3RhVHlwZS5oIgogI2luY2x1ZGUgIldl
YlRleHREaXJlY3Rpb24uaCIKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDb21tb24uaCIKQEAgLTUw
LDYgKzUyLDcgQEAgY2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZUhvc3Q7CiBjbGFzcyBXZWJBcHBs
aWNhdGlvbkNhY2hlSG9zdENsaWVudDsKIGNsYXNzIFdlYkNvb2tpZUphcjsKIGNsYXNzIFdlYkRh
dGFTb3VyY2U7CitjbGFzcyBXZWJET01FdmVudDsKIGNsYXNzIFdlYkZvcm1FbGVtZW50OwogY2xh
c3MgV2ViRnJhbWU7CiBjbGFzcyBXZWJJbnRlbnRTZXJ2aWNlSW5mbzsKQEAgLTU4LDcgKzYxLDYg
QEAgY2xhc3MgV2ViTWVkaWFQbGF5ZXI7CiBjbGFzcyBXZWJNZWRpYVBsYXllckNsaWVudDsKIGNs
YXNzIFdlYk5vZGU7CiBjbGFzcyBXZWJQbHVnaW47Ci1jbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsK
IGNsYXNzIFdlYlNoYXJlZFdvcmtlcjsKIGNsYXNzIFdlYlN0b3JhZ2VRdW90YUNhbGxiYWNrczsK
IGNsYXNzIFdlYlN0cmluZzsKQEAgLTM4NSw2ICszODcsMTYgQEAgcHVibGljOgogICAgIC8vIHRo
ZSBXZWJGcmFtZSBzdGFydGluZyB0aGUgYWN0aXZpdHkuCiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoSW50ZW50KFdlYkZyYW1lKiwgY29uc3QgV2ViSW50ZW50JikgeyB9CiAKKyAgICAvLyBNZXNz
YWdlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworICAgIC8vIE5vdGlmaWVzIHRoZSBlbWJlZGRlciB0aGF0IGEgcG9zdE1lc3NhZ2Ugd2Fz
IGlzc3VlZCBvbiB0aGlzIGZyYW1lLCBhbmQKKyAgICAvLyBnaXZlcyB0aGUgZW1iZWRkZXIgYSBj
aGFuY2UgdG8gaGFuZGxlIGl0IGluc3RlYWQgb2YgV2ViS2l0LiBSZXR1cm5zIHRydWUKKyAgICAv
LyBpZiB0aGUgZW1iZWRkZXIgaGFuZGxlZCBpdC4KKyAgICB2aXJ0dWFsIGJvb2wgd2lsbENoZWNr
QW5kRGlzcGF0Y2hNZXNzYWdlRXZlbnQoCisgICAgICAgIFdlYkZyYW1lKiBzb3VyY2UsCisgICAg
ICAgIFdlYlNlY3VyaXR5T3JpZ2luIHRhcmdldCwKKyAgICAgICAgV2ViRE9NTWVzc2FnZUV2ZW50
KSB7IHJldHVybiBmYWxzZTsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgfldlYkZyYW1lQ2xpZW50KCkg
eyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5jcHAKaW5kZXggOTA1YTM3NzcyMjU5YWJlMzBiNzFhYTRjMTdkNGU1NmVlYmYx
NGY2OS4uY2ZjNmE1NTYzMWViZmQ1MWU4M2Y0OGRhNjY5OGZlY2MxMjE4ZjM0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3Bw
CkBAIC00Nyw2ICs0Nyw3IEBACiAjaW5jbHVkZSAiSFRNTEFwcGxldEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MRm9ybUVsZW1lbnQuaCIgIC8vIG5lZWRlZCBieSBGb3JtU3RhdGUuaAogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIk1J
TUVUeXBlUmVnaXN0cnkuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgpAQCAtNTgsNiArNTksNyBAQAogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyLmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTdHJpbmdFeHRyYXMuaCIKKyNpbmNsdWRlICJX
ZWJET01FdmVudC5oIgogI2luY2x1ZGUgIldlYkRhdGFTb3VyY2VJbXBsLmgiCiAjaW5jbHVkZSAi
V2ViRGV2VG9vbHNBZ2VudFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJEb2N1bWVudC5oIgpAQCAt
MTYxNyw0ICsxNjE5LDExIEBAIFBhc3NSZWZQdHI8RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gRnJh
bWVMb2FkZXJDbGllbnRJbXBsOjpjcmVhdGVOZXR3b3JraW5nQ29udGV4CiAgICAgcmV0dXJuIEZy
YW1lTmV0d29ya2luZ0NvbnRleHRJbXBsOjpjcmVhdGUobV93ZWJGcmFtZS0+ZnJhbWUoKSk7CiB9
CiAKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjp3aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3Nh
Z2VFdmVudCgKKyAgICBTZWN1cml0eU9yaWdpbiogdGFyZ2V0LCBQYXNzUmVmUHRyPE1lc3NhZ2VF
dmVudD4gZXZlbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViRnJhbWUtPmNsaWVudCgpLT53
aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVudCgKKyAgICAgICAgbV93ZWJGcmFtZSwgV2Vi
U2VjdXJpdHlPcmlnaW4odGFyZ2V0KSwgV2ViRE9NTWVzc2FnZUV2ZW50KGV2ZW50KSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAppbmRleCA1OTZiNWY0YTA3OWIwMzBjYTM4MTFjZmYz
NzAzMTc0OTQyMDVmYWIzLi5iY2RiMDRhNmZjZmRkOTE2NTAzMWRkZTEyNmI4YjRiZjEzZDE1NmUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVu
dEltcGwuaApAQCAtMjA2LDYgKzIwNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlk
Tm90QWxsb3dQbHVnaW5zKCk7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJh
bWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKKyAgICB2aXJ0
dWFsIGJvb2wgd2lsbENoZWNrQW5kRGlzcGF0Y2hNZXNzYWdlRXZlbnQoV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4qIHRhcmdldCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpNZXNzYWdlRXZlbnQ+KSBjb25z
dDsKIAogcHJpdmF0ZToKICAgICB2b2lkIG1ha2VEb2N1bWVudFZpZXcoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0IGIvU291cmNlL1dlYktpdC9lZmwv
Q01ha2VMaXN0c0VmbC50eHQKaW5kZXggYzVlZjY1NjRmNTQyMWFkZGMyODg3ZWQwYzZhMDk5YjU0
OTEzNTM3MS4uYTY2NDQ3YmY5N2NiZmFkMmFmOTM3OGU5MzMwZjA5N2U3NjI1NGI4ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKQEAgLTEwLDYgKzEwLDcgQEAgTElTVChBUFBFTkQg
V2ViS2l0X0xJTktfRkxBR1MKIExJU1QoQVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVT
CiAgICAgIiR7V0VCS0lUX0RJUn0vZWZsL2V3ayIKICAgICAiJHtXRUJLSVRfRElSfS9lZmwvV2Vi
Q29yZVN1cHBvcnQiCisgICAgIiR7V0VCQ09SRV9ESVJ9L2ZpbGVhcGkiCiAgICAgIiR7V0VCQ09S
RV9ESVJ9L3BsYXRmb3JtL2VmbCIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8iCiAgICAgJHtDYWlyb19JTkNMVURFX0RJUlN9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdExpYkNvbW1vbi52c3Byb3BzIGIvU291cmNl
L1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRMaWJDb21tb24udnNwcm9wcwppbmRleCAz
MmM1YjIwNTE3ZjUwNzZiNWQyYzkzZmRiYWNmMTA3NzUyMDdkNzcxLi4yN2ViY2JiNTE1YmFkNmNl
NzYwYTk1OGY4M2MzNmFmY2Q2MDhjODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJLaXQudmNwcm9qL1dlYktpdExpYkNvbW1vbi52c3Byb3BzCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYktpdC52Y3Byb2ovV2ViS2l0TGliQ29tbW9uLnZzcHJvcHMKQEAgLTcsNyArNyw3IEBA
CiAJPgogCTxUb29sCiAJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCUFkZGl0aW9uYWxJbmNs
dWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdl
YktpdCZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcSW5jbHVkZSZxdW90Ozsm
cXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcSW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90
OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFy
aWVzRGlyKVxJbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXEluY2x1ZGVcV2ViQ29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5j
bHVkZVxXZWJDb3JlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxJbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNE
aXIpXEluY2x1ZGVcV2ViQ29yZVxGb3J3YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDskKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcSW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcSW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7
OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7
OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENv
cmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHRocmVhZHMmcXVv
dDs7JnF1b3Q7JChQcm9qZWN0RGlyKVwuLiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpJnF1b3Q7
OyZxdW90OyQoUHJvamVjdERpcilcLi5cV2ViQ29yZVN1cHBvcnQmcXVvdDs7JnF1b3Q7JChJbnRE
aXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxXZWJL
aXRcRGVyaXZlZFNvdXJjZXMmcXVvdDsiCisJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9
IiZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXFdlYktpdCZxdW90OzsmcXVv
dDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcSW5jbHVkZSZxdW90OzsmcXVvdDskKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcSW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFy
aWVzRGlyKVxJbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRl
XHByaXZhdGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXEluY2x1ZGVcV2Vi
Q29yZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxXZWJDb3JlJnF1
b3Q7OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxJbmNsdWRlXFdlYkNvcmVcZmlsZWFwaSZxdW90
OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxXZWJDb3JlXGZpbGVhcGkmcXVv
dDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXEluY2x1ZGVcV2ViQ29yZVxGb3J3YXJk
aW5nSGVhZGVycyZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxXZWJD
b3JlXEZvcndhcmRpbmdIZWFkZXJzJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxJbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxJbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRM
aWJyYXJpZXNEaXIpXEluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRM
aWJyYXJpZXNEaXIpXEluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDsk
KFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZxdW90OzsmcXVvdDskKFByb2pl
Y3REaXIpXC4uJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcikmcXVvdDs7JnF1b3Q7JChQcm9qZWN0
RGlyKVwuLlxXZWJDb3JlU3VwcG9ydCZxdW90OzsmcXVvdDskKEludERpcilcaW5jbHVkZSZxdW90
OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXFdlYktpdFxEZXJpdmVkU291cmNl
cyZxdW90OyIKIAkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7V0VCS0lUX0VYUE9S
VFM7RlJBTUVXT1JLX05BTUU9V2ViS2l0IgogCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKIAkJ
UHJlY29tcGlsZWRIZWFkZXJUaHJvdWdoPSJXZWJLaXRQcmVmaXguaCIKZGlmZiAtLWdpdCBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRl
eCBmNGJhZjgyMTJlMTlhYmRiNGJmMmVhYTNiNWNhYjRlODA3OTFiZjMyLi43ZmMyMTM2MmYzNDNk
MzlmYTUxNGJlNTQ0Yzg2MTAzYWNlMWI4MTI5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0yNTAsNiArMjUw
LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKFRlc3RTaGVs
bCogc2hlbGwpCiAgICAgYmluZFByb3BlcnR5KCJ3ZWJIaXN0b3J5SXRlbUNvdW50IiwgJm1fd2Vi
SGlzdG9yeUl0ZW1Db3VudCk7CiAgICAgYmluZFByb3BlcnR5KCJ0aXRsZVRleHREaXJlY3Rpb24i
LCAmbV90aXRsZVRleHREaXJlY3Rpb24pOwogICAgIGJpbmRQcm9wZXJ0eSgicGxhdGZvcm1OYW1l
IiwgJm1fcGxhdGZvcm1OYW1lKTsKKyAgICBiaW5kUHJvcGVydHkoImludGVyY2VwdFBvc3RNZXNz
YWdlIiwgJm1faW50ZXJjZXB0UG9zdE1lc3NhZ2UpOwogfQogCiBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6fkxheW91dFRlc3RDb250cm9sbGVyKCkKQEAgLTYzNyw2ICs2MzgsNyBAQCB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpyZXNldCgpCiAgICAgbV93ZWJIaXN0b3J5SXRlbUNvdW50LnNldCgw
KTsKICAgICBtX3RpdGxlVGV4dERpcmVjdGlvbi5zZXQoImx0ciIpOwogICAgIG1fcGxhdGZvcm1O
YW1lLnNldCgiY2hyb21pdW0iKTsKKyAgICBtX2ludGVyY2VwdFBvc3RNZXNzYWdlLnNldChmYWxz
ZSk7CiAgICAgbV91c2VyU3R5bGVTaGVldExvY2F0aW9uID0gV2ViVVJMKCk7CiAgICAgbV9pc1By
aW50aW5nID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDRkNmNkODVhN2EyMmE5M2Y2YzZiOTllMDhk
ZmMxOGM4MGNhNDJjYjguLjcxYjFiNDIyNjk0NzdkM2RmNThjYWMyOGRlZjNmZTRmZTQyN2ZlNDMg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250
cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENv
bnRyb2xsZXIuaApAQCAtNDY5LDYgKzQ2OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fdGl0bGVU
ZXh0RGlyZWN0aW9uLnNldChkaXIgPT0gV2ViS2l0OjpXZWJUZXh0RGlyZWN0aW9uTGVmdFRvUmln
aHQgPyAibHRyIiA6ICJydGwiKTsKICAgICB9CiAKKyAgICBib29sIHNob3VsZEludGVyY2VwdFBv
c3RNZXNzYWdlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ludGVyY2VwdFBvc3RNZXNzYWdl
LmlzQm9vbCgpICYmIG1faW50ZXJjZXB0UG9zdE1lc3NhZ2UudG9Cb29sZWFuKCk7CisgICAgfQor
CiAgICAgdm9pZCBzZXRJc1ByaW50aW5nKGJvb2wgdmFsdWUpIHsgbV9pc1ByaW50aW5nID0gdmFs
dWU7IH0KICAgICBib29sIGlzUHJpbnRpbmcoKSB7IHJldHVybiBtX2lzUHJpbnRpbmc7IH0KIApA
QCAtNjgwLDYgKzY4NSw5IEBAIHByaXZhdGU6CiAgICAgLy8gQm91bmQgdmFyaWFibGUgdG8gcmV0
dXJuIHRoZSBuYW1lIG9mIHRoaXMgcGxhdGZvcm0gKGNocm9taXVtKS4KICAgICBDcHBWYXJpYW50
IG1fcGxhdGZvcm1OYW1lOwogCisgICAgLy8gQm91bmQgdmFyaWFibGUgdG8gc2V0IHdoZXRoZXIg
cG9zdE1lc3NhZ2VzIHNob3VsZCBiZSBpbnRlcmNlcHRlZCBvciBub3QKKyAgICBDcHBWYXJpYW50
IG1faW50ZXJjZXB0UG9zdE1lc3NhZ2U7CisKICAgICBXZWJLaXQ6OldlYlVSTCBtX3VzZXJTdHls
ZVNoZWV0TG9jYXRpb247CiAKICAgICBPd25QdHI8V2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrPiBtX3NwZWVjaElucHV0Q29udHJvbGxlck1vY2s7CmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggZmZlM2IxNjQ2ZjFjNDA3ZWNm
ZTMwZDYyMDcyODZkYTQyMGM5ZGI0Mi4uYmViMTgyODhlZmQwNzUwMWM0NTZjZThiZDViYTZkMzI3
YmFjNzc5ZSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0
LmNwcApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNTdHJpbmcuaCIK
ICNpbmNsdWRlICJXZWJDb25zb2xlTWVzc2FnZS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51
RGF0YS5oIgorI2luY2x1ZGUgIldlYkRPTU1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIldlYkRh
dGFTb3VyY2UuaCIKICNpbmNsdWRlICJXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2suaCIK
ICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJEcmFnRGF0YS5oIgpAQCAtMTIwNCw2ICsxMjA1LDE2IEBA
IHZvaWQgV2ViVmlld0hvc3Q6Om9wZW5GaWxlU3lzdGVtKFdlYkZyYW1lKiBmcmFtZSwgV2ViRmls
ZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nCiAgICAgd2Via2l0X3N1cHBvcnQ6Ok9wZW5GaWxlU3lz
dGVtKGZyYW1lLCB0eXBlLCBzaXplLCBjcmVhdGUsIGNhbGxiYWNrcyk7CiB9CiAKK2Jvb2wgV2Vi
Vmlld0hvc3Q6OndpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KFdlYkZyYW1lKiBzb3Vy
Y2UsIFdlYlNlY3VyaXR5T3JpZ2luIHRhcmdldCwgV2ViRE9NTWVzc2FnZUV2ZW50IGV2ZW50KQor
eworICAgIGlmIChtX3NoZWxsLT5zaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpIHsKKyAg
ICAgICAgcHJpbnRGcmFtZURlc2NyaXB0aW9uKHNvdXJjZSk7CisgICAgICAgIGZwdXRzKCIgLSB3
aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVudFxuIiwgc3Rkb3V0KTsKKyAgICB9CisKKyAg
ICByZXR1cm4gbV9zaGVsbC0+bGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+c2hvdWxkSW50ZXJjZXB0
UG9zdE1lc3NhZ2UoKTsKK30KKwogLy8gUHVibGljIGZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBXZWJWaWV3SG9z
dDo6V2ViVmlld0hvc3QoVGVzdFNoZWxsKiBzaGVsbCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5oCmluZGV4IDkyMjE2M2FiOWFlNThmZGQ0NDZiYjQ5MGViNTJl
NzQzMjRhNzBiMmUuLjMxZWNkNzk2YWRjNzk3OWRkMzkwMmJkYmI2NDFlYzE5MDg2MDQyNDIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysr
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAtMjEzLDYg
KzIxMyw3IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2ViU3BlbGxDaGVj
a0NsaWVudCwgcHVibGljIFdlYktpdDo6V2ViVmlld0NsCiAgICAgdmlydHVhbCB2b2lkIGRpZFJ1
bkluc2VjdXJlQ29udGVudChXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJTZWN1
cml0eU9yaWdpbiYsIGNvbnN0IFdlYktpdDo6V2ViVVJMJik7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZERldGVjdFhTUyhXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJVUkwmLCBib29s
IGRpZEJsb2NrRW50aXJlUGFnZSk7CiAgICAgdmlydHVhbCB2b2lkIG9wZW5GaWxlU3lzdGVtKFdl
YktpdDo6V2ViRnJhbWUqLCBXZWJLaXQ6OldlYkZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBz
aXplLCBib29sIGNyZWF0ZSwgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKik7CisgICAg
dmlydHVhbCBib29sIHdpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KFdlYktpdDo6V2Vi
RnJhbWUqIHNvdXJjZSwgV2ViS2l0OjpXZWJTZWN1cml0eU9yaWdpbiB0YXJnZXQsIFdlYktpdDo6
V2ViRE9NTWVzc2FnZUV2ZW50KTsKIAogICAgIFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25D
bGllbnRNb2NrKiBkZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soKTsKICAgICAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL2ludGVyY2VwdC1w
b3N0bWVzc2FnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9m
YXN0L2V2ZW50cy9pbnRlcmNlcHQtcG9zdG1lc3NhZ2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjIyN2E1YzllNGE1MzY3YjdmMDdkY2EwY2FiOWIwN2I3ZjcwYzI1YjEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy9pbnRlcmNlcHQt
cG9zdG1lc3NhZ2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorbWFpbiBmcmFtZSAtIGRp
ZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkSGFuZGxlT25sb2Fk
RXZlbnRzRm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKK21haW4g
ZnJhbWUgLSB3aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVudAorbWFpbiBmcmFtZSAtIHdp
bGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50CitSRUNWMQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy9pbnRlcmNlcHQtcG9zdG1lc3Nh
Z2UuaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL2ludGVy
Y2VwdC1wb3N0bWVzc2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1Mzc2OTlmMjBkMDBmY2FmMjQ0MmUy
MjA4OGQyNzMzYmZmZWI0NGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L2V2ZW50cy9pbnRlcmNlcHQtcG9zdG1lc3NhZ2UuaHRtbApAQCAtMCww
ICsxLDQ3IEBACis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPHNjcmlwdD4KKyAgICAgIGZ1bmN0aW9u
IHdyaXRlKHN0cikgeworICAgICAgICBwcmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29u
c29sZScpOworICAgICAgICB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyICsgJ1xu
Jyk7CisgICAgICAgIHByZS5hcHBlbmRDaGlsZCh0ZXh0KTsKKyAgICAgIH0KKworICAgICAgZnVu
Y3Rpb24gcmVjdk1zZzEoZSkgeworICAgICAgICB3cml0ZSgiUkVDVjEiKTsKKyAgICAgICAgd2lu
ZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2TXNnMSwgZmFsc2UpOworCisg
ICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuaW50ZXJjZXB0UG9zdE1lc3NhZ2UgPSB0cnVlOworCisgICAgICAgIHdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjdk1zZzIsIGZhbHNlKTsKKyAgICAg
ICAgd2luZG93LnBvc3RNZXNzYWdlKCJNZXNzYWdlIDIiLCAiKiIpOworICAgICAgIAorICAgICAg
ICAvLyBXZSBuZWVkIHRvIGNhbGwgc2V0VGltZW91dCBoZXJlIGJlY2F1c2Ugd2UgaW50ZXJjZXB0
IHRoZSBuZXh0IGV2ZW50LgorICAgICAgICAvLyBJZiB0aGlzIHRlc3QgYmVjb21lcyBmbGFreSwg
eW91IG1heSBuZWVkIHRvIGluY3JlYXNlIHRoaXMgdGltZW91dC4KKyAgICAgICAgd2luZG93LnNl
dFRpbWVvdXQoImRvbmUoKSIsIDUwKTsKKyAgICAgIH0KKworICAgICAgZnVuY3Rpb24gcmVjdk1z
ZzIoZSkgeworICAgICAgICB3cml0ZSgiUkVDVjIiKTsKKyAgICAgIH0KKworICAgICAgZnVuY3Rp
b24gZG9uZSgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAg
fQorCisgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3ZNc2cxLCBm
YWxzZSk7CisKKyAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAg
ICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKTsK
KyAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAg
ICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgIH0K
KworICAgICAgd2luZG93LnBvc3RNZXNzYWdlKCJNZXNzYWdlIDEiLCAiKiIpOworICAgIDwvc2Ny
aXB0PgorICA8L2hlYWQ+CisgIDxib2R5PjxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPjwvYm9keT4K
KzwvaHRtbD4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120380</attachid>
            <date>2011-12-22 14:30:47 -0800</date>
            <delta_ts>2011-12-22 16:53:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73883-20111222143045.patch</filename>
            <type>text/plain</type>
            <size>36529</size>
            <attacher name="Karl Koscher">supersat</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWExZTNkYTQ4NGZjMmI4
YTM0OTEzMDMyYzA2ZmQ5ZjQ0ZjQ0ZjUyOS4uYWNjZmRmOWFhYzI1NDMyNGU2YTE1NjlmNzZmOWQy
Nzg3MjRiYjA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDExLTEyLTIxICBLYXJs
IEtvc2NoZXIgIDxzdXBlcnNhdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgR2l2ZSBlbWJlZGRl
cnMgYSBjaGFuY2UgdG8gaGFuZGxlIHBvc3RNZXNzYWdlIGNhbGxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzg4MworCisgICAgICAgIFRvIHN1cHBv
cnQgY3Jvc3MtcHJvY2VzcyBwb3N0TWVzc2FnZSBjYWxscyBpbiBDaHJvbWl1bSAoYnVnIDczMzM3
KSwgd2UgbmVlZCB0byBpbnRlcmNlcHQgCisgICAgICAgIHBvc3RNZXNzYWdlIGNhbGxzIHRvIHBy
b3h5IHdpbmRvd3MuIE9yaWdpbmFsbHkgd2Ugd2VyZSBqdXN0IGdvaW5nIHRvIGFkZCBhIG5hdGl2
ZSBldmVudAorICAgICAgICBsaXN0ZW5lciBvbiB0aGUgQ2hyb21pdW0gc2lkZSwgYnV0IHRoYXQg
cmVxdWlyZWQgbW9yZSBjaGFuZ2VzIHRvIFdlYktpdCBhbmQgd2FzIGEgYml0IG9mCisgICAgICAg
IGEgaGFjay4gU2VlIGJ1ZyA3MzM1OSBmb3IgYSBkaXNjdXNzIGFib3V0IG1vdmluZyB0byB0aGlz
IGFwcHJvYWNoLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3Q6IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL2ludGVyY2VwdC1wb3N0bWVz
c2FnZS5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50Ojp3aWxsQ2hlY2tBbmREaXNwYXRjaFBvc3RN
ZXNzYWdlKTogbmV3IG1ldGhvZCB0byBhbGxvdyB0aGUKKyAgICAgICAgICAgIGVtYmVkZGVyIHRv
IGludGVyY2VwdCBwb3N0TWVzc2FnZSBjYWxscworICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1lc3NhZ2VUaW1lckZpcmVkKTog
YWRkIGEgY2FsbCB0bworICAgICAgICAgICAgRnJhbWVMb2FkZXJDbGllbnQ6OndpbGxDaGVja0Fu
ZERpc3BhdGNoUG9zdE1lc3NhZ2UKKwogMjAxMS0xMi0yMSAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCBSZW5kZXJMYXllciBjb2RlIHRo
YXQgYXBwbGllcyBmaWx0ZXJzIGFuZCB0cmFuc2Zvcm1zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDdhOTcyYjhmM2RmMDFiZjRkNjhiMTQyY2RiNDBkNzA3YjFmY2NjM2EuLmE1ZmRhMWU5
ZmUxYTI2NTIwMmZiNmViNWQzYTY2ZTQyYWY1ZDg1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTItMjEgIEthcmwgS29zY2hlciAgPHN1cGVyc2F0
QGNocm9taXVtLm9yZz4KKworICAgICAgICBHaXZlIGVtYmVkZGVycyBhIGNoYW5jZSB0byBoYW5k
bGUgcG9zdE1lc3NhZ2UgY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTczODgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVDbGllbnQ6OndpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KTogCisgICAg
ICAgICAgICBpbnRlcmZhY2UgdG8gZ2l2ZSB0aGUgZW1iZWRkZXIgYSBjaGFuY2UgdG8gaGFuZGxl
IHRoaXMgcG9zdE1lc3NhZ2UgY2FsbAorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OndpbGxDaGVj
a0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KTogQ2FsbCAKKyAgICAgICAgICAgIHdpbGxDaGVja0Fu
ZERpc3BhdGNoTWVzc2FnZUV2ZW50IG9uIFdlYkZyYW1lQ2xpZW50CisgICAgICAgICogc3JjL0Zy
YW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorCiAyMDExLTEyLTIwICBBbmRyZXkgS29zeWFrb3YgIDxj
YXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW0V4dGVuc2lvbiBB
UEldIHJlZmFjdG9yIGV4dGVuc2lvbiBBUEkgYnVpbGQgY29kZSwgZXhwb3NlIGV4cGVyaW1lbnRh
bCBBUElzIGNvbmRpdGlvbmFsbHkgaW4gY2hyb21pdW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxODBhYTMzMDcxODE0OWEzN2Mz
ZTkwOTI2NWQ2YTlhYzcyZjU2NTg3Li42Mzk5YWZjMzYyY2YyY2I5Nzc4Yzk5MWQ3OWFlZTY0MGUy
YWY3ZGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC03OTgsNyArNzk4LDcgQEAKIAkJMkVENjA5QkMxMTQ1QjA3MTAwQzg2ODRF
IC8qIERPTUZvcm1EYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJFRDYwOUJBMTE0NUIwNzEwMEM4Njg0RSAvKiBET01Gb3JtRGF0YS5jcHAgKi87
IH07CiAJCTJFRDYwOUJEMTE0NUIwNzEwMEM4Njg0RSAvKiBET01Gb3JtRGF0YS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVENjA5QkIxMTQ1QjA3MTAw
Qzg2ODRFIC8qIERPTUZvcm1EYXRhLmggKi87IH07CiAJCTJFREVGMUYzMTIxQjBFRkMwMDcyNkRC
MiAvKiBCbG9iRGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRURFRjFFRDEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYkRhdGEuY3BwICovOyB9Owot
CQkyRURFRjFGNDEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYkRhdGEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFREVGMUVFMTIxQjBFRkMwMDcyNkRCMiAv
KiBCbG9iRGF0YS5oICovOyB9OworCQkyRURFRjFGNDEyMUIwRUZDMDA3MjZEQjIgLyogQmxvYkRh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJFREVG
MUVFMTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJFREVGMUY1MTIxQjBFRkMwMDcyNkRCMiAvKiBC
bG9iUmVnaXN0cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDJFREVGMUVGMTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iUmVnaXN0cnkuaCAqLzsgfTsKIAkJ
MkVERUYxRjYxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JSZWdpc3RyeUltcGwuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVERUYxRjAxMjFCMEVGQzAw
NzI2REIyIC8qIEJsb2JSZWdpc3RyeUltcGwuY3BwICovOyB9OwogCQkyRURFRjFGNzEyMUIwRUZD
MDA3MjZEQjIgLyogQmxvYlJlZ2lzdHJ5SW1wbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMkVERUYxRjExMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JSZWdp
c3RyeUltcGwuaCAqLzsgfTsKQEAgLTE3OTEsNyArMTc5MSw3IEBACiAJCTc1NzhGOTBEMTFEREYy
NjkwMEQ5MzNDNSAvKiBTcGVlY2hJbnB1dENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OEY5MEExMURERjI2OTAwRDkzM0M1IC8qIFNwZWVj
aElucHV0Q2xpZW50LmggKi87IH07CiAJCTc1NzhGOTIwMTFFNEUzMjgwMEQ5MzNDNSAvKiBTcGVl
Y2hJbnB1dExpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA3NTc4RjkxRTExRTRFMzI4MDBEOTMzQzUgLyogU3BlZWNoSW5wdXRMaXN0ZW5lci5o
ICovOyB9OwogCQk3NTc5M0U4MzBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NzkzRTgwMEQw
Q0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuY3BwICovOyB9OwotCQk3NTc5M0U4NDBEMENF
MEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0U4MTBEMENFMEIzMDA3RkMwQUMgLyogTWVzc2FnZUV2
ZW50LmggKi87IH07CisJCTc1NzkzRTg0MEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc1NzkzRTgx
MEQwQ0UwQjMwMDdGQzBBQyAvKiBNZXNzYWdlRXZlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3NTc5M0VDODBEMENFNzJEMDA3RkMwQUMgLyog
SlNNZXNzYWdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzU3OTNFQzYwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50LmNwcCAq
LzsgfTsKIAkJNzU3OTNFQzkwRDBDRTcyRDAwN0ZDMEFDIC8qIEpTTWVzc2FnZUV2ZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NTc5M0VDNzBEMENF
NzJEMDA3RkMwQUMgLyogSlNNZXNzYWdlRXZlbnQuaCAqLzsgfTsKIAkJNzU3OTNFRDMwRDBDRTg1
QjAwN0ZDMEFDIC8qIERPTU1lc3NhZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzU3OTNFRDAwRDBDRTg1QjAwN0ZDMEFDIC8qIERPTU1lc3Nh
Z2VFdmVudC5oICovOyB9OwpAQCAtMzI5MCw3ICszMjkwLDcgQEAKIAkJOTc2N0NFMEMxNDVBQkMx
MzAwNUU2NERCIC8qIEV4Y2VwdGlvbkludGVyZmFjZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NjdDRTBBMTQ1QUJDMTMwMDVFNjREQiAvKiBFeGNl
cHRpb25JbnRlcmZhY2VzLmggKi87IH07CiAJCTk3NkQ2Qzc3MTIyQjhBM0QwMDFGRDFGNyAvKiBB
c3luY0ZpbGVXcml0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk3NkQ2QzU4MTIyQjhBM0QwMDFGRDFGNyAvKiBBc3luY0ZpbGVXcml0ZXIuaCAqLzsg
fTsKIAkJOTc2RDZDNzgxMjJCOEEzRDAwMUZEMUY3IC8qIEJsb2IuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNTkxMjJCOEEzRDAwMUZEMUY3
IC8qIEJsb2IuY3BwICovOyB9OwotCQk5NzZENkM3OTEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNUEx
MjJCOEEzRDAwMUZEMUY3IC8qIEJsb2IuaCAqLzsgfTsKKwkJOTc2RDZDNzkxMjJCOEEzRDAwMUZE
MUY3IC8qIEJsb2IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk3NkQ2QzVBMTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTc2RDZDN0IxMjJCOEEzRDAwMUZEMUY3
IC8qIFdlYktpdEJsb2JCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk3NkQ2QzVDMTIyQjhBM0QwMDFGRDFGNyAvKiBXZWJLaXRCbG9iQnVp
bGRlci5jcHAgKi87IH07CiAJCTk3NkQ2QzdDMTIyQjhBM0QwMDFGRDFGNyAvKiBXZWJLaXRCbG9i
QnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTc2RDZDNUQxMjJCOEEzRDAwMUZEMUY3IC8qIFdlYktpdEJsb2JCdWlsZGVyLmggKi87IH07CiAJ
CTk3NkQ2QzdFMTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iVVJMLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NkQ2QzVGMTIyQjhBM0QwMDFGRDFGNyAv
KiBCbG9iVVJMLmNwcCAqLzsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xp
ZW50LmgKaW5kZXggNDUxN2IzNjQ4ZTIyMzhmNDEzZmVkY2QwMmExMmY3N2M1NDUwMmQ5Ny4uOWJm
ZmI4NWEyZTQ4ZDkzNjQ1MjZiMzE5YmEzZGU0MDllODY4ODc4ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKIAogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyVHlwZXMuaCIKICNpbmNsdWRlICJJY29uVVJMLmgiCisjaW5jbHVkZSAiTWVz
c2FnZUV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKQEAgLTMxOSw2ICszMjAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3b3Jr
aW5nQ29udGV4dCgpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFpbnRCcm9r
ZW5JbWFnZShjb25zdCBLVVJMJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgICAgIC8v
IFJldHVybnMgdHJ1ZSBpZiB0aGUgZW1iZWRkZXIgaW50ZXJjZXB0ZWQgdGhlIHBvc3RNZXNzYWdl
IGNhbGwKKyAgICAgICAgdmlydHVhbCBib29sIHdpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2
ZW50KFNlY3VyaXR5T3JpZ2luKiAvKnRhcmdldCovLCBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4p
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IGEzZTA1OTFjZmI2YzFkY2Q4MjQxNzU0
ZjA0YWM0MDRmMjRkY2QzNWYuLmVmNTc3ZmM3YWFhZjIxZDY4OGEwZDA1NjQyOWQ2M2MyM2NkZjVk
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTYwLDYgKzYwLDcgQEAKICNpbmNs
dWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZFJlcXVlc3QuaCIKICNpbmNsdWRlICJG
cmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAi
RnJhbWVUcmVlLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1l
T3duZXJFbGVtZW50LmgiCkBAIC05MTAsOCArOTExLDE2IEBAIHZvaWQgRE9NV2luZG93Ojpwb3N0
TWVzc2FnZVRpbWVyRmlyZWQoUGFzc093blB0cjxQb3N0TWVzc2FnZVRpbWVyPiB0KQogICAgIGlm
ICghZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgUmVmUHRyPE1lc3NhZ2VFdmVu
dD4gZXZlbnQgPSB0aW1lci0+ZXZlbnQoZG9jdW1lbnQoKSk7CisKKyAgICAvLyBHaXZlIHRoZSBl
bWJlZGRlciBhIGNoYW5jZSB0byBpbnRlcmNlcHQgdGhpcyBwb3N0TWVzc2FnZSBiZWNhdXNlIHRo
aXMKKyAgICAvLyBET01XaW5kb3cgbWlnaHQgYmUgYSBwcm94eSBmb3IgYW5vdGhlciBpbiBicm93
c2VycyB0aGF0IHN1cHBvcnQKKyAgICAvLyBwb3N0TWVzc2FnZSBjYWxscyBhY3Jvc3MgV2ViS2l0
IGluc3RhbmNlcy4KKyAgICBpZiAobV9mcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpLT53aWxsQ2hl
Y2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVudCh0aW1lci0+dGFyZ2V0T3JpZ2luKCksIGV2ZW50KSkK
KyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKHRpbWVyLT50YXJnZXRPcmlnaW4oKSkgewotICAg
ICAgICAvLyBDaGVjayB0YXJnZXQgb3JpZ2luIG5vdyBzaW5jZSB0aGUgdGFyZ2V0IGRvY3VtZW50
IG1heSBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIHNpbWVyIHdhcyBzY2hlZHVsZWQuCisgICAgICAg
IC8vIENoZWNrIHRhcmdldCBvcmlnaW4gbm93IHNpbmNlIHRoZSB0YXJnZXQgZG9jdW1lbnQgbWF5
IGhhdmUgY2hhbmdlZCBzaW5jZSB0aGUgdGltZXIgd2FzIHNjaGVkdWxlZC4KICAgICAgICAgaWYg
KCF0aW1lci0+dGFyZ2V0T3JpZ2luKCktPmlzU2FtZVNjaGVtZUhvc3RQb3J0KGRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCkpKSB7CiAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9ICJVbmFi
bGUgdG8gcG9zdCBtZXNzYWdlIHRvICIgKyB0aW1lci0+dGFyZ2V0T3JpZ2luKCktPnRvU3RyaW5n
KCkgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLiBSZWNpcGllbnQgaGFzIG9yaWdp
biAiICsgZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSArICIuXG4iOwpA
QCAtOTIwLDcgKzkyOSw3IEBAIHZvaWQgRE9NV2luZG93Ojpwb3N0TWVzc2FnZVRpbWVyRmlyZWQo
UGFzc093blB0cjxQb3N0TWVzc2FnZVRpbWVyPiB0KQogICAgICAgICB9CiAgICAgfQogCi0gICAg
ZGlzcGF0Y2hFdmVudCh0aW1lci0+ZXZlbnQoZG9jdW1lbnQoKSkpOworICAgIGRpc3BhdGNoRXZl
bnQoZXZlbnQpOwogfQogCiBET01TZWxlY3Rpb24qIERPTVdpbmRvdzo6Z2V0U2VsZWN0aW9uKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRPTU1lc3NhZ2VF
dmVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRE9NTWVzc2FnZUV2ZW50
LmgKaW5kZXggZmE3ZWI2ZGNjOTc4ZDZiNTlhM2ZiZmRlMTUxZjdlZDBlMGI4YzRmNS4uNmFjMGVj
NWYwNGEyYzAyNTE1OGYwZjUxM2VhMzU0MmY0MGE1NWZjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRE9NTWVzc2FnZUV2ZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRE9NTWVzc2FnZUV2ZW50LmgKQEAgLTM1LDcgKzM1LDgg
QEAKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKIAogI2lm
IFdFQktJVF9JTVBMRU1FTlRBVElPTgotbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBFdmVudDsg
fQorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjZW5kaWYK
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00OSw2ICs1MCwxMCBAQCBwdWJsaWM6CiAKICAgICBX
RUJLSVRfRVhQT1JUIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSBkYXRhKCkgY29uc3Q7CiAgICAg
V0VCS0lUX0VYUE9SVCBXZWJTdHJpbmcgb3JpZ2luKCkgY29uc3Q7CisKKyNpZiBXRUJLSVRfSU1Q
TEVNRU5UQVRJT04KKyAgICBXZWJET01NZXNzYWdlRXZlbnQoY29uc3QgV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6Ok1lc3NhZ2VFdmVudD4mIGUpIDogV2ViRE9NRXZlbnQoZSkgeyB9CisjZW5kaWYK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZyYW1lQ2xpZW50LmgKaW5kZXggYjIxMzIyOThlMTJlM2I2ZjIxNGVlMzA0YzM1
M2NiZjFlNWIyNjc1ZC4uY2FlNmFmYThhNGUwZDNiYjM4NmJhZmQ5MjEzMjNjZjZjYmMxZmEyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCkBA
IC0zMSw5ICszMSwxMSBAQAogI2lmbmRlZiBXZWJGcmFtZUNsaWVudF9oCiAjZGVmaW5lIFdlYkZy
YW1lQ2xpZW50X2gKIAorI2luY2x1ZGUgIldlYkRPTU1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUg
IldlYkljb25VUkwuaCIKICNpbmNsdWRlICJXZWJOYXZpZ2F0aW9uUG9saWN5LmgiCiAjaW5jbHVk
ZSAiV2ViTmF2aWdhdGlvblR5cGUuaCIKKyNpbmNsdWRlICJXZWJTZWN1cml0eU9yaWdpbi5oIgog
I2luY2x1ZGUgIldlYlN0b3JhZ2VRdW90YVR5cGUuaCIKICNpbmNsdWRlICJXZWJUZXh0RGlyZWN0
aW9uLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ29tbW9uLmgiCkBAIC01MCw2ICs1Miw3IEBA
IGNsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3MgV2ViQXBwbGljYXRpb25DYWNo
ZUhvc3RDbGllbnQ7CiBjbGFzcyBXZWJDb29raWVKYXI7CiBjbGFzcyBXZWJEYXRhU291cmNlOwor
Y2xhc3MgV2ViRE9NRXZlbnQ7CiBjbGFzcyBXZWJGb3JtRWxlbWVudDsKIGNsYXNzIFdlYkZyYW1l
OwogY2xhc3MgV2ViSW50ZW50U2VydmljZUluZm87CkBAIC01OCw3ICs2MSw2IEBAIGNsYXNzIFdl
Yk1lZGlhUGxheWVyOwogY2xhc3MgV2ViTWVkaWFQbGF5ZXJDbGllbnQ7CiBjbGFzcyBXZWJOb2Rl
OwogY2xhc3MgV2ViUGx1Z2luOwotY2xhc3MgV2ViU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBXZWJT
aGFyZWRXb3JrZXI7CiBjbGFzcyBXZWJTdG9yYWdlUXVvdGFDYWxsYmFja3M7CiBjbGFzcyBXZWJT
dHJpbmc7CkBAIC0zODUsNiArMzg3LDE2IEBAIHB1YmxpYzoKICAgICAvLyB0aGUgV2ViRnJhbWUg
c3RhcnRpbmcgdGhlIGFjdGl2aXR5LgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaEludGVudChX
ZWJGcmFtZSosIGNvbnN0IFdlYkludGVudCYpIHsgfQogCisgICAgLy8gTWVzc2FnZXMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAv
LyBOb3RpZmllcyB0aGUgZW1iZWRkZXIgdGhhdCBhIHBvc3RNZXNzYWdlIHdhcyBpc3N1ZWQgb24g
dGhpcyBmcmFtZSwgYW5kCisgICAgLy8gZ2l2ZXMgdGhlIGVtYmVkZGVyIGEgY2hhbmNlIHRvIGhh
bmRsZSBpdCBpbnN0ZWFkIG9mIFdlYktpdC4gUmV0dXJucyB0cnVlCisgICAgLy8gaWYgdGhlIGVt
YmVkZGVyIGhhbmRsZWQgaXQuCisgICAgdmlydHVhbCBib29sIHdpbGxDaGVja0FuZERpc3BhdGNo
TWVzc2FnZUV2ZW50KAorICAgICAgICBXZWJGcmFtZSogc291cmNlLAorICAgICAgICBXZWJTZWN1
cml0eU9yaWdpbiB0YXJnZXQsCisgICAgICAgIFdlYkRPTU1lc3NhZ2VFdmVudCkgeyByZXR1cm4g
ZmFsc2U7IH0KKwogcHJvdGVjdGVkOgogICAgIH5XZWJGcmFtZUNsaWVudCgpIHsgfQogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
Y3BwCmluZGV4IDkwNWEzNzc3MjI1OWFiZTMwYjcxYWE0YzE3ZDRlNTZlZWJmMTRmNjkuLmNmYzZh
NTU2MzFlYmZkNTFlODNmNDhkYTY2OThmZWNjMTIxOGYzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcApAQCAtNDcsNiAr
NDcsNyBAQAogI2luY2x1ZGUgIkhUTUxBcHBsZXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEZv
cm1FbGVtZW50LmgiICAvLyBuZWVkZWQgYnkgRm9ybVN0YXRlLmgKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKKyNpbmNsdWRlICJNZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lz
dHJ5LmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTU4
LDYgKzU5LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiU3RyaW5nRXh0cmFzLmgiCisjaW5jbHVkZSAiV2ViRE9NRXZlbnQu
aCIKICNpbmNsdWRlICJXZWJEYXRhU291cmNlSW1wbC5oIgogI2luY2x1ZGUgIldlYkRldlRvb2xz
QWdlbnRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViRG9jdW1lbnQuaCIKQEAgLTE2MTcsNCArMTYx
OSwxMSBAQCBQYXNzUmVmUHRyPEZyYW1lTmV0d29ya2luZ0NvbnRleHQ+IEZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6Y3JlYXRlTmV0d29ya2luZ0NvbnRleAogICAgIHJldHVybiBGcmFtZU5ldHdvcmtp
bmdDb250ZXh0SW1wbDo6Y3JlYXRlKG1fd2ViRnJhbWUtPmZyYW1lKCkpOwogfQogCitib29sIEZy
YW1lTG9hZGVyQ2xpZW50SW1wbDo6d2lsbENoZWNrQW5kRGlzcGF0Y2hNZXNzYWdlRXZlbnQoCisg
ICAgU2VjdXJpdHlPcmlnaW4qIHRhcmdldCwgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2ZW50
KSBjb25zdAoreworICAgIHJldHVybiBtX3dlYkZyYW1lLT5jbGllbnQoKS0+d2lsbENoZWNrQW5k
RGlzcGF0Y2hNZXNzYWdlRXZlbnQoCisgICAgICAgIG1fd2ViRnJhbWUsIFdlYlNlY3VyaXR5T3Jp
Z2luKHRhcmdldCksIFdlYkRPTU1lc3NhZ2VFdmVudChldmVudCkpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1l
TG9hZGVyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmgKaW5kZXggNTk2YjVmNGEwNzliMDMwY2EzODExY2ZmMzcwMzE3NDk0MjA1
ZmFiMy4uYmNkYjA0YTZmY2ZkZDkxNjUwMzFkZGUxMjZiOGI0YmYxM2QxNTZlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKQEAg
LTIwNiw2ICsyMDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZE5vdEFsbG93UGx1
Z2lucygpOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQ+IGNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0KCk7CisgICAgdmlydHVhbCBib29sIHdp
bGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiB0
YXJnZXQsIFBhc3NSZWZQdHI8V2ViQ29yZTo6TWVzc2FnZUV2ZW50PikgY29uc3Q7CiAKIHByaXZh
dGU6CiAgICAgdm9pZCBtYWtlRG9jdW1lbnRWaWV3KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9DTWFrZUxpc3RzRWZsLnR4dCBiL1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNF
ZmwudHh0CmluZGV4IGM1ZWY2NTY0ZjU0MjFhZGRjMjg4N2VkMGM2YTA5OWI1NDkxMzUzNzEuLmE2
NjQ0N2JmOTdjYmZhZDJhZjkzNzhlOTMzMGYwOTdlNzYyNTRiOGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NN
YWtlTGlzdHNFZmwudHh0CkBAIC0xMCw2ICsxMCw3IEBAIExJU1QoQVBQRU5EIFdlYktpdF9MSU5L
X0ZMQUdTCiBMSVNUKEFQUEVORCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dF
QktJVF9ESVJ9L2VmbC9ld2siCiAgICAgIiR7V0VCS0lUX0RJUn0vZWZsL1dlYkNvcmVTdXBwb3J0
IgorICAgICIke1dFQkNPUkVfRElSfS9maWxlYXBpIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0
Zm9ybS9lZmwiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvIgog
ICAgICR7Q2Fpcm9fSU5DTFVERV9ESVJTfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4v
V2ViS2l0LnZjcHJvai9XZWJLaXRMaWJDb21tb24udnNwcm9wcyBiL1NvdXJjZS9XZWJLaXQvd2lu
L1dlYktpdC52Y3Byb2ovV2ViS2l0TGliQ29tbW9uLnZzcHJvcHMKaW5kZXggMzJjNWIyMDUxN2Y1
MDc2YjVkMmM5M2ZkYmFjZjEwNzc1MjA3ZDc3MS4uMzU3ZWRiNWM3MTJmMGI1MTIwYjY2MWE4NDE4
OTJmZWQ4ZGQ2ZjQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJv
ai9XZWJLaXRMaWJDb21tb24udnNwcm9wcworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQu
dmNwcm9qL1dlYktpdExpYkNvbW1vbi52c3Byb3BzCkBAIC03LDcgKzcsNyBAQAogCT4KIAk8VG9v
bAogCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPSImcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJLaXQmcXVvdDs7
JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXEluY2x1ZGUmcXVvdDs7JnF1b3Q7JChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXEluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdlYktpdExp
YnJhcmllc0RpcilcSW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5j
bHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxJbmNsdWRl
XFdlYkNvcmUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcV2ViQ29y
ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcSW5jbHVkZVxXZWJDb3JlXEZv
cndhcmRpbmdIZWFkZXJzJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxJbmNsdWRl
XFdlYkNvcmVcRm9yd2FyZGluZ0hlYWRlcnMmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVp
bGREaXIpXEluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXEluY2x1ZGVccHJpdmF0ZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdl
YktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKFdl
YktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZx
dW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7OyZxdW90OyQo
UHJvamVjdERpcilcLi4mcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGlyKSZxdW90OzsmcXVvdDskKFBy
b2plY3REaXIpXC4uXFdlYkNvcmVTdXBwb3J0JnF1b3Q7OyZxdW90OyQoSW50RGlyKVxpbmNsdWRl
JnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcV2ViS2l0XERlcml2ZWRT
b3VyY2VzJnF1b3Q7IgorCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxXZWJLaXQmcXVvdDs7JnF1b3Q7JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXEluY2x1ZGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXEluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5j
bHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcSW5jbHVkZVxwcml2YXRlJnF1
b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxJbmNsdWRlXFdlYkNvcmUmcXVvdDs7
JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcV2ViQ29yZSZxdW90OzsmcXVvdDsk
KENvbmZpZ3VyYXRpb25CdWlsZERpcilcSW5jbHVkZVxXZWJDb3JlXGZpbGVhcGkmcXVvdDs7JnF1
b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcV2ViQ29yZVxmaWxlYXBpJnF1b3Q7OyZx
dW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxJbmNsdWRlXFdlYkNvcmVcRm9yd2FyZGluZ0hl
YWRlcnMmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXEluY2x1ZGVcV2ViQ29yZVxG
b3J3YXJkaW5nSGVhZGVycyZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcSW5j
bHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
SW5jbHVkZVxwcml2YXRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFy
aWVzRGlyKVxJbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFy
aWVzRGlyKVxJbmNsdWRlXHByaXZhdGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChXZWJL
aXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHRocmVhZHMmcXVvdDs7JnF1b3Q7JChQcm9qZWN0RGly
KVwuLiZxdW90OzsmcXVvdDskKFByb2plY3REaXIpJnF1b3Q7OyZxdW90OyQoUHJvamVjdERpcilc
Li5cV2ViQ29yZVN1cHBvcnQmcXVvdDs7JnF1b3Q7JChJbnREaXIpXGluY2x1ZGUmcXVvdDs7JnF1
b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxXZWJLaXRcRGVyaXZlZFNvdXJjZXMmcXVv
dDsiCiAJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1dFQktJVF9FWFBPUlRTO0ZS
QU1FV09SS19OQU1FPVdlYktpdCIKIAkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiCiAJCVByZWNv
bXBpbGVkSGVhZGVyVGhyb3VnaD0iV2ViS2l0UHJlZml4LmgiCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZjRi
YWY4MjEyZTE5YWJkYjRiZjJlYWEzYjVjYWI0ZTgwNzkxYmYzMi4uN2ZjMjEzNjJmMzQzZDM5ZmE1
MTRiZTU0NGM4NjEwM2FjZTFiODEyOSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMjUwLDYgKzI1MCw3IEBA
IExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcihUZXN0U2hlbGwqIHNo
ZWxsKQogICAgIGJpbmRQcm9wZXJ0eSgid2ViSGlzdG9yeUl0ZW1Db3VudCIsICZtX3dlYkhpc3Rv
cnlJdGVtQ291bnQpOwogICAgIGJpbmRQcm9wZXJ0eSgidGl0bGVUZXh0RGlyZWN0aW9uIiwgJm1f
dGl0bGVUZXh0RGlyZWN0aW9uKTsKICAgICBiaW5kUHJvcGVydHkoInBsYXRmb3JtTmFtZSIsICZt
X3BsYXRmb3JtTmFtZSk7CisgICAgYmluZFByb3BlcnR5KCJpbnRlcmNlcHRQb3N0TWVzc2FnZSIs
ICZtX2ludGVyY2VwdFBvc3RNZXNzYWdlKTsKIH0KIAogTGF5b3V0VGVzdENvbnRyb2xsZXI6On5M
YXlvdXRUZXN0Q29udHJvbGxlcigpCkBAIC02MzcsNiArNjM4LDcgQEAgdm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6cmVzZXQoKQogICAgIG1fd2ViSGlzdG9yeUl0ZW1Db3VudC5zZXQoMCk7CiAg
ICAgbV90aXRsZVRleHREaXJlY3Rpb24uc2V0KCJsdHIiKTsKICAgICBtX3BsYXRmb3JtTmFtZS5z
ZXQoImNocm9taXVtIik7CisgICAgbV9pbnRlcmNlcHRQb3N0TWVzc2FnZS5zZXQoZmFsc2UpOwog
ICAgIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbiA9IFdlYlVSTCgpOwogICAgIG1faXNQcmludGlu
ZyA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA0ZDZjZDg1YTdhMjJhOTNmNmM2Yjk5ZTA4ZGZjMThj
ODBjYTQyY2I4Li43MWIxYjQyMjY5NDc3ZDNkZjU4Y2FjMjhkZWYzZmU0ZmU0MjdmZTQzIDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmgKQEAgLTQ2OSw2ICs0NjksMTEgQEAgcHVibGljOgogICAgICAgICBtX3RpdGxlVGV4dERp
cmVjdGlvbi5zZXQoZGlyID09IFdlYktpdDo6V2ViVGV4dERpcmVjdGlvbkxlZnRUb1JpZ2h0ID8g
Imx0ciIgOiAicnRsIik7CiAgICAgfQogCisgICAgYm9vbCBzaG91bGRJbnRlcmNlcHRQb3N0TWVz
c2FnZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9pbnRlcmNlcHRQb3N0TWVzc2FnZS5pc0Jv
b2woKSAmJiBtX2ludGVyY2VwdFBvc3RNZXNzYWdlLnRvQm9vbGVhbigpOworICAgIH0KKwogICAg
IHZvaWQgc2V0SXNQcmludGluZyhib29sIHZhbHVlKSB7IG1faXNQcmludGluZyA9IHZhbHVlOyB9
CiAgICAgYm9vbCBpc1ByaW50aW5nKCkgeyByZXR1cm4gbV9pc1ByaW50aW5nOyB9CiAKQEAgLTY4
MCw2ICs2ODUsOSBAQCBwcml2YXRlOgogICAgIC8vIEJvdW5kIHZhcmlhYmxlIHRvIHJldHVybiB0
aGUgbmFtZSBvZiB0aGlzIHBsYXRmb3JtIChjaHJvbWl1bSkuCiAgICAgQ3BwVmFyaWFudCBtX3Bs
YXRmb3JtTmFtZTsKIAorICAgIC8vIEJvdW5kIHZhcmlhYmxlIHRvIHNldCB3aGV0aGVyIHBvc3RN
ZXNzYWdlcyBzaG91bGQgYmUgaW50ZXJjZXB0ZWQgb3Igbm90CisgICAgQ3BwVmFyaWFudCBtX2lu
dGVyY2VwdFBvc3RNZXNzYWdlOworCiAgICAgV2ViS2l0OjpXZWJVUkwgbV91c2VyU3R5bGVTaGVl
dExvY2F0aW9uOwogCiAgICAgT3duUHRyPFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
TW9jaz4gbV9zcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCmluZGV4IGZmZTNiMTY0NmYxYzQwN2VjZmUzMGQ2
MjA3Mjg2ZGE0MjBjOWRiNDIuLmJlYjE4Mjg4ZWZkMDc1MDFjNDU2Y2U4YmQ1YmE2ZDMyN2JhYzc3
OWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAK
QEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJwbGF0Zm9ybS9XZWJDU3RyaW5nLmgiCiAjaW5j
bHVkZSAiV2ViQ29uc29sZU1lc3NhZ2UuaCIKICNpbmNsdWRlICJXZWJDb250ZXh0TWVudURhdGEu
aCIKKyNpbmNsdWRlICJXZWJET01NZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJXZWJEYXRhU291
cmNlLmgiCiAjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrLmgiCiAjaW5j
bHVkZSAicGxhdGZvcm0vV2ViRHJhZ0RhdGEuaCIKQEAgLTEyMDQsNiArMTIwNSwxNiBAQCB2b2lk
IFdlYlZpZXdIb3N0OjpvcGVuRmlsZVN5c3RlbShXZWJGcmFtZSogZnJhbWUsIFdlYkZpbGVTeXN0
ZW06OlR5cGUgdHlwZSwgbG9uZwogICAgIHdlYmtpdF9zdXBwb3J0OjpPcGVuRmlsZVN5c3RlbShm
cmFtZSwgdHlwZSwgc2l6ZSwgY3JlYXRlLCBjYWxsYmFja3MpOwogfQogCitib29sIFdlYlZpZXdI
b3N0Ojp3aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVudChXZWJGcmFtZSogc291cmNlLCBX
ZWJTZWN1cml0eU9yaWdpbiB0YXJnZXQsIFdlYkRPTU1lc3NhZ2VFdmVudCBldmVudCkKK3sKKyAg
ICBpZiAobV9zaGVsbC0+c2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKSB7CisgICAgICAg
IHByaW50RnJhbWVEZXNjcmlwdGlvbihzb3VyY2UpOworICAgICAgICBmcHV0cygiIC0gd2lsbENo
ZWNrQW5kRGlzcGF0Y2hNZXNzYWdlRXZlbnRcbiIsIHN0ZG91dCk7CisgICAgfQorCisgICAgcmV0
dXJuIG1fc2hlbGwtPmxheW91dFRlc3RDb250cm9sbGVyKCktPnNob3VsZEludGVyY2VwdFBvc3RN
ZXNzYWdlKCk7Cit9CisKIC8vIFB1YmxpYyBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogV2ViVmlld0hvc3Q6Oldl
YlZpZXdIb3N0KFRlc3RTaGVsbCogc2hlbGwpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuaAppbmRleCA5MjIxNjNhYjlhZTU4ZmRkNDQ2YmI0OTBlYjUyZTc0MzI0
YTcwYjJlLi4zMWVjZDc5NmFkYzc5NzlkZDM5MDJiZGJiNjQxZWMxOTA4NjA0MjQyIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKQEAgLTIxMyw2ICsyMTMs
NyBAQCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlNwZWxsQ2hlY2tDbGll
bnQsIHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbAogICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNl
Y3VyZUNvbnRlbnQoV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViU2VjdXJpdHlP
cmlnaW4mLCBjb25zdCBXZWJLaXQ6OldlYlVSTCYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWREZXRl
Y3RYU1MoV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViVVJMJiwgYm9vbCBkaWRC
bG9ja0VudGlyZVBhZ2UpOwogICAgIHZpcnR1YWwgdm9pZCBvcGVuRmlsZVN5c3RlbShXZWJLaXQ6
OldlYkZyYW1lKiwgV2ViS2l0OjpXZWJGaWxlU3lzdGVtOjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwg
Ym9vbCBjcmVhdGUsIFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopOworICAgIHZpcnR1
YWwgYm9vbCB3aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVudChXZWJLaXQ6OldlYkZyYW1l
KiBzb3VyY2UsIFdlYktpdDo6V2ViU2VjdXJpdHlPcmlnaW4gdGFyZ2V0LCBXZWJLaXQ6OldlYkRP
TU1lc3NhZ2VFdmVudCk7CiAKICAgICBXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50
TW9jayogZGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCk7CiAgICAgCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9hYm91dC1ibGFuay1p
ZnJhbWUtaW4tbWFpbi1mcmFtZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L21peGVkQ29udGVudC9hYm91dC1ibGFuay1pZnJhbWUtaW4tbWFpbi1mcmFtZS1l
eHBlY3RlZC50eHQKaW5kZXggMGVjYThhOGY2NjgwMGY5MmI3NDA3ZWNjOGViYTVjNDUzMTZmNzRj
OS4uODgwZGE4ZTE1NjAwNWVhNTdjNzI0NDlmYTVkNzJjMDYyMWEyNTY0MyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvYWJvdXQtYmxhbmst
aWZyYW1lLWluLW1haW4tZnJhbWUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2Fib3V0LWJsYW5rLWlmcmFtZS1pbi1tYWluLWZy
YW1lLWV4cGVjdGVkLnR4dApAQCAtMTYsNCArMTYsNSBAQCBmcmFtZSAiPCEtLWZyYW1lUGF0aCAv
LzwhLS1mcmFtZTEtLT4tLT4iIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCiBtYWluIGZyYW1lIC0g
ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKIG1haW4gZnJhbWUgLSBkaWRIYW5kbGVPbmxv
YWRFdmVudHNGb3JGcmFtZQogbWFpbiBmcmFtZSAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQorbWFp
biBmcmFtZSAtIHdpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50CiBUaGlzIHRlc3Qgb3Bl
bnMgYSB3aW5kb3cgaWZyYW1lIHRoYXQgbG9hZHMgYW4gYWJvdXQ6YmxhbmsgaWZyYW1lLiBXZSBz
aG91bGQgKm5vdCogdHJpZ2dlciBhIG1peGVkIGNvbnRlbnQgY2FsbGJhY2sgYmVjYXVzZSB0aGUg
YWJvdXQ6YmxhbmsgaWZyYW1lcyBjYW5ub3QgYmUgY29ycnVwdGVkIGJ5IGFjdGl2ZSBuZXR3b3Jr
IGF0dGFja2Vycy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
bWl4ZWRDb250ZW50L2RhdGEtdXJsLWlmcmFtZS1pbi1tYWluLWZyYW1lLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2RhdGEtdXJsLWlm
cmFtZS1pbi1tYWluLWZyYW1lLWV4cGVjdGVkLnR4dAppbmRleCBhMGYwMjQzN2E3ZjA3MDUwODFm
NGFhODFlMDFkMWJmZDVkNmZjZjU1Li5lY2QxYzEyNjVmMjRhMDE3NjU1YjM2NDYzMGM5YzAxNWIx
MzdkZTg1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVk
Q29udGVudC9kYXRhLXVybC1pZnJhbWUtaW4tbWFpbi1mcmFtZS1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvZGF0YS11cmwtaWZy
YW1lLWluLW1haW4tZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0xMSw0ICsxMSw1IEBAIGZyYW1lICI8
IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNG
b3JGcmFtZQogbWFpbiBmcmFtZSAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCiBmcmFt
ZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkRmluaXNoTG9hZEZvckZy
YW1lCiBtYWluIGZyYW1lIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0gd2ls
bENoZWNrQW5kRGlzcGF0Y2hNZXNzYWdlRXZlbnQKIFRoaXMgdGVzdCBvcGVucyBhIHdpbmRvdyBp
ZnJhbWUgdGhhdCBsb2FkcyBhIGRhdGEgVVJMIGlmcmFtZS4gV2Ugc2hvdWxkICpub3QqIHRyaWdn
ZXIgYSBtaXhlZCBjb250ZW50IGNhbGxiYWNrIGJlY2F1c2UgdGhlIGRhdGEgVVJMIGNhbm5vdCBi
ZSBjb3JydXB0ZWQgYnkgYWN0aXZlIG5ldHdvcmsgYXR0YWNrZXJzLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtY3NzLWlu
LW1haW4tZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtY3NzLWluLW1haW4tZnJhbWUtZXhwZWN0ZWQudHh0Cmlu
ZGV4IGZhNjcxMTdmYWZiNTBlNjQzNWMzMjgwOWUyZGM4YjkwNzIzNjU5Y2YuLmRkMGIyOWU3NWMx
YzRlZDc3MDc2NWNkNjQ2NDhkZjVhN2FlY2NiZTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLWNzcy1pbi1tYWluLWZyYW1l
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVk
Q29udGVudC9pbnNlY3VyZS1jc3MtaW4tbWFpbi1mcmFtZS1leHBlY3RlZC50eHQKQEAgLTksNCAr
OSw1IEBAIGRpZFJ1bkluc2VjdXJlQ29udGVudAogbWFpbiBmcmFtZSAtIGRpZEZpbmlzaERvY3Vt
ZW50TG9hZEZvckZyYW1lCiBtYWluIGZyYW1lIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJh
bWUKIG1haW4gZnJhbWUgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKK21haW4gZnJhbWUgLSB3aWxs
Q2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVudAogVGhpcyB0ZXN0IG9wZW5zIGEgd2luZG93IHRo
YXQgbG9hZHMgYW4gaW5zZWN1cmUgc3R5bGUgc2hlZXQuIFdlIHNob3VsZCB0cmlnZ2VyIGEgbWl4
ZWQgY29udGVudCBjYWxsYmFjayBiZWNhdXNlIHRoZSBtYWluIGZyYW1lIGluIHRoZSB3aW5kb3cg
aXMgSFRUUFMgYnV0IGlzIHJ1bm5pbmcgaW5zZWN1cmUgY29udGVudC4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLWlmcmFt
ZS1pbi1tYWluLWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLWlmcmFtZS1pbi1tYWluLWZyYW1lLWV4cGVjdGVk
LnR4dAppbmRleCBkODI5MzkxZDU3NGRlYTQzOTU3ZmYxZTg0ZGIxYmJmNDQxNDE5MWQ2Li4xMWM2
NmI5YTgzNTNhMTZjZmExYjllMzUxYmRkN2ViOTE5MTY3ZmQwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1pZnJhbWUtaW4t
bWFpbi1mcmFtZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtaWZyYW1lLWluLW1haW4tZnJhbWUtZXhwZWN0ZWQu
dHh0CkBAIC0xNCw0ICsxNCw1IEBAIGZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0t
Pi0tPiIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQogbWFpbiBmcmFtZSAtIGRpZEhh
bmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCiBmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFt
ZTAtLT4tLT4iIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCiBtYWluIGZyYW1lIC0gZGlkRmluaXNo
TG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0gd2lsbENoZWNrQW5kRGlzcGF0Y2hNZXNzYWdlRXZl
bnQKIFRoaXMgdGVzdCBvcGVucyBhIHdpbmRvdyB0aGF0IGxvYWRzIGFuIGluc2VjdXJlIGlmcmFt
ZS4gV2Ugc2hvdWxkIHRyaWdnZXIgYSBtaXhlZCBjb250ZW50IGNhbGxiYWNrIGJlY2F1c2UgdGhl
IG1haW4gZnJhbWUgaW4gdGhlIHdpbmRvdyBpcyBIVFRQUyBidXQgaXMgZGlzcGxheWluZyBpbnNl
Y3VyZSBjb250ZW50LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtaW1hZ2UtaW4tbWFpbi1mcmFtZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1p
bWFnZS1pbi1tYWluLWZyYW1lLWV4cGVjdGVkLnR4dAppbmRleCAwODVmYmI0NDJkMzc0YTQ1Njg4
YWI1ODgyOWU1YjE5NWQ0NzViODY1Li5mYWI3NjJjMGRlZTEzNmRkNzczZGRjNGUxNGIxYjViMjBm
ZjUwY2YzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVk
Q29udGVudC9pbnNlY3VyZS1pbWFnZS1pbi1tYWluLWZyYW1lLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1pbWFn
ZS1pbi1tYWluLWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtOSw0ICs5LDUgQEAgZGlkRGlzcGxheUlu
c2VjdXJlQ29udGVudAogbWFpbiBmcmFtZSAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1l
CiBtYWluIGZyYW1lIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIG1haW4gZnJhbWUg
LSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKK21haW4gZnJhbWUgLSB3aWxsQ2hlY2tBbmREaXNwYXRj
aE1lc3NhZ2VFdmVudAogVGhpcyB0ZXN0IG9wZW5zIGEgd2luZG93IHRoYXQgbG9hZHMgYW4gaW5z
ZWN1cmUgaW1hZ2UuIFdlIHNob3VsZCB0cmlnZ2VyIGEgbWl4ZWQgY29udGVudCBjYWxsYmFjayBi
ZWNhdXNlIHRoZSBtYWluIGZyYW1lIGluIHRoZSB3aW5kb3cgaXMgSFRUUFMgYnV0IGlzIGRpc3Bs
YXlpbmcgaW5zZWN1cmUgY29udGVudC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L3JlZGlyZWN0LWh0dHAtdG8taHR0cHMtaWZyYW1lLWlu
LW1haW4tZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9taXhlZENvbnRlbnQvcmVkaXJlY3QtaHR0cC10by1odHRwcy1pZnJhbWUtaW4tbWFpbi1mcmFt
ZS1leHBlY3RlZC50eHQKaW5kZXggMWVkZmZmMWRmM2RjOWVmNGEzYzIwZjI2ZjE3ZThkZjE4NjY5
ODFkZC4uOTk4NmNlN2ZjODZhZTdmNmRiMGQ3NzQxYWM5MjU4ZjA5ZTlhZDYwMiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvcmVkaXJlY3Qt
aHR0cC10by1odHRwcy1pZnJhbWUtaW4tbWFpbi1mcmFtZS1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvcmVkaXJlY3QtaHR0cC10
by1odHRwcy1pZnJhbWUtaW4tbWFpbi1mcmFtZS1leHBlY3RlZC50eHQKQEAgLTE1LDQgKzE1LDUg
QEAgZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZEhhbmRsZU9u
bG9hZEV2ZW50c0ZvckZyYW1lCiBtYWluIGZyYW1lIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9y
RnJhbWUKIGZyYW1lICI8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBkaWRGaW5p
c2hMb2FkRm9yRnJhbWUKIG1haW4gZnJhbWUgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKK21haW4g
ZnJhbWUgLSB3aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVudAogVGhpcyB0ZXN0IG9wZW5z
IGEgd2luZG93IHRoYXQgbG9hZHMgYW4gaW5zZWN1cmUgaWZyYW1lICh2aWEgYSB0cmlja3kgcmVk
aXJlY3QpLiBXZSBzaG91bGQgdHJpZ2dlciBhIG1peGVkIGNvbnRlbnQgY2FsbGJhY2sgYmVjYXVz
ZSB0aGUgbWFpbiBmcmFtZSBpbiB0aGUgd2luZG93IGlzIEhUVFBTIGJ1dCBpcyBkaXNwbGF5aW5n
IGNvbnRlbnQgdGhhdCBjYW4gYmUgY29udHJvbGxlZCBieSBhbiBhY3RpdmUgbmV0d29yayBhdHRh
Y2tlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRD
b250ZW50L3JlZGlyZWN0LWh0dHBzLXRvLWh0dHAtaWZyYW1lLWluLW1haW4tZnJhbWUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvcmVk
aXJlY3QtaHR0cHMtdG8taHR0cC1pZnJhbWUtaW4tbWFpbi1mcmFtZS1leHBlY3RlZC50eHQKaW5k
ZXggMWVkZmZmMWRmM2RjOWVmNGEzYzIwZjI2ZjE3ZThkZjE4NjY5ODFkZC4uOTk4NmNlN2ZjODZh
ZTdmNmRiMGQ3NzQxYWM5MjU4ZjA5ZTlhZDYwMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvcmVkaXJlY3QtaHR0cHMtdG8taHR0cC1pZnJh
bWUtaW4tbWFpbi1mcmFtZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9taXhlZENvbnRlbnQvcmVkaXJlY3QtaHR0cHMtdG8taHR0cC1pZnJhbWUtaW4t
bWFpbi1mcmFtZS1leHBlY3RlZC50eHQKQEAgLTE1LDQgKzE1LDUgQEAgZnJhbWUgIjwhLS1mcmFt
ZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1l
CiBtYWluIGZyYW1lIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIGZyYW1lICI8IS0t
ZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKIG1h
aW4gZnJhbWUgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKK21haW4gZnJhbWUgLSB3aWxsQ2hlY2tB
bmREaXNwYXRjaE1lc3NhZ2VFdmVudAogVGhpcyB0ZXN0IG9wZW5zIGEgd2luZG93IHRoYXQgbG9h
ZHMgYW4gaW5zZWN1cmUgaWZyYW1lICh2aWEgYSB0cmlja3kgcmVkaXJlY3QpLiBXZSBzaG91bGQg
dHJpZ2dlciBhIG1peGVkIGNvbnRlbnQgY2FsbGJhY2sgYmVjYXVzZSB0aGUgbWFpbiBmcmFtZSBp
biB0aGUgd2luZG93IGlzIEhUVFBTIGJ1dCBpcyBkaXNwbGF5aW5nIGNvbnRlbnQgdGhhdCBjYW4g
YmUgY29udHJvbGxlZCBieSBhbiBhY3RpdmUgbmV0d29yayBhdHRhY2tlci4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL2ludGVyY2VwdC1wb3N0
bWVzc2FnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0
L2V2ZW50cy9pbnRlcmNlcHQtcG9zdG1lc3NhZ2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIy
N2E1YzllNGE1MzY3YjdmMDdkY2EwY2FiOWIwN2I3ZjcwYzI1YjEKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy9pbnRlcmNlcHQtcG9z
dG1lc3NhZ2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorbWFpbiBmcmFtZSAtIGRpZEZp
bmlzaERvY3VtZW50TG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkSGFuZGxlT25sb2FkRXZl
bnRzRm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUKK21haW4gZnJh
bWUgLSB3aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVudAorbWFpbiBmcmFtZSAtIHdpbGxD
aGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50CitSRUNWMQorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy9pbnRlcmNlcHQtcG9zdG1lc3NhZ2Uu
aHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL2ludGVyY2Vw
dC1wb3N0bWVzc2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1Mzc2OTlmMjBkMDBmY2FmMjQ0MmUyMjA4
OGQyNzMzYmZmZWI0NGMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9mYXN0L2V2ZW50cy9pbnRlcmNlcHQtcG9zdG1lc3NhZ2UuaHRtbApAQCAtMCwwICsx
LDQ3IEBACis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPHNjcmlwdD4KKyAgICAgIGZ1bmN0aW9uIHdy
aXRlKHN0cikgeworICAgICAgICBwcmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29s
ZScpOworICAgICAgICB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyICsgJ1xuJyk7
CisgICAgICAgIHByZS5hcHBlbmRDaGlsZCh0ZXh0KTsKKyAgICAgIH0KKworICAgICAgZnVuY3Rp
b24gcmVjdk1zZzEoZSkgeworICAgICAgICB3cml0ZSgiUkVDVjEiKTsKKyAgICAgICAgd2luZG93
LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2TXNnMSwgZmFsc2UpOworCisgICAg
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuaW50ZXJjZXB0UG9zdE1lc3NhZ2UgPSB0cnVlOworCisgICAgICAgIHdpbmRv
dy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgcmVjdk1zZzIsIGZhbHNlKTsKKyAgICAgICAg
d2luZG93LnBvc3RNZXNzYWdlKCJNZXNzYWdlIDIiLCAiKiIpOworICAgICAgIAorICAgICAgICAv
LyBXZSBuZWVkIHRvIGNhbGwgc2V0VGltZW91dCBoZXJlIGJlY2F1c2Ugd2UgaW50ZXJjZXB0IHRo
ZSBuZXh0IGV2ZW50LgorICAgICAgICAvLyBJZiB0aGlzIHRlc3QgYmVjb21lcyBmbGFreSwgeW91
IG1heSBuZWVkIHRvIGluY3JlYXNlIHRoaXMgdGltZW91dC4KKyAgICAgICAgd2luZG93LnNldFRp
bWVvdXQoImRvbmUoKSIsIDUwKTsKKyAgICAgIH0KKworICAgICAgZnVuY3Rpb24gcmVjdk1zZzIo
ZSkgeworICAgICAgICB3cml0ZSgiUkVDVjIiKTsKKyAgICAgIH0KKworICAgICAgZnVuY3Rpb24g
ZG9uZSgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgfQor
CisgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3ZNc2cxLCBmYWxz
ZSk7CisKKyAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAg
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKTsKKyAg
ICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAg
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgIH0KKwor
ICAgICAgd2luZG93LnBvc3RNZXNzYWdlKCJNZXNzYWdlIDEiLCAiKiIpOworICAgIDwvc2NyaXB0
PgorICA8L2hlYWQ+CisgIDxib2R5PjxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPjwvYm9keT4KKzwv
aHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90
ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtaWZyYW1lLWluLW1haW4tZnJhbWUt
YWxsb3dlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRw
L3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1pZnJhbWUtaW4tbWFpbi1mcmFt
ZS1hbGxvd2VkLWV4cGVjdGVkLnR4dAppbmRleCA5OGVhZDQxZGZjYjQ1ZjIwYzQ2OWIzZTI2MWQx
Y2FiZjI0YzRhMGM4Li4zMzc5OGZkYTZjOGJjMDYxNzMyMGNjNjY1NmRmNDU3MjgyYjMyN2MzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3Vy
aXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1pZnJhbWUtaW4tbWFpbi1mcmFtZS1hbGxvd2VkLWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3Rz
L3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1pZnJhbWUtaW4tbWFpbi1mcmFtZS1hbGxv
d2VkLWV4cGVjdGVkLnR4dApAQCAtMTQsNCArMTQsNSBAQCBmcmFtZSAiPCEtLWZyYW1lUGF0aCAv
LzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIG1haW4g
ZnJhbWUgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQogZnJhbWUgIjwhLS1mcmFtZVBh
dGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQogbWFpbiBmcmFt
ZSAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAtIHdpbGxDaGVja0FuZERpc3Bh
dGNoTWVzc2FnZUV2ZW50CiBUaGlzIHRlc3Qgb3BlbnMgYSB3aW5kb3cgdGhhdCBsb2FkcyBhbiBp
bnNlY3VyZSBpZnJhbWUuIFdlIHNob3VsZCB0cmlnZ2VyIGEgbWl4ZWQgY29udGVudCBjYWxsYmFj
ayBldmVuIHRob3VnaCB3ZSd2ZSBzZXQgdGhlIHByZWZlcmVuY2UgdG8gYmxvY2sgdGhpcywgYmVj
YXVzZSB3ZSd2ZSBvdmVycmlkZW4gdGhlIHByZWZlcmVuY2UgdmlhIGEgd2ViIHBlcm1pc3Npb24g
Y2xpZW50IGNhbGxiYWNrLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtaWZyYW1lLWluLW1h
aW4tZnJhbWUtYmxvY2tlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1pZnJhbWUtaW4t
bWFpbi1mcmFtZS1ibG9ja2VkLWV4cGVjdGVkLnR4dAppbmRleCAyMTI4MDNmY2UxODNhNjk1ODlk
ZTIyMWIxNzI3MGUwODU0ZGE4ZjY1Li43YzdiMGRjZTJkY2I3OTQzYWMyZjU5N2RmNWE4YzY3OGNl
MTE4MDQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rl
c3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1pZnJhbWUtaW4tbWFpbi1mcmFtZS1i
bG9ja2VkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9o
dHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1pZnJhbWUtaW4tbWFpbi1m
cmFtZS1ibG9ja2VkLWV4cGVjdGVkLnR4dApAQCAtMTAsNCArMTAsNSBAQCBmcmFtZSAiPCEtLWZy
YW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhF
cnJvcgogbWFpbiBmcmFtZSAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCiBtYWluIGZy
YW1lIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIG1haW4gZnJhbWUgLSBkaWRGaW5p
c2hMb2FkRm9yRnJhbWUKK21haW4gZnJhbWUgLSB3aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VF
dmVudAogVGhpcyB0ZXN0IG9wZW5zIGEgd2luZG93IHRoYXQgbG9hZHMgYW4gaW5zZWN1cmUgaWZy
YW1lLiBXZSBzaG91bGQgbm90IHRyaWdnZXIgYSBtaXhlZCBjb250ZW50IGNhbGxiYWNrIGV2ZW4g
dGhvdWdoIHRoZSBtYWluIGZyYW1lIGluIHRoZSB3aW5kb3cgaXMgSFRUUFMgYW5kIGlzIGRpc3Bs
YXlpbmcgaW5zZWN1cmUgY29udGVudCwgYmVjYXVzZSB3ZSd2ZSBzZXQgdGhlIHByZWZlcmVuY2Ug
dG8gYmxvY2sgdGhpcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLWltYWdlLWluLW1haW4t
ZnJhbWUtYWxsb3dlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1pbWFnZS1pbi1tYWlu
LWZyYW1lLWFsbG93ZWQtZXhwZWN0ZWQudHh0CmluZGV4IGU1N2ZlNWJhMzZlNmI1MWIwNjIwYWMx
ZGY5NjBlY2IwNWViZTJmMDcuLjFhNzBhZTI4ZjU4ZGE4ZmFhNzU5MGJjNmVjYjBkMzhlY2QyYWYw
NWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMv
c2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLWltYWdlLWluLW1haW4tZnJhbWUtYWxsb3dl
ZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90
ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtaW1hZ2UtaW4tbWFpbi1mcmFtZS1h
bGxvd2VkLWV4cGVjdGVkLnR4dApAQCAtOSw0ICs5LDUgQEAgZGlkRGlzcGxheUluc2VjdXJlQ29u
dGVudAogbWFpbiBmcmFtZSAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCiBtYWluIGZy
YW1lIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIG1haW4gZnJhbWUgLSBkaWRGaW5p
c2hMb2FkRm9yRnJhbWUKK21haW4gZnJhbWUgLSB3aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VF
dmVudAogVGhpcyB0ZXN0IG9wZW5zIGEgd2luZG93IHRoYXQgbG9hZHMgYW4gaW5zZWN1cmUgaW1h
Z2UuIFdlIHNob3VsZCB0cmlnZ2VyIGEgbWl4ZWQgY29udGVudCBjYWxsYmFjayBldmVuIHRob3Vn
aCB3ZSd2ZSBzZXQgdGhlIHByZWZlcmVuY2UgdG8gYmxvY2sgdGhpcywgYmVjYXVzZSB3ZSd2ZSBv
dmVycmlkZW4gdGhlIHByZWZlcmVuY2UgdmlhIGEgd2ViIHBlcm1pc3Npb24gY2xpZW50IGNhbGxi
YWNrLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0
cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtaW1hZ2UtaW4tbWFpbi1mcmFtZS1ibG9j
a2VkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVz
dHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2luc2VjdXJlLWltYWdlLWluLW1haW4tZnJhbWUtYmxv
Y2tlZC1leHBlY3RlZC50eHQKaW5kZXggM2IyOTJjYmIyNzVjMDUwYTEyNThiMTVkY2RmNTIxYmU5
YTkwMjZlMy4uYmU2MGM4ZGIyNDIyZTAxMjcyOTQ4MzFmMTdhMzc5YzgyZDQ0YjI3YyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1cml0eS9t
aXhlZENvbnRlbnQvaW5zZWN1cmUtaW1hZ2UtaW4tbWFpbi1mcmFtZS1ibG9ja2VkLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3Vy
aXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1pbWFnZS1pbi1tYWluLWZyYW1lLWJsb2NrZWQtZXhw
ZWN0ZWQudHh0CkBAIC04LDQgKzgsNSBAQCBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogW2Jsb2Nr
ZWRdIFRoZSBwYWdlIGF0IGh0dHBzOi8vMTI3LjAuMC4xOjg0NDMvc2VjdXJpdHkvbQogbWFpbiBm
cmFtZSAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCiBtYWluIGZyYW1lIC0gZGlkSGFu
ZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKIG1haW4gZnJhbWUgLSBkaWRGaW5pc2hMb2FkRm9yRnJh
bWUKK21haW4gZnJhbWUgLSB3aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVudAogVGhpcyB0
ZXN0IG9wZW5zIGEgd2luZG93IHRoYXQgbG9hZHMgYW4gaW5zZWN1cmUgaW1hZ2UuIFdlIHNob3Vs
ZCBub3QgdHJpZ2dlciBhIG1peGVkIGNvbnRlbnQgY2FsbGJhY2sgZXZlbiB0aG91Z2ggdGhlIG1h
aW4gZnJhbWUgaW4gdGhlIHdpbmRvdyBpcyBIVFRQUyBhbmQgaXMgZGlzcGxheWluZyBpbnNlY3Vy
ZSBjb250ZW50LCBiZWNhdXNlIHdlJ3ZlIHNldCB0aGUgcHJlZmVyZW5jZSB0byBibG9jayB0aGlz
LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9z
ZWN1cml0eS9taXhlZENvbnRlbnQvaW5zZWN1cmUtc2NyaXB0LWluLW1haW4tZnJhbWUtYWxsb3dl
ZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3Rz
L3NlY3VyaXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1zY3JpcHQtaW4tbWFpbi1mcmFtZS1hbGxv
d2VkLWV4cGVjdGVkLnR4dAppbmRleCBlYjNjM2ZiYmE4ZWQ0YjI5OTc0MDc3NzgyNmUyMTU5YWM0
YzYxOTRhLi4zOTkyOGY4NGM3MjkzODUzNjBhY2E3Mzk4YzEwODhhZWMzZGUxZTU0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5L21p
eGVkQ29udGVudC9pbnNlY3VyZS1zY3JpcHQtaW4tbWFpbi1mcmFtZS1hbGxvd2VkLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3Vy
aXR5L21peGVkQ29udGVudC9pbnNlY3VyZS1zY3JpcHQtaW4tbWFpbi1mcmFtZS1hbGxvd2VkLWV4
cGVjdGVkLnR4dApAQCAtOSw0ICs5LDUgQEAgZGlkUnVuSW5zZWN1cmVDb250ZW50CiBtYWluIGZy
YW1lIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKIG1haW4gZnJhbWUgLSBkaWRIYW5k
bGVPbmxvYWRFdmVudHNGb3JGcmFtZQogbWFpbiBmcmFtZSAtIGRpZEZpbmlzaExvYWRGb3JGcmFt
ZQorbWFpbiBmcmFtZSAtIHdpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50CiBUaGlzIHRl
c3Qgb3BlbnMgYSB3aW5kb3cgdGhhdCBsb2FkcyBhbiBpbnNlY3VyZSBzY3JpcHQuIFdlIHNob3Vs
ZCB0cmlnZ2VyIGEgbWl4ZWQgY29udGVudCBjYWxsYmFjayBldmVuIHRob3VnaCB3ZSd2ZSBzZXQg
dGhlIHByZWZlcmVuY2UgdG8gYmxvY2sgdGhpcywgYmVjYXVzZSB3ZSd2ZSBvdmVycmlkZW4gdGhl
IHByZWZlcmVuY2UgdmlhIGEgd2ViIHBlcm1pc3Npb24gY2xpZW50IGNhbGxiYWNrLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9zZWN1cml0eS9t
aXhlZENvbnRlbnQvaW5zZWN1cmUtc2NyaXB0LWluLW1haW4tZnJhbWUtYmxvY2tlZC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5
L21peGVkQ29udGVudC9pbnNlY3VyZS1zY3JpcHQtaW4tbWFpbi1mcmFtZS1ibG9ja2VkLWV4cGVj
dGVkLnR4dAppbmRleCBiMjM4OThmMmVmNmVjNWE5YTRlOTk1MzNmNDc4OTBmYmNmMGE5ZjUxLi40
YmQ4ZDVlZmNhNmQzMzdmOGQzMDJkN2I3ZWUyMTNmZTU5NDdhODljIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVu
dC9pbnNlY3VyZS1zY3JpcHQtaW4tbWFpbi1mcmFtZS1ibG9ja2VkLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVk
Q29udGVudC9pbnNlY3VyZS1zY3JpcHQtaW4tbWFpbi1mcmFtZS1ibG9ja2VkLWV4cGVjdGVkLnR4
dApAQCAtOCw0ICs4LDUgQEAgQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFtibG9ja2VkXSBUaGUg
cGFnZSBhdCBodHRwczovLzEyNy4wLjAuMTo4NDQzL3NlY3VyaXR5L20KIG1haW4gZnJhbWUgLSBk
aWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQogbWFpbiBmcmFtZSAtIGRpZEhhbmRsZU9ubG9h
ZEV2ZW50c0ZvckZyYW1lCiBtYWluIGZyYW1lIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCittYWlu
IGZyYW1lIC0gd2lsbENoZWNrQW5kRGlzcGF0Y2hNZXNzYWdlRXZlbnQKIFRoaXMgdGVzdCBvcGVu
cyBhIHdpbmRvdyB0aGF0IGxvYWRzIGFuIGluc2VjdXJlIHNjcmlwdC4gV2Ugc2hvdWxkIG5vdCB0
cmlnZ2VyIGEgbWl4ZWQgY29udGVudCBjYWxsYmFjayBldmVuIHRob3VnaCB0aGUgbWFpbiBmcmFt
ZSBpbiB0aGUgd2luZG93IGlzIEhUVFBTIGFuZCBpcyBydW5uaW5nIGluc2VjdXJlIHNjcmlwdHMs
IGJlY2F1c2Ugd2UndmUgc2V0IHRoZSBwcmVmZXJlbmNlIHRvIGJsb2NrIHRoaXMuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120411</attachid>
            <date>2011-12-22 16:53:34 -0800</date>
            <delta_ts>2011-12-22 17:32:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73883-20111222165332.patch</filename>
            <type>text/plain</type>
            <size>16488</size>
            <attacher name="Karl Koscher">supersat</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWExZTNkYTQ4NGZjMmI4
YTM0OTEzMDMyYzA2ZmQ5ZjQ0ZjQ0ZjUyOS4uYmI3ZTdhM2JlZDJlNzZkOWRkOGM1Yzc3ZDJjNjU0
MGY5MzE1MzMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDExLTEyLTIyICBLYXJs
IEtvc2NoZXIgIDxzdXBlcnNhdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgR2l2ZSBlbWJlZGRl
cnMgYSBjaGFuY2UgdG8gaGFuZGxlIHBvc3RNZXNzYWdlIGNhbGxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzg4MworCisgICAgICAgIFRvIHN1cHBv
cnQgY3Jvc3MtcHJvY2VzcyBwb3N0TWVzc2FnZSBjYWxscyBpbiBDaHJvbWl1bSAoYnVnIDczMzM3
KSwgd2UgbmVlZCB0byBpbnRlcmNlcHQgCisgICAgICAgIHBvc3RNZXNzYWdlIGNhbGxzIHRvIHBy
b3h5IHdpbmRvd3MuIE9yaWdpbmFsbHkgd2Ugd2VyZSBqdXN0IGdvaW5nIHRvIGFkZCBhIG5hdGl2
ZSBldmVudAorICAgICAgICBsaXN0ZW5lciBvbiB0aGUgQ2hyb21pdW0gc2lkZSwgYnV0IHRoYXQg
cmVxdWlyZWQgbW9yZSBjaGFuZ2VzIHRvIFdlYktpdCBhbmQgd2FzIGEgYml0IG9mCisgICAgICAg
IGEgaGFjay4gU2VlIGJ1ZyA3MzM1OSBmb3IgYSBkaXNjdXNzIGFib3V0IG1vdmluZyB0byB0aGlz
IGFwcHJvYWNoLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3Q6IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL2ludGVyY2VwdC1wb3N0bWVz
c2FnZS5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50Ojp3aWxsQ2hlY2tBbmREaXNwYXRjaFBvc3RN
ZXNzYWdlKTogbmV3IG1ldGhvZCB0byBhbGxvdyB0aGUKKyAgICAgICAgICAgIGVtYmVkZGVyIHRv
IGludGVyY2VwdCBwb3N0TWVzc2FnZSBjYWxscworICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1lc3NhZ2VUaW1lckZpcmVkKTog
YWRkIGEgY2FsbCB0bworICAgICAgICAgICAgRnJhbWVMb2FkZXJDbGllbnQ6OndpbGxDaGVja0Fu
ZERpc3BhdGNoUG9zdE1lc3NhZ2UKKwogMjAxMS0xMi0yMSAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCBSZW5kZXJMYXllciBjb2RlIHRo
YXQgYXBwbGllcyBmaWx0ZXJzIGFuZCB0cmFuc2Zvcm1zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDdhOTcyYjhmM2RmMDFiZjRkNjhiMTQyY2RiNDBkNzA3YjFmY2NjM2EuLjM4Y2I0ZmZh
ZTRiNjI2NThkOWI1YzdiZjRhZjg0OTA3NGM1Yzc0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTItMjIgIEthcmwgS29zY2hlciAgPHN1cGVyc2F0
QGNocm9taXVtLm9yZz4KKworICAgICAgICBHaXZlIGVtYmVkZGVycyBhIGNoYW5jZSB0byBoYW5k
bGUgcG9zdE1lc3NhZ2UgY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTczODgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVDbGllbnQ6OndpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KTogCisgICAg
ICAgICAgICBpbnRlcmZhY2UgdG8gZ2l2ZSB0aGUgZW1iZWRkZXIgYSBjaGFuY2UgdG8gaGFuZGxl
IHRoaXMgcG9zdE1lc3NhZ2UgY2FsbAorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OndpbGxDaGVj
a0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KTogQ2FsbCAKKyAgICAgICAgICAgIHdpbGxDaGVja0Fu
ZERpc3BhdGNoTWVzc2FnZUV2ZW50IG9uIFdlYkZyYW1lQ2xpZW50CisgICAgICAgICogc3JjL0Zy
YW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorCiAyMDExLTEyLTIwICBBbmRyZXkgS29zeWFrb3YgIDxj
YXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW0V4dGVuc2lvbiBB
UEldIHJlZmFjdG9yIGV4dGVuc2lvbiBBUEkgYnVpbGQgY29kZSwgZXhwb3NlIGV4cGVyaW1lbnRh
bCBBUElzIGNvbmRpdGlvbmFsbHkgaW4gY2hyb21pdW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNDUxN2IzNjQ4ZTIyMzhmNDEzZmVkY2QwMmExMmY3N2M1
NDUwMmQ5Ny4uMjhhYTZkNjVlMzMxYWU5MDA1Zjk3NGNhYzQyNzJiOGUwZDZiMzM5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTc5LDYgKzc5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEhUTUxQbHVnSW5FbGVtZW50OwogICAgIGNs
YXNzIEludFNpemU7CiAgICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBNZXNzYWdlRXZlbnQ7CiAg
ICAgY2xhc3MgTmF2aWdhdGlvbkFjdGlvbjsKICAgICBjbGFzcyBQYWdlOwogICAgIGNsYXNzIFBy
b3RlY3Rpb25TcGFjZTsKQEAgLTMxOSw2ICszMjAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGVO
ZXR3b3JraW5nQ29udGV4dCgpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFp
bnRCcm9rZW5JbWFnZShjb25zdCBLVVJMJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAg
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZW1iZWRkZXIgaW50ZXJjZXB0ZWQgdGhlIHBvc3RN
ZXNzYWdlIGNhbGwKKyAgICAgICAgdmlydHVhbCBib29sIHdpbGxDaGVja0FuZERpc3BhdGNoTWVz
c2FnZUV2ZW50KFNlY3VyaXR5T3JpZ2luKiAvKnRhcmdldCovLCBNZXNzYWdlRXZlbnQqKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBhM2UwNTkxY2ZiNmMxZGNkODI0MTc1NGYwNGFj
NDA0ZjI0ZGNkMzVmLi4zOWIzNzM4MDNhNGMwNTczOTgwMjc4YWEwMmZhM2RiMDhjNTJiM2EwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXIuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1l
VHJlZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVy
RWxlbWVudC5oIgpAQCAtOTEwLDggKzkxMSwxNiBAQCB2b2lkIERPTVdpbmRvdzo6cG9zdE1lc3Nh
Z2VUaW1lckZpcmVkKFBhc3NPd25QdHI8UG9zdE1lc3NhZ2VUaW1lcj4gdCkKICAgICBpZiAoIWRv
Y3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIFJlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2
ZW50ID0gdGltZXItPmV2ZW50KGRvY3VtZW50KCkpOworCisgICAgLy8gR2l2ZSB0aGUgZW1iZWRk
ZXIgYSBjaGFuY2UgdG8gaW50ZXJjZXB0IHRoaXMgcG9zdE1lc3NhZ2UgYmVjYXVzZSB0aGlzCisg
ICAgLy8gRE9NV2luZG93IG1pZ2h0IGJlIGEgcHJveHkgZm9yIGFub3RoZXIgaW4gYnJvd3NlcnMg
dGhhdCBzdXBwb3J0CisgICAgLy8gcG9zdE1lc3NhZ2UgY2FsbHMgYWNyb3NzIFdlYktpdCBpbnN0
YW5jZXMuCisgICAgaWYgKG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+d2lsbENoZWNrQW5k
RGlzcGF0Y2hNZXNzYWdlRXZlbnQodGltZXItPnRhcmdldE9yaWdpbigpLCBQYXNzUmVmUHRyPE1l
c3NhZ2VFdmVudD4oZXZlbnQpLmxlYWtSZWYoKSkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlm
ICh0aW1lci0+dGFyZ2V0T3JpZ2luKCkpIHsKLSAgICAgICAgLy8gQ2hlY2sgdGFyZ2V0IG9yaWdp
biBub3cgc2luY2UgdGhlIHRhcmdldCBkb2N1bWVudCBtYXkgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRo
ZSBzaW1lciB3YXMgc2NoZWR1bGVkLgorICAgICAgICAvLyBDaGVjayB0YXJnZXQgb3JpZ2luIG5v
dyBzaW5jZSB0aGUgdGFyZ2V0IGRvY3VtZW50IG1heSBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIHRp
bWVyIHdhcyBzY2hlZHVsZWQuCiAgICAgICAgIGlmICghdGltZXItPnRhcmdldE9yaWdpbigpLT5p
c1NhbWVTY2hlbWVIb3N0UG9ydChkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgewogICAg
ICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSAiVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byAiICsg
dGltZXItPnRhcmdldE9yaWdpbigpLT50b1N0cmluZygpICsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIi4gUmVjaXBpZW50IGhhcyBvcmlnaW4gIiArIGRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCktPnRvU3RyaW5nKCkgKyAiLlxuIjsKQEAgLTkyMCw3ICs5MjksNyBAQCB2b2lkIERP
TVdpbmRvdzo6cG9zdE1lc3NhZ2VUaW1lckZpcmVkKFBhc3NPd25QdHI8UG9zdE1lc3NhZ2VUaW1l
cj4gdCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGRpc3BhdGNoRXZlbnQodGltZXItPmV2ZW50
KGRvY3VtZW50KCkpKTsKKyAgICBkaXNwYXRjaEV2ZW50KGV2ZW50KTsKIH0KIAogRE9NU2VsZWN0
aW9uKiBET01XaW5kb3c6OmdldFNlbGVjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJET01NZXNzYWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkRPTU1lc3NhZ2VFdmVudC5oCmluZGV4IGZhN2ViNmRjYzk3OGQ2YjU5
YTNmYmZkZTE1MWY3ZWQwZTBiOGM0ZjUuLjM1NWI3MzcxNWE0ZjlkNmIwMzZkZmMwZTI4OTY4Yzlh
YjAyNDA2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRP
TU1lc3NhZ2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRP
TU1lc3NhZ2VFdmVudC5oCkBAIC0zNSw3ICszNSw4IEBACiAjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLW5h
bWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgRXZlbnQ7IH0KKyNpbmNsdWRlICJFdmVudC5oIgorI2lu
Y2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NDksNiArNTAsMTAgQEAgcHVibGljOgogCiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTZXJpYWxpemVk
U2NyaXB0VmFsdWUgZGF0YSgpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIG9y
aWdpbigpIGNvbnN0OworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgZXhwbGljaXQg
V2ViRE9NTWVzc2FnZUV2ZW50KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpNZXNzYWdl
RXZlbnQ+JiBlKSA6IFdlYkRPTUV2ZW50KGUpIHsgfQorI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkZyYW1lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNs
aWVudC5oCmluZGV4IGIyMTMyMjk4ZTEyZTNiNmYyMTRlZTMwNGMzNTNjYmYxZTViMjY3NWQuLmNh
ZTZhZmE4YTRlMGQzYmIzODZiYWZkOTIxMzIzY2Y2Y2JjMWZhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaApAQCAtMzEsOSArMzEsMTEgQEAK
ICNpZm5kZWYgV2ViRnJhbWVDbGllbnRfaAogI2RlZmluZSBXZWJGcmFtZUNsaWVudF9oCiAKKyNp
bmNsdWRlICJXZWJET01NZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJXZWJJY29uVVJMLmgiCiAj
aW5jbHVkZSAiV2ViTmF2aWdhdGlvblBvbGljeS5oIgogI2luY2x1ZGUgIldlYk5hdmlnYXRpb25U
eXBlLmgiCisjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXZWJTdG9y
YWdlUXVvdGFUeXBlLmgiCiAjaW5jbHVkZSAiV2ViVGV4dERpcmVjdGlvbi5oIgogI2luY2x1ZGUg
InBsYXRmb3JtL1dlYkNvbW1vbi5oIgpAQCAtNTAsNiArNTIsNyBAQCBjbGFzcyBXZWJBcHBsaWNh
dGlvbkNhY2hlSG9zdDsKIGNsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50OwogY2xh
c3MgV2ViQ29va2llSmFyOwogY2xhc3MgV2ViRGF0YVNvdXJjZTsKK2NsYXNzIFdlYkRPTUV2ZW50
OwogY2xhc3MgV2ViRm9ybUVsZW1lbnQ7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYkludGVu
dFNlcnZpY2VJbmZvOwpAQCAtNTgsNyArNjEsNiBAQCBjbGFzcyBXZWJNZWRpYVBsYXllcjsKIGNs
YXNzIFdlYk1lZGlhUGxheWVyQ2xpZW50OwogY2xhc3MgV2ViTm9kZTsKIGNsYXNzIFdlYlBsdWdp
bjsKLWNsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOwogY2xhc3MgV2ViU2hhcmVkV29ya2VyOwogY2xh
c3MgV2ViU3RvcmFnZVF1b3RhQ2FsbGJhY2tzOwogY2xhc3MgV2ViU3RyaW5nOwpAQCAtMzg1LDYg
KzM4NywxNiBAQCBwdWJsaWM6CiAgICAgLy8gdGhlIFdlYkZyYW1lIHN0YXJ0aW5nIHRoZSBhY3Rp
dml0eS4KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnRlbnQoV2ViRnJhbWUqLCBjb25zdCBX
ZWJJbnRlbnQmKSB7IH0KIAorICAgIC8vIE1lc3NhZ2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gTm90aWZpZXMgdGhlIGVt
YmVkZGVyIHRoYXQgYSBwb3N0TWVzc2FnZSB3YXMgaXNzdWVkIG9uIHRoaXMgZnJhbWUsIGFuZAor
ICAgIC8vIGdpdmVzIHRoZSBlbWJlZGRlciBhIGNoYW5jZSB0byBoYW5kbGUgaXQgaW5zdGVhZCBv
ZiBXZWJLaXQuIFJldHVybnMgdHJ1ZQorICAgIC8vIGlmIHRoZSBlbWJlZGRlciBoYW5kbGVkIGl0
LgorICAgIHZpcnR1YWwgYm9vbCB3aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVudCgKKyAg
ICAgICAgV2ViRnJhbWUqIHNvdXJjZSwKKyAgICAgICAgV2ViU2VjdXJpdHlPcmlnaW4gdGFyZ2V0
LAorICAgICAgICBXZWJET01NZXNzYWdlRXZlbnQpIHsgcmV0dXJuIGZhbHNlOyB9CisKIHByb3Rl
Y3RlZDoKICAgICB+V2ViRnJhbWVDbGllbnQoKSB7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAppbmRleCA5MDVhMzc3
NzIyNTlhYmUzMGI3MWFhNGMxN2Q0ZTU2ZWViZjE0ZjY5Li40NjdlZTI2YzUyOTk4NDIzNWZlZjg1
MzRhYWYwNDQ5NzJhZjVkMjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRl
ICJIVE1MQXBwbGV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIiAgLy8g
bmVlZGVkIGJ5IEZvcm1TdGF0ZS5oCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAi
TWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUg
Ik1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC01OCw2ICs1OSw3IEBACiAjaW5j
bHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUg
IlN0cmluZ0V4dHJhcy5oIgorI2luY2x1ZGUgIldlYkRPTUV2ZW50LmgiCiAjaW5jbHVkZSAiV2Vi
RGF0YVNvdXJjZUltcGwuaCIKICNpbmNsdWRlICJXZWJEZXZUb29sc0FnZW50UHJpdmF0ZS5oIgog
I2luY2x1ZGUgIldlYkRvY3VtZW50LmgiCkBAIC0xNjE3LDQgKzE2MTksMTEgQEAgUGFzc1JlZlB0
cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBGcmFtZUxvYWRlckNsaWVudEltcGw6OmNyZWF0ZU5l
dHdvcmtpbmdDb250ZXgKICAgICByZXR1cm4gRnJhbWVOZXR3b3JraW5nQ29udGV4dEltcGw6OmNy
ZWF0ZShtX3dlYkZyYW1lLT5mcmFtZSgpKTsKIH0KIAorYm9vbCBGcmFtZUxvYWRlckNsaWVudElt
cGw6OndpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KAorICAgIFNlY3VyaXR5T3JpZ2lu
KiB0YXJnZXQsIE1lc3NhZ2VFdmVudCogZXZlbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2Vi
RnJhbWUtPmNsaWVudCgpLT53aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVudCgKKyAgICAg
ICAgbV93ZWJGcmFtZSwgV2ViU2VjdXJpdHlPcmlnaW4odGFyZ2V0KSwgV2ViRE9NTWVzc2FnZUV2
ZW50KGV2ZW50KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAppbmRleCA1OTZiNWY0
YTA3OWIwMzBjYTM4MTFjZmYzNzAzMTc0OTQyMDVmYWIzLi5iMWI4NWJhMzU4N2IyNjFhNWI4OTli
YmNmODY2NmFkYTFiZjNjNzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuaApAQCAtMjA2LDYgKzIwNiw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkTm90QWxsb3dQbHVnaW5zKCk7CiAKICAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0Nv
bnRleHQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgd2lsbENoZWNrQW5kRGlzcGF0Y2hNZXNzYWdlRXZl
bnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRhcmdldCwgV2ViQ29yZTo6TWVzc2FnZUV2ZW50
KikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBtYWtlRG9jdW1lbnRWaWV3KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJLaXQudmNwcm9qL1dlYktpdExpYkNvbW1vbi52
c3Byb3BzIGIvU291cmNlL1dlYktpdC93aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRMaWJDb21tb24u
dnNwcm9wcwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGY0YmFmODIxMmUxOWFiZGI0YmYyZWFhM2I1Y2FiNGU4
MDc5MWJmMzIuLjdmYzIxMzYyZjM0M2QzOWZhNTE0YmU1NDRjODYxMDNhY2UxYjgxMjkgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAKQEAgLTI1MCw2ICsyNTAsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0
VGVzdENvbnRyb2xsZXIoVGVzdFNoZWxsKiBzaGVsbCkKICAgICBiaW5kUHJvcGVydHkoIndlYkhp
c3RvcnlJdGVtQ291bnQiLCAmbV93ZWJIaXN0b3J5SXRlbUNvdW50KTsKICAgICBiaW5kUHJvcGVy
dHkoInRpdGxlVGV4dERpcmVjdGlvbiIsICZtX3RpdGxlVGV4dERpcmVjdGlvbik7CiAgICAgYmlu
ZFByb3BlcnR5KCJwbGF0Zm9ybU5hbWUiLCAmbV9wbGF0Zm9ybU5hbWUpOworICAgIGJpbmRQcm9w
ZXJ0eSgiaW50ZXJjZXB0UG9zdE1lc3NhZ2UiLCAmbV9pbnRlcmNlcHRQb3N0TWVzc2FnZSk7CiB9
CiAKIExheW91dFRlc3RDb250cm9sbGVyOjp+TGF5b3V0VGVzdENvbnRyb2xsZXIoKQpAQCAtNjM3
LDYgKzYzOCw3IEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnJlc2V0KCkKICAgICBtX3dl
Ykhpc3RvcnlJdGVtQ291bnQuc2V0KDApOwogICAgIG1fdGl0bGVUZXh0RGlyZWN0aW9uLnNldCgi
bHRyIik7CiAgICAgbV9wbGF0Zm9ybU5hbWUuc2V0KCJjaHJvbWl1bSIpOworICAgIG1faW50ZXJj
ZXB0UG9zdE1lc3NhZ2Uuc2V0KGZhbHNlKTsKICAgICBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb24g
PSBXZWJVUkwoKTsKICAgICBtX2lzUHJpbnRpbmcgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggNGQ2
Y2Q4NWE3YTIyYTkzZjZjNmI5OWUwOGRmYzE4YzgwY2E0MmNiOC4uNzFiMWI0MjI2OTQ3N2QzZGY1
OGNhYzI4ZGVmM2ZlNGZlNDI3ZmU0MyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCkBAIC00NjksNiArNDY5LDExIEBAIHB1
YmxpYzoKICAgICAgICAgbV90aXRsZVRleHREaXJlY3Rpb24uc2V0KGRpciA9PSBXZWJLaXQ6Oldl
YlRleHREaXJlY3Rpb25MZWZ0VG9SaWdodCA/ICJsdHIiIDogInJ0bCIpOwogICAgIH0KIAorICAg
IGJvb2wgc2hvdWxkSW50ZXJjZXB0UG9zdE1lc3NhZ2UoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1faW50ZXJjZXB0UG9zdE1lc3NhZ2UuaXNCb29sKCkgJiYgbV9pbnRlcmNlcHRQb3N0TWVzc2Fn
ZS50b0Jvb2xlYW4oKTsKKyAgICB9CisKICAgICB2b2lkIHNldElzUHJpbnRpbmcoYm9vbCB2YWx1
ZSkgeyBtX2lzUHJpbnRpbmcgPSB2YWx1ZTsgfQogICAgIGJvb2wgaXNQcmludGluZygpIHsgcmV0
dXJuIG1faXNQcmludGluZzsgfQogCkBAIC02ODAsNiArNjg1LDkgQEAgcHJpdmF0ZToKICAgICAv
LyBCb3VuZCB2YXJpYWJsZSB0byByZXR1cm4gdGhlIG5hbWUgb2YgdGhpcyBwbGF0Zm9ybSAoY2hy
b21pdW0pLgogICAgIENwcFZhcmlhbnQgbV9wbGF0Zm9ybU5hbWU7CiAKKyAgICAvLyBCb3VuZCB2
YXJpYWJsZSB0byBzZXQgd2hldGhlciBwb3N0TWVzc2FnZXMgc2hvdWxkIGJlIGludGVyY2VwdGVk
IG9yIG5vdAorICAgIENwcFZhcmlhbnQgbV9pbnRlcmNlcHRQb3N0TWVzc2FnZTsKKwogICAgIFdl
YktpdDo6V2ViVVJMIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbjsKIAogICAgIE93blB0cjxXZWJL
aXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2s+IG1fc3BlZWNoSW5wdXRDb250cm9sbGVy
TW9jazsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApp
bmRleCBmZmUzYjE2NDZmMWM0MDdlY2ZlMzBkNjIwNzI4NmRhNDIwYzlkYjQyLi5kZTY1ZTkwNTQ5
N2ZiODdkMmZhNThmNWUyNGVmM2QwMTBjNWNlOGEyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAi
cGxhdGZvcm0vV2ViQ1N0cmluZy5oIgogI2luY2x1ZGUgIldlYkNvbnNvbGVNZXNzYWdlLmgiCiAj
aW5jbHVkZSAiV2ViQ29udGV4dE1lbnVEYXRhLmgiCisjaW5jbHVkZSAiV2ViRE9NTWVzc2FnZUV2
ZW50LmgiCiAjaW5jbHVkZSAiV2ViRGF0YVNvdXJjZS5oIgogI2luY2x1ZGUgIldlYkRldmljZU9y
aWVudGF0aW9uQ2xpZW50TW9jay5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkRyYWdEYXRhLmgi
CkBAIC0xMjA0LDYgKzEyMDUsMTYgQEAgdm9pZCBXZWJWaWV3SG9zdDo6b3BlbkZpbGVTeXN0ZW0o
V2ViRnJhbWUqIGZyYW1lLCBXZWJGaWxlU3lzdGVtOjpUeXBlIHR5cGUsIGxvbmcKICAgICB3ZWJr
aXRfc3VwcG9ydDo6T3BlbkZpbGVTeXN0ZW0oZnJhbWUsIHR5cGUsIHNpemUsIGNyZWF0ZSwgY2Fs
bGJhY2tzKTsKIH0KIAorYm9vbCBXZWJWaWV3SG9zdDo6d2lsbENoZWNrQW5kRGlzcGF0Y2hNZXNz
YWdlRXZlbnQoV2ViRnJhbWUqIHNvdXJjZSwgV2ViU2VjdXJpdHlPcmlnaW4gdGFyZ2V0LCBXZWJE
T01NZXNzYWdlRXZlbnQgZXZlbnQpCit7CisgICAgaWYgKG1fc2hlbGwtPmxheW91dFRlc3RDb250
cm9sbGVyKCktPnNob3VsZEludGVyY2VwdFBvc3RNZXNzYWdlKCkpIHsKKyAgICAgICAgZnB1dHMo
ImludGVyY2VwdGVkIHBvc3RNZXNzYWdlXG4iLCBzdGRvdXQpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIC8vIFB1YmxpYyBmdW5jdGlvbnMg
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAogV2ViVmlld0hvc3Q6OldlYlZpZXdIb3N0KFRlc3RTaGVsbCogc2hlbGwpCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAppbmRleCA5MjIxNjNhYjlhZTU4
ZmRkNDQ2YmI0OTBlYjUyZTc0MzI0YTcwYjJlLi4zMWVjZDc5NmFkYzc5NzlkZDM5MDJiZGJiNjQx
ZWMxOTA4NjA0MjQyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJWaWV3SG9zdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0LmgKQEAgLTIxMyw2ICsyMTMsNyBAQCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJL
aXQ6OldlYlNwZWxsQ2hlY2tDbGllbnQsIHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbAogICAgIHZp
cnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0
IFdlYktpdDo6V2ViU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBXZWJLaXQ6OldlYlVSTCYpOwogICAg
IHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktp
dDo6V2ViVVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpOwogICAgIHZpcnR1YWwgdm9pZCBv
cGVuRmlsZVN5c3RlbShXZWJLaXQ6OldlYkZyYW1lKiwgV2ViS2l0OjpXZWJGaWxlU3lzdGVtOjpU
eXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdlYktpdDo6V2ViRmlsZVN5c3RlbUNh
bGxiYWNrcyopOworICAgIHZpcnR1YWwgYm9vbCB3aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VF
dmVudChXZWJLaXQ6OldlYkZyYW1lKiBzb3VyY2UsIFdlYktpdDo6V2ViU2VjdXJpdHlPcmlnaW4g
dGFyZ2V0LCBXZWJLaXQ6OldlYkRPTU1lc3NhZ2VFdmVudCk7CiAKICAgICBXZWJLaXQ6OldlYkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50TW9jayogZGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCk7
CiAgICAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2
ZW50cy9pbnRlcmNlcHQtcG9zdG1lc3NhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvaW50ZXJjZXB0LXBvc3RtZXNzYWdlLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hMTIwNzhkMWNlZGEwZTAxOTNkM2Q1NzJkMGM2OGQyY2JkMjEwODI5
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9l
dmVudHMvaW50ZXJjZXB0LXBvc3RtZXNzYWdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAK
K21haW4gZnJhbWUgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAt
IGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkRmluaXNoTG9h
ZEZvckZyYW1lCitpbnRlcmNlcHRlZCBwb3N0TWVzc2FnZQoraW50ZXJjZXB0ZWQgcG9zdE1lc3Nh
Z2UKK1JFQ1YxCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zh
c3QvZXZlbnRzL2ludGVyY2VwdC1wb3N0bWVzc2FnZS5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZmFzdC9ldmVudHMvaW50ZXJjZXB0LXBvc3RtZXNzYWdlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNGRiMGFiNmY3YzRmOTE5NGRjMmI5YzBmODczNjY2YzFkZDk3YjQ2OQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL2ludGVy
Y2VwdC1wb3N0bWVzc2FnZS5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzxodG1sPgorICA8aGVhZD4K
KyAgICA8c2NyaXB0PgorICAgICAgZnVuY3Rpb24gd3JpdGUoc3RyKSB7CisgICAgICAgIHByZSA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJyk7CisgICAgICAgIHRleHQgPSBkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIgKyAnXG4nKTsKKyAgICAgICAgcHJlLmFwcGVuZENoaWxk
KHRleHQpOworICAgICAgfQorCisgICAgICBmdW5jdGlvbiByZWN2TXNnMShlKSB7CisgICAgICAg
IHdyaXRlKCJSRUNWMSIpOworICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVz
c2FnZSIsIHJlY3ZNc2cxLCBmYWxzZSk7CisKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5pbnRlcmNlcHRQb3N0
TWVzc2FnZSA9IHRydWU7CisKKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3Nh
Z2UiLCByZWN2TXNnMiwgZmFsc2UpOworICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2UoIk1lc3Nh
Z2UgMiIsICIqIik7CisgICAgICAKKyAgICAgICAgLy8gRW5zdXJlIHRoYXQgd2UncmUgaW50ZXJj
ZXB0aW5nIHBvc3RNZXNzYWdlcyBiZWZvcmUgdGhlIG9yaWdpbiBjaGVjaworICAgICAgICB3aW5k
b3cucG9zdE1lc3NhZ2UoIk1lc3NhZ2UgMyIsICJodHRwOi8vZXhhbXBsZS5vcmciKTsgCisKKyAg
ICAgICAgLy8gV2UgbmVlZCB0byBjYWxsIHNldFRpbWVvdXQgaGVyZSBiZWNhdXNlIHdlIGludGVy
Y2VwdCB0aGUgbmV4dCBldmVudC4KKyAgICAgICAgLy8gSWYgdGhpcyB0ZXN0IGJlY29tZXMgZmxh
a3ksIHlvdSBtYXkgbmVlZCB0byBpbmNyZWFzZSB0aGlzIHRpbWVvdXQuCisgICAgICAgIHdpbmRv
dy5zZXRUaW1lb3V0KCJkb25lKCkiLCA1MCk7CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIHJl
Y3ZNc2cyKGUpIHsKKyAgICAgICAgd3JpdGUoIlJFQ1YyIik7CisgICAgICB9CisKKyAgICAgIGZ1
bmN0aW9uIGRvbmUoKSB7CisgICAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAg
ICAgIH0KKworICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2TXNn
MSwgZmFsc2UpOworCisgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tz
KCk7CisgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAg
ICB9CisKKyAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZSgiTWVzc2FnZSAxIiwgIioiKTsKKyAgICA8
L3NjcmlwdD4KKyAgPC9oZWFkPgorICA8Ym9keT48cHJlIGlkPSJjb25zb2xlIj48L3ByZT48L2Jv
ZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120418</attachid>
            <date>2011-12-22 17:32:15 -0800</date>
            <delta_ts>2012-01-03 17:12:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73883-20111222173214.patch</filename>
            <type>text/plain</type>
            <size>16521</size>
            <attacher name="Karl Koscher">supersat</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWExZTNkYTQ4NGZjMmI4
YTM0OTEzMDMyYzA2ZmQ5ZjQ0ZjQ0ZjUyOS4uYmI3ZTdhM2JlZDJlNzZkOWRkOGM1Yzc3ZDJjNjU0
MGY5MzE1MzMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDExLTEyLTIyICBLYXJs
IEtvc2NoZXIgIDxzdXBlcnNhdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgR2l2ZSBlbWJlZGRl
cnMgYSBjaGFuY2UgdG8gaGFuZGxlIHBvc3RNZXNzYWdlIGNhbGxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzg4MworCisgICAgICAgIFRvIHN1cHBv
cnQgY3Jvc3MtcHJvY2VzcyBwb3N0TWVzc2FnZSBjYWxscyBpbiBDaHJvbWl1bSAoYnVnIDczMzM3
KSwgd2UgbmVlZCB0byBpbnRlcmNlcHQgCisgICAgICAgIHBvc3RNZXNzYWdlIGNhbGxzIHRvIHBy
b3h5IHdpbmRvd3MuIE9yaWdpbmFsbHkgd2Ugd2VyZSBqdXN0IGdvaW5nIHRvIGFkZCBhIG5hdGl2
ZSBldmVudAorICAgICAgICBsaXN0ZW5lciBvbiB0aGUgQ2hyb21pdW0gc2lkZSwgYnV0IHRoYXQg
cmVxdWlyZWQgbW9yZSBjaGFuZ2VzIHRvIFdlYktpdCBhbmQgd2FzIGEgYml0IG9mCisgICAgICAg
IGEgaGFjay4gU2VlIGJ1ZyA3MzM1OSBmb3IgYSBkaXNjdXNzIGFib3V0IG1vdmluZyB0byB0aGlz
IGFwcHJvYWNoLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3Q6IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL2ludGVyY2VwdC1wb3N0bWVz
c2FnZS5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50Ojp3aWxsQ2hlY2tBbmREaXNwYXRjaFBvc3RN
ZXNzYWdlKTogbmV3IG1ldGhvZCB0byBhbGxvdyB0aGUKKyAgICAgICAgICAgIGVtYmVkZGVyIHRv
IGludGVyY2VwdCBwb3N0TWVzc2FnZSBjYWxscworICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1lc3NhZ2VUaW1lckZpcmVkKTog
YWRkIGEgY2FsbCB0bworICAgICAgICAgICAgRnJhbWVMb2FkZXJDbGllbnQ6OndpbGxDaGVja0Fu
ZERpc3BhdGNoUG9zdE1lc3NhZ2UKKwogMjAxMS0xMi0yMSAgU2ltb24gRnJhc2VyICA8c2ltb24u
ZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhbiB1cCBSZW5kZXJMYXllciBjb2RlIHRo
YXQgYXBwbGllcyBmaWx0ZXJzIGFuZCB0cmFuc2Zvcm1zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDdhOTcyYjhmM2RmMDFiZjRkNjhiMTQyY2RiNDBkNzA3YjFmY2NjM2EuLjM4Y2I0ZmZh
ZTRiNjI2NThkOWI1YzdiZjRhZjg0OTA3NGM1Yzc0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTItMjIgIEthcmwgS29zY2hlciAgPHN1cGVyc2F0
QGNocm9taXVtLm9yZz4KKworICAgICAgICBHaXZlIGVtYmVkZGVycyBhIGNoYW5jZSB0byBoYW5k
bGUgcG9zdE1lc3NhZ2UgY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTczODgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVDbGllbnQ6OndpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KTogCisgICAg
ICAgICAgICBpbnRlcmZhY2UgdG8gZ2l2ZSB0aGUgZW1iZWRkZXIgYSBjaGFuY2UgdG8gaGFuZGxl
IHRoaXMgcG9zdE1lc3NhZ2UgY2FsbAorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OndpbGxDaGVj
a0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KTogQ2FsbCAKKyAgICAgICAgICAgIHdpbGxDaGVja0Fu
ZERpc3BhdGNoTWVzc2FnZUV2ZW50IG9uIFdlYkZyYW1lQ2xpZW50CisgICAgICAgICogc3JjL0Zy
YW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorCiAyMDExLTEyLTIwICBBbmRyZXkgS29zeWFrb3YgIDxj
YXNlcUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW0V4dGVuc2lvbiBB
UEldIHJlZmFjdG9yIGV4dGVuc2lvbiBBUEkgYnVpbGQgY29kZSwgZXhwb3NlIGV4cGVyaW1lbnRh
bCBBUElzIGNvbmRpdGlvbmFsbHkgaW4gY2hyb21pdW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggNDUxN2IzNjQ4ZTIyMzhmNDEzZmVkY2QwMmExMmY3N2M1
NDUwMmQ5Ny4uMjhhYTZkNjVlMzMxYWU5MDA1Zjk3NGNhYzQyNzJiOGUwZDZiMzM5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKQEAgLTc5LDYgKzc5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEhUTUxQbHVnSW5FbGVtZW50OwogICAgIGNs
YXNzIEludFNpemU7CiAgICAgY2xhc3MgS1VSTDsKKyAgICBjbGFzcyBNZXNzYWdlRXZlbnQ7CiAg
ICAgY2xhc3MgTmF2aWdhdGlvbkFjdGlvbjsKICAgICBjbGFzcyBQYWdlOwogICAgIGNsYXNzIFBy
b3RlY3Rpb25TcGFjZTsKQEAgLTMxOSw2ICszMjAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGVO
ZXR3b3JraW5nQ29udGV4dCgpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFp
bnRCcm9rZW5JbWFnZShjb25zdCBLVVJMJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAg
ICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZW1iZWRkZXIgaW50ZXJjZXB0ZWQgdGhlIHBvc3RN
ZXNzYWdlIGNhbGwKKyAgICAgICAgdmlydHVhbCBib29sIHdpbGxDaGVja0FuZERpc3BhdGNoTWVz
c2FnZUV2ZW50KFNlY3VyaXR5T3JpZ2luKiAvKnRhcmdldCovLCBNZXNzYWdlRXZlbnQqKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCBhM2UwNTkxY2ZiNmMxZGNkODI0MTc1NGYwNGFj
NDA0ZjI0ZGNkMzVmLi4zNDZlYjk2Yzc3MmVjNzM4MDkxYTJmZWY3MWVkMjJiYTk4NGNlMzcwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXIuaCIKKyNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1l
VHJlZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVy
RWxlbWVudC5oIgpAQCAtOTEwLDggKzkxMSwxNiBAQCB2b2lkIERPTVdpbmRvdzo6cG9zdE1lc3Nh
Z2VUaW1lckZpcmVkKFBhc3NPd25QdHI8UG9zdE1lc3NhZ2VUaW1lcj4gdCkKICAgICBpZiAoIWRv
Y3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIFJlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2
ZW50ID0gdGltZXItPmV2ZW50KGRvY3VtZW50KCkpOworCisgICAgLy8gR2l2ZSB0aGUgZW1iZWRk
ZXIgYSBjaGFuY2UgdG8gaW50ZXJjZXB0IHRoaXMgcG9zdE1lc3NhZ2UgYmVjYXVzZSB0aGlzCisg
ICAgLy8gRE9NV2luZG93IG1pZ2h0IGJlIGEgcHJveHkgZm9yIGFub3RoZXIgaW4gYnJvd3NlcnMg
dGhhdCBzdXBwb3J0CisgICAgLy8gcG9zdE1lc3NhZ2UgY2FsbHMgYWNyb3NzIFdlYktpdCBpbnN0
YW5jZXMuCisgICAgaWYgKGlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFtZSgpICYmIG1fZnJhbWUt
PmxvYWRlcigpLT5jbGllbnQoKS0+d2lsbENoZWNrQW5kRGlzcGF0Y2hNZXNzYWdlRXZlbnQodGlt
ZXItPnRhcmdldE9yaWdpbigpLCBQYXNzUmVmUHRyPE1lc3NhZ2VFdmVudD4oZXZlbnQpLmxlYWtS
ZWYoKSkpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmICh0aW1lci0+dGFyZ2V0T3JpZ2luKCkp
IHsKLSAgICAgICAgLy8gQ2hlY2sgdGFyZ2V0IG9yaWdpbiBub3cgc2luY2UgdGhlIHRhcmdldCBk
b2N1bWVudCBtYXkgaGF2ZSBjaGFuZ2VkIHNpbmNlIHRoZSBzaW1lciB3YXMgc2NoZWR1bGVkLgor
ICAgICAgICAvLyBDaGVjayB0YXJnZXQgb3JpZ2luIG5vdyBzaW5jZSB0aGUgdGFyZ2V0IGRvY3Vt
ZW50IG1heSBoYXZlIGNoYW5nZWQgc2luY2UgdGhlIHRpbWVyIHdhcyBzY2hlZHVsZWQuCiAgICAg
ICAgIGlmICghdGltZXItPnRhcmdldE9yaWdpbigpLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChkb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgewogICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2Ug
PSAiVW5hYmxlIHRvIHBvc3QgbWVzc2FnZSB0byAiICsgdGltZXItPnRhcmdldE9yaWdpbigpLT50
b1N0cmluZygpICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi4gUmVjaXBpZW50IGhh
cyBvcmlnaW4gIiArIGRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkgKyAi
LlxuIjsKQEAgLTkyMCw3ICs5MjksNyBAQCB2b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2VUaW1l
ckZpcmVkKFBhc3NPd25QdHI8UG9zdE1lc3NhZ2VUaW1lcj4gdCkKICAgICAgICAgfQogICAgIH0K
IAotICAgIGRpc3BhdGNoRXZlbnQodGltZXItPmV2ZW50KGRvY3VtZW50KCkpKTsKKyAgICBkaXNw
YXRjaEV2ZW50KGV2ZW50KTsKIH0KIAogRE9NU2VsZWN0aW9uKiBET01XaW5kb3c6OmdldFNlbGVj
dGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJET01N
ZXNzYWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRPTU1lc3Nh
Z2VFdmVudC5oCmluZGV4IGZhN2ViNmRjYzk3OGQ2YjU5YTNmYmZkZTE1MWY3ZWQwZTBiOGM0ZjUu
LjM1NWI3MzcxNWE0ZjlkNmIwMzZkZmMwZTI4OTY4YzlhYjAyNDA2MjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRPTU1lc3NhZ2VFdmVudC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRPTU1lc3NhZ2VFdmVudC5oCkBAIC0zNSw3
ICszNSw4IEBACiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgi
CiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KLW5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3Mg
RXZlbnQ7IH0KKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgog
I2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDksNiArNTAsMTAgQEAgcHVibGljOgog
CiAgICAgV0VCS0lUX0VYUE9SVCBXZWJTZXJpYWxpemVkU2NyaXB0VmFsdWUgZGF0YSgpIGNvbnN0
OwogICAgIFdFQktJVF9FWFBPUlQgV2ViU3RyaW5nIG9yaWdpbigpIGNvbnN0OworCisjaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCisgICAgZXhwbGljaXQgV2ViRE9NTWVzc2FnZUV2ZW50KGNvbnN0
IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpNZXNzYWdlRXZlbnQ+JiBlKSA6IFdlYkRPTUV2ZW50
KGUpIHsgfQorI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCmluZGV4IGIyMTMyMjk4ZTEy
ZTNiNmYyMTRlZTMwNGMzNTNjYmYxZTViMjY3NWQuLmNhZTZhZmE4YTRlMGQzYmIzODZiYWZkOTIx
MzIzY2Y2Y2JjMWZhMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkZyYW1lQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RnJhbWVDbGllbnQuaApAQCAtMzEsOSArMzEsMTEgQEAKICNpZm5kZWYgV2ViRnJhbWVDbGllbnRf
aAogI2RlZmluZSBXZWJGcmFtZUNsaWVudF9oCiAKKyNpbmNsdWRlICJXZWJET01NZXNzYWdlRXZl
bnQuaCIKICNpbmNsdWRlICJXZWJJY29uVVJMLmgiCiAjaW5jbHVkZSAiV2ViTmF2aWdhdGlvblBv
bGljeS5oIgogI2luY2x1ZGUgIldlYk5hdmlnYXRpb25UeXBlLmgiCisjaW5jbHVkZSAiV2ViU2Vj
dXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXZWJTdG9yYWdlUXVvdGFUeXBlLmgiCiAjaW5jbHVk
ZSAiV2ViVGV4dERpcmVjdGlvbi5oIgogI2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgpA
QCAtNTAsNiArNTIsNyBAQCBjbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdDsKIGNsYXNzIFdl
YkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50OwogY2xhc3MgV2ViQ29va2llSmFyOwogY2xhc3Mg
V2ViRGF0YVNvdXJjZTsKK2NsYXNzIFdlYkRPTUV2ZW50OwogY2xhc3MgV2ViRm9ybUVsZW1lbnQ7
CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNzIFdlYkludGVudFNlcnZpY2VJbmZvOwpAQCAtNTgsNyAr
NjEsNiBAQCBjbGFzcyBXZWJNZWRpYVBsYXllcjsKIGNsYXNzIFdlYk1lZGlhUGxheWVyQ2xpZW50
OwogY2xhc3MgV2ViTm9kZTsKIGNsYXNzIFdlYlBsdWdpbjsKLWNsYXNzIFdlYlNlY3VyaXR5T3Jp
Z2luOwogY2xhc3MgV2ViU2hhcmVkV29ya2VyOwogY2xhc3MgV2ViU3RvcmFnZVF1b3RhQ2FsbGJh
Y2tzOwogY2xhc3MgV2ViU3RyaW5nOwpAQCAtMzg1LDYgKzM4NywxNiBAQCBwdWJsaWM6CiAgICAg
Ly8gdGhlIFdlYkZyYW1lIHN0YXJ0aW5nIHRoZSBhY3Rpdml0eS4KICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hJbnRlbnQoV2ViRnJhbWUqLCBjb25zdCBXZWJJbnRlbnQmKSB7IH0KIAorICAgIC8v
IE1lc3NhZ2VzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorCisgICAgLy8gTm90aWZpZXMgdGhlIGVtYmVkZGVyIHRoYXQgYSBwb3N0TWVzc2Fn
ZSB3YXMgaXNzdWVkIG9uIHRoaXMgZnJhbWUsIGFuZAorICAgIC8vIGdpdmVzIHRoZSBlbWJlZGRl
ciBhIGNoYW5jZSB0byBoYW5kbGUgaXQgaW5zdGVhZCBvZiBXZWJLaXQuIFJldHVybnMgdHJ1ZQor
ICAgIC8vIGlmIHRoZSBlbWJlZGRlciBoYW5kbGVkIGl0LgorICAgIHZpcnR1YWwgYm9vbCB3aWxs
Q2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVudCgKKyAgICAgICAgV2ViRnJhbWUqIHNvdXJjZSwK
KyAgICAgICAgV2ViU2VjdXJpdHlPcmlnaW4gdGFyZ2V0LAorICAgICAgICBXZWJET01NZXNzYWdl
RXZlbnQpIHsgcmV0dXJuIGZhbHNlOyB9CisKIHByb3RlY3RlZDoKICAgICB+V2ViRnJhbWVDbGll
bnQoKSB7IH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFt
ZUxvYWRlckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmNwcAppbmRleCA5MDVhMzc3NzIyNTlhYmUzMGI3MWFhNGMxN2Q0ZTU2
ZWViZjE0ZjY5Li40NjdlZTI2YzUyOTk4NDIzNWZlZjg1MzRhYWYwNDQ5NzJhZjVkMjRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJIVE1MQXBwbGV0RWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIiAgLy8gbmVlZGVkIGJ5IEZvcm1TdGF0ZS5oCiAj
aW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVk
ZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRl
ICJQYWdlLmgiCkBAIC01OCw2ICs1OSw3IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN0cmluZ0V4dHJhcy5oIgorI2luY2x1
ZGUgIldlYkRPTUV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViRGF0YVNvdXJjZUltcGwuaCIKICNpbmNs
dWRlICJXZWJEZXZUb29sc0FnZW50UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYkRvY3VtZW50Lmgi
CkBAIC0xNjE3LDQgKzE2MTksMTEgQEAgUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0
PiBGcmFtZUxvYWRlckNsaWVudEltcGw6OmNyZWF0ZU5ldHdvcmtpbmdDb250ZXgKICAgICByZXR1
cm4gRnJhbWVOZXR3b3JraW5nQ29udGV4dEltcGw6OmNyZWF0ZShtX3dlYkZyYW1lLT5mcmFtZSgp
KTsKIH0KIAorYm9vbCBGcmFtZUxvYWRlckNsaWVudEltcGw6OndpbGxDaGVja0FuZERpc3BhdGNo
TWVzc2FnZUV2ZW50KAorICAgIFNlY3VyaXR5T3JpZ2luKiB0YXJnZXQsIE1lc3NhZ2VFdmVudCog
ZXZlbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViRnJhbWUtPmNsaWVudCgpLT53aWxsQ2hl
Y2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVudCgKKyAgICAgICAgbV93ZWJGcmFtZSwgV2ViU2VjdXJp
dHlPcmlnaW4odGFyZ2V0KSwgV2ViRE9NTWVzc2FnZUV2ZW50KGV2ZW50KSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFt
ZUxvYWRlckNsaWVudEltcGwuaAppbmRleCA1OTZiNWY0YTA3OWIwMzBjYTM4MTFjZmYzNzAzMTc0
OTQyMDVmYWIzLi5iMWI4NWJhMzU4N2IyNjFhNWI4OTliYmNmODY2NmFkYTFiZjNjNzAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
aApAQCAtMjA2LDYgKzIwNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkTm90QWxs
b3dQbHVnaW5zKCk7CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3
b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKKyAgICB2aXJ0dWFsIGJv
b2wgd2lsbENoZWNrQW5kRGlzcGF0Y2hNZXNzYWdlRXZlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4qIHRhcmdldCwgV2ViQ29yZTo6TWVzc2FnZUV2ZW50KikgY29uc3Q7CiAKIHByaXZhdGU6CiAg
ICAgdm9pZCBtYWtlRG9jdW1lbnRWaWV3KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJLaXQudmNwcm9qL1dlYktpdExpYkNvbW1vbi52c3Byb3BzIGIvU291cmNlL1dlYktpdC93
aW4vV2ViS2l0LnZjcHJvai9XZWJLaXRMaWJDb21tb24udnNwcm9wcwpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4
IGY0YmFmODIxMmUxOWFiZGI0YmYyZWFhM2I1Y2FiNGU4MDc5MWJmMzIuLjdmYzIxMzYyZjM0M2Qz
OWZhNTE0YmU1NDRjODYxMDNhY2UxYjgxMjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTI1MCw2ICsyNTAs
NyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIoVGVzdFNoZWxs
KiBzaGVsbCkKICAgICBiaW5kUHJvcGVydHkoIndlYkhpc3RvcnlJdGVtQ291bnQiLCAmbV93ZWJI
aXN0b3J5SXRlbUNvdW50KTsKICAgICBiaW5kUHJvcGVydHkoInRpdGxlVGV4dERpcmVjdGlvbiIs
ICZtX3RpdGxlVGV4dERpcmVjdGlvbik7CiAgICAgYmluZFByb3BlcnR5KCJwbGF0Zm9ybU5hbWUi
LCAmbV9wbGF0Zm9ybU5hbWUpOworICAgIGJpbmRQcm9wZXJ0eSgiaW50ZXJjZXB0UG9zdE1lc3Nh
Z2UiLCAmbV9pbnRlcmNlcHRQb3N0TWVzc2FnZSk7CiB9CiAKIExheW91dFRlc3RDb250cm9sbGVy
Ojp+TGF5b3V0VGVzdENvbnRyb2xsZXIoKQpAQCAtNjM3LDYgKzYzOCw3IEBAIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnJlc2V0KCkKICAgICBtX3dlYkhpc3RvcnlJdGVtQ291bnQuc2V0KDAp
OwogICAgIG1fdGl0bGVUZXh0RGlyZWN0aW9uLnNldCgibHRyIik7CiAgICAgbV9wbGF0Zm9ybU5h
bWUuc2V0KCJjaHJvbWl1bSIpOworICAgIG1faW50ZXJjZXB0UG9zdE1lc3NhZ2Uuc2V0KGZhbHNl
KTsKICAgICBtX3VzZXJTdHlsZVNoZWV0TG9jYXRpb24gPSBXZWJVUkwoKTsKICAgICBtX2lzUHJp
bnRpbmcgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggNGQ2Y2Q4NWE3YTIyYTkzZjZjNmI5OWUwOGRm
YzE4YzgwY2E0MmNiOC4uNzFiMWI0MjI2OTQ3N2QzZGY1OGNhYzI4ZGVmM2ZlNGZlNDI3ZmU0MyAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oCkBAIC00NjksNiArNDY5LDExIEBAIHB1YmxpYzoKICAgICAgICAgbV90aXRsZVRl
eHREaXJlY3Rpb24uc2V0KGRpciA9PSBXZWJLaXQ6OldlYlRleHREaXJlY3Rpb25MZWZ0VG9SaWdo
dCA/ICJsdHIiIDogInJ0bCIpOwogICAgIH0KIAorICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UG9z
dE1lc3NhZ2UoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faW50ZXJjZXB0UG9zdE1lc3NhZ2Uu
aXNCb29sKCkgJiYgbV9pbnRlcmNlcHRQb3N0TWVzc2FnZS50b0Jvb2xlYW4oKTsKKyAgICB9CisK
ICAgICB2b2lkIHNldElzUHJpbnRpbmcoYm9vbCB2YWx1ZSkgeyBtX2lzUHJpbnRpbmcgPSB2YWx1
ZTsgfQogICAgIGJvb2wgaXNQcmludGluZygpIHsgcmV0dXJuIG1faXNQcmludGluZzsgfQogCkBA
IC02ODAsNiArNjg1LDkgQEAgcHJpdmF0ZToKICAgICAvLyBCb3VuZCB2YXJpYWJsZSB0byByZXR1
cm4gdGhlIG5hbWUgb2YgdGhpcyBwbGF0Zm9ybSAoY2hyb21pdW0pLgogICAgIENwcFZhcmlhbnQg
bV9wbGF0Zm9ybU5hbWU7CiAKKyAgICAvLyBCb3VuZCB2YXJpYWJsZSB0byBzZXQgd2hldGhlciBw
b3N0TWVzc2FnZXMgc2hvdWxkIGJlIGludGVyY2VwdGVkIG9yIG5vdAorICAgIENwcFZhcmlhbnQg
bV9pbnRlcmNlcHRQb3N0TWVzc2FnZTsKKwogICAgIFdlYktpdDo6V2ViVVJMIG1fdXNlclN0eWxl
U2hlZXRMb2NhdGlvbjsKIAogICAgIE93blB0cjxXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2s+IG1fc3BlZWNoSW5wdXRDb250cm9sbGVyTW9jazsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCBmZmUzYjE2NDZmMWM0MDdlY2Zl
MzBkNjIwNzI4NmRhNDIwYzlkYjQyLi5kZTY1ZTkwNTQ5N2ZiODdkMmZhNThmNWUyNGVmM2QwMTBj
NWNlOGEyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3Qu
Y3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViQ1N0cmluZy5oIgog
I2luY2x1ZGUgIldlYkNvbnNvbGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVE
YXRhLmgiCisjaW5jbHVkZSAiV2ViRE9NTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViRGF0
YVNvdXJjZS5oIgogI2luY2x1ZGUgIldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIgog
I2luY2x1ZGUgInBsYXRmb3JtL1dlYkRyYWdEYXRhLmgiCkBAIC0xMjA0LDYgKzEyMDUsMTYgQEAg
dm9pZCBXZWJWaWV3SG9zdDo6b3BlbkZpbGVTeXN0ZW0oV2ViRnJhbWUqIGZyYW1lLCBXZWJGaWxl
U3lzdGVtOjpUeXBlIHR5cGUsIGxvbmcKICAgICB3ZWJraXRfc3VwcG9ydDo6T3BlbkZpbGVTeXN0
ZW0oZnJhbWUsIHR5cGUsIHNpemUsIGNyZWF0ZSwgY2FsbGJhY2tzKTsKIH0KIAorYm9vbCBXZWJW
aWV3SG9zdDo6d2lsbENoZWNrQW5kRGlzcGF0Y2hNZXNzYWdlRXZlbnQoV2ViRnJhbWUqIHNvdXJj
ZSwgV2ViU2VjdXJpdHlPcmlnaW4gdGFyZ2V0LCBXZWJET01NZXNzYWdlRXZlbnQgZXZlbnQpCit7
CisgICAgaWYgKG1fc2hlbGwtPmxheW91dFRlc3RDb250cm9sbGVyKCktPnNob3VsZEludGVyY2Vw
dFBvc3RNZXNzYWdlKCkpIHsKKyAgICAgICAgZnB1dHMoImludGVyY2VwdGVkIHBvc3RNZXNzYWdl
XG4iLCBzdGRvdXQpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIC8vIFB1YmxpYyBmdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogV2ViVmlld0hvc3Q6OldlYlZp
ZXdIb3N0KFRlc3RTaGVsbCogc2hlbGwpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuaAppbmRleCA5MjIxNjNhYjlhZTU4ZmRkNDQ2YmI0OTBlYjUyZTc0MzI0YTcw
YjJlLi4zMWVjZDc5NmFkYzc5NzlkZDM5MDJiZGJiNjQxZWMxOTA4NjA0MjQyIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKQEAgLTIxMyw2ICsyMTMsNyBA
QCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlNwZWxsQ2hlY2tDbGllbnQs
IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbAogICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3Vy
ZUNvbnRlbnQoV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViU2VjdXJpdHlPcmln
aW4mLCBjb25zdCBXZWJLaXQ6OldlYlVSTCYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RY
U1MoV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViVVJMJiwgYm9vbCBkaWRCbG9j
a0VudGlyZVBhZ2UpOwogICAgIHZpcnR1YWwgdm9pZCBvcGVuRmlsZVN5c3RlbShXZWJLaXQ6Oldl
YkZyYW1lKiwgV2ViS2l0OjpXZWJGaWxlU3lzdGVtOjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9v
bCBjcmVhdGUsIFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopOworICAgIHZpcnR1YWwg
Ym9vbCB3aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVudChXZWJLaXQ6OldlYkZyYW1lKiBz
b3VyY2UsIFdlYktpdDo6V2ViU2VjdXJpdHlPcmlnaW4gdGFyZ2V0LCBXZWJLaXQ6OldlYkRPTU1l
c3NhZ2VFdmVudCk7CiAKICAgICBXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9j
ayogZGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCk7CiAgICAgCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50cy9pbnRlcmNlcHQtcG9zdG1lc3Nh
Z2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVu
dHMvaW50ZXJjZXB0LXBvc3RtZXNzYWdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hMTIwNzhk
MWNlZGEwZTAxOTNkM2Q1NzJkMGM2OGQyY2JkMjEwODI5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvaW50ZXJjZXB0LXBvc3RtZXNz
YWdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDcgQEAKK21haW4gZnJhbWUgLSBkaWRGaW5pc2hE
b2N1bWVudExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0Zv
ckZyYW1lCittYWluIGZyYW1lIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCitpbnRlcmNlcHRlZCBw
b3N0TWVzc2FnZQoraW50ZXJjZXB0ZWQgcG9zdE1lc3NhZ2UKK1JFQ1YxCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL2ludGVyY2VwdC1wb3N0
bWVzc2FnZS5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMv
aW50ZXJjZXB0LXBvc3RtZXNzYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGRiMGFiNmY3YzRmOTE5NGRj
MmI5YzBmODczNjY2YzFkZDk3YjQ2OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL2ludGVyY2VwdC1wb3N0bWVzc2FnZS5odG1sCkBA
IC0wLDAgKzEsNTAgQEAKKzxodG1sPgorICA8aGVhZD4KKyAgICA8c2NyaXB0PgorICAgICAgZnVu
Y3Rpb24gd3JpdGUoc3RyKSB7CisgICAgICAgIHByZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdjb25zb2xlJyk7CisgICAgICAgIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIg
KyAnXG4nKTsKKyAgICAgICAgcHJlLmFwcGVuZENoaWxkKHRleHQpOworICAgICAgfQorCisgICAg
ICBmdW5jdGlvbiByZWN2TXNnMShlKSB7CisgICAgICAgIHdyaXRlKCJSRUNWMSIpOworICAgICAg
ICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3ZNc2cxLCBmYWxzZSk7
CisKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5pbnRlcmNlcHRQb3N0TWVzc2FnZSA9IHRydWU7CisKKyAgICAg
ICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2TXNnMiwgZmFsc2UpOwor
ICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2UoIk1lc3NhZ2UgMiIsICIqIik7CisgICAgICAKKyAg
ICAgICAgLy8gRW5zdXJlIHRoYXQgd2UncmUgaW50ZXJjZXB0aW5nIHBvc3RNZXNzYWdlcyBiZWZv
cmUgdGhlIG9yaWdpbiBjaGVjaworICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2UoIk1lc3NhZ2Ug
MyIsICJodHRwOi8vZXhhbXBsZS5vcmciKTsgCisKKyAgICAgICAgLy8gV2UgbmVlZCB0byBjYWxs
IHNldFRpbWVvdXQgaGVyZSBiZWNhdXNlIHdlIGludGVyY2VwdCB0aGUgbmV4dCBldmVudC4KKyAg
ICAgICAgLy8gSWYgdGhpcyB0ZXN0IGJlY29tZXMgZmxha3ksIHlvdSBtYXkgbmVlZCB0byBpbmNy
ZWFzZSB0aGlzIHRpbWVvdXQuCisgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCJkb25lKCkiLCA1
MCk7CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIHJlY3ZNc2cyKGUpIHsKKyAgICAgICAgd3Jp
dGUoIlJFQ1YyIik7CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIGRvbmUoKSB7CisgICAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgd2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgIH0KKworICAgICAgd2luZG93LmFk
ZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCByZWN2TXNnMSwgZmFsc2UpOworCisgICAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCk7CisgICAgICAgIHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgICB9CisKKyAgICAgIHdpbmRvdy5wb3N0
TWVzc2FnZSgiTWVzc2FnZSAxIiwgIioiKTsKKyAgICA8L3NjcmlwdD4KKyAgPC9oZWFkPgorICA8
Ym9keT48cHJlIGlkPSJjb25zb2xlIj48L3ByZT48L2JvZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121024</attachid>
            <date>2012-01-03 17:13:03 -0800</date>
            <delta_ts>2012-01-06 10:36:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73883-20120103171302.patch</filename>
            <type>text/plain</type>
            <size>16427</size>
            <attacher name="Charles Reis">creis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzOTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTg0MzIzMjVkZmRmZDc4
MTQyODNmNTg4YjYwMWIwYmJlNDA0MWMyZS4uYzY0MTI4MjQ4NDY2NGQ0NGE2ZjNhYTdiZGY0OTBj
NmJlZmMwNzYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTAxLTAzICBLYXJs
IEtvc2NoZXIgIDxzdXBlcnNhdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgR2l2ZSBlbWJlZGRl
cnMgYSBjaGFuY2UgdG8gaGFuZGxlIHBvc3RNZXNzYWdlIGNhbGxzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzg4MworCisgICAgICAgIFRvIHN1cHBv
cnQgY3Jvc3MtcHJvY2VzcyBwb3N0TWVzc2FnZSBjYWxscyBpbiBDaHJvbWl1bSAoYnVnIDczMzM3
KSwgd2UgbmVlZCB0byBpbnRlcmNlcHQgCisgICAgICAgIHBvc3RNZXNzYWdlIGNhbGxzIHRvIHBy
b3h5IHdpbmRvd3MuIE9yaWdpbmFsbHkgd2Ugd2VyZSBqdXN0IGdvaW5nIHRvIGFkZCBhIG5hdGl2
ZSBldmVudAorICAgICAgICBsaXN0ZW5lciBvbiB0aGUgQ2hyb21pdW0gc2lkZSwgYnV0IHRoYXQg
cmVxdWlyZWQgbW9yZSBjaGFuZ2VzIHRvIFdlYktpdCBhbmQgd2FzIGEgYml0IG9mCisgICAgICAg
IGEgaGFjay4gU2VlIGJ1ZyA3MzM1OSBmb3IgYSBkaXNjdXNzIGFib3V0IG1vdmluZyB0byB0aGlz
IGFwcHJvYWNoLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRlc3Q6IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRzL2ludGVyY2VwdC1wb3N0bWVz
c2FnZS5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50Ojp3aWxsQ2hlY2tBbmREaXNwYXRjaFBvc3RN
ZXNzYWdlKTogbmV3IG1ldGhvZCB0byBhbGxvdyB0aGUKKyAgICAgICAgICAgIGVtYmVkZGVyIHRv
IGludGVyY2VwdCBwb3N0TWVzc2FnZSBjYWxscworICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6cG9zdE1lc3NhZ2VUaW1lckZpcmVkKTog
YWRkIGEgY2FsbCB0bworICAgICAgICAgICAgRnJhbWVMb2FkZXJDbGllbnQ6OndpbGxDaGVja0Fu
ZERpc3BhdGNoUG9zdE1lc3NhZ2UKKwogMjAxMi0wMS0wMyAgU2hhd24gU2luZ2ggIDxzaGF3bnNp
bmdoQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFB1c2ggZHJhd3NDb250ZW50
IGFuZCBjb250ZW50c1Zpc2libGUgaW50byBhY2NlbGVyYXRlZCBjb21wb3NpdG9yCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCmluZGV4IDI1ZTY1MDI2ZTNiNGUzZTg2MWRhZjEwNmZlYjgwZDFiYTA2
MzUzOTUuLmY1NGNkZDFmNjUzNTZkZTYwMmM1NDhjZjFhMjVjNzlkYjY2MDFmNWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDEtMDMgIEthcmwgS29z
Y2hlciAgPHN1cGVyc2F0QGNocm9taXVtLm9yZz4KKworICAgICAgICBHaXZlIGVtYmVkZGVycyBh
IGNoYW5jZSB0byBoYW5kbGUgcG9zdE1lc3NhZ2UgY2FsbHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczODgzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6OndpbGxDaGVja0FuZERpc3BhdGNoTWVzc2Fn
ZUV2ZW50KTogCisgICAgICAgICAgICBpbnRlcmZhY2UgdG8gZ2l2ZSB0aGUgZW1iZWRkZXIgYSBj
aGFuY2UgdG8gaGFuZGxlIHRoaXMgcG9zdE1lc3NhZ2UgY2FsbAorICAgICAgICAqIHNyYy9GcmFt
ZUxvYWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVu
dEltcGw6OndpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KTogQ2FsbCAKKyAgICAgICAg
ICAgIHdpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50IG9uIFdlYkZyYW1lQ2xpZW50Cisg
ICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorCiAyMDEyLTAxLTAzICBTaGF3
biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
UHVzaCBkcmF3c0NvbnRlbnQgYW5kIGNvbnRlbnRzVmlzaWJsZSBpbnRvIGFjY2VsZXJhdGVkIGNv
bXBvc2l0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXgg
NDUxN2IzNjQ4ZTIyMzhmNDEzZmVkY2QwMmExMmY3N2M1NDUwMmQ5Ny4uMjhhYTZkNjVlMzMxYWU5
MDA1Zjk3NGNhYzQyNzJiOGUwZDZiMzM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyQ2xpZW50LmgKQEAgLTc5LDYgKzc5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IGNsYXNzIEhUTUxQbHVnSW5FbGVtZW50OwogICAgIGNsYXNzIEludFNpemU7CiAgICAgY2xhc3Mg
S1VSTDsKKyAgICBjbGFzcyBNZXNzYWdlRXZlbnQ7CiAgICAgY2xhc3MgTmF2aWdhdGlvbkFjdGlv
bjsKICAgICBjbGFzcyBQYWdlOwogICAgIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKQEAgLTMxOSw2
ICszMjAsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBjcmVhdGVOZXR3b3JraW5nQ29udGV4dCgpID0gMDsK
IAogICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkUGFpbnRCcm9rZW5JbWFnZShjb25zdCBLVVJM
JikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0
aGUgZW1iZWRkZXIgaW50ZXJjZXB0ZWQgdGhlIHBvc3RNZXNzYWdlIGNhbGwKKyAgICAgICAgdmly
dHVhbCBib29sIHdpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KFNlY3VyaXR5T3JpZ2lu
KiAvKnRhcmdldCovLCBNZXNzYWdlRXZlbnQqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApp
bmRleCBhM2UwNTkxY2ZiNmMxZGNkODI0MTc1NGYwNGFjNDA0ZjI0ZGNkMzVmLi4zNDZlYjk2Yzc3
MmVjNzM4MDkxYTJmZWY3MWVkMjJiYTk4NGNlMzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
Y3BwCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFt
ZUxvYWRSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJGcmFt
ZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIkZyYW1lVHJlZS5oIgogI2luY2x1ZGUgIkZyYW1l
Vmlldy5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgpAQCAtOTEwLDggKzkx
MSwxNiBAQCB2b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2VUaW1lckZpcmVkKFBhc3NPd25QdHI8
UG9zdE1lc3NhZ2VUaW1lcj4gdCkKICAgICBpZiAoIWRvY3VtZW50KCkpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIFJlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2ZW50ID0gdGltZXItPmV2ZW50KGRvY3Vt
ZW50KCkpOworCisgICAgLy8gR2l2ZSB0aGUgZW1iZWRkZXIgYSBjaGFuY2UgdG8gaW50ZXJjZXB0
IHRoaXMgcG9zdE1lc3NhZ2UgYmVjYXVzZSB0aGlzCisgICAgLy8gRE9NV2luZG93IG1pZ2h0IGJl
IGEgcHJveHkgZm9yIGFub3RoZXIgaW4gYnJvd3NlcnMgdGhhdCBzdXBwb3J0CisgICAgLy8gcG9z
dE1lc3NhZ2UgY2FsbHMgYWNyb3NzIFdlYktpdCBpbnN0YW5jZXMuCisgICAgaWYgKGlzQ3VycmVu
dGx5RGlzcGxheWVkSW5GcmFtZSgpICYmIG1fZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKS0+d2ls
bENoZWNrQW5kRGlzcGF0Y2hNZXNzYWdlRXZlbnQodGltZXItPnRhcmdldE9yaWdpbigpLCBQYXNz
UmVmUHRyPE1lc3NhZ2VFdmVudD4oZXZlbnQpLmxlYWtSZWYoKSkpCisgICAgICAgIHJldHVybjsK
KwogICAgIGlmICh0aW1lci0+dGFyZ2V0T3JpZ2luKCkpIHsKLSAgICAgICAgLy8gQ2hlY2sgdGFy
Z2V0IG9yaWdpbiBub3cgc2luY2UgdGhlIHRhcmdldCBkb2N1bWVudCBtYXkgaGF2ZSBjaGFuZ2Vk
IHNpbmNlIHRoZSBzaW1lciB3YXMgc2NoZWR1bGVkLgorICAgICAgICAvLyBDaGVjayB0YXJnZXQg
b3JpZ2luIG5vdyBzaW5jZSB0aGUgdGFyZ2V0IGRvY3VtZW50IG1heSBoYXZlIGNoYW5nZWQgc2lu
Y2UgdGhlIHRpbWVyIHdhcyBzY2hlZHVsZWQuCiAgICAgICAgIGlmICghdGltZXItPnRhcmdldE9y
aWdpbigpLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChkb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
KSkgewogICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSAiVW5hYmxlIHRvIHBvc3QgbWVzc2Fn
ZSB0byAiICsgdGltZXItPnRhcmdldE9yaWdpbigpLT50b1N0cmluZygpICsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIi4gUmVjaXBpZW50IGhhcyBvcmlnaW4gIiArIGRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkgKyAiLlxuIjsKQEAgLTkyMCw3ICs5MjksNyBA
QCB2b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2VUaW1lckZpcmVkKFBhc3NPd25QdHI8UG9zdE1l
c3NhZ2VUaW1lcj4gdCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGRpc3BhdGNoRXZlbnQodGlt
ZXItPmV2ZW50KGRvY3VtZW50KCkpKTsKKyAgICBkaXNwYXRjaEV2ZW50KGV2ZW50KTsKIH0KIAog
RE9NU2VsZWN0aW9uKiBET01XaW5kb3c6OmdldFNlbGVjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJET01NZXNzYWdlRXZlbnQuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkRPTU1lc3NhZ2VFdmVudC5oCmluZGV4IGZhN2ViNmRj
Yzk3OGQ2YjU5YTNmYmZkZTE1MWY3ZWQwZTBiOGM0ZjUuLjM1NWI3MzcxNWE0ZjlkNmIwMzZkZmMw
ZTI4OTY4YzlhYjAyNDA2MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkRPTU1lc3NhZ2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkRPTU1lc3NhZ2VFdmVudC5oCkBAIC0zNSw3ICszNSw4IEBACiAjaW5jbHVkZSAicGxh
dGZvcm0vV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAKICNpZiBXRUJLSVRfSU1QTEVNRU5U
QVRJT04KLW5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgRXZlbnQ7IH0KKyNpbmNsdWRlICJFdmVu
dC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJL
aXQgewpAQCAtNDksNiArNTAsMTAgQEAgcHVibGljOgogCiAgICAgV0VCS0lUX0VYUE9SVCBXZWJT
ZXJpYWxpemVkU2NyaXB0VmFsdWUgZGF0YSgpIGNvbnN0OwogICAgIFdFQktJVF9FWFBPUlQgV2Vi
U3RyaW5nIG9yaWdpbigpIGNvbnN0OworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAg
ZXhwbGljaXQgV2ViRE9NTWVzc2FnZUV2ZW50KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpNZXNzYWdlRXZlbnQ+JiBlKSA6IFdlYkRPTUV2ZW50KGUpIHsgfQorI2VuZGlmCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkZyYW1lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJGcmFtZUNsaWVudC5oCmluZGV4IDBiZjMwNTdmYWI5M2JkNjNkZWEwOGU0NmM1YWZiMmU5ZDQy
NWM4ZjUuLjk0YWJlODNmYjBhODIxODY4YjAwYzI5OWZhZDE3NTJlZDYzMDQ3ZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaApAQCAtMzEsOSAr
MzEsMTEgQEAKICNpZm5kZWYgV2ViRnJhbWVDbGllbnRfaAogI2RlZmluZSBXZWJGcmFtZUNsaWVu
dF9oCiAKKyNpbmNsdWRlICJXZWJET01NZXNzYWdlRXZlbnQuaCIKICNpbmNsdWRlICJXZWJJY29u
VVJMLmgiCiAjaW5jbHVkZSAiV2ViTmF2aWdhdGlvblBvbGljeS5oIgogI2luY2x1ZGUgIldlYk5h
dmlnYXRpb25UeXBlLmgiCisjaW5jbHVkZSAiV2ViU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJXZWJTdG9yYWdlUXVvdGFUeXBlLmgiCiAjaW5jbHVkZSAiV2ViVGV4dERpcmVjdGlvbi5oIgog
I2luY2x1ZGUgInBsYXRmb3JtL1dlYkNvbW1vbi5oIgpAQCAtNTAsNiArNTIsNyBAQCBjbGFzcyBX
ZWJBcHBsaWNhdGlvbkNhY2hlSG9zdDsKIGNsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xp
ZW50OwogY2xhc3MgV2ViQ29va2llSmFyOwogY2xhc3MgV2ViRGF0YVNvdXJjZTsKK2NsYXNzIFdl
YkRPTUV2ZW50OwogY2xhc3MgV2ViRm9ybUVsZW1lbnQ7CiBjbGFzcyBXZWJGcmFtZTsKIGNsYXNz
IFdlYkludGVudFNlcnZpY2VJbmZvOwpAQCAtNTgsNyArNjEsNiBAQCBjbGFzcyBXZWJNZWRpYVBs
YXllcjsKIGNsYXNzIFdlYk1lZGlhUGxheWVyQ2xpZW50OwogY2xhc3MgV2ViTm9kZTsKIGNsYXNz
IFdlYlBsdWdpbjsKLWNsYXNzIFdlYlNlY3VyaXR5T3JpZ2luOwogY2xhc3MgV2ViU2hhcmVkV29y
a2VyOwogY2xhc3MgV2ViU3RvcmFnZVF1b3RhQ2FsbGJhY2tzOwogY2xhc3MgV2ViU3RyaW5nOwpA
QCAtMzg1LDYgKzM4NywxNiBAQCBwdWJsaWM6CiAgICAgLy8gdGhlIFdlYkZyYW1lIHN0YXJ0aW5n
IHRoZSBhY3Rpdml0eS4KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hJbnRlbnQoV2ViRnJhbWUq
LCBjb25zdCBXZWJJbnRlbnQmKSB7IH0KIAorICAgIC8vIE1lc3NhZ2VzIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gTm90aWZp
ZXMgdGhlIGVtYmVkZGVyIHRoYXQgYSBwb3N0TWVzc2FnZSB3YXMgaXNzdWVkIG9uIHRoaXMgZnJh
bWUsIGFuZAorICAgIC8vIGdpdmVzIHRoZSBlbWJlZGRlciBhIGNoYW5jZSB0byBoYW5kbGUgaXQg
aW5zdGVhZCBvZiBXZWJLaXQuIFJldHVybnMgdHJ1ZQorICAgIC8vIGlmIHRoZSBlbWJlZGRlciBo
YW5kbGVkIGl0LgorICAgIHZpcnR1YWwgYm9vbCB3aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VF
dmVudCgKKyAgICAgICAgV2ViRnJhbWUqIHNvdXJjZSwKKyAgICAgICAgV2ViU2VjdXJpdHlPcmln
aW4gdGFyZ2V0LAorICAgICAgICBXZWJET01NZXNzYWdlRXZlbnQpIHsgcmV0dXJuIGZhbHNlOyB9
CisKIHByb3RlY3RlZDoKICAgICB+V2ViRnJhbWVDbGllbnQoKSB7IH0KIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAppbmRl
eCA5MDVhMzc3NzIyNTlhYmUzMGI3MWFhNGMxN2Q0ZTU2ZWViZjE0ZjY5Li40NmY5NmI1MDhlNzk2
MDA3MDkxODkwYmI0ZjVlYmM2MWRhOTg5ODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAK
ICNpbmNsdWRlICJIVE1MQXBwbGV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVu
dC5oIiAgLy8gbmVlZGVkIGJ5IEZvcm1TdGF0ZS5oCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisj
aW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgog
I2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC01OCw2ICs1OSw3
IEBACiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgog
I2luY2x1ZGUgIlN0cmluZ0V4dHJhcy5oIgorI2luY2x1ZGUgIldlYkRPTUV2ZW50LmgiCiAjaW5j
bHVkZSAiV2ViRGF0YVNvdXJjZUltcGwuaCIKICNpbmNsdWRlICJXZWJEZXZUb29sc0FnZW50UHJp
dmF0ZS5oIgogI2luY2x1ZGUgIldlYkRvY3VtZW50LmgiCkBAIC0xNjE3LDQgKzE2MTksMTQgQEAg
UGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtpbmdDb250ZXh0PiBGcmFtZUxvYWRlckNsaWVudEltcGw6
OmNyZWF0ZU5ldHdvcmtpbmdDb250ZXgKICAgICByZXR1cm4gRnJhbWVOZXR3b3JraW5nQ29udGV4
dEltcGw6OmNyZWF0ZShtX3dlYkZyYW1lLT5mcmFtZSgpKTsKIH0KIAorYm9vbCBGcmFtZUxvYWRl
ckNsaWVudEltcGw6OndpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50KAorICAgIFNlY3Vy
aXR5T3JpZ2luKiB0YXJnZXQsIE1lc3NhZ2VFdmVudCogZXZlbnQpIGNvbnN0Cit7CisgICAgaWYg
KCFtX3dlYkZyYW1lLT5jbGllbnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIG1fd2ViRnJhbWUtPmNsaWVudCgpLT53aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VFdmVu
dCgKKyAgICAgICAgbV93ZWJGcmFtZSwgV2ViU2VjdXJpdHlPcmlnaW4odGFyZ2V0KSwgV2ViRE9N
TWVzc2FnZUV2ZW50KGV2ZW50KSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAppbmRl
eCA1OTZiNWY0YTA3OWIwMzBjYTM4MTFjZmYzNzAzMTc0OTQyMDVmYWIzLi5iMWI4NWJhMzU4N2Iy
NjFhNWI4OTliYmNmODY2NmFkYTFiZjNjNzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaApAQCAtMjA2LDYgKzIwNiw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkTm90QWxsb3dQbHVnaW5zKCk7CiAKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8V2ViQ29yZTo6RnJhbWVOZXR3b3JraW5nQ29udGV4dD4gY3JlYXRlTmV0
d29ya2luZ0NvbnRleHQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgd2lsbENoZWNrQW5kRGlzcGF0Y2hN
ZXNzYWdlRXZlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIHRhcmdldCwgV2ViQ29yZTo6TWVz
c2FnZUV2ZW50KikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBtYWtlRG9jdW1lbnRWaWV3
KCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAKaW5kZXggZjRiYWY4MjEyZTE5YWJkYjRiZjJlYWEzYjVjYWI0ZTgwNzkx
YmYzMi4uN2ZjMjEzNjJmMzQzZDM5ZmE1MTRiZTU0NGM4NjEwM2FjZTFiODEyOSAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcApAQCAtMjUwLDYgKzI1MCw3IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0
Q29udHJvbGxlcihUZXN0U2hlbGwqIHNoZWxsKQogICAgIGJpbmRQcm9wZXJ0eSgid2ViSGlzdG9y
eUl0ZW1Db3VudCIsICZtX3dlYkhpc3RvcnlJdGVtQ291bnQpOwogICAgIGJpbmRQcm9wZXJ0eSgi
dGl0bGVUZXh0RGlyZWN0aW9uIiwgJm1fdGl0bGVUZXh0RGlyZWN0aW9uKTsKICAgICBiaW5kUHJv
cGVydHkoInBsYXRmb3JtTmFtZSIsICZtX3BsYXRmb3JtTmFtZSk7CisgICAgYmluZFByb3BlcnR5
KCJpbnRlcmNlcHRQb3N0TWVzc2FnZSIsICZtX2ludGVyY2VwdFBvc3RNZXNzYWdlKTsKIH0KIAog
TGF5b3V0VGVzdENvbnRyb2xsZXI6On5MYXlvdXRUZXN0Q29udHJvbGxlcigpCkBAIC02MzcsNiAr
NjM4LDcgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6cmVzZXQoKQogICAgIG1fd2ViSGlz
dG9yeUl0ZW1Db3VudC5zZXQoMCk7CiAgICAgbV90aXRsZVRleHREaXJlY3Rpb24uc2V0KCJsdHIi
KTsKICAgICBtX3BsYXRmb3JtTmFtZS5zZXQoImNocm9taXVtIik7CisgICAgbV9pbnRlcmNlcHRQ
b3N0TWVzc2FnZS5zZXQoZmFsc2UpOwogICAgIG1fdXNlclN0eWxlU2hlZXRMb2NhdGlvbiA9IFdl
YlVSTCgpOwogICAgIG1faXNQcmludGluZyA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuaAppbmRleCA0ZDZjZDg1
YTdhMjJhOTNmNmM2Yjk5ZTA4ZGZjMThjODBjYTQyY2I4Li43MWIxYjQyMjY5NDc3ZDNkZjU4Y2Fj
MjhkZWYzZmU0ZmU0MjdmZTQzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTQ2OSw2ICs0NjksMTEgQEAgcHVibGlj
OgogICAgICAgICBtX3RpdGxlVGV4dERpcmVjdGlvbi5zZXQoZGlyID09IFdlYktpdDo6V2ViVGV4
dERpcmVjdGlvbkxlZnRUb1JpZ2h0ID8gImx0ciIgOiAicnRsIik7CiAgICAgfQogCisgICAgYm9v
bCBzaG91bGRJbnRlcmNlcHRQb3N0TWVzc2FnZSgpCisgICAgeworICAgICAgICByZXR1cm4gbV9p
bnRlcmNlcHRQb3N0TWVzc2FnZS5pc0Jvb2woKSAmJiBtX2ludGVyY2VwdFBvc3RNZXNzYWdlLnRv
Qm9vbGVhbigpOworICAgIH0KKwogICAgIHZvaWQgc2V0SXNQcmludGluZyhib29sIHZhbHVlKSB7
IG1faXNQcmludGluZyA9IHZhbHVlOyB9CiAgICAgYm9vbCBpc1ByaW50aW5nKCkgeyByZXR1cm4g
bV9pc1ByaW50aW5nOyB9CiAKQEAgLTY4MCw2ICs2ODUsOSBAQCBwcml2YXRlOgogICAgIC8vIEJv
dW5kIHZhcmlhYmxlIHRvIHJldHVybiB0aGUgbmFtZSBvZiB0aGlzIHBsYXRmb3JtIChjaHJvbWl1
bSkuCiAgICAgQ3BwVmFyaWFudCBtX3BsYXRmb3JtTmFtZTsKIAorICAgIC8vIEJvdW5kIHZhcmlh
YmxlIHRvIHNldCB3aGV0aGVyIHBvc3RNZXNzYWdlcyBzaG91bGQgYmUgaW50ZXJjZXB0ZWQgb3Ig
bm90CisgICAgQ3BwVmFyaWFudCBtX2ludGVyY2VwdFBvc3RNZXNzYWdlOworCiAgICAgV2ViS2l0
OjpXZWJVUkwgbV91c2VyU3R5bGVTaGVldExvY2F0aW9uOwogCiAgICAgT3duUHRyPFdlYktpdDo6
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jaz4gbV9zcGVlY2hJbnB1dENvbnRyb2xsZXJNb2Nr
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3Qu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCmluZGV4
IDI0YmQ0OGZjM2IyZmI2MTI3NDYwYzdkODJmM2RmNWIzOTEyZTM3NzcuLjFiMDY4N2RkMDZmNWQ5
MTAzM2ZiMWYxYmU2YzQ5ZTJkNDBiNTVhY2YgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJwbGF0
Zm9ybS9XZWJDU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViQ29uc29sZU1lc3NhZ2UuaCIKICNpbmNs
dWRlICJXZWJDb250ZXh0TWVudURhdGEuaCIKKyNpbmNsdWRlICJXZWJET01NZXNzYWdlRXZlbnQu
aCIKICNpbmNsdWRlICJXZWJEYXRhU291cmNlLmgiCiAjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50
YXRpb25DbGllbnRNb2NrLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViRHJhZ0RhdGEuaCIKQEAg
LTEyMDQsNiArMTIwNSwxNiBAQCB2b2lkIFdlYlZpZXdIb3N0OjpvcGVuRmlsZVN5c3RlbShXZWJG
cmFtZSogZnJhbWUsIFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgbG9uZwogICAgIHdlYmtpdF9z
dXBwb3J0OjpPcGVuRmlsZVN5c3RlbShmcmFtZSwgdHlwZSwgc2l6ZSwgY3JlYXRlLCBjYWxsYmFj
a3MpOwogfQogCitib29sIFdlYlZpZXdIb3N0Ojp3aWxsQ2hlY2tBbmREaXNwYXRjaE1lc3NhZ2VF
dmVudChXZWJGcmFtZSogc291cmNlLCBXZWJTZWN1cml0eU9yaWdpbiB0YXJnZXQsIFdlYkRPTU1l
c3NhZ2VFdmVudCBldmVudCkKK3sKKyAgICBpZiAobV9zaGVsbC0+bGF5b3V0VGVzdENvbnRyb2xs
ZXIoKS0+c2hvdWxkSW50ZXJjZXB0UG9zdE1lc3NhZ2UoKSkgeworICAgICAgICBmcHV0cygiaW50
ZXJjZXB0ZWQgcG9zdE1lc3NhZ2VcbiIsIHN0ZG91dCk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogLy8gUHVibGljIGZ1bmN0aW9ucyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CiBXZWJWaWV3SG9zdDo6V2ViVmlld0hvc3QoVGVzdFNoZWxsKiBzaGVsbCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmggYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCmluZGV4IGEyZjdiY2E5ZTJmYzFmMGE1
MTU1MGNjZjZkMmEyN2YyZWIwYjI3ZGEuLjBiYzRjMzhlNjczOTVkZGIyYzhkNDhkZGFlMTQxYmMw
YmVjYjY2MzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZp
ZXdIb3N0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3Qu
aApAQCAtMjE0LDYgKzIxNCw3IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6
V2ViU3BlbGxDaGVja0NsaWVudCwgcHVibGljIFdlYktpdDo6V2ViVmlld0NsCiAgICAgdmlydHVh
bCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2Vi
S2l0OjpXZWJTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFdlYktpdDo6V2ViVVJMJik7CiAgICAgdmly
dHVhbCB2b2lkIGRpZERldGVjdFhTUyhXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpX
ZWJVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CiAgICAgdmlydHVhbCB2b2lkIG9wZW5G
aWxlU3lzdGVtKFdlYktpdDo6V2ViRnJhbWUqLCBXZWJLaXQ6OldlYkZpbGVTeXN0ZW06OlR5cGUs
IGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJh
Y2tzKik7CisgICAgdmlydHVhbCBib29sIHdpbGxDaGVja0FuZERpc3BhdGNoTWVzc2FnZUV2ZW50
KFdlYktpdDo6V2ViRnJhbWUqIHNvdXJjZSwgV2ViS2l0OjpXZWJTZWN1cml0eU9yaWdpbiB0YXJn
ZXQsIFdlYktpdDo6V2ViRE9NTWVzc2FnZUV2ZW50KTsKIAogICAgIFdlYktpdDo6V2ViRGV2aWNl
T3JpZW50YXRpb25DbGllbnRNb2NrKiBkZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soKTsKICAg
ICAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZXZlbnRz
L2ludGVyY2VwdC1wb3N0bWVzc2FnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L2V2ZW50cy9pbnRlcmNlcHQtcG9zdG1lc3NhZ2UtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmExMjA3OGQxY2VkYTBlMDE5M2QzZDU3MmQwYzY4ZDJjYmQyMTA4MjkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2V2ZW50
cy9pbnRlcmNlcHQtcG9zdG1lc3NhZ2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorbWFp
biBmcmFtZSAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0gZGlk
SGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRGaW5pc2hMb2FkRm9y
RnJhbWUKK2ludGVyY2VwdGVkIHBvc3RNZXNzYWdlCitpbnRlcmNlcHRlZCBwb3N0TWVzc2FnZQor
UkVDVjEKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9l
dmVudHMvaW50ZXJjZXB0LXBvc3RtZXNzYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9mYXN0L2V2ZW50cy9pbnRlcmNlcHQtcG9zdG1lc3NhZ2UuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZGIwYWI2ZjdjNGY5MTk0ZGMyYjljMGY4NzM2NjZjMWRkOTdiNDY5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9ldmVudHMvaW50ZXJjZXB0
LXBvc3RtZXNzYWdlLmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPGh0bWw+CisgIDxoZWFkPgorICAg
IDxzY3JpcHQ+CisgICAgICBmdW5jdGlvbiB3cml0ZShzdHIpIHsKKyAgICAgICAgcHJlID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKTsKKyAgICAgICAgdGV4dCA9IGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKHN0ciArICdcbicpOworICAgICAgICBwcmUuYXBwZW5kQ2hpbGQodGV4
dCk7CisgICAgICB9CisKKyAgICAgIGZ1bmN0aW9uIHJlY3ZNc2cxKGUpIHsKKyAgICAgICAgd3Jp
dGUoIlJFQ1YxIik7CisgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdl
IiwgcmVjdk1zZzEsIGZhbHNlKTsKKworICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmludGVyY2VwdFBvc3RNZXNz
YWdlID0gdHJ1ZTsKKworICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIs
IHJlY3ZNc2cyLCBmYWxzZSk7CisgICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZSgiTWVzc2FnZSAy
IiwgIioiKTsKKyAgICAgIAorICAgICAgICAvLyBFbnN1cmUgdGhhdCB3ZSdyZSBpbnRlcmNlcHRp
bmcgcG9zdE1lc3NhZ2VzIGJlZm9yZSB0aGUgb3JpZ2luIGNoZWNrCisgICAgICAgIHdpbmRvdy5w
b3N0TWVzc2FnZSgiTWVzc2FnZSAzIiwgImh0dHA6Ly9leGFtcGxlLm9yZyIpOyAKKworICAgICAg
ICAvLyBXZSBuZWVkIHRvIGNhbGwgc2V0VGltZW91dCBoZXJlIGJlY2F1c2Ugd2UgaW50ZXJjZXB0
IHRoZSBuZXh0IGV2ZW50LgorICAgICAgICAvLyBJZiB0aGlzIHRlc3QgYmVjb21lcyBmbGFreSwg
eW91IG1heSBuZWVkIHRvIGluY3JlYXNlIHRoaXMgdGltZW91dC4KKyAgICAgICAgd2luZG93LnNl
dFRpbWVvdXQoImRvbmUoKSIsIDUwKTsKKyAgICAgIH0KKworICAgICAgZnVuY3Rpb24gcmVjdk1z
ZzIoZSkgeworICAgICAgICB3cml0ZSgiUkVDVjIiKTsKKyAgICAgIH0KKworICAgICAgZnVuY3Rp
b24gZG9uZSgpIHsKKyAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAg
fQorCisgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHJlY3ZNc2cxLCBm
YWxzZSk7CisKKyAgICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAg
ICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKTsK
KyAgICAgICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAg
ICAgd2luZG93LmxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAgIH0K
KworICAgICAgd2luZG93LnBvc3RNZXNzYWdlKCJNZXNzYWdlIDEiLCAiKiIpOworICAgIDwvc2Ny
aXB0PgorICA8L2hlYWQ+CisgIDxib2R5PjxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPjwvYm9keT4K
KzwvaHRtbD4KKwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>