<?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>70973</bug_id>
          
          <creation_ts>2011-10-26 15:41:23 -0700</creation_ts>
          <short_desc>XSSAuditor is silent</short_desc>
          <delta_ts>2011-11-02 14:05:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>XSSAuditor</keywords>
          <priority>P3</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Thomas Sepez">tsepez</reporter>
          <assigned_to name="Thomas Sepez">tsepez</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>cgarcia</cc>
    
    <cc>dbates</cc>
    
    <cc>fishd</cc>
    
    <cc>japhet</cc>
    
    <cc>sam</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>491231</commentid>
    <comment_count>0</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-10-26 15:41:23 -0700</bug_when>
    <thetext>Apart from a console log message, there&apos;s no good way for a browser to indicate that the XSSAuditor has fired -- it typically just navigates to about:blank.
Add a method in FrameLoaderClient to provide this information to the outside world.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491721</commentid>
    <comment_count>1</comment_count>
      <attachid>112708</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-10-27 10:56:06 -0700</bug_when>
    <thetext>Created attachment 112708
Semi-functional patch to discuss style points.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491917</commentid>
    <comment_count>2</comment_count>
      <attachid>112708</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-27 14:00:25 -0700</bug_when>
    <thetext>Comment on attachment 112708
Semi-functional patch to discuss style points.

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

&gt; Source/WebCore/loader/FrameLoader.cpp:940
&gt; +    String message = &quot;Refused to execute a JavaScript script. Source code of script found within request.\n&quot;;

DEFINE_STATIC_LOCAL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491929</commentid>
    <comment_count>3</comment_count>
      <attachid>112708</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-10-27 14:07:14 -0700</bug_when>
    <thetext>Comment on attachment 112708
Semi-functional patch to discuss style points.

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

&gt;&gt; Source/WebCore/loader/FrameLoader.cpp:940
&gt;&gt; +    String message = &quot;Refused to execute a JavaScript script. Source code of script found within request.\n&quot;;
&gt; 
&gt; DEFINE_STATIC_LOCAL

const char*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491952</commentid>
    <comment_count>4</comment_count>
      <attachid>112708</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-10-27 14:25:27 -0700</bug_when>
    <thetext>Comment on attachment 112708
Semi-functional patch to discuss style points.

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

&gt;&gt;&gt; Source/WebCore/loader/FrameLoader.cpp:940
&gt;&gt;&gt; +    String message = &quot;Refused to execute a JavaScript script. Source code of script found within request.\n&quot;;
&gt;&gt; 
&gt;&gt; DEFINE_STATIC_LOCAL
&gt; 
&gt; const char*

Yes, const char* is much better until the time when we start cobbling together strings.  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492142</commentid>
    <comment_count>5</comment_count>
      <attachid>112790</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-10-27 17:45:51 -0700</bug_when>
    <thetext>Created attachment 112790
Proposed patch.

This patch add the didDetectXSS method to the FrameLoader and FrameLoaderClient, and adds plumbing to all the places I could find that it needs to flow into.  The Webkit2 code is mostly cut-n-paste from existing routines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492144</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-27 17:48:25 -0700</bug_when>
    <thetext>Attachment 112790 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/http...&quot; exit_code: 1

Source/WebKit/chromium/public/WebFrameClient.h:289:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 1 in 57 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492145</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-27 17:48:42 -0700</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.

Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492151</commentid>
    <comment_count>8</comment_count>
      <attachid>112790</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-27 17:54:58 -0700</bug_when>
    <thetext>Comment on attachment 112790
Proposed patch.

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

We&apos;ll need fishd for the WebKit API review.

This patch shows us just how crazy this project has become.

&gt; Source/WebCore/loader/FrameLoader.cpp:948
&gt; +    SecurityOrigin* origin = m_frame-&gt;document()-&gt;securityOrigin();
&gt; +    m_client-&gt;didDetectXSS(origin, m_frame-&gt;document()-&gt;url(), errorPageURL, blockEnabled);

This client callback can do arbitrary things, which could cause origin to be deleted.  I&apos;d just grab it from m_frame-&gt;document()-&gt;securityOrigin() twice.

&gt; Source/WebCore/loader/FrameLoaderClient.h:211
&gt; +        virtual void didDetectXSS(SecurityOrigin*, const KURL&amp;, KURL&amp;, bool) = 0;

It&apos;s probably better to use names for these KURL parameters.  It&apos;s hard to tell what they are from this declaration.

&gt; Source/WebKit2/UIProcess/API/C/WKPage.h:67
&gt; +typedef void (*WKPageDidDetectXSSForFrameCallback)(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo);

We might not want to expose this in the WebKit2 C API right away.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:957
&gt; +    webPage-&gt;send(Messages::WebPageProxy::DidDetectXSSForFrame(m_frame-&gt;frameID(), InjectedBundleUserMessageEncoder(userData.get())));

Looks like you&apos;re dropping the parameters on the floor.  I&apos;d recommend just having this function do nothing and adding a FIXME.

&gt; Source/WebKit/chromium/public/WebFrameClient.h:292
&gt; +    virtual void didDetectXSS(WebFrame*, const WebSecurityOrigin&amp;, const WebURL&amp;, WebURL&amp;, bool) { }

We probably want parameter names here too.

&gt; LayoutTests/http/tests/security/xssAuditor/script-tag-with-callbacks.html:8
&gt; +  layoutTestController.dumpAsText();
&gt; +  layoutTestController.dumpFrameLoadCallbacks();
&gt; +  layoutTestController.setXSSAuditorEnabled(true);

Four-space indent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492223</commentid>
    <comment_count>9</comment_count>
      <attachid>112790</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-27 21:18:30 -0700</bug_when>
    <thetext>Comment on attachment 112790
Proposed patch.

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

&gt; Source/WebKit/chromium/public/WebFrameClient.h:287
&gt; +    virtual void didRunInsecureContent(WebFrame*, const WebSecurityOrigin&amp;, const WebURL&amp;) { }

nit: i found that naming the parameter here was a bit helpful.

&gt;&gt; Source/WebKit/chromium/public/WebFrameClient.h:292
&gt;&gt; +    virtual void didDetectXSS(WebFrame*, const WebSecurityOrigin&amp;, const WebURL&amp;, WebURL&amp;, bool) { }
&gt; 
&gt; We probably want parameter names here too.

Ditto.  It is not obvious how to tell apart the two URL parameters, and the bool parameter also needs a name.

&gt; Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp:1198
&gt; +void FrameLoaderClientImpl::didDetectXSS(SecurityOrigin* origin, const KURL&amp; insecureURL, KURL&amp; errorPageURL, bool blockEnabled)

hmm... it is a bit interesting that this would create another error-page loading path.  are you sure this is the best design?

elsewhere we handle this kind of thing by generating a ResourceError that when later passed up to didFailLoad triggers
an error page corresponding to the error code.  maybe we should do something like that here as well?

also, no where else in the WebKit API have we assumed that embedders display errors as error pages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492226</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-27 21:21:18 -0700</bug_when>
    <thetext>The error page isn&apos;t essential to what we&apos;re trying to accomplish in this patch.  I think Tom just didn&apos;t want to have to edit all these files again.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492493</commentid>
    <comment_count>11</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-10-28 09:35:54 -0700</bug_when>
    <thetext>Thanks Darin.  I&apos;m willing to go down the route of introducing a new error class, possibly in a second patch to try and keep the size of this one down.  But there are two cases to consider here: one where the (neutered) page continues to load and the client would perhaps like to show an inforbar or equivalent, and a second where the load immediately terminates in error.  I&apos;d like to keep the proposed callback for the first case, and actually have it called in both cases -- my ulterior motive being that the Chromium client can then generate histograms about how often this is happening in the world.

So ... I think I&apos;m going to pull the second URL parameter from the callback, and leave the current navigation to about:blank as-is in this patch.  Would that be reasonable?

Adam, question:  It dawns on me on the way into work that  when we immediately terminante, we get once invocation of the callback.  But when continuing, we&apos;d get one callback for each of the many spots on the page where the xss is repeated.  So ... is there a good place inside the auditor / frameloader / frameloader client to track that the callback has already been fired -- any of these live the correct length of time to do this easily?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492539</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-28 11:05:42 -0700</bug_when>
    <thetext>Yeah, we should only send the callback once per document.

Maybe the best thing to do is to not make any changes to FrameLoader and keep all this code in XSSAuditor.cpp.  It can call methods on FrameLoaderClient just fine.  Then it can keep a counter/bool and dispatch the message only once.  (I think it&apos;s good to log to the console each time though.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492543</commentid>
    <comment_count>13</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-10-28 11:21:05 -0700</bug_when>
    <thetext>Sure, putting that state into the XSSAuditor is easy.  It feels wrong that anything outside of frameloader knows that there&apos;s such a thing as a frameloaderclient, but it sounds like that is violated all over the place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492546</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-28 11:26:09 -0700</bug_when>
    <thetext>The trade-off is otherwise FrameLoader needs to have fingers in many more pies.  FrameLoader used to encapsulate FrameLoaderClient, bit it doesn&apos;t anymore.  We probably should rename FrameLoaderClient to something more appropriate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492619</commentid>
    <comment_count>15</comment_count>
      <attachid>112790</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-10-28 12:58:20 -0700</bug_when>
    <thetext>Comment on attachment 112790
Proposed patch.

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

&gt;&gt; Source/WebCore/loader/FrameLoader.cpp:948
&gt;&gt; +    m_client-&gt;didDetectXSS(origin, m_frame-&gt;document()-&gt;url(), errorPageURL, blockEnabled);
&gt; 
&gt; This client callback can do arbitrary things, which could cause origin to be deleted.  I&apos;d just grab it from m_frame-&gt;document()-&gt;securityOrigin() twice.

File removed from patch

&gt;&gt; Source/WebCore/loader/FrameLoaderClient.h:211
&gt;&gt; +        virtual void didDetectXSS(SecurityOrigin*, const KURL&amp;, KURL&amp;, bool) = 0;
&gt; 
&gt; It&apos;s probably better to use names for these KURL parameters.  It&apos;s hard to tell what they are from this declaration.

done.

&gt;&gt; Source/WebKit2/UIProcess/API/C/WKPage.h:67
&gt;&gt; +typedef void (*WKPageDidDetectXSSForFrameCallback)(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo);
&gt; 
&gt; We might not want to expose this in the WebKit2 C API right away.

Not sure what to do here.  My intention was to put enough into WK2 so that a test could run if needed.

&gt;&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:957
&gt;&gt; +    webPage-&gt;send(Messages::WebPageProxy::DidDetectXSSForFrame(m_frame-&gt;frameID(), InjectedBundleUserMessageEncoder(userData.get())));
&gt; 
&gt; Looks like you&apos;re dropping the parameters on the floor.  I&apos;d recommend just having this function do nothing and adding a FIXME.

Same as above.  Only interested in getting a the method to run and do printf&apos;s for test.

&gt;&gt; Source/WebKit/chromium/public/WebFrameClient.h:287
&gt;&gt; +    virtual void didRunInsecureContent(WebFrame*, const WebSecurityOrigin&amp;, const WebURL&amp;) { }
&gt; 
&gt; nit: i found that naming the parameter here was a bit helpful.

Ok.

&gt;&gt; Source/WebKit/chromium/public/WebFrameClient.h:289
&gt;&gt; +    // A reflected XSS was encountered in the page and suppressed.  Return true
&gt; 
&gt; Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]

Comment truncated.

&gt;&gt;&gt; Source/WebKit/chromium/public/WebFrameClient.h:292
&gt;&gt;&gt; +    virtual void didDetectXSS(WebFrame*, const WebSecurityOrigin&amp;, const WebURL&amp;, WebURL&amp;, bool) { }
&gt;&gt; 
&gt;&gt; We probably want parameter names here too.
&gt; 
&gt; Ditto.  It is not obvious how to tell apart the two URL parameters, and the bool parameter also needs a name.

Now one URL parameter, bool named.

&gt;&gt; Source/WebKit/chromium/src/FrameLoaderClientImpl.cpp:1198
&gt;&gt; +void FrameLoaderClientImpl::didDetectXSS(SecurityOrigin* origin, const KURL&amp; insecureURL, KURL&amp; errorPageURL, bool blockEnabled)
&gt; 
&gt; hmm... it is a bit interesting that this would create another error-page loading path.  are you sure this is the best design?
&gt; 
&gt; elsewhere we handle this kind of thing by generating a ResourceError that when later passed up to didFailLoad triggers
&gt; an error page corresponding to the error code.  maybe we should do something like that here as well?
&gt; 
&gt; also, no where else in the WebKit API have we assumed that embedders display errors as error pages.

Rewriten.  No errorPageURL any more

&gt;&gt; LayoutTests/http/tests/security/xssAuditor/script-tag-with-callbacks.html:8
&gt;&gt; +  layoutTestController.setXSSAuditorEnabled(true);
&gt; 
&gt; Four-space indent.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492622</commentid>
    <comment_count>16</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-10-28 12:58:44 -0700</bug_when>
    <thetext>Addressed comments, new patch coming shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492653</commentid>
    <comment_count>17</comment_count>
      <attachid>112905</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-10-28 13:52:26 -0700</bug_when>
    <thetext>Created attachment 112905
Proposed Patch

Next revision.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>492673</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-10-28 14:23:02 -0700</bug_when>
    <thetext>Looks fine to me.

We&apos;ll need fishd to look at the Chromium API parts.

@Sam: Would you be willing to look at the WebKit2 parts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493155</commentid>
    <comment_count>19</comment_count>
      <attachid>112905</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-10-30 22:40:24 -0700</bug_when>
    <thetext>Comment on attachment 112905
Proposed Patch

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

&gt; Source/WebKit/chromium/public/WebFrameClient.h:290
&gt; +    virtual void didDetectXSS(WebFrame*, const WebURL&amp;, bool blockEnabled) { }

what does &quot;blockEnabled&quot; mean?  i should be able to figure it out from just reading the comment here or based on method signature / parameter naming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493370</commentid>
    <comment_count>20</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-10-31 09:49:10 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (From update of attachment 112905 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=112905&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebFrameClient.h:290
&gt; &gt; +    virtual void didDetectXSS(WebFrame*, const WebURL&amp;, bool blockEnabled) { }
&gt; 
&gt; what does &quot;blockEnabled&quot; mean?  i should be able to figure it out from just reading the comment here or based on method signature / parameter naming.

This comes from the mode setting from the x-xss-enabled header, e.g.
X-XSS-OPTIONS: 1; mode=block
which causes the entire page to be blocked rather than just having the injected scripts removed from the page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>493395</commentid>
    <comment_count>21</comment_count>
      <attachid>113066</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-10-31 10:16:09 -0700</bug_when>
    <thetext>Created attachment 113066
Proposed patch + improved boolean naming.

Note to self:
$ sed -i .keep -e &apos;s/blockEnabled/blockEntirePage/g&apos; `svn status | awk &apos;/^M/{print $2}&apos;`
is your friend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494766</commentid>
    <comment_count>22</comment_count>
      <attachid>113066</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-11-02 11:34:53 -0700</bug_when>
    <thetext>Comment on attachment 113066
Proposed patch + improved boolean naming.

Chromium WebKit API changes LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494776</commentid>
    <comment_count>23</comment_count>
      <attachid>113066</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-02 11:52:26 -0700</bug_when>
    <thetext>Comment on attachment 113066
Proposed patch + improved boolean naming.

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

The WebKit2 stuff is kind of mysterious to me, but looks plausible.

&gt; Source/WebCore/html/parser/XSSAuditor.cpp:292
&gt; +        if (blockEntirePage)
&gt; +             m_parser-&gt;document()-&gt;frame()-&gt;loader()-&gt;stopAllLoaders();

It&apos;s kind of odd that we do half of this before notifying the client and half afterwards.  Maybe we should do it all before now that we&apos;re not getting a URL from the client?

&gt; Source/WebCore/loader/FrameLoaderClient.h:211
&gt; +        virtual void didDetectXSS(const KURL&amp;, bool blockEntirePage) = 0;

didBlockEntirePage ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494785</commentid>
    <comment_count>24</comment_count>
      <attachid>113066</attachid>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-11-02 12:01:55 -0700</bug_when>
    <thetext>Comment on attachment 113066
Proposed patch + improved boolean naming.

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

&gt;&gt; Source/WebCore/html/parser/XSSAuditor.cpp:292
&gt;&gt; +             m_parser-&gt;document()-&gt;frame()-&gt;loader()-&gt;stopAllLoaders();
&gt; 
&gt; It&apos;s kind of odd that we do half of this before notifying the client and half afterwards.  Maybe we should do it all before now that we&apos;re not getting a URL from the client?

My thinking was that we want to stop the loaders ASAP since we know the load can&apos;t work, no matter how long the client spends in its callback.  Was also thinking that firing the callback after scheduling a navigation seemed wrong too, just a feeling that some state may go away without actually tracking down the code path to see what happens ... sorry.

&gt;&gt; Source/WebCore/loader/FrameLoaderClient.h:211
&gt;&gt; +        virtual void didDetectXSS(const KURL&amp;, bool blockEntirePage) = 0;
&gt; 
&gt; didBlockEntirePage ?

Damned verb tense.  Howzabout I do this if some other issue forces generation of a new patch?  Or do you insist?  Either way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494786</commentid>
    <comment_count>25</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-11-02 12:02:30 -0700</bug_when>
    <thetext>Adam, was there someone else we wanted from the webkit2 side?  Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494798</commentid>
    <comment_count>26</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-02 12:20:39 -0700</bug_when>
    <thetext>&gt; &gt;&gt; Source/WebCore/loader/FrameLoaderClient.h:211
&gt; &gt;&gt; +        virtual void didDetectXSS(const KURL&amp;, bool blockEntirePage) = 0;
&gt; &gt; 
&gt; &gt; didBlockEntirePage ?
&gt; 
&gt; Damned verb tense.  Howzabout I do this if some other issue forces generation of a new patch?  Or do you insist?  Either way.

Ok.

&gt; Adam, was there someone else we wanted from the webkit2 side?  Thanks.

Sam has been CCed on this bug for a while.  I think it&apos;s fine to land as-is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494821</commentid>
    <comment_count>27</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-02 12:52:34 -0700</bug_when>
    <thetext>Just for you Tom, I&apos;ve edited your patch file to rename the variable.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494822</commentid>
    <comment_count>28</comment_count>
      <attachid>113353</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-02 12:53:38 -0700</bug_when>
    <thetext>Created attachment 113353
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494834</commentid>
    <comment_count>29</comment_count>
    <who name="Thomas Sepez">tsepez</who>
    <bug_when>2011-11-02 13:04:32 -0700</bug_when>
    <thetext>If you want to be super picky, the bool in XSSAuditor.cpp should be blockEntirePage since it&apos;s taking action upon it, and the others should be didBlockEntirePage (blockedEntirePage?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494837</commentid>
    <comment_count>30</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-02 13:05:32 -0700</bug_when>
    <thetext>&gt; If you want to be super picky, the bool in XSSAuditor.cpp should be blockEntirePage since it&apos;s taking action upon it, and the others should be didBlockEntirePage (blockedEntirePage?).

Oh noes!  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494891</commentid>
    <comment_count>31</comment_count>
      <attachid>113353</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-02 14:05:27 -0700</bug_when>
    <thetext>Comment on attachment 113353
Patch for landing

Clearing flags on attachment: 113353

Committed r99096: &lt;http://trac.webkit.org/changeset/99096&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>494892</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-02 14:05:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112708</attachid>
            <date>2011-10-27 10:56:06 -0700</date>
            <delta_ts>2011-10-27 17:45:51 -0700</delta_ts>
            <desc>Semi-functional patch to discuss style points.</desc>
            <filename>patch_70973.txt</filename>
            <type>text/plain</type>
            <size>22195</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCShyZXZpc2lv
biA5ODUxNSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yODAsMTUgKzI4MCw4IEBAIHZvaWQgWFNTQXVkaXRvcjo6ZmlsdGVy
VG9rZW4oSFRNTFRva2VuJiAKICAgICB9CiAKICAgICBpZiAoZGlkQmxvY2tTY3JpcHQpIHsKLSAg
ICAgICAgLy8gRklYTUU6IENvbnNpZGVyIHVzaW5nIGEgbW9yZSBoZWxwZnVsIGNvbnNvbGUgbWVz
c2FnZS4KLSAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVNZXNzYWdl
LCAoIlJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBv
ZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuXG4iKSk7CiAgICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgYWRkIHRoZSByZWFsIGxpbmUgbnVtYmVyIHRvIHRoZSBjb25zb2xlLgotICAgICAg
ICBtX3BhcnNlci0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+YWRkTWVzc2Fn
ZShKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgY29u
c29sZU1lc3NhZ2UsIDEsIFN0cmluZygpKTsKLQotICAgICAgICBpZiAobV94c3NQcm90ZWN0aW9u
ID09IFhTU1Byb3RlY3Rpb25CbG9ja0VuYWJsZWQpIHsKLSAgICAgICAgICAgIG1fcGFyc2VyLT5k
b2N1bWVudCgpLT5mcmFtZSgpLT5sb2FkZXIoKS0+c3RvcEFsbExvYWRlcnMoKTsKLSAgICAgICAg
ICAgIG1fcGFyc2VyLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkt
PnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UobV9wYXJzZXItPmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCksIGJsYW5rVVJMKCksIFN0cmluZygpKTsKLSAgICAgICAgfQorICAgICAgICBtX3BhcnNl
ci0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCktPmRpZERldGVjdFhTUygxLCAobV94c3NQ
cm90ZWN0aW9uID09IFhTU1Byb3RlY3Rpb25CbG9ja0VuYWJsZWQpKTsKICAgICB9CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlzaW9uIDk4NTE1KQorKysg
U291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NzAsNiArMzcwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1
cmVDb250ZW50KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChT
ZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZGlkRGV0
ZWN0WFNTKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYsIGJvb2wpIHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFtZShjb25zdCBLVVJM
JiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwg
Ym9vbCwgaW50LCBpbnQpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkVHJhbnNm
ZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChQYWdlKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHRy
YW5zZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UoUmVzb3VyY2VMb2FkZXIqLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBQYWdlKikgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAJKHJldmlzaW9uIDk4NTE1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTM0LDYgKzkzNCwyMiBAQCBib29sIEZyYW1l
TG9hZGVyOjpjaGVja0lmUnVuSW5zZWN1cmVDb250CiAgICAgcmV0dXJuIGFsbG93ZWQ7CiB9CiAK
K3ZvaWQgRnJhbWVMb2FkZXI6OmRpZERldGVjdFhTUyhpbnQgbGluZU51bWJlciwgYm9vbCBzdG9w
TG9hZGluZykKK3sKKyAgICAvLyBGSVhNRTogQ29uc2lkZXIgdXNpbmcgYSBtb3JlIGhlbHBmdWwg
Y29uc29sZSBtZXNzYWdlLgorICAgIFN0cmluZyBtZXNzYWdlID0gIlJlZnVzZWQgdG8gZXhlY3V0
ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGlu
IHJlcXVlc3QuXG4iOworICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPmFkZE1l
c3NhZ2UoSFRNTE1lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZl
bCwgbWVzc2FnZSwgbGluZU51bWJlciwgU3RyaW5nKCkpOworCisgICAgaWYgKHN0b3BMb2FkaW5n
KQorICAgICAgICBzdG9wQWxsTG9hZGVycygpOworCisgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdp
biA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CisgICAgYm9vbCBjbGll
bnRIYW5kbGVkTmF2aWdhdGlvbiA9IG1fY2xpZW50LT5kaWREZXRlY3RYU1Mob3JpZ2luLCBtX2Zy
YW1lLT5kb2N1bWVudCgpLT51cmwoKSwgc3RvcExvYWRpbmcpOworCisgICAgaWYgKHN0b3BMb2Fk
aW5nICYmICFjbGllbnRIYW5kbGVkTmF2aWdhdGlvbikKKyAgICAgICAgbV9mcmFtZS0+bmF2aWdh
dGlvblNjaGVkdWxlcigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKG9yaWdpbiwgYmxhbmtVUkwo
KSwgU3RyaW5nKCkpOworfQorCiBGcmFtZSogRnJhbWVMb2FkZXI6Om9wZW5lcigpCiB7CiAgICAg
cmV0dXJuIG1fb3BlbmVyOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJl
dmlzaW9uIDk4NTE1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIyMiw2ICsyMjIsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBjaGVja0lm
RGlzcGxheUluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogY29udGV4dCwgY29uc3QgS1VS
TCYpOwogICAgIGJvb2wgY2hlY2tJZlJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiog
Y29udGV4dCwgY29uc3QgS1VSTCYpOwogCisgICAgdm9pZCBkaWREZXRlY3RYU1MoaW50IGxpbmVO
dW1iZXIsIGJvb2wgc3RvcExvYWRpbmcpOworCiAgICAgRnJhbWUqIG9wZW5lcigpOwogICAgIHZv
aWQgc2V0T3BlbmVyKEZyYW1lKik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA5ODUxNSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDgsNiArMjA4LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyBzY3JpcHQpIGZyb20gYW4gaW5zZWN1cmUg
c291cmNlLiAgTm90ZSB0aGF0IHRoZSBpbnNlY3VyZSBjb250ZW50IGNhbgogICAgICAgICAvLyBz
cHJlYWQgdG8gb3RoZXIgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KICAgICAgICAgdmlydHVh
bCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwm
KSA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9vbCBkaWREZXRlY3RYU1MoU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBLVVJMJiwgYm9vbCkgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJv
ciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jikg
PSAwOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDk4
NTE1KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0NCw2ICs5NDQsMTIgQEAgdm9p
ZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cgogICAgIHdlYlBhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUobV9m
cmFtZS0+ZnJhbWVJRCgpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0
YS5nZXQoKSkpKTsKIH0KIAorYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGV0ZWN0WFNT
KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYsIGJvb2wpCit7CisgICAgLy8gRklYTUU6IHBy
b3BvZ2F0ZSBjYWxsIHZpYSB3ZWJraXQgbWVzc2FnaW5nIGlmIG5vdGlmaWNhdGlvbiBkZXNpcmVk
LgorICAgIHJldHVybiBmYWxzZTsKK30KKwogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNs
aWVudDo6Y2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewog
ICAgIHJldHVybiBXZWJLaXQ6OmNhbmNlbGxlZEVycm9yKHJlcXVlc3QpOwpJbmRleDogU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gOTg1MTUpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEzNyw2ICsxMzcsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lk
IGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2Vi
Q29yZTo6S1VSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBkaWREZXRlY3RYU1MoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgYm9vbCkgT1ZFUlJJ
REU7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkZyYW1lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRnJhbWVDbGllbnQuaAkocmV2aXNpb24gOTg1MTUpCisrKyBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODQs
NyArMjg0LDEyIEBAIHB1YmxpYzoKICAgICAvLyBUaGUgaW5kaWNhdGVkIHNlY3VyaXR5IG9yaWdp
biBoYXMgcnVuIGFjdGl2ZSBjb250ZW50IChzdWNoIGFzIGEKICAgICAvLyBzY3JpcHQpIGZyb20g
YW4gaW5zZWN1cmUgc291cmNlLiAgTm90ZSB0aGF0IHRoZSBpbnNlY3VyZSBjb250ZW50IGNhbgog
ICAgIC8vIHNwcmVhZCB0byBvdGhlciBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgotICAgIHZp
cnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViRnJhbWUqLCBjb25zdCBXZWJTZWN1
cml0eU9yaWdpbiYsIGNvbnN0IFdlYlVSTCYgaW5zZWN1cmVVUkwpIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViRnJhbWUqLCBjb25zdCBXZWJTZWN1cml0eU9y
aWdpbiYsIGNvbnN0IFdlYlVSTCYpIHsgfQorCisgICAgLy8gQSByZWZsZWN0ZWQgWFNTIHdhcyBl
bmNvdW50ZXJlZCBpbiB0aGUgcGFnZSBhbmQgc3VwcHJlc3NlZC4gIFJldHVybiB0cnVlCisgICAg
Ly8gaWYgdGhlIGNsaWVudCBoYXMgY29tcGxldGVseSBoYW5kbGVkIG5vdGlmaWNhdGlvbiwgb3Ro
ZXJ3aXNlIHJldHVybiBmYWxzZQorICAgIC8vIHRvIGFsbG93IHRoZSBkZWZhdWx0IGhhbmRsaW5n
IHRvIGNvbnRpbnVlLgorICAgIHZpcnR1YWwgYm9vbCBkaWREZXRlY3RYU1MoV2ViRnJhbWUqLCBj
b25zdCBXZWJTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFdlYlVSTCYsIGJvb2wpIHsgcmV0dXJuIGZh
bHNlOyB9CiAKICAgICAvLyBUaGlzIGZyYW1lIGFkb3B0ZWQgdGhlIHJlc291cmNlIHRoYXQgaXMg
YmVpbmcgbG9hZGVkLiBUaGlzIGhhcHBlbnMgd2hlbgogICAgIC8vIGFuIGlmcmFtZSwgdGhhdCBp
cyBsb2FkaW5nIGEgc3VicmVzb3VyY2UsIGlzIHRyYW5zZmVycmVkIGJldHdlZW4gd2luZG93cy4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmNwcAkocmV2aXNpb24gOTg1MTUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTk1LDYg
KzExOTUsMTQgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpZFJ1bkluc2VjdQogICAg
ICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkUnVuSW5zZWN1cmVDb250ZW50KG1fd2ViRnJh
bWUsIFdlYlNlY3VyaXR5T3JpZ2luKG9yaWdpbiksIGluc2VjdXJlVVJMKTsKIH0KIAorYm9vbCBG
cmFtZUxvYWRlckNsaWVudEltcGw6OmRpZERldGVjdFhTUyhTZWN1cml0eU9yaWdpbiogb3JpZ2lu
LCBjb25zdCBLVVJMJiBpbnNlY3VyZVVSTCwgYm9vbCBzdG9wTG9hZGluZykKK3sKKyAgICBpZiAo
bV93ZWJGcmFtZS0+Y2xpZW50KCkpCisgICAgICAgIHJldHVybiBtX3dlYkZyYW1lLT5jbGllbnQo
KS0+ZGlkRGV0ZWN0WFNTKG1fd2ViRnJhbWUsIFdlYlNlY3VyaXR5T3JpZ2luKG9yaWdpbiksIGlu
c2VjdXJlVVJMLCBzdG9wTG9hZGluZyk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIFJlc291
cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpibG9ja2VkRXJyb3IoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JikKIHsKICAgICAvLyBGSVhNRQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHJldmlzaW9uIDk4NTE1KQor
KysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBj
b25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBpbnNlY3VyZVVSTCk7CisgICAgdmlydHVhbCBib29s
IGRpZERldGVjdFhTUyhXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OktV
UkwmLCBib29sKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZpcnR1YWwgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VS
TEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwpJbmRleDogU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
RWZsLmNwcAkocmV2aXNpb24gOTg1MTUpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzMSw2ICs1
MzEsMTEgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlkUnVuSW5zZWN1cgogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKK2Jvb2wgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpZERldGVj
dFhTUyhTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmLCBib29sKQoreworICAgIHJldHVybiBm
YWxzZTsKK30KKwogdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6bWFrZVJlcHJlc2VudGF0aW9u
KERvY3VtZW50TG9hZGVyKikKIHsKICAgICBtX2hhc1JlcHJlc2VudGF0aW9uID0gdHJ1ZTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZs
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuaAkocmV2aXNpb24gOTg1MTUpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjMsNiArMTYzLDcgQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwgOiBwdWJsaWMgRnJhbQog
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJ
dGVtKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2lu
KiwgY29uc3QgS1VSTCYpOworICAgIHZpcnR1YWwgYm9vbCBkaWREZXRlY3RYU1MoU2VjdXJpdHlP
cmlnaW4qLCBjb25zdCBLVVJMJiwgYm9vbCk7CiAKICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3Ig
Y2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdmlydHVhbCBSZXNv
dXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDk4NTE1KQorKysgU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
MjQsNiArNzI0LDExIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ28K
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitib29sIEZyYW1lTG9hZGVyQ2xpZW50OjpkaWRE
ZXRlY3RYU1MoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJiwgYm9vbCkKK3sKKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6Om1ha2VSZXByZXNlbnRhdGlv
bihXZWJDb3JlOjpEb2N1bWVudExvYWRlciopCiB7CiAgICAgbV9oYXNSZXByZXNlbnRhdGlvbiA9
IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHJldmlzaW9uIDk4NTE1KQorKysgU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAkod29ya2luZyBj
b3B5KQpAQCAtMTQ1LDYgKzE0NSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25z
dCBXZWJDb3JlOjpLVVJMJik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBkaWREZXRlY3RYU1MoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgYm9vbCk7CiAKICAg
ICAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYp
OwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA5ODUxNSkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE1Niw2ICsxNTYsNyBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3Bs
YXlJbnNlY3VyZUNvbnRlbnQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5z
ZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2ViQ29yZTo6S1VS
TCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBkaWREZXRlY3RYU1MoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiwgYm9vbCkgT1ZFUlJJREU7CiAKICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
KSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiA5ODUxNSkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC05OTcsNiArOTk3LDExIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpZFJ1bkluc2VjdXIKICAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVu
dGF0aW9ucy0+ZGlkUnVuSW5zZWN1cmVDb250ZW50RnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdl
YlZpZXc6ZGlkUnVuSW5zZWN1cmVDb250ZW50OiksIHdlYlNlY3VyaXR5T3JpZ2luLmdldCgpKTsK
IH0KIAorYm9vbCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGV0ZWN0WFNTKFNlY3VyaXR5T3Jp
Z2luKiBvcmlnaW4sIGNvbnN0IEtVUkwmIFhTU3VybCwgYm9vbCBzdG9wcGVkTG9hZGluZykKK3sK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIFJlc291cmNlRXJyb3IgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmNhbmNlbGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIHsKICAg
ICByZXR1cm4gW05TRXJyb3IgX3dlYktpdEVycm9yV2l0aERvbWFpbjpOU1VSTEVycm9yRG9tYWlu
IGNvZGU6TlNVUkxFcnJvckNhbmNlbGxlZCBVUkw6cmVxdWVzdC51cmwoKV07CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5jcHAJKHJldmlzaW9uIDk4NTE1KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODczLDYgKzg3
MywxNCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZFJ1bkluc2VjdXJlCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAorYm9vbCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWREZXRlY3RY
U1MoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJiwgYm9vbCkKK3sKKyAgICBp
ZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzKQorICAgICAgICBwcmludGYoImRpZERldGVjdFhT
U1xuIik7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRR
dDo6c2F2ZVZpZXdTdGF0ZVRvSXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSogaXRlbSkKIHsKICAg
ICBRV2ViSGlzdG9yeUl0ZW0gaGlzdG9yeUl0ZW0obmV3IFFXZWJIaXN0b3J5SXRlbVByaXZhdGUo
aXRlbSkpOwpJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHJldmlzaW9uIDk4NTE1KQorKysgU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE2Miw2ICsxNjIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BM
b2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5J
bnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJik7CisgICAgdmlydHVh
bCBib29sIGRpZERldGVjdFhTUyhTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmLCBib29sKTsK
IAogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpOwpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gOTg1
MTUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1Niw2ICs2NTYsMTIgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cgogICAgIGZyYW1lTG9hZERlbGVnYXRlUHJpdjIt
PmRpZFJ1bkluc2VjdXJlQ29udGVudCh3ZWJWaWV3LCB3ZWJTZWN1cml0eU9yaWdpbi5nZXQoKSk7
CiB9CiAKK2Jvb2wgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZERldGVjdFhTUyhTZWN1cml0eU9y
aWdpbiosIGNvbnN0IEtVUkwmLCBib29sKQoreworICAgIC8vIEZJWE1FOiBwcm9wb2dhdGUgY2Fs
bCBpbnRvIHRoZSBwcml2YXRlIGRlbGVnYXRlLgorICAgIHJldHVybiBmYWxzZTsKK30KKwogUGFz
c1JlZlB0cjxEb2N1bWVudExvYWRlcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3Vt
ZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0
ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQogewogICAgIFJlZlB0cjxXZWJEb2N1bWVudExvYWRlcj4g
bG9hZGVyID0gV2ViRG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0
YSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDk4NTE1KQorKysgU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtOTgsNiArOTgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxh
eUluc2VjdXJlQ29udGVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRl
bnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAg
dmlydHVhbCBib29sIGRpZERldGVjdFhTUyhXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBib29sKTsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3Jl
OjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNv
bnN0IFdlYkNvcmU6OktVUkwmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcAkocmV2
aXNpb24gOTg1MTUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50V2luQ0UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzQsNiArMjc0LDExIEBA
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlkUnVuSW5zZWMKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCitib29sIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpZERldGVjdFhTUyhT
ZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmLCBib29sKQoreworICAgIHJldHVybiBmYWxzZTsK
K30KKwogdm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjptYWtlUmVwcmVzZW50YXRpb24oRG9j
dW1lbnRMb2FkZXIqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V2luQ0UuaAkocmV2aXNpb24gOTg1MTUpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaAkod29ya2luZyBjb3B5KQpAQCAtMTQw
LDYgKzE0MCw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1
cmVDb250ZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFs
IGJvb2wgZGlkRGV0ZWN0WFNTKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2ViQ29y
ZTo6S1VSTCYsIGJvb2wpOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNh
bmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZpcnR1
YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJL
aXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCShyZXZpc2lvbiA5ODUxNSkKKysrIFNv
dXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjAyLDYgKzYwMiwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6
OmRpZFJ1bkluc2VjdXJlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBGcmFtZUxv
YWRlckNsaWVudFd4OjpkaWREZXRlY3RYU1MoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25z
dCBLVVJMJiwgYm9vbCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRXeDo6c2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlVG9JdGVtKFdlYkNvcmU6
Okhpc3RvcnlJdGVtKikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpJbmRleDogU291cmNlL1dl
YktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCShy
ZXZpc2lvbiA5ODUxNSkKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFd4LmgJKHdvcmtpbmcgY29weSkKQEAgLTE3MCw2ICsxNzAsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUlu
c2VjdXJlQ29udGVudCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250
ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYpOworICAgICAgICB2aXJ0dWFsIGJvb2wg
ZGlkRGV0ZWN0WFNTKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYsIGJvb2wpOwogCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBzZXRNYWluRG9jdW1lbnRFcnJvcihEb2N1bWVudExvYWRlciosIGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQo
RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAJKHJldmlzaW9uIDk4NTE1KQorKysg
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTcxLDYgKzExNzEsMTQgQEAgdm9pZCBXZWJWaWV3SG9zdDo6ZGlkUnVuSW5zZWN1
cmVDb250ZW50KAogICAgICAgICBmcHV0cygiZGlkUnVuSW5zZWN1cmVDb250ZW50XG4iLCBzdGRv
dXQpOwogfQogCitib29sIFdlYlZpZXdIb3N0OjpkaWREZXRlY3RYU1MoV2ViRnJhbWUqLCBjb25z
dCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBjb25zdCBXZWJVUkwmIGluc2VjdXJlVVJMLCBi
b29sIHN0b3BMb2FkaW5nKQoreworICAgIGlmIChtX3NoZWxsLT5zaG91bGREdW1wRnJhbWVMb2Fk
Q2FsbGJhY2tzKCkpCisgICAgICAgIGZwdXRzKCJkaWREZXRlY3RYU1NcbiIsIHN0ZG91dCk7CisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgV2ViVmlld0hvc3Q6Om9wZW5GaWxlU3lzdGVt
KFdlYkZyYW1lKiBmcmFtZSwgV2ViRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6
ZSwgYm9vbCBjcmVhdGUsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcykKIHsKICAg
ICB3ZWJraXRfc3VwcG9ydDo6T3BlbkZpbGVTeXN0ZW0oZnJhbWUsIHR5cGUsIHNpemUsIGNyZWF0
ZSwgY2FsbGJhY2tzKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZp
ZXdIb3N0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuaAkocmV2aXNpb24gOTg1MTUpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJWaWV3SG9zdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDksNiArMjA5LDcgQEAgY2xh
c3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJTcAogICAgIHZpcnR1YWwgdm9pZCBk
aWRGYWlsUmVzb3VyY2VMb2FkKFdlYktpdDo6V2ViRnJhbWUqLCB1bnNpZ25lZCBpZGVudGlmaWVy
LCBjb25zdCBXZWJLaXQ6OldlYlVSTEVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3Bs
YXlJbnNlY3VyZUNvbnRlbnQoV2ViS2l0OjpXZWJGcmFtZSopOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2Vi
U2VjdXJpdHlPcmlnaW4mLCBjb25zdCBXZWJLaXQ6OldlYlVSTCYpOworICAgIHZpcnR1YWwgYm9v
bCBkaWREZXRlY3RYU1MoV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViU2VjdXJp
dHlPcmlnaW4mLCBjb25zdCBXZWJLaXQ6OldlYlVSTCYsIGJvb2wpOwogICAgIHZpcnR1YWwgdm9p
ZCBvcGVuRmlsZVN5c3RlbShXZWJLaXQ6OldlYkZyYW1lKiwgV2ViS2l0OjpXZWJGaWxlU3lzdGVt
OjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdlYktpdDo6V2ViRmlsZVN5c3Rl
bUNhbGxiYWNrcyopOwogCiAgICAgV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1v
Y2sqIGRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaygpOwpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctd2l0aC1jYWxsYmFja3MtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
eHNzQXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtY2FsbGJhY2tzLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3Jp
cHQtdGFnLXdpdGgtY2FsbGJhY2tzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMiBAQAorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRGaW5pc2hEb2N1bWVu
dExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAt
IGRpZENvbW1pdExvYWRGb3JGcmFtZQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQg
dG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91
bmQgd2l0aGluIHJlcXVlc3QuCisKK2RpZERldGVjdFhTUworZnJhbWUgIjwhLS1mcmFtZVBhdGgg
Ly88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCitmcmFt
ZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkSGFuZGxlT25sb2FkRXZl
bnRzRm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQor
ZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZEZpbmlzaExvYWRG
b3JGcmFtZQorbWFpbiBmcmFtZSAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQorCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLWNh
bGxiYWNrcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtY2FsbGJhY2tzLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRh
Zy13aXRoLWNhbGxiYWNrcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKTsKKyAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuc2V0WFNTQXVkaXRvckVuYWJsZWQodHJ1ZSk7Cit9Cis8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1
cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLnBsP3E9PHNjcmlwdD5hbGVy
dChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4NTgsMHg1MywweDUzKSk8L3NjcmlwdD4iPgorPC9pZnJh
bWU+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112790</attachid>
            <date>2011-10-27 17:45:51 -0700</date>
            <delta_ts>2011-10-28 13:52:26 -0700</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>patch_70973.txt</filename>
            <type>text/plain</type>
            <size>51544</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4NjY5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMTAtMjcgIFRvbSBTZXBl
eiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgWFNTQXVkaXRvciBpcyBzaWxlbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwOTczCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0
cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctd2l0aC1jYWxsYmFja3MuaHRt
bAorCisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpYU1NBdWRpdG9yOjpmaWx0ZXJUb2tlbik6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGV0
ZWN0WFNTKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmRpZERldGVjdFhTUyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1l
TG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTEt
MTAtMjcgIFNoYXduIFNpbmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
W2Nocm9taXVtXSBUcmFjayB3aGVuIENDTGF5ZXJJbXBsIHByb3BlcnRpZXMgaGF2ZSBjaGFuZ2Vk
LgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAJKHJldmlz
aW9uIDk4NjU5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI4MCwxNSArMjgwLDggQEAgdm9pZCBYU1NBdWRpdG9yOjpmaWx0
ZXJUb2tlbihIVE1MVG9rZW4mIAogICAgIH0KIAogICAgIGlmIChkaWRCbG9ja1NjcmlwdCkgewot
ICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIgdXNpbmcgYSBtb3JlIGhlbHBmdWwgY29uc29sZSBt
ZXNzYWdlLgotICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgY29uc29sZU1lc3Nh
Z2UsICgiUmVmdXNlZCB0byBleGVjdXRlIGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2Rl
IG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVxdWVzdC5cbiIpKTsKICAgICAgICAgLy8gRklYTUU6
IFdlIHNob3VsZCBhZGQgdGhlIHJlYWwgbGluZSBudW1iZXIgdG8gdGhlIGNvbnNvbGUuCi0gICAg
ICAgIG1fcGFyc2VyLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNz
YWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBj
b25zb2xlTWVzc2FnZSwgMSwgU3RyaW5nKCkpOwotCi0gICAgICAgIGlmIChtX3hzc1Byb3RlY3Rp
b24gPT0gWFNTUHJvdGVjdGlvbkJsb2NrRW5hYmxlZCkgewotICAgICAgICAgICAgbV9wYXJzZXIt
PmRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT5zdG9wQWxsTG9hZGVycygpOwotICAgICAg
ICAgICAgbV9wYXJzZXItPmRvY3VtZW50KCktPmZyYW1lKCktPm5hdmlnYXRpb25TY2hlZHVsZXIo
KS0+c2NoZWR1bGVMb2NhdGlvbkNoYW5nZShtX3BhcnNlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSwgYmxhbmtVUkwoKSwgU3RyaW5nKCkpOwotICAgICAgICB9CisgICAgICAgIG1fcGFy
c2VyLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5sb2FkZXIoKS0+ZGlkRGV0ZWN0WFNTKDEsIChtX3hz
c1Byb3RlY3Rpb24gPT0gWFNTUHJvdGVjdGlvbkJsb2NrRW5hYmxlZCkpOwogICAgIH0KIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gOTg2NTkpCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM3MCw2ICszNzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNl
Y3VyZUNvbnRlbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50
KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRE
ZXRlY3RYU1MoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJiwgS1VSTCYsIGJvb2wpIHsgfQog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYsIGNv
bnN0IFN0cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGJvb2ws
IGludCwgaW50KSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFRyYW5zZmVyQ2hp
bGRGcmFtZVRvTmV3RG9jdW1lbnQoUGFnZSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zl
ckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgUGFnZSopIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCShyZXZpc2lvbiA5ODY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkzNCw2ICs5MzQsMjMgQEAgYm9vbCBGcmFtZUxvYWRl
cjo6Y2hlY2tJZlJ1bkluc2VjdXJlQ29udAogICAgIHJldHVybiBhbGxvd2VkOwogfQogCit2b2lk
IEZyYW1lTG9hZGVyOjpkaWREZXRlY3RYU1MoaW50IGxpbmVOdW1iZXIsIGJvb2wgYmxvY2tFbmFi
bGVkKQoreworICAgIC8vIEZJWE1FOiBDb25zaWRlciB1c2luZyBhIG1vcmUgaGVscGZ1bCBjb25z
b2xlIG1lc3NhZ2UuCisgICAgY29uc3QgY2hhciogbWVzc2FnZSA9ICJSZWZ1c2VkIHRvIGV4ZWN1
dGUgYSBKYXZhU2NyaXB0IHNjcmlwdC4gU291cmNlIGNvZGUgb2Ygc2NyaXB0IGZvdW5kIHdpdGhp
biByZXF1ZXN0LlxuIjsKKyAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRN
ZXNzYWdlKEhUTUxNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2
ZWwsIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIFN0cmluZygpKTsKKworICAgIGlmIChibG9ja0VuYWJs
ZWQpCisgICAgICAgIHN0b3BBbGxMb2FkZXJzKCk7CisKKyAgICBLVVJMIGVycm9yUGFnZVVSTCA9
IGJsYW5rVVJMKCk7CisgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IG1fZnJhbWUtPmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CisgICAgbV9jbGllbnQtPmRpZERldGVjdFhTUyhvcmln
aW4sIG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLCBlcnJvclBhZ2VVUkwsIGJsb2NrRW5hYmxl
ZCk7CisKKyAgICBpZiAoYmxvY2tFbmFibGVkKQorICAgICAgICBtX2ZyYW1lLT5uYXZpZ2F0aW9u
U2NoZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2Uob3JpZ2luLCBlcnJvclBhZ2VVUkws
IFN0cmluZygpKTsKK30KKwogRnJhbWUqIEZyYW1lTG9hZGVyOjpvcGVuZXIoKQogewogICAgIHJl
dHVybiBtX29wZW5lcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZp
c2lvbiA5ODY1OSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjIsNiArMjIyLDggQEAgcHVibGljOgogICAgIGJvb2wgY2hlY2tJZkRp
c3BsYXlJbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIGNvbnRleHQsIGNvbnN0IEtVUkwm
KTsKICAgICBib29sIGNoZWNrSWZSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIGNv
bnRleHQsIGNvbnN0IEtVUkwmKTsKIAorICAgIHZvaWQgZGlkRGV0ZWN0WFNTKGludCBsaW5lTnVt
YmVyLCBib29sIGJsb2NrRW5hYmxlZCk7CisKICAgICBGcmFtZSogb3BlbmVyKCk7CiAgICAgdm9p
ZCBzZXRPcGVuZXIoRnJhbWUqKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDk4NjU5KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw2ICsyMDgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIHNjcmlwdCkgZnJvbSBhbiBpbnNlY3VyZSBz
b3VyY2UuICBOb3RlIHRoYXQgdGhlIGluc2VjdXJlIGNvbnRlbnQgY2FuCiAgICAgICAgIC8vIHNw
cmVhZCB0byBvdGhlciBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYp
ID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhTZWN1cml0eU9yaWdpbios
IGNvbnN0IEtVUkwmLCBLVVJMJiwgYm9vbCkgPSAwOwogCiAgICAgICAgIHZpcnR1YWwgUmVzb3Vy
Y2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JikgPSAwOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gOTg2NjkpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAorMjAxMS0xMC0y
NyAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KKworICAgICAgICBYU1NBdWRpdG9y
IGlzIHNpbGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzA5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAod2Via2l0V2ViTG9hZGVyQ2xp
ZW50QXR0YWNoTG9hZGVyQ2xpZW50VG9QYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTG9h
ZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyQ2xpZW50OjpkaWREZXRl
Y3RYU1NGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmRpZERldGVjdFhTU0ZvckZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxl
UGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1NGb3JGcmFtZSk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZERldGVjdFhTUyk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5oOgorCiAyMDExLTEwLTI3ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+
CiAKICAgICAgICAgQWRkIGEgUGx1Z2luOjpnZW9tZXRyeURpZENoYW5nZSB0aGF0IHdpbGwgd29y
ayB3aXRoIHRyYW5zZm9ybXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2Fk
ZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJM
b2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiA5ODY1OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNiArMTQ3LDE0
IEBAIHZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNvbnQKICAgICBtX2NsaWVu
dC5kaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUp
LCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCit2b2lkIFdlYkxv
YWRlckNsaWVudDo6ZGlkRGV0ZWN0WFNTRm9yRnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJG
cmFtZVByb3h5KiBmcmFtZSwgQVBJT2JqZWN0KiB1c2VyRGF0YSkKK3sKKyAgICBpZiAoIW1fY2xp
ZW50LmRpZERldGVjdFhTU0ZvckZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVu
dC5kaWREZXRlY3RYU1NGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSSh1
c2VyRGF0YSksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCiBib29sIFdlYkxvYWRlckNsaWVu
dDo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUoV2ViUGFnZVBy
b3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgV2ViUHJvdGVjdGlvblNwYWNlKiBwcm90
ZWN0aW9uU3BhY2UpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0
UHJvdGVjdGlvblNwYWNlSW5GcmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDk4NjU5KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeShXZWJQYWdlUHJv
eHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJT2JqZWN0Kik7CiAgICAgdm9pZCBkaWREaXNwbGF5SW5z
ZWN1cmVDb250ZW50Rm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSU9i
amVjdCopOwogICAgIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV2ViUGFnZVBy
b3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSU9iamVjdCopOworICAgIHZvaWQgZGlkRGV0ZWN0WFNT
Rm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSU9iamVjdCopOwogICAg
IAogICAgIGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUo
V2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIFdlYlByb3RlY3Rpb25TcGFjZSopOwogICAg
IHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZShXZWJQYWdlUHJv
eHkqLCBXZWJGcmFtZVByb3h5KiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSopOwpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDk4
NjU5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE4MzQsNiArMTgzNCwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUnVu
SW5zZWN1cmVDb250ZW50CiAgICAgbV9sb2FkZXJDbGllbnQuZGlkUnVuSW5zZWN1cmVDb250ZW50
Rm9yRnJhbWUodGhpcywgZnJhbWUsIHVzZXJEYXRhLmdldCgpKTsKIH0KIAordm9pZCBXZWJQYWdl
UHJveHk6OmRpZERldGVjdFhTU0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIENvcmVJUEM6OkFy
Z3VtZW50RGVjb2RlciogYXJndW1lbnRzKQoreworICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJE
YXRhOworICAgIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNl
ckRhdGEsIG1fcHJvY2Vzcy0+Y29udGV4dCgpKTsKKyAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2Rl
KG1lc3NhZ2VEZWNvZGVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViRnJhbWVQcm94eSog
ZnJhbWUgPSBwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpOworICAgIE1FU1NBR0VfQ0hFQ0so
ZnJhbWUpOworCisgICAgbV9sb2FkZXJDbGllbnQuZGlkRGV0ZWN0WFNTRm9yRnJhbWUodGhpcywg
ZnJhbWUsIHVzZXJEYXRhLmdldCgpKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmZyYW1lRGlk
QmVjb21lRnJhbWVTZXQodWludDY0X3QgZnJhbWVJRCwgYm9vbCB2YWx1ZSkKIHsKICAgICBXZWJG
cmFtZVByb3h5KiBmcmFtZSA9IHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiA5ODY1OSkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpA
QCAtNjA3LDYgKzYwNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZW1vdmVGcmFtZUZyb21I
aWVyYXJjaHkodWludDY0X3QgZnJhbWVJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiAg
ICAgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiAgICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNv
bnRlbnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIq
KTsKKyAgICB2b2lkIGRpZERldGVjdFhTU0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciopOwogICAgIHZvaWQgZnJhbWVEaWRCZWNvbWVGcmFtZVNldCh1
aW50NjRfdCBmcmFtZUlELCBib29sKTsKICAgICB2b2lkIGRpZFN0YXJ0UHJvZ3Jlc3MoKTsKICAg
ICB2b2lkIGRpZENoYW5nZVByb2dyZXNzKGRvdWJsZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDk4NjU5
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgko
d29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94
eSB7CiAgICAgRGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV1RGOjpT
dHJpbmcgdGl0bGUsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNl
ckRhdGEpCiAgICAgRGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEp
CiAgICAgRGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKKyAgICBEaWRE
ZXRlY3RYU1NGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkluamVjdGVkQnVuZGxl
VXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRhKQogICAgIERpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b25Gb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50MzJfdCB0eXBlLCBXVEY6OlN0cmluZyB1
cmwsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpCiAK
ICAgICBGcmFtZURpZEJlY29tZUZyYW1lU2V0KHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgdmFsdWUp
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCShyZXZpc2lvbiA5
ODY1OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNjQsNiArNjQsNyBAQCB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRGaXJzdFZp
c3VhbGx5Tm9uCiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJj
aHlDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1
c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VE
aWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2Us
IFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFt
ZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVz
ZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLUGFnZURp
ZERldGVjdFhTU0ZvckZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZy
YW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRl
ZiBib29sICgqV0tQYWdlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJh
bWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUHJvdGVjdGlv
blNwYWNlUmVmIHByb3RlY3Rpb25TcGFjZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBl
ZGVmIHZvaWQgKCpXS1BhZ2VEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1l
Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0F1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUmVmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBjb25zdCB2b2lkICpjbGll
bnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZENoYW5nZUJhY2tGb3J3YXJkTGlzdENh
bGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGFkZGVkSXRl
bSwgV0tBcnJheVJlZiByZW1vdmVkSXRlbXMsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwpAQCAt
ODcsNiArODgsNyBAQCBzdHJ1Y3QgV0tQYWdlTG9hZGVyQ2xpZW50IHsKICAgICBXS1BhZ2VEaWRS
ZW1vdmVGcmFtZUZyb21IaWVyYXJjaHlDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeTsKICAgICBXS1BhZ2VEaWREaXNwbGF5SW5zZWN1
cmVDb250ZW50Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgIGRpZERpc3BsYXlJ
bnNlY3VyZUNvbnRlbnRGb3JGcmFtZTsKICAgICBXS1BhZ2VEaWRSdW5JbnNlY3VyZUNvbnRlbnRG
b3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJ1bkluc2VjdXJlQ29u
dGVudEZvckZyYW1lOworICAgIFdLUGFnZURpZERldGVjdFhTU0ZvckZyYW1lQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRGV0ZWN0WFNTRm9yRnJhbWU7CiAgICAg
V0tQYWdlQ2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWVDYWxsYmFj
ayAgICAgICAgICBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZTsK
ICAgICBXS1BhZ2VEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lQ2FsbGJh
Y2sgICAgICAgICAgICAgIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWU7
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxvYWRl
ckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gOTg2NTkpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTEsNiArMTUxLDcgQEAgdm9pZCB3ZWJraXRXZWJMb2FkZXJDbGllbnRB
dHRhY2hMb2FkZXJDbAogICAgICAgICAwLCAvLyBkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkK
ICAgICAgICAgMCwgLy8gZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lCiAgICAgICAg
IDAsIC8vIGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lCisgICAgICAgIDAsIC8vIGRpZERl
dGVjdFhTU0ZvckZyYW1lCiAgICAgICAgIDAsIC8vIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2VJbkZyYW1lCiAgICAgICAgIDAsIC8vIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUluRnJhbWUKICAgICAgICAgZGlkQ2hhbmdlUHJvZ3Jlc3MsIC8vIGRpZFN0YXJ0
UHJvZ3Jlc3MKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5jcHAJKHJldmlzaW9uIDk4NjU5KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTYsNiArMTU2LDE2IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50OjpkaWQKICAgICB1c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRv
UGFzcykpOwogfQogCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkRGV0
ZWN0WFNTRm9yRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1lLCBSZWZQdHI8QVBJ
T2JqZWN0PiYgdXNlckRhdGEpCit7CisgICAgaWYgKCFtX2NsaWVudC5kaWRSdW5JbnNlY3VyZUNv
bnRlbnRGb3JGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV0tUeXBlUmVmIHVzZXJEYXRh
VG9QYXNzID0gMDsKKyAgICBtX2NsaWVudC5kaWREZXRlY3RYU1NGb3JGcmFtZSh0b0FQSShwYWdl
KSwgdG9BUEkoZnJhbWUpLCAmdXNlckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOwor
ICAgIHVzZXJEYXRhID0gYWRvcHRSZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7Cit9CisKIHZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWRGaXJzdExheW91dEZvckZyYW1l
KFdlYlBhZ2UqIHBhZ2UsIFdlYkZyYW1lKiBmcmFtZSwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJE
YXRhKQogewogICAgIGlmICghbV9jbGllbnQuZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAkocmV2aXNp
b24gOTg2NTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1
OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeShXZWJQ
YWdlKiwgV2ViRnJhbWUqLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOwogICAgIHZvaWQg
ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJl
ZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CiAgICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRl
bnRGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRh
dGEpOworICAgIHZvaWQgZGlkRGV0ZWN0WFNTRm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwg
UmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKIAogICAgIHZvaWQgZGlkRmlyc3RMYXlvdXRG
b3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEp
OwogICAgIHZvaWQgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUoV2ViUGFn
ZSosIFdlYkZyYW1lKiwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvYy9XS0J1bmRsZVBhZ2UuaAkocmV2aXNpb24gOTg2NTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC05Miw2ICs5Miw3IEBAIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZFJlY2Vp
dmVUaXQKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZFJlbW92ZUZyYW1lRnJvbUhpZXJh
cmNoeUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFt
ZSwgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVm
IHZvaWQgKCpXS0J1bmRsZVBhZ2VEaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWVDYWxs
YmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlw
ZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgq
V0tCdW5kbGVQYWdlRGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWVDYWxsYmFjaykoV0tCdW5k
bGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiogdXNlckRh
dGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdl
RGlkRGV0ZWN0WFNTRm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVu
ZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkRmlyc3RMYXlvdXRGb3JGcmFt
ZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwg
V0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZv
aWQgKCpXS0J1bmRsZVBhZ2VEaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZUNh
bGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tU
eXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQg
KCpXS0J1bmRsZVBhZ2VEaWRMYXlvdXRGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYg
cGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CkBA
IC0xMjYsNiArMTI3LDcgQEAgc3RydWN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCB7CiAKICAg
ICAvLyBWZXJzaW9uIDEuCiAgICAgV0tCdW5kbGVQYWdlRGlkTGF5b3V0Rm9yRnJhbWVDYWxsYmFj
ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWRMYXlvdXRGb3JGcmFtZTsKKyAgICBX
S0J1bmRsZVBhZ2VEaWREZXRlY3RYU1NGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRpZERldGVjdFhTU0ZvckZyYW1lOwogfTsKIHR5cGVkZWYgc3RydWN0IFdLQnVu
ZGxlUGFnZUxvYWRlckNsaWVudCBXS0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQ7CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiA5ODY1OSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NDQsNiArOTQ0LDE5IEBAIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXIKICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQo
KSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiB9
CiAKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZERldGVjdFhTUyhTZWN1cml0eU9yaWdp
biosIGNvbnN0IEtVUkwmLCBLVVJMJiwgYm9vbCkKK3sKKyAgICBXZWJQYWdlKiB3ZWJQYWdlID0g
bV9mcmFtZS0+cGFnZSgpOworICAgIGlmICghd2ViUGFnZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CisKKyAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1
bmRsZUxvYWRlckNsaWVudCgpLmRpZERldGVjdFhTU0ZvckZyYW1lKHdlYlBhZ2UsIG1fZnJhbWUs
IHVzZXJEYXRhKTsKKworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkRGV0ZWN0WFNTRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBJbmplY3RlZEJ1bmRsZVVz
ZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKK30KKwogUmVzb3VyY2VFcnJvciBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogewogICAgIHJldHVybiBXZWJLaXQ6OmNhbmNlbGxlZEVycm9yKHJlcXVlc3Qp
OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gOTg2NTkpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw2ICsxMzcsNyBAQCBwcml2YXRlOgogCiAg
ICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKSBPVkVSUklERTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBk
aWREZXRlY3RYU1MoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJDb3JlOjpLVVJM
JiwgV2ViQ29yZTo6S1VSTCYsIGJvb2wpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9j
a2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gOTg2NjkpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisy
MDExLTEwLTI3ICBUb20gU2VwZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFhT
U0F1ZGl0b3IgaXMgc2lsZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MDk3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogcHVibGljL1dlYkZyYW1lQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUNsaWVudDo6ZGlkRGV0ZWN0WFNTKToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpk
aWREZXRlY3RYU1MpOgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaDoKKwog
MjAxMS0xMC0yNyAgUGVuZyBIdWFuZyAgPHBlbmdodWFuZ0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW2Nocm9taXVtXSBSZW1vdmUgc29tZSBBUElzIHdoaWNoIGFyZSBub3QgdXNlZCBhbnltb3Jl
LgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVu
dC5oCShyZXZpc2lvbiA5ODY1OSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkZyYW1lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4NCw3ICsyODQsMTIgQEAgcHVibGlj
OgogICAgIC8vIFRoZSBpbmRpY2F0ZWQgc2VjdXJpdHkgb3JpZ2luIGhhcyBydW4gYWN0aXZlIGNv
bnRlbnQgKHN1Y2ggYXMgYQogICAgIC8vIHNjcmlwdCkgZnJvbSBhbiBpbnNlY3VyZSBzb3VyY2Uu
ICBOb3RlIHRoYXQgdGhlIGluc2VjdXJlIGNvbnRlbnQgY2FuCiAgICAgLy8gc3ByZWFkIHRvIG90
aGVyIGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCi0gICAgdmlydHVhbCB2b2lkIGRpZFJ1bklu
c2VjdXJlQ29udGVudChXZWJGcmFtZSosIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwgY29uc3Qg
V2ViVVJMJiBpbnNlY3VyZVVSTCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJl
Q29udGVudChXZWJGcmFtZSosIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiwgY29uc3QgV2ViVVJM
JikgeyB9CisKKyAgICAvLyBBIHJlZmxlY3RlZCBYU1Mgd2FzIGVuY291bnRlcmVkIGluIHRoZSBw
YWdlIGFuZCBzdXBwcmVzc2VkLiAgUmV0dXJuIHRydWUKKyAgICAvLyBpZiB0aGUgY2xpZW50IGhh
cyBjb21wbGV0ZWx5IGhhbmRsZWQgbm90aWZpY2F0aW9uLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNl
CisgICAgLy8gdG8gYWxsb3cgdGhlIGRlZmF1bHQgaGFuZGxpbmcgdG8gY29udGludWUuCisgICAg
dmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhXZWJGcmFtZSosIGNvbnN0IFdlYlNlY3VyaXR5T3Jp
Z2luJiwgY29uc3QgV2ViVVJMJiwgV2ViVVJMJiwgYm9vbCkgeyB9CiAKICAgICAvLyBUaGlzIGZy
YW1lIGFkb3B0ZWQgdGhlIHJlc291cmNlIHRoYXQgaXMgYmVpbmcgbG9hZGVkLiBUaGlzIGhhcHBl
bnMgd2hlbgogICAgIC8vIGFuIGlmcmFtZSwgdGhhdCBpcyBsb2FkaW5nIGEgc3VicmVzb3VyY2Us
IGlzIHRyYW5zZmVycmVkIGJldHdlZW4gd2luZG93cy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkocmV2aXNpb24g
OTg2NTkpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTk1LDYgKzExOTUsMTUgQEAgdm9pZCBGcmFtZUxv
YWRlckNsaWVudEltcGw6OmRpZFJ1bkluc2VjdQogICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQo
KS0+ZGlkUnVuSW5zZWN1cmVDb250ZW50KG1fd2ViRnJhbWUsIFdlYlNlY3VyaXR5T3JpZ2luKG9y
aWdpbiksIGluc2VjdXJlVVJMKTsKIH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRp
ZERldGVjdFhTUyhTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBLVVJMJiBpbnNlY3VyZVVS
TCwgS1VSTCYgZXJyb3JQYWdlVVJMLCBib29sIGJsb2NrRW5hYmxlZCkKK3sKKyAgICBpZiAobV93
ZWJGcmFtZS0+Y2xpZW50KCkpIHsKKyAgICAgICAgV2ViVVJMIGVycm9yUGFnZVdlYlVSTCA9IFdl
YlVSTChlcnJvclBhZ2VVUkwpOworICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkRGV0
ZWN0WFNTKG1fd2ViRnJhbWUsIFdlYlNlY3VyaXR5T3JpZ2luKG9yaWdpbiksIGluc2VjdXJlVVJM
LCBlcnJvclBhZ2VXZWJVUkwsIGJsb2NrRW5hYmxlZCk7CisgICAgICAgIGVycm9yUGFnZVVSTCA9
IEtVUkwoZXJyb3JQYWdlV2ViVVJMKTsKKyAgICB9Cit9CisKIFJlc291cmNlRXJyb3IgRnJhbWVM
b2FkZXJDbGllbnRJbXBsOjpibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikKIHsK
ICAgICAvLyBGSVhNRQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHJldmlzaW9uIDk4NjU5KQorKysgU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEzOCw2ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BMb2Fk
aW5nRm9ySGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qKSBjb25zdDsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBpbnNlY3VyZVVSTCk7CisgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBXZWJDb3JlOjpL
VVJMJiwgYm9vbCk7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRF
cnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jik7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbm5vdFNob3dV
UkxFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDk4NjY5KQorKysgU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTAtMjcgIFRvbSBTZXBleiAgPHRz
ZXBlekBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgWFNTQXVkaXRvciBpcyBzaWxlbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwOTczCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudEVmbDo6ZGlkRGV0ZWN0WFNTKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEVmbC5oOgorCiAyMDExLTEwLTI2ICBaYWxhbiBCdWp0YXMgIDx6YnVqdGFz
QGdtYWlsLmNvbT4KIAogICAgICAgICBOYW1lIHZpZXdwb3J0IGNoYW5nZSBldmVudCBjb25zaXN0
ZW50bHkuCkluZGV4OiBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCShyZXZpc2lvbiA5ODY1OSkKKysrIFNvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTMxLDYgKzUzMSwxMCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZs
OjpkaWRSdW5JbnNlY3VyCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBGcmFtZUxv
YWRlckNsaWVudEVmbDo6ZGlkRGV0ZWN0WFNTKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYs
IEtVUkwmLCBib29sKQoreworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjptYWtlUmVw
cmVzZW50YXRpb24oRG9jdW1lbnRMb2FkZXIqKQogewogICAgIG1faGFzUmVwcmVzZW50YXRpb24g
PSB0cnVlOwpJbmRleDogU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRFZmwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCShyZXZpc2lvbiA5ODY1OSkKKysrIFNvdXJjZS9X
ZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE2Myw2ICsxNjMsNyBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6IHB1
YmxpYyBGcmFtCiAgICAgdmlydHVhbCBib29sIHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0
ZW0oSGlzdG9yeUl0ZW0qKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2Vj
dXJlQ29udGVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2Vj
dXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhT
UyhTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmLCBLVVJMJiwgYm9vbCk7CiAKICAgICB2aXJ0
dWFsIFJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7
CiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBSZXNvdXJjZVJl
cXVlc3QmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4NjY5KQorKysgU291cmNl
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTEtMTAtMjcgIFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgWFNT
QXVkaXRvciBpcyBzaWxlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcwOTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmg6CisKIDIwMTEtMTAtMjcgIFBo
aWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFt
ZXJdIFdlYkF1ZGlvIEF1ZGlvRmlsZVJlYWRlciBpbXBsZW1lbnRhdGlvbgpJbmRleDogU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmNwcAkocmV2aXNpb24gOTg2NTkpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNCw2
ICs3MjQsMTEgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDbwogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpZERldGVj
dFhTUyhTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmLCBLVVJMJiwgYm9vbCkKK3sKKyAgICBu
b3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjptYWtlUmVwcmVz
ZW50YXRpb24oV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKQogewogICAgIG1faGFzUmVwcmVzZW50
YXRpb24gPSB0cnVlOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCShyZXZpc2lvbiA5ODY1OSkKKysrIFNv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE0NSw2ICsxNDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0
WFNTKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYsIFdlYkNv
cmU6OktVUkwmLCBib29sKTsKIAogICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAg
ICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5
ODY2OSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE5IEBACisyMDExLTEwLTI3ICBUb20gU2VwZXogIDx0c2VwZXpAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFhTU0F1ZGl0b3IgaXMgc2lsZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDk3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQp
OgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZERldGVjdFhTUyk6CisgICAgICAg
ICogV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oOgorICAgICAgICAq
IFdlYlZpZXcvV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jYWNoZUZyYW1lTG9hZERlbGVnYXRl
SW1wbGVtZW50YXRpb25zXSk6CisKIDIwMTEtMTAtMjcgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29y
YXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBLaWx6ZXIuCkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDk4NjU5KQorKysgU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2
LDYgKzE1Niw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2Vj
dXJlQ29udGVudCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNv
bnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBXZWJDb3JlOjpLVVJMJiwgYm9vbCkgT1ZFUlJJ
REU7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBX
ZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiA5ODY1
OSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05ODksMTIgKzk4OSwyNCBAQCB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaWREaXNwbGF5SW5zCiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBLVVJM
JiBpbnNlY3VyZVVSTCkKIHsKLSAgICBSZXRhaW5QdHI8V2ViU2VjdXJpdHlPcmlnaW4+IHdlYlNl
Y3VyaXR5T3JpZ2luKEFkb3B0TlMsIFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0
aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpvcmlnaW5dKTsKLQogICAgIFdlYlZpZXcgKndlYlZpZXcg
PSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOyAgIAogICAgIFdlYkZyYW1lTG9hZERlbGVn
YXRlSW1wbGVtZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldEZyYW1l
TG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25zKHdlYlZpZXcpOwotICAgIGlmIChpbXBsZW1lbnRh
dGlvbnMtPmRpZFJ1bkluc2VjdXJlQ29udGVudEZ1bmMpCisgICAgaWYgKGltcGxlbWVudGF0aW9u
cy0+ZGlkUnVuSW5zZWN1cmVDb250ZW50RnVuYykgeworICAgICAgICBSZXRhaW5QdHI8V2ViU2Vj
dXJpdHlPcmlnaW4+IHdlYlNlY3VyaXR5T3JpZ2luKEFkb3B0TlMsIFtbV2ViU2VjdXJpdHlPcmln
aW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpvcmlnaW5dKTsKICAgICAg
ICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkUnVuSW5zZWN1cmVD
b250ZW50RnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkUnVuSW5zZWN1cmVDb250
ZW50OiksIHdlYlNlY3VyaXR5T3JpZ2luLmdldCgpKTsKKyAgICB9Cit9CisKK3ZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpZERldGVjdFhTUyhTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25z
dCBLVVJMJiBpbnNlY3VyZVVSTCwgS1VSTCYgZXJyb3JQYWdlVVJMLCBib29sIGJsb2NrRW5hYmxl
ZCkKK3sKKyAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgp
KTsgICAKKyAgICBXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxl
bWVudGF0aW9ucyA9IFdlYlZpZXdHZXRGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3
ZWJWaWV3KTsKKyAgICBpZiAoaW1wbGVtZW50YXRpb25zLT5kaWREZXRlY3RYU1NGdW5jKSB7Cisg
ICAgICAgIC8vIEZJWE1FOiBtdXN0IHBhc3MgZXJyb3JQYWdlVVJMIGFuZCBibG9ja0VuYWJsZWQg
aWYgd2Ugd2FudCB0byBkbyBtb3JlIG9uIG1hYyB0aGFuIGp1c3QgcGFzcyB0ZXN0cy4KKyAgICAg
ICAgUmV0YWluUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiB3ZWJTZWN1cml0eU9yaWdpbihBZG9wdE5T
LCBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmln
aW46b3JpZ2luXSk7CisgICAgICAgIE5TVVJMKiBpbnNlY3VyZU5TVVJMID0gaW5zZWN1cmVVUkw7
CisgICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZERldGVj
dFhTU0Z1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZERldGVjdFhTUzpmb3JVUkw6
KSwgd2ViU2VjdXJpdHlPcmlnaW4uZ2V0KCksIGluc2VjdXJlTlNVUkwpOworICAgIH0KIH0KIAog
UmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsbGVkRXJyb3IoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcuaAko
cmV2aXNpb24gOTg2NTkpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRl
SW1wbGVtZW50YXRpb25DYWNoaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDcgQEAg
c3RydWN0IFdlYkZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpbwogICAgIElNUCBkaWRGaW5p
c2hEb2N1bWVudExvYWRGb3JGcmFtZUZ1bmM7CiAgICAgSU1QIGRpZERpc3BsYXlJbnNlY3VyZUNv
bnRlbnRGdW5jOwogICAgIElNUCBkaWRSdW5JbnNlY3VyZUNvbnRlbnRGdW5jOworICAgIElNUCBk
aWREZXRlY3RYU1NGdW5jOwogfTsKIAogc3RydWN0IFdlYlNjcmlwdERlYnVnRGVsZWdhdGVJbXBs
ZW1lbnRhdGlvbkNhY2hlIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJh
bWVMb2FkRGVsZWdhdGVQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUuaAkocmV2aXNpb24gOTg2NTkpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMSArMzQsOSBAQAogQGludGVyZmFjZSBOU09iamVjdCAo
V2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlKQogCiAtICh2b2lkKXdlYlZpZXdEaWREaXNwbGF5
SW5zZWN1cmVDb250ZW50OihXZWJWaWV3ICopd2ViVmlldzsKLQogLSAodm9pZCl3ZWJWaWV3OihX
ZWJWaWV3ICopd2ViVmlldyBkaWRSdW5JbnNlY3VyZUNvbnRlbnQ6KFdlYlNlY3VyaXR5T3JpZ2lu
ICopb3JpZ2luOwotCistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRpZERldGVj
dFhTUzooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gZm9yVVJMOihOU1VSTCAqKWluc2VjdXJl
VVJMOwogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkaWRDbGVhcldpbmRvd09i
amVjdEZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lIGluU2NyaXB0V29ybGQ6KFdlYlNjcmlwdFdv
cmxkICopd29ybGQ7Ci0KIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGlkUHVz
aFN0YXRlV2l0aGluUGFnZUZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lOwogLSAodm9pZCl3ZWJW
aWV3OihXZWJWaWV3ICopd2ViVmlldyBkaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlRm9yRnJhbWU6
KFdlYkZyYW1lICopZnJhbWU7CiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRp
ZFBvcFN0YXRlV2l0aGluUGFnZUZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lOwpJbmRleDogU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gOTg2NTkpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1NTEsNiAr
MTU1MSw3IEBAIC0gKHZvaWQpX2NhY2hlRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnQKICAgICBj
YWNoZS0+d2luZG93U2NyaXB0T2JqZWN0QXZhaWxhYmxlRnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0
ZSwgQHNlbGVjdG9yKHdlYlZpZXc6d2luZG93U2NyaXB0T2JqZWN0QXZhaWxhYmxlOikpOwogICAg
IGNhY2hlLT5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50RnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0
ZSwgQHNlbGVjdG9yKHdlYlZpZXdEaWREaXNwbGF5SW5zZWN1cmVDb250ZW50OikpOwogICAgIGNh
Y2hlLT5kaWRSdW5JbnNlY3VyZUNvbnRlbnRGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2Vs
ZWN0b3Iod2ViVmlldzpkaWRSdW5JbnNlY3VyZUNvbnRlbnQ6KSk7CisgICAgY2FjaGUtPmRpZERl
dGVjdFhTU0Z1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZERl
dGVjdFhTUzpmb3JVUkw6KSk7CiB9CiAKIC0gKHZvaWQpX2NhY2hlU2NyaXB0RGVidWdEZWxlZ2F0
ZUltcGxlbWVudGF0aW9ucwpJbmRleDogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4NjY5KQorKysg
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBA
QAorMjAxMS0xMC0yNyAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBYU1NBdWRpdG9yIGlzIHNpbGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzA5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkRGV0ZWN0WFNTKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKIDIwMTEtMTAt
MjcgIEhlbGRlciBDb3JyZWlhICA8aGVsZGVyLmNvcnJlaWFAcGFsbS5jb20+CiAKICAgICAgICAg
W1F0XSBGYWlsdXJlIHRvIGJ1aWxkIHdoZW4gUVRfTk9fTUVOVSBkZWZpbmVkCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5jcHAJKHJldmlzaW9uIDk4NjU5KQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODczLDYgKzg3
MywxNCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZFJ1bkluc2VjdXJlCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWREZXRlY3RY
U1MoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJiwgS1VSTCYsIGJvb2wpCit7
CisgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcykKKyAgICAgICAgcHJpbnRmKCJkaWRE
ZXRlY3RYU1NcbiIpOworCisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBGcmFtZUxv
YWRlckNsaWVudFF0OjpzYXZlVmlld1N0YXRlVG9JdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKiBp
dGVtKQogewogICAgIFFXZWJIaXN0b3J5SXRlbSBoaXN0b3J5SXRlbShuZXcgUVdlYkhpc3RvcnlJ
dGVtUHJpdmF0ZShpdGVtKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkocmV2aXNpb24gOTg2NTkpCisrKyBT
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTYyLDYgKzE2Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkU3RvcExvYWRpbmdGb3JIaXN0b3J5SXRlbShIaXN0b3J5SXRlbSopIGNvbnN0OwogICAg
IHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VS
TCYsIEtVUkwmLCBib29sKTsKIAogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRF
cnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3Ig
YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwpJbmRleDogU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZwkocmV2aXNpb24gOTg2NjkpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0xMC0yNyAgVG9tIFNlcGV6ICA8dHNlcGV6
QGNocm9taXVtLm9yZz4KKworICAgICAgICBYU1NBdWRpdG9yIGlzIHNpbGVudAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA5NzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aWREZXRlY3RYU1MpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisKIDIwMTEtMTAtMjQgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4K
IAogICAgICAgICBCdWlsZCBmaXg6IHJlbW92ZWQgc29tZSBjYXNlcyBvZiB0aHJlYWRzYWZlQ29w
eSgpIHRoYXQgSSBtaXNzZWQgaW4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDk4
NjU5KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTYsNiArNjU2LDExIEBAIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXIKICAgICBmcmFtZUxvYWREZWxlZ2F0ZVByaXYy
LT5kaWRSdW5JbnNlY3VyZUNvbnRlbnQod2ViVmlldywgd2ViU2VjdXJpdHlPcmlnaW4uZ2V0KCkp
OwogfQogCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MoU2VjdXJpdHlP
cmlnaW4qLCBjb25zdCBLVVJMJiwgS1VSTCYsIGJvb2wpCit7CisgICAgLy8gRklYTUU6IHByb3Bv
Z2F0ZSBjYWxsIGludG8gdGhlIHByaXZhdGUgZGVsZWdhdGUuCit9CisKIFBhc3NSZWZQdHI8RG9j
dW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJz
dGl0dXRlRGF0YSkKIHsKICAgICBSZWZQdHI8V2ViRG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IFdl
YkRvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwpJbmRleDog
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCShyZXZpc2lvbiA5ODY1OSkKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk4LDYg
Kzk4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNv
bnRlbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9p
ZCBkaWREZXRlY3RYU1MoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJDb3JlOjpL
VVJMJiwgV2ViQ29yZTo6S1VSTCYsIGJvb2wpOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9u
JiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDk4NjY5KQorKysgU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0xMC0yNyAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBYU1NBdWRpdG9yIGlzIHNpbGVudAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA5NzMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50V2luQ0UuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudFdp
bkNFOjpkaWREZXRlY3RYU1MpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50V2luQ0UuaDoKKwogMjAxMS0xMC0wNyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCBhZnRlciByOTU2MDQu
CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V2luQ0UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAJKHJldmlzaW9uIDk4NjU5KQorKysgU291
cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxMCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50V2luQ0U6OmRpZFJ1bkluc2VjCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBG
cmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaWREZXRlY3RYU1MoU2VjdXJpdHlPcmlnaW4qLCBjb25z
dCBLVVJMJiwgS1VSTCYsIGJvb2wpCit7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRXaW5D
RTo6bWFrZVJlcHJlc2VudGF0aW9uKERvY3VtZW50TG9hZGVyKikKIHsKICAgICBub3RJbXBsZW1l
bnRlZCgpOwpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFdpbkNFLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmgJKHJldmlzaW9uIDk4NjU5KQorKysg
U291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNF
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw2ICsxNDAsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJD
b3JlOjpLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbiosIGNvbnN0IFdlYkNvcmU6OktVUkwmLCBXZWJDb3JlOjpLVVJMJiwgYm9vbCk7
CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd3gvQ2hhbmdlTG9nCShyZXZpc2lvbiA5ODY2OSkKKysrIFNvdXJjZS9XZWJLaXQvd3gv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTAtMjcgIFRv
bSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgWFNTQXVkaXRvciBpcyBz
aWxlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcw
OTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRXeDo6ZGlkRGV0ZWN0WFNTKToKKyAgICAgICAgKiBXZWJLaXRTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guaDoKKwogMjAxMS0wOS0yNCAgQWRhbSBCYXJ0aCAgPGFi
YXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIEFsd2F5cyBlbmFibGUgRU5BQkxFKE9GRkxJTkVf
V0VCX0FQUExJQ0FUSU9OUykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFd4LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dl
YktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAJKHJldmlzaW9uIDk4NjU5KQorKysg
U291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02MDIsNiArNjAyLDExIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRX
eDo6ZGlkUnVuSW5zZWN1cmUKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50V3g6OmRpZERldGVjdFhTUyhXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNv
bnN0IEtVUkwmLCBLVVJMJiwgYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50V3g6OnNhdmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZVRv
SXRlbShXZWJDb3JlOjpIaXN0b3J5SXRlbSopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50V3guaAkocmV2aXNpb24gOTg2NTkpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYktpdFN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNiArMTcw
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJ1
bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhTZWN1cml0eU9yaWdpbiosIGNvbnN0IEtVUkwmLCBL
VVJMJiwgYm9vbCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIHNldE1haW5Eb2N1bWVudEVycm9y
KERvY3VtZW50TG9hZGVyKiwgY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpOwpJ
bmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2
aXNpb24gOTg2NjkpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMyBAQAorMjAxMS0xMC0yNyAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBYU1NBdWRpdG9yIGlzIHNpbGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0
LmNwcDoKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpkaWREZXRlY3RYU1MpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0Lmg6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tOgorICAgICAgICAoLVtGcmFtZUxvYWREZWxl
Z2F0ZSB3ZWJWaWV3OmRpZERldGVjdFhTUzpmb3JVUkw6XSk6CisgICAgICAgICogTWluaUJyb3dz
ZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm06CisgICAgICAgIChkaWREZXRlY3RYU1NG
b3JGcmFtZSk6CisgICAgICAgICgtW0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyIGF3YWtlRnJvbU5p
Yl0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRC
dW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpJbmplY3Rl
ZEJ1bmRsZVBhZ2UpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZERldGVj
dFhTU0ZvckZyYW1lKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlUGFnZS5oOgorCiAyMDExLTEwLTI3ICBEYXZpZCBMZXZpbiAgPGxldmlu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBUZXN0IGV4cGVjdGF0aW9uIGVycm9ycyBzaG91bGQg
aW5jbHVkZSB0aGUgZmlsZSBuYW1lIGFuZCBwbGF0Zm9ybSBpbiBib3RoIHRoZSBsb2cgYW5kIGV4
Y2VwdGlvbiBpbmZvLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlZpZXdIb3N0LmNwcAkocmV2aXNpb24gOTg2NTkpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNzEsNiArMTE3MSwx
MiBAQCB2b2lkIFdlYlZpZXdIb3N0OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQoCiAgICAgICAgIGZw
dXRzKCJkaWRSdW5JbnNlY3VyZUNvbnRlbnRcbiIsIHN0ZG91dCk7CiB9CiAKK3ZvaWQgV2ViVmll
d0hvc3Q6OmRpZERldGVjdFhTUyhXZWJGcmFtZSosIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBv
cmlnaW4sIGNvbnN0IFdlYlVSTCYgaW5zZWN1cmVVUkwsIFdlYlVSTCYgZXJyb3JQYWdlVVJMLCBi
b29sIGJsb2NrRW5hYmxlZCkKK3sKKyAgICBpZiAobV9zaGVsbC0+c2hvdWxkRHVtcEZyYW1lTG9h
ZENhbGxiYWNrcygpKQorICAgICAgICBmcHV0cygiZGlkRGV0ZWN0WFNTXG4iLCBzdGRvdXQpOwor
fQorCiB2b2lkIFdlYlZpZXdIb3N0OjpvcGVuRmlsZVN5c3RlbShXZWJGcmFtZSogZnJhbWUsIFdl
YkZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBXZWJG
aWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7CiAgICAgd2Via2l0X3N1cHBvcnQ6Ok9w
ZW5GaWxlU3lzdGVtKGZyYW1lLCB0eXBlLCBzaXplLCBjcmVhdGUsIGNhbGxiYWNrcyk7CkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgJKHJldmlzaW9u
IDk4NjU5KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMjEwLDYgKzIxMCw3IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVi
bGljIFdlYktpdDo6V2ViU3AKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFJlc291cmNlTG9hZChX
ZWJLaXQ6OldlYkZyYW1lKiwgdW5zaWduZWQgaWRlbnRpZmllciwgY29uc3QgV2ViS2l0OjpXZWJV
UkxFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KFdl
YktpdDo6V2ViRnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50
KFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBXZWJLaXQ6OldlYlNlY3VyaXR5T3JpZ2luJiwgY29u
c3QgV2ViS2l0OjpXZWJVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKFdlYktp
dDo6V2ViRnJhbWUqLCBjb25zdCBXZWJLaXQ6OldlYlNlY3VyaXR5T3JpZ2luJiwgY29uc3QgV2Vi
S2l0OjpXZWJVUkwmLCBXZWJLaXQ6OldlYlVSTCYsIGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBv
cGVuRmlsZVN5c3RlbShXZWJLaXQ6OldlYkZyYW1lKiwgV2ViS2l0OjpXZWJGaWxlU3lzdGVtOjpU
eXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdlYktpdDo6V2ViRmlsZVN5c3RlbUNh
bGxiYWNrcyopOwogCiAgICAgV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sq
IGRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaygpOwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5tbQkocmV2aXNpb24gOTg2NTkpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0JKHdvcmtpbmcgY29weSkK
QEAgLTQwNSw0ICs0MDUsMTAgQEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRp
ZFJ1bgogICAgICAgICBwcmludGYgKCJkaWRSdW5JbnNlY3VyZUNvbnRlbnRcbiIpOwogfQogCist
ICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlkRGV0ZWN0WFNTOihXZWJTZWN1cml0
eU9yaWdpbiAqKW9yaWdpbiBmb3JVUkw6KE5TVVJMICopaW5zZWN1cmVVUkwKK3sKKyAgICBpZiAo
IWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkp
CisgICAgICAgIHByaW50ZiAoImRpZERldGVjdFhTU1xuIik7Cit9CisKIEBlbmQKSW5kZXg6IFRv
b2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCShyZXZp
c2lvbiA5ODY1OSkKKysrIFRvb2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJv
bGxlci5tCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNiArMzI1LDExIEBAIHN0YXRpYyB2b2lkIGRp
ZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW0KICAgICBMT0coQCJkaWRSdW5JbnNlY3VyZUNvbnRl
bnRGb3JGcmFtZSIpOwogfQogCitzdGF0aWMgdm9pZCBkaWREZXRlY3RYU1NGb3JGcmFtZShXS1Bh
Z2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2
b2lkICpjbGllbnRJbmZvKQoreworICAgIExPRyhAImRpZERldGVjdFhTU0ZvckZyYW1lIik7Cit9
CisKIHN0YXRpYyB2b2lkIGRpZFN0YXJ0UHJvZ3Jlc3MoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZv
aWQgKmNsaWVudEluZm8pCiB7CiAgICAgWyhCcm93c2VyV2luZG93Q29udHJvbGxlciAqKWNsaWVu
dEluZm8gZGlkU3RhcnRQcm9ncmVzc107CkBAIC01OTMsNiArNTk4LDcgQEAgLSAodm9pZClhd2Fr
ZUZyb21OaWIKICAgICAgICAgZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5LAogICAgICAgICBk
aWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUsCiAgICAgICAgIGRpZFJ1bkluc2VjdXJl
Q29udGVudEZvckZyYW1lLAorICAgICAgICBkaWREZXRlY3RYU1NGb3JGcmFtZSwKICAgICAgICAg
MCwgLy8gY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUKICAgICAg
ICAgMCwgLy8gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZQogICAgICAg
ICBkaWRTdGFydFByb2dyZXNzLApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAkocmV2aXNp
b24gOTg2NTkpCisrKyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMSw2ICsyMTEsNyBAQCBJbmpl
Y3RlZEJ1bmRsZVBhZ2U6OkluamVjdGVkQnVuZGxlUGFnZShXCiAgICAgICAgIHdpbGxQZXJmb3Jt
Q2xpZW50UmVkaXJlY3RGb3JGcmFtZSwKICAgICAgICAgZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9y
RnJhbWUsCiAgICAgICAgIDAsIC8vIGRpZExheW91dEZvckZyYW1lCisgICAgICAgIGRpZERldGVj
dFhTU0ZvckZyYW1lLAogICAgIH07CiAgICAgV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRlckNsaWVu
dChtX3BhZ2UsICZsb2FkZXJDbGllbnQpOwogCkBAIC0zODMsNiArMzg0LDExIEBAIHZvaWQgSW5q
ZWN0ZWRCdW5kbGVQYWdlOjpkaWREaXNwbGF5SW5zZWMKICAgICBzdGF0aWNfY2FzdDxJbmplY3Rl
ZEJ1bmRsZVBhZ2UqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZERpc3BsYXlJ
bnNlY3VyZUNvbnRlbnRGb3JGcmFtZShmcmFtZSk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQ
YWdlOjpkaWREZXRlY3RYU1NGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVG
cmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAg
ICBzdGF0aWNfY2FzdDxJbmplY3RlZEJ1bmRsZVBhZ2UqPihjb25zdF9jYXN0PHZvaWQqPihjbGll
bnRJbmZvKSktPmRpZERldGVjdFhTU0ZvckZyYW1lKGZyYW1lKTsKK30KKwogdm9pZCBJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKFdLQnVuZGxlUGFnZVJl
ZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYqLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQogewogICAgIHN0YXRpY19jYXN0PEluamVjdGVkQnVuZGxlUGFnZSo+KGNvbnN0
X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUo
ZnJhbWUpOwpAQCAtNjgyLDYgKzY4OCwxMCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlk
UnVuSW5zZWN1cmVDCiB7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWREZXRlY3RY
U1NGb3JGcmFtZShXS0J1bmRsZUZyYW1lUmVmIGZyYW1lKQoreworfQorCiB2b2lkIEluamVjdGVk
QnVuZGxlUGFnZTo6ZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2UoV0tCdW5kbGVQYWdlUmVmLCBX
S0J1bmRsZUZyYW1lUmVmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBXS1VSTFJlcXVlc3RSZWYsIGJv
b2wpCiB7CiB9CkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgJKHJldmlzaW9uIDk4NjU5KQorKysg
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNjMsNiArNjMsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2
b2lkIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5k
bGVGcmFtZVJlZiwgY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyB2b2lkIGRpZERpc3BsYXlJbnNl
Y3VyZUNvbnRlbnRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIFdL
VHlwZVJlZiosIGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSdW5JbnNlY3VyZUNv
bnRlbnRGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIFdLVHlwZVJl
ZiosIGNvbnN0IHZvaWQqKTsKKyAgICBzdGF0aWMgdm9pZCBkaWREZXRlY3RYU1NGb3JGcmFtZShX
S0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQq
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZShXS0J1bmRsZVBh
Z2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFdLVVJMUmVxdWVz
dFJlZiwgYm9vbCBwYWdlTG9hZElzUHJvdmlzaW9uYWwsIGNvbnN0IHZvaWQqKTsKICAgICBzdGF0
aWMgV0tVUkxSZXF1ZXN0UmVmIHdpbGxTZW5kUmVxdWVzdEZvckZyYW1lKFdLQnVuZGxlUGFnZVJl
ZiwgV0tCdW5kbGVGcmFtZVJlZiwgdWludDY0X3QgaWRlbnRpZmllciwgV0tVUkxSZXF1ZXN0UmVm
LCBXS1VSTFJlc3BvbnNlUmVmLCBjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVj
ZWl2ZVJlc3BvbnNlRm9yUmVzb3VyY2UoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVm
LCB1aW50NjRfdCBpZGVudGlmaWVyLCBXS1VSTFJlc3BvbnNlUmVmLCBjb25zdCB2b2lkKik7CkBA
IC04NSw2ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRIYW5kbGVPbmxvYWRFdmVudHNG
b3JGcmFtZShXS0J1bmRsZUZyYW1lUmVmKTsKICAgICB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNv
bnRlbnRGb3JGcmFtZShXS0J1bmRsZUZyYW1lUmVmKTsKICAgICB2b2lkIGRpZFJ1bkluc2VjdXJl
Q29udGVudEZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYpOworICAgIHZvaWQgZGlkRGV0ZWN0WFNT
Rm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZik7CiAKICAgICAvLyBSZXNvdXJjZSBMb2FkIENsaWVu
dAogICAgIHZvaWQgZGlkSW5pdGlhdGVMb2FkRm9yUmVzb3VyY2UoV0tCdW5kbGVQYWdlUmVmLCBX
S0J1bmRsZUZyYW1lUmVmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBXS1VSTFJlcXVlc3RSZWYsIGJv
b2wgcGFnZUxvYWRJc1Byb3Zpc2lvbmFsKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4NjY5KQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTEtMTAtMjcgIFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgWFNT
QXVkaXRvciBpcyBzaWxlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcwOTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRo
LWNhbGxiYWNrcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2Vj
dXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtY2FsbGJhY2tzLmh0bWw6IEFkZGVkLgor
CiAyMDExLTEwLTI3ICBKb2huIEdyZWdnICA8am9obm55Z0Bnb29nbGUuY29tPgogCiAgICAgICAg
IFVucmV2aWV3ZWQsIG1vcmUgZ2FyZGVuaW5nLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctd2l0aC1jYWxsYmFja3MtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVk
aXRvci9zY3JpcHQtdGFnLXdpdGgtY2FsbGJhY2tzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFn
LXdpdGgtY2FsbGJhY2tzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBA
QAorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZFN0YXJ0UHJv
dmlzaW9uYWxMb2FkRm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRG
b3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZENv
bW1pdExvYWRGb3JGcmFtZQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDE6IFJlZnVzZWQgdG8gZXhl
Y3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2UgY29kZSBvZiBzY3JpcHQgZm91bmQgd2l0
aGluIHJlcXVlc3QuCisKK2RpZERldGVjdFhTUworZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0t
ZnJhbWUwLS0+LS0+IiAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lCitmcmFtZSAiPCEt
LWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9y
RnJhbWUKK21haW4gZnJhbWUgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQorZnJhbWUg
IjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZEZpbmlzaExvYWRGb3JGcmFt
ZQorbWFpbiBmcmFtZSAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQorCkluZGV4OiBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLWNhbGxiYWNr
cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtY2FsbGJhY2tzLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRo
LWNhbGxiYWNrcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKTsKKyAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuc2V0WFNTQXVkaXRvckVuYWJsZWQodHJ1ZSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPGlmcmFtZSBzcmM9Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS94
c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWludGVydGFnLnBsP3E9PHNjcmlwdD5hbGVydChTdHJp
bmcuZnJvbUNoYXJDb2RlKDB4NTgsMHg1MywweDUzKSk8L3NjcmlwdD4iPgorPC9pZnJhbWU+Cis8
L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="110945"
          type_id="1"
          status="-"
          setter="fishd"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112905</attachid>
            <date>2011-10-28 13:52:26 -0700</date>
            <delta_ts>2011-10-31 10:16:09 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>patch_70973.txt</filename>
            <type>text/plain</type>
            <size>49605</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4NzU4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMTAtMjggIFRvbSBTZXBl
eiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgWFNTQXVkaXRvciBpcyBzaWxlbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwOTczCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0
cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctd2l0aC1jYWxsYmFja3MuaHRt
bAorCisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpYU1NBdWRpdG9yOjpYU1NBdWRpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0
b3I6OmZpbHRlclRva2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmg6Cisg
ICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6ZGlkRGV0ZWN0WFNTKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaDoKKwogMjAxMS0xMC0yOCAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29n
bGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gSW1wbGljaXRseSBza2lwIHJlbmRlciBzdXJm
YWNlcyB0aGF0IHdvbid0IGJlIGRyYXduCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yLmNwcAkocmV2aXNpb24gOTg3NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9YU1NBdWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNs
dWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAi
SFRNTERvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAi
SFRNTFBhcmFtRWxlbWVudC5oIgpAQCAtMTg2LDYgKzE4Nyw3IEBAIFhTU0F1ZGl0b3I6OlhTU0F1
ZGl0b3IoSFRNTERvY3VtZW50UGFyc2UKICAgICAsIG1faXNFbmFibGVkKGZhbHNlKQogICAgICwg
bV94c3NQcm90ZWN0aW9uKFhTU1Byb3RlY3Rpb25FbmFibGVkKQogICAgICwgbV9zdGF0ZShVbmlu
aXRpYWxpemVkKQorICAgICwgbV9ub3RpZmllZENsaWVudChmYWxzZSkKIHsKICAgICBBU1NFUlQo
bV9wYXJzZXIpOwogICAgIGlmIChGcmFtZSogZnJhbWUgPSBwYXJzZXItPmRvY3VtZW50KCktPmZy
YW1lKCkpIHsKQEAgLTI4NSwxMCArMjg3LDE3IEBAIHZvaWQgWFNTQXVkaXRvcjo6ZmlsdGVyVG9r
ZW4oSFRNTFRva2VuJiAKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhZGQgdGhlIHJlYWwg
bGluZSBudW1iZXIgdG8gdGhlIGNvbnNvbGUuCiAgICAgICAgIG1fcGFyc2VyLT5kb2N1bWVudCgp
LT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9n
TWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBjb25zb2xlTWVzc2FnZSwgMSwgU3RyaW5n
KCkpOwogCi0gICAgICAgIGlmIChtX3hzc1Byb3RlY3Rpb24gPT0gWFNTUHJvdGVjdGlvbkJsb2Nr
RW5hYmxlZCkgewotICAgICAgICAgICAgbV9wYXJzZXItPmRvY3VtZW50KCktPmZyYW1lKCktPmxv
YWRlcigpLT5zdG9wQWxsTG9hZGVycygpOwotICAgICAgICAgICAgbV9wYXJzZXItPmRvY3VtZW50
KCktPmZyYW1lKCktPm5hdmlnYXRpb25TY2hlZHVsZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNoYW5n
ZShtX3BhcnNlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgYmxhbmtVUkwoKSwgU3Ry
aW5nKCkpOworICAgICAgICBib29sIGJsb2NrRW5hYmxlZCA9IChtX3hzc1Byb3RlY3Rpb24gPT0g
WFNTUHJvdGVjdGlvbkJsb2NrRW5hYmxlZCk7CisgICAgICAgIGlmIChibG9ja0VuYWJsZWQpCisg
ICAgICAgICAgICAgbV9wYXJzZXItPmRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT5zdG9w
QWxsTG9hZGVycygpOworCisgICAgICAgIGlmICghbV9ub3RpZmllZENsaWVudCkgeworICAgICAg
ICAgICAgbV9wYXJzZXItPmRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKS0+
ZGlkRGV0ZWN0WFNTKG1fcGFyc2VyLT5kb2N1bWVudCgpLT51cmwoKSwgYmxvY2tFbmFibGVkKTsK
KyAgICAgICAgICAgIG1fbm90aWZpZWRDbGllbnQgPSB0cnVlOwogICAgICAgICB9CisKKyAgICAg
ICAgaWYgKGJsb2NrRW5hYmxlZCkKKyAgICAgICAgICAgIG1fcGFyc2VyLT5kb2N1bWVudCgpLT5m
cmFtZSgpLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UobV9w
YXJzZXItPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIGJsYW5rVVJMKCksIFN0cmluZygp
KTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1ZGl0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9YU1NBdWRpdG9y
LmgJKHJldmlzaW9uIDk4NzUyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvWFNTQXVk
aXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw2ICs4OCw3IEBAIHByaXZhdGU6CiAKICAgICBT
dGF0ZSBtX3N0YXRlOwogICAgIFN0cmluZyBtX2NhY2hlZFNuaXBwZXQ7CisgICAgYm9vbCBtX25v
dGlmaWVkQ2xpZW50OwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0VtcHR5
Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuaAkocmV2aXNpb24gOTg3NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3MCw2ICszNzAsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYsIGJvb2wpIHsgfQog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29uc3QgS1VSTCYsIGNv
bnN0IFN0cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0cmluZyYsIGJvb2ws
IGludCwgaW50KSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZFRyYW5zZmVyQ2hp
bGRGcmFtZVRvTmV3RG9jdW1lbnQoUGFnZSopIHsgfQogICAgIHZpcnR1YWwgdm9pZCB0cmFuc2Zl
ckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlKFJlc291cmNlTG9hZGVyKiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgUGFnZSopIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgJKHJldmlzaW9uIDk4NzUyKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw2ICsyMDgsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIHNjcmlwdCkgZnJvbSBhbiBpbnNlY3VyZSBzb3Vy
Y2UuICBOb3RlIHRoYXQgdGhlIGluc2VjdXJlIGNvbnRlbnQgY2FuCiAgICAgICAgIC8vIHNwcmVh
ZCB0byBvdGhlciBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYpID0g
MDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBLVVJMJiwgYm9vbCBi
bG9ja0VuYWJsZWQpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgY2FuY2Vs
bGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgPSAwOwogICAgICAgICB2aXJ0dWFsIFJl
c291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpID0gMDsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4NzU4KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMTAtMjggIFRvbSBTZXBleiAg
PHRzZXBlekBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgWFNTQXVkaXRvciBpcyBzaWxlbnQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwOTczCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9h
ZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkxvYWRlckNsaWVudEF0dGFjaExvYWRl
ckNsaWVudFRvUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlckNsaWVudDo6ZGlkRGV0ZWN0WFNTRm9yRnJhbWUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpk
aWREZXRlY3RYU1NGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAg
ICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dDo6ZGlkRGV0ZWN0WFNTRm9yRnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMS0x
MC0yOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVh
biB1cCBCdWlsdEluUERGVmlldyBhIGxpdHRsZQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDk4NzUyKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
Nyw2ICsxNDcsMTQgQEAgdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udAog
ICAgIG1fY2xpZW50LmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0
b0FQSShmcmFtZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAK
K3ZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1NGb3JGcmFtZShXZWJQYWdlUHJveHkq
IHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBBUElPYmplY3QqIHVzZXJEYXRhKQoreworICAg
IGlmICghbV9jbGllbnQuZGlkRGV0ZWN0WFNTRm9yRnJhbWUpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fY2xpZW50LmRpZERldGVjdFhTU0ZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFt
ZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKIGJvb2wgV2Vi
TG9hZGVyQ2xpZW50OjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFt
ZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBXZWJQcm90ZWN0aW9u
U3BhY2UqIHByb3RlY3Rpb25TcGFjZSkKIHsKICAgICBpZiAoIW1fY2xpZW50LmNhbkF1dGhlbnRp
Y2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKQpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gOTg3NTIpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTYz
LDYgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5
KFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBBUElPYmplY3QqKTsKICAgICB2b2lkIGRp
ZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVBy
b3h5KiwgQVBJT2JqZWN0Kik7CiAgICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFt
ZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJT2JqZWN0Kik7CisgICAgdm9pZCBk
aWREZXRlY3RYU1NGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJT2Jq
ZWN0Kik7CiAgICAgCiAgICAgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNw
YWNlSW5GcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViUHJvdGVjdGlvblNw
YWNlKik7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1l
KFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5Kik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAko
cmV2aXNpb24gOTg3NTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzNCw2ICsxODM0LDE5IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQKICAgICBtX2xvYWRlckNsaWVudC5kaWRSdW5JbnNl
Y3VyZUNvbnRlbnRGb3JGcmFtZSh0aGlzLCBmcmFtZSwgdXNlckRhdGEuZ2V0KCkpOwogfQogCit2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGV0ZWN0WFNTRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwg
Q29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCit7CisgICAgUmVmUHRyPEFQSU9i
amVjdD4gdXNlckRhdGE7CisgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciBtZXNzYWdl
RGVjb2Rlcih1c2VyRGF0YSwgbV9wcm9jZXNzLT5jb250ZXh0KCkpOworICAgIGlmICghYXJndW1l
bnRzLT5kZWNvZGUobWVzc2FnZURlY29kZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJG
cmFtZVByb3h5KiBmcmFtZSA9IHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7CisgICAgTUVT
U0FHRV9DSEVDSyhmcmFtZSk7CisKKyAgICBtX2xvYWRlckNsaWVudC5kaWREZXRlY3RYU1NGb3JG
cmFtZSh0aGlzLCBmcmFtZSwgdXNlckRhdGEuZ2V0KCkpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZnJhbWVEaWRCZWNvbWVGcmFtZVNldCh1aW50NjRfdCBmcmFtZUlELCBib29sIHZhbHVlKQog
ewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gcHJvY2VzcygpLT53ZWJGcmFtZShmcmFtZUlE
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9u
IDk4NzUyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MDcsNiArNjA3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlbW92
ZUZyYW1lRnJvbUhpZXJhcmNoeSh1aW50NjRfdCBmcmFtZUlELCBDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqKTsKICAgICB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAgICB2b2lkIGRpZFJ1
bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIENvcmVJUEM6OkFyZ3Vt
ZW50RGVjb2RlciopOworICAgIHZvaWQgZGlkRGV0ZWN0WFNTRm9yRnJhbWUodWludDY0X3QgZnJh
bWVJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiAgICAgdm9pZCBmcmFtZURpZEJlY29t
ZUZyYW1lU2V0KHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wpOwogICAgIHZvaWQgZGlkU3RhcnRQcm9n
cmVzcygpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvZ3Jlc3MoZG91YmxlKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2
aXNpb24gOTg3NTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDcgQEAgbWVzc2FnZXMgLT4g
V2ViUGFnZVByb3h5IHsKICAgICBEaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSh1aW50NjRfdCBmcmFt
ZUlELCBXVEY6OlN0cmluZyB0aXRsZSwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdl
RW5jb2RlciB1c2VyRGF0YSkKICAgICBEaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUo
dWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rl
ciB1c2VyRGF0YSkKICAgICBEaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVzZXJEYXRh
KQorICAgIERpZERldGVjdFhTU0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6SW5q
ZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpCiAgICAgRGlkU2FtZURvY3Vt
ZW50TmF2aWdhdGlvbkZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQzMl90IHR5cGUsIFdU
Rjo6U3RyaW5nIHVybCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1
c2VyRGF0YSkKIAogICAgIEZyYW1lRGlkQmVjb21lRnJhbWVTZXQodWludDY0X3QgZnJhbWVJRCwg
Ym9vbCB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJ
KHJldmlzaW9uIDk4NzUyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBAIHR5cGVkZWYgdm9pZCAoKldLUGFn
ZURpZEZpcnN0VmlzdWFsbHlOb24KIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZFJlbW92ZUZyYW1l
RnJvbUhpZXJhcmNoeUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwg
V0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9p
ZCAoKldLUGFnZURpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZUNhbGxiYWNrKShXS1Bh
Z2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2
b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZFJ1bkluc2VjdXJlQ29u
dGVudEZvckZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBX
S1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwordHlwZWRlZiB2b2lk
ICgqV0tQYWdlRGlkRGV0ZWN0WFNTRm9yRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdL
RnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5m
byk7CiB0eXBlZGVmIGJvb2wgKCpXS1BhZ2VDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlv
blNwYWNlSW5GcmFtZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwg
V0tQcm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNlLCBjb25zdCB2b2lkICpjbGllbnRJ
bmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUluRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdL
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZWYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkQ2hhbmdlQmFja0Zv
cndhcmRMaXN0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0JhY2tGb3J3YXJkTGlzdEl0ZW1S
ZWYgYWRkZWRJdGVtLCBXS0FycmF5UmVmIHJlbW92ZWRJdGVtcywgY29uc3Qgdm9pZCAqY2xpZW50
SW5mbyk7CkBAIC04Nyw2ICs4OCw3IEBAIHN0cnVjdCBXS1BhZ2VMb2FkZXJDbGllbnQgewogICAg
IFdLUGFnZURpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeUNhbGxiYWNrICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5OwogICAgIFdLUGFnZURpZERp
c3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAg
ZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lOwogICAgIFdLUGFnZURpZFJ1bkluc2Vj
dXJlQ29udGVudEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUnVu
SW5zZWN1cmVDb250ZW50Rm9yRnJhbWU7CisgICAgV0tQYWdlRGlkRGV0ZWN0WFNTRm9yRnJhbWVD
YWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWREZXRlY3RYU1NGb3JG
cmFtZTsKICAgICBXS1BhZ2VDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5G
cmFtZUNhbGxiYWNrICAgICAgICAgIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3Bh
Y2VJbkZyYW1lOwogICAgIFdLUGFnZURpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUlu
RnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlSW5GcmFtZTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0V2ViTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiA5ODc1MikK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxvYWRlckNsaWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw2ICsxNjIsNyBAQCB2b2lkIHdlYmtpdFdlYkxv
YWRlckNsaWVudEF0dGFjaExvYWRlckNsCiAgICAgICAgIDAsIC8vIGRpZFJlbW92ZUZyYW1lRnJv
bUhpZXJhcmNoeQogICAgICAgICAwLCAvLyBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJh
bWUKICAgICAgICAgMCwgLy8gZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUKKyAgICAgICAg
MCwgLy8gZGlkRGV0ZWN0WFNTRm9yRnJhbWUKICAgICAgICAgMCwgLy8gY2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUKICAgICAgICAgMCwgLy8gZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZQogICAgICAgICBkaWRDaGFuZ2VQcm9ncmVzcywg
Ly8gZGlkU3RhcnRQcm9ncmVzcwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gOTg3NTIpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw2ICsxNTYsMTYgQEAgdm9pZCBJbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZAogICAgIHVzZXJEYXRhID0gYWRvcHRSZWYodG9JbXBs
KHVzZXJEYXRhVG9QYXNzKSk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50OjpkaWREZXRlY3RYU1NGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBXZWJGcmFtZSogZnJhbWUs
IFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSkKK3sKKyAgICBpZiAoIW1fY2xpZW50LmRpZFJ1
bkluc2VjdXJlQ29udGVudEZvckZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1R5cGVS
ZWYgdXNlckRhdGFUb1Bhc3MgPSAwOworICAgIG1fY2xpZW50LmRpZERldGVjdFhTU0ZvckZyYW1l
KHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksICZ1c2VyRGF0YVRvUGFzcywgbV9jbGllbnQuY2xp
ZW50SW5mbyk7CisgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b0ltcGwodXNlckRhdGFUb1Bhc3Mp
KTsKK30KKwogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZEZpcnN0TGF5
b3V0Rm9yRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1lLCBSZWZQdHI8QVBJT2Jq
ZWN0PiYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5kaWRGaXJzdExheW91dEZvckZy
YW1lKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVu
dC5oCShyZXZpc2lvbiA5ODc1MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVtb3ZlRnJhbWVGcm9tSGll
cmFyY2h5KFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7
CiAgICAgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV2ViUGFnZSosIFdl
YkZyYW1lKiwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKICAgICB2b2lkIGRpZFJ1bklu
c2VjdXJlQ29udGVudEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxBUElPYmpl
Y3Q+JiB1c2VyRGF0YSk7CisgICAgdm9pZCBkaWREZXRlY3RYU1NGb3JGcmFtZShXZWJQYWdlKiwg
V2ViRnJhbWUqLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOwogCiAgICAgdm9pZCBkaWRG
aXJzdExheW91dEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxBUElPYmplY3Q+
JiB1c2VyRGF0YSk7CiAgICAgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JG
cmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOwpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZVBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCShyZXZpc2lvbiA5ODc1MikKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDcgQEAgdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQ
YWdlRGlkUmVjZWl2ZVRpdAogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkUmVtb3ZlRnJh
bWVGcm9tSGllcmFyY2h5Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZy
YW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZv
KTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRG
b3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBm
cmFtZSwgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBl
ZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VEaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZUNhbGxi
YWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBl
UmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpX
S0J1bmRsZVBhZ2VEaWREZXRlY3RYU1NGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYg
cGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VEaWRGaXJzdExh
eW91dEZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1l
UmVmIGZyYW1lLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsK
IHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dEZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVm
IGZyYW1lLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5
cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZExheW91dEZvckZyYW1lQ2FsbGJhY2spKFdLQnVu
ZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKQEAgLTEyNiw2ICsxMjcsNyBAQCBzdHJ1Y3QgV0tCdW5kbGVQYWdlTG9hZGVyQ2xp
ZW50IHsKIAogICAgIC8vIFZlcnNpb24gMS4KICAgICBXS0J1bmRsZVBhZ2VEaWRMYXlvdXRGb3JG
cmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZExheW91dEZvckZy
YW1lOworICAgIFdLQnVuZGxlUGFnZURpZERldGVjdFhTU0ZvckZyYW1lQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGlkRGV0ZWN0WFNTRm9yRnJhbWU7CiB9OwogdHlwZWRlZiBz
dHJ1Y3QgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudDsK
IApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDk4NzUy
KQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0NCw2ICs5NDQsMTkgQEAgdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cgogICAgIHdlYlBhZ2UtPnNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUobV9mcmFt
ZS0+ZnJhbWVJRCgpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5n
ZXQoKSkpKTsKIH0KIAordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGV0ZWN0WFNTKGNv
bnN0IEtVUkwmLCBib29sKQoreworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdl
KCk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8QVBJ
T2JqZWN0PiB1c2VyRGF0YTsKKworICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xp
ZW50KCkuZGlkRGV0ZWN0WFNTRm9yRnJhbWUod2ViUGFnZSwgbV9mcmFtZSwgdXNlckRhdGEpOwor
CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWREZXRlY3RYU1NG
b3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNv
ZGVyKHVzZXJEYXRhLmdldCgpKSkpOworfQorCiBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7
CiAgICAgcmV0dXJuIFdlYktpdDo6Y2FuY2VsbGVkRXJyb3IocmVxdWVzdCk7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA5ODc1MikKKysrIFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNyw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZv
aWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBX
ZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhj
b25zdCBXZWJDb3JlOjpLVVJMJiwgYm9vbCBibG9ja0VuYWJsZWQpIE9WRVJSSURFOwogCiAgICAg
dmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jikg
T1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gOTg3NTgp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE2IEBACisyMDExLTEwLTI4ICBUb20gU2VwZXogIDx0c2VwZXpAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFhTU0F1ZGl0b3IgaXMgc2lsZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDk3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogcHVibGljL1dlYkZyYW1lQ2xpZW50Lmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50OjpkaWREZXRlY3RYU1MpOgorICAgICAgICAqIHNy
Yy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRl
ckNsaWVudEltcGw6OmRpZERldGVjdFhTUyk6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5oOgorCiAyMDExLTEwLTI4ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJlbmFtZSBhIG51bWJlciBvZiBtZXRob2RzIG1lbnRpb25pbmcg
SmF2YVNjcmlwdCB0byBqdXN0IFNjcmlwdCBpbnN0ZWFkCkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgJKHJldmlzaW9uIDk4NzUyKQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjg2LDYgKzI4Niw5IEBAIHB1YmxpYzoKICAgICAvLyBzcHJlYWQgdG8gb3RoZXIg
ZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1
cmVDb250ZW50KFdlYkZyYW1lKiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mLCBjb25zdCBXZWJV
UkwmIGluc2VjdXJlVVJMKSB7IH0KIAorICAgIC8vIEEgcmVmbGVjdGVkIFhTUyB3YXMgZW5jb3Vu
dGVyZWQgaW4gdGhlIHBhZ2UgYW5kIHN1cHByZXNzZWQuCisgICAgdmlydHVhbCB2b2lkIGRpZERl
dGVjdFhTUyhXZWJGcmFtZSosIGNvbnN0IFdlYlVSTCYsIGJvb2wgYmxvY2tFbmFibGVkKSB7IH0K
KwogICAgIC8vIFRoaXMgZnJhbWUgYWRvcHRlZCB0aGUgcmVzb3VyY2UgdGhhdCBpcyBiZWluZyBs
b2FkZWQuIFRoaXMgaGFwcGVucyB3aGVuCiAgICAgLy8gYW4gaWZyYW1lLCB0aGF0IGlzIGxvYWRp
bmcgYSBzdWJyZXNvdXJjZSwgaXMgdHJhbnNmZXJyZWQgYmV0d2VlbiB3aW5kb3dzLgogICAgIHZp
cnR1YWwgdm9pZCBkaWRBZG9wdFVSTExvYWRlcihXZWJVUkxMb2FkZXIqKSB7IH0KSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBs
LmNwcAkocmV2aXNpb24gOTg3NTIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFt
ZUxvYWRlckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjA0LDYgKzEyMDQsMTIg
QEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpZFJ1bkluc2VjdQogICAgICAgICBtX3dl
YkZyYW1lLT5jbGllbnQoKS0+ZGlkUnVuSW5zZWN1cmVDb250ZW50KG1fd2ViRnJhbWUsIFdlYlNl
Y3VyaXR5T3JpZ2luKG9yaWdpbiksIGluc2VjdXJlVVJMKTsKIH0KIAordm9pZCBGcmFtZUxvYWRl
ckNsaWVudEltcGw6OmRpZERldGVjdFhTUyhjb25zdCBLVVJMJiBpbnNlY3VyZVVSTCwgYm9vbCBi
bG9ja0VuYWJsZWQpCit7CisgICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVudCgpKQorICAgICAgICBt
X3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkRGV0ZWN0WFNTKG1fd2ViRnJhbWUsIGluc2VjdXJlVVJM
LCBibG9ja0VuYWJsZWQpOworfQorCiBSZXNvdXJjZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50SW1w
bDo6YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpCiB7CiAgICAgLy8gRklYTUUK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5oCShyZXZpc2lvbiA5ODc1MikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzgsNiArMTM4LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJ
dGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpZERp
c3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVD
b250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgaW5z
ZWN1cmVVUkwpOworICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2ViQ29yZTo6
S1VSTCYsIGJvb2wgYmxvY2tFbmFibGVkKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNl
RXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAg
IHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJy
b3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwpJ
bmRleDogU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNpb24gOTg3NTgpCisrKyBTb3VyY2UvV2ViS2l0L2Vm
bC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0xMC0yOCAg
VG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KKworICAgICAgICBYU1NBdWRpdG9yIGlz
IHNpbGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzA5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaWREZXRlY3RYU1MpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmg6CisKIDIwMTEtMTAtMjggIEpvY2hlbiBF
aXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIGEgbnVtYmVy
IG9mIG1ldGhvZHMgbWVudGlvbmluZyBKYXZhU2NyaXB0IHRvIGp1c3QgU2NyaXB0IGluc3RlYWQK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDk4NzUyKQorKysgU291cmNlL1dlYktp
dC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01MzEsNiArNTMxLDExIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpZFJ1
bkluc2VjdXIKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50RWZsOjpkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYsIGJvb2wpCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwogdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6bWFrZVJlcHJlc2VudGF0
aW9uKERvY3VtZW50TG9hZGVyKikKIHsKICAgICBtX2hhc1JlcHJlc2VudGF0aW9uID0gdHJ1ZTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
RWZsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRFZmwuaAkocmV2aXNpb24gOTg3NTIpCisrKyBTb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNjMsNiArMTYzLDcgQEAgY2xhc3MgRnJhbWVMb2FkZXJDbGllbnRFZmwgOiBwdWJsaWMgRnJh
bQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3Rv
cnlJdGVtKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRl
bnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3Jp
Z2luKiwgY29uc3QgS1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3Qg
S1VSTCYsIGJvb2wgYmxvY2tFbmFibGVkKTsKIAogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBj
YW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIFJlc291
cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwpJbmRleDogU291
cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3Rr
L0NoYW5nZUxvZwkocmV2aXNpb24gOTg3NTgpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0xMC0yOCAgVG9tIFNlcGV6
ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KKworICAgICAgICBYU1NBdWRpdG9yIGlzIHNpbGVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA5NzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVM
b2FkZXJDbGllbnQ6OmRpZERldGVjdFhTUyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuaDoKKwogMjAxMS0xMC0yOCAgSm9jaGVuIEVpc2luZ2VyICA8am9j
aGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW5hbWUgYSBudW1iZXIgb2YgbWV0aG9kcyBt
ZW50aW9uaW5nIEphdmFTY3JpcHQgdG8ganVzdCBTY3JpcHQgaW5zdGVhZApJbmRleDogU291cmNl
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmNwcAkocmV2aXNpb24gOTg3NTIpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNCw2
ICs3MjQsMTEgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDbwogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpZERldGVj
dFhTUyhjb25zdCBLVVJMJiwgYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjptYWtlUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqKQogewogICAgIG1faGFzUmVwcmVzZW50YXRpb24gPSB0cnVlOwpJbmRleDogU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEd0ay5oCShyZXZpc2lvbiA5ODc1MikKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw2ICsx
NDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlz
cGxheUluc2VjdXJlQ29udGVudCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1
cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OktVUkwm
LCBib29sIGJsb2NrRW5hYmxlZCk7CiAKICAgICAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwog
ICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNp
b24gOTg3NTgpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxOSBAQAorMjAxMS0xMC0yOCAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBYU1NBdWRpdG9yIGlzIHNpbGVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA5NzMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250
ZW50KToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MpOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcuaDoKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZS5oOgorICAgICAgICAqIFdl
YlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfY2FjaGVGcmFtZUxvYWREZWxl
Z2F0ZUltcGxlbWVudGF0aW9uc10pOgorCiAyMDExLTEwLTI4ICBKb2NoZW4gRWlzaW5nZXIgIDxq
b2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbmFtZSBhIG51bWJlciBvZiBtZXRob2Rz
IG1lbnRpb25pbmcgSmF2YVNjcmlwdCB0byBqdXN0IFNjcmlwdCBpbnN0ZWFkCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgJKHJldmlzaW9uIDk4NzUyKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1
Niw3IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29u
dGVudCgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQo
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7
CisgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpLVVJMJiwgYm9v
bCBibG9ja0VuYWJsZWQpIE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIE9W
RVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5tbQkocmV2aXNpb24gOTg3NTIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtOTg5LDEyICs5
ODksMjMgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzcGxheUlucwogCiB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmln
aW4qIG9yaWdpbiwgY29uc3QgS1VSTCYgaW5zZWN1cmVVUkwpCiB7Ci0gICAgUmV0YWluUHRyPFdl
YlNlY3VyaXR5T3JpZ2luPiB3ZWJTZWN1cml0eU9yaWdpbihBZG9wdE5TLCBbW1dlYlNlY3VyaXR5
T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46b3JpZ2luXSk7Ci0K
ICAgICBXZWJWaWV3ICp3ZWJWaWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsgICAK
ICAgICBXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0
aW9ucyA9IFdlYlZpZXdHZXRGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3
KTsKLSAgICBpZiAoaW1wbGVtZW50YXRpb25zLT5kaWRSdW5JbnNlY3VyZUNvbnRlbnRGdW5jKQor
ICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPmRpZFJ1bkluc2VjdXJlQ29udGVudEZ1bmMpIHsKKyAg
ICAgICAgUmV0YWluUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiB3ZWJTZWN1cml0eU9yaWdpbihBZG9w
dE5TLCBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlP
cmlnaW46b3JpZ2luXSk7CiAgICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRh
dGlvbnMtPmRpZFJ1bkluc2VjdXJlQ29udGVudEZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJW
aWV3OmRpZFJ1bkluc2VjdXJlQ29udGVudDopLCB3ZWJTZWN1cml0eU9yaWdpbi5nZXQoKSk7Cisg
ICAgfQorfQorCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MoY29uc3Qg
S1VSTCYgaW5zZWN1cmVVUkwsIGJvb2wgYmxvY2tFbmFibGVkKQoreworICAgIFdlYlZpZXcgKndl
YlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOyAgIAorICAgIFdlYkZyYW1lTG9h
ZERlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dl
dEZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25zKHdlYlZpZXcpOworICAgIGlmIChpbXBs
ZW1lbnRhdGlvbnMtPmRpZERldGVjdFhTU0Z1bmMpIHsKKyAgICAgICAgLy8gRklYTUU6IG11c3Qg
cGFzcyBibG9ja0VuYWJsZWQgaWYgd2Ugd2FudCB0byBkbyBtb3JlIG9uIG1hYyB0aGFuIGp1c3Qg
cGFzcyB0ZXN0cy4KKyAgICAgICAgTlNVUkwqIGluc2VjdXJlTlNVUkwgPSBpbnNlY3VyZVVSTDsK
KyAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkRGV0ZWN0
WFNTRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkRGV0ZWN0WFNTOiksIGluc2Vj
dXJlTlNVUkwpOworICAgIH0KIH0KIAogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6Y2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGlu
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJ
bXBsZW1lbnRhdGlvbkNhY2hpbmcuaAkocmV2aXNpb24gOTg3NTIpCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc3LDYgKzc3LDcgQEAgc3RydWN0IFdlYkZyYW1lTG9hZERlbGVnYXRlSW1wbGVt
ZW50YXRpbwogICAgIElNUCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZUZ1bmM7CiAgICAg
SU1QIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGdW5jOwogICAgIElNUCBkaWRSdW5JbnNlY3Vy
ZUNvbnRlbnRGdW5jOworICAgIElNUCBkaWREZXRlY3RYU1NGdW5jOwogfTsKIAogc3RydWN0IFdl
YlNjcmlwdERlYnVnRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlIHsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZh
dGUuaAkocmV2aXNpb24gOTg3NTIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZy
YW1lTG9hZERlbGVnYXRlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMSArMzQsOSBA
QAogQGludGVyZmFjZSBOU09iamVjdCAoV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlKQogCiAt
ICh2b2lkKXdlYlZpZXdEaWREaXNwbGF5SW5zZWN1cmVDb250ZW50OihXZWJWaWV3ICopd2ViVmll
dzsKLQogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkaWRSdW5JbnNlY3VyZUNv
bnRlbnQ6KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luOwotCistICh2b2lkKXdlYlZpZXc6KFdl
YlZpZXcgKil3ZWJWaWV3IGRpZERldGVjdFhTUzooTlNVUkwgKilpbnNlY3VyZVVSTDsKIC0gKHZv
aWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFt
ZTooV2ViRnJhbWUgKilmcmFtZSBpblNjcmlwdFdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKXdvcmxk
OwotCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRpZFB1c2hTdGF0ZVdpdGhp
blBhZ2VGb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZTsKIC0gKHZvaWQpd2ViVmlldzooV2ViVmll
dyAqKXdlYlZpZXcgZGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZUZvckZyYW1lOihXZWJGcmFtZSAq
KWZyYW1lOwogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkaWRQb3BTdGF0ZVdp
dGhpblBhZ2VGb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDk4NzUyKQorKysgU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUxLDYgKzE1NTEsNyBAQCAt
ICh2b2lkKV9jYWNoZUZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50CiAgICAgY2FjaGUtPndpbmRv
d1NjcmlwdE9iamVjdEF2YWlsYWJsZUZ1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rv
cih3ZWJWaWV3OndpbmRvd1NjcmlwdE9iamVjdEF2YWlsYWJsZTopKTsKICAgICBjYWNoZS0+ZGlk
RGlzcGxheUluc2VjdXJlQ29udGVudEZ1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rv
cih3ZWJWaWV3RGlkRGlzcGxheUluc2VjdXJlQ29udGVudDopKTsKICAgICBjYWNoZS0+ZGlkUnVu
SW5zZWN1cmVDb250ZW50RnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZp
ZXc6ZGlkUnVuSW5zZWN1cmVDb250ZW50OikpOworICAgIGNhY2hlLT5kaWREZXRlY3RYU1NGdW5j
ID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpkaWREZXRlY3RYU1M6KSk7
CiB9CiAKIC0gKHZvaWQpX2NhY2hlU2NyaXB0RGVidWdEZWxlZ2F0ZUltcGxlbWVudGF0aW9ucwpJ
bmRleDogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4NzU4KQorKysgU291cmNlL1dlYktpdC9xdC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0xMC0yOCAgVG9t
IFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KKworICAgICAgICBYU1NBdWRpdG9yIGlzIHNp
bGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA5
NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkRGV0ZWN0WFNTKToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisKIDIwMTEtMTAtMjggIEpvY2hlbiBFaXNpbmdl
ciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIGEgbnVtYmVyIG9mIG1l
dGhvZHMgbWVudGlvbmluZyBKYXZhU2NyaXB0IHRvIGp1c3QgU2NyaXB0IGluc3RlYWQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcAkocmV2aXNpb24gOTg3NTIpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzMs
NiArODczLDE0IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkUnVuSW5zZWN1cmUKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZERl
dGVjdFhTUyhjb25zdCBLVVJMJiwgYm9vbCkKK3sKKyAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2Fs
bGJhY2tzKQorICAgICAgICBwcmludGYoImRpZERldGVjdFhTU1xuIik7CisKKyAgICBub3RJbXBs
ZW1lbnRlZCgpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNhdmVWaWV3U3RhdGVU
b0l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW0pCiB7CiAgICAgUVdlYkhpc3RvcnlJdGVt
IGhpc3RvcnlJdGVtKG5ldyBRV2ViSGlzdG9yeUl0ZW1Qcml2YXRlKGl0ZW0pKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5oCShyZXZpc2lvbiA5ODc1MikKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNiArMTYyLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJ
dGVtKEhpc3RvcnlJdGVtKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNl
Y3VyZUNvbnRlbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNl
Y3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RY
U1MoY29uc3QgS1VSTCYsIGJvb2wgYmxvY2tFbmFibGVkKTsKIAogICAgIHZpcnR1YWwgUmVzb3Vy
Y2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0
dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwpJ
bmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gOTg3NTgpCisrKyBTb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0xMC0yOCAg
VG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KKworICAgICAgICBYU1NBdWRpdG9yIGlz
IHNpbGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzA5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTEtMTAtMjggIEpvY2hlbiBFaXNpbmdlciAg
PGpvY2hlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIGEgbnVtYmVyIG9mIG1ldGhv
ZHMgbWVudGlvbmluZyBKYXZhU2NyaXB0IHRvIGp1c3QgU2NyaXB0IGluc3RlYWQKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDk4NzUyKQorKysgU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
NTYsNiArNjU2LDExIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXIK
ICAgICBmcmFtZUxvYWREZWxlZ2F0ZVByaXYyLT5kaWRSdW5JbnNlY3VyZUNvbnRlbnQod2ViVmll
dywgd2ViU2VjdXJpdHlPcmlnaW4uZ2V0KCkpOwogfQogCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYsIGJvb2wpCit7CisgICAgLy8gRklYTUU6IHBy
b3BvZ2F0ZSBjYWxsIGludG8gdGhlIHByaXZhdGUgZGVsZWdhdGUuCit9CisKIFBhc3NSZWZQdHI8
RG9jdW1lbnRMb2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRl
cihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBz
dWJzdGl0dXRlRGF0YSkKIHsKICAgICBSZWZQdHI8V2ViRG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9
IFdlYkRvY3VtZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwpJbmRl
eDogU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA5ODc1MikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk4
LDYgKzk4LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3Vy
ZUNvbnRlbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwg
dm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGJvb2wgYmxvY2tFbmFibGVk
KTsKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3Jl
YXRlRG9jdW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
V2ViQ29yZTo6U3Vic3RpdHV0ZURhdGEmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29u
c3QgV2ViQ29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCShyZXZpc2lvbiA5ODc1OCkKKysrIFNvdXJjZS9XZWJL
aXQvd2luY2UvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEt
MTAtMjggIFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgWFNTQXVk
aXRvciBpcyBzaWxlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTcwOTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlkRGV0ZWN0WFNTKToKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmg6CisKIDIwMTEtMTAt
MjggIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVu
YW1lIGEgbnVtYmVyIG9mIG1ldGhvZHMgbWVudGlvbmluZyBKYXZhU2NyaXB0IHRvIGp1c3QgU2Ny
aXB0IGluc3RlYWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXaW5DRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5j
ZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcAkocmV2aXNpb24gOTg3
NTIpCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V2luQ0UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzQsNiArMjc0LDExIEBAIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlkUnVuSW5zZWMKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpZERldGVjdFhTUyhjb25zdCBLVVJM
JiwgYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50V2luQ0U6Om1ha2VSZXByZXNlbnRhdGlvbihEb2N1bWVudExvYWRlciopCiB7CiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
d2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCShyZXZpc2lvbiA5
ODc1MikKKysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRXaW5DRS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNiArMTQwLDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwg
Y29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29u
c3QgV2ViQ29yZTo6S1VSTCYsIGJvb2wgYmxvY2tFbmFibGVkKTsKIAogICAgIHZpcnR1YWwgV2Vi
Q29yZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwpJbmRleDogU291cmNlL1dlYktp
dC93eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDk4NzU4KQorKysgU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0xMC0yOCAgVG9tIFNlcGV6ICA8dHNlcGV6QGNo
cm9taXVtLm9yZz4KKworICAgICAgICBYU1NBdWRpdG9yIGlzIHNpbGVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA5NzMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4
OjpkaWREZXRlY3RYU1MpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXeC5oOgorCiAyMDExLTEwLTI4ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJlbmFtZSBhIG51bWJlciBvZiBtZXRob2RzIG1lbnRpb25pbmcgSmF2
YVNjcmlwdCB0byBqdXN0IFNjcmlwdCBpbnN0ZWFkCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dl
YktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCShyZXZpc2lv
biA5ODc1MikKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAyLDYgKzYwMiwxMSBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50V3g6OmRpZFJ1bkluc2VjdXJlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAordm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYsIGJv
b2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBGcmFtZUxvYWRlckNsaWVu
dFd4OjpzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0oV2ViQ29yZTo6SGlzdG9y
eUl0ZW0qKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4
L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgJKHJldmlzaW9u
IDk4NzUyKQorKysgU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V3guaAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDYgKzE3MCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVD
b250ZW50KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2Vj
dXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWREZXRl
Y3RYU1MoY29uc3QgS1VSTCYsIGJvb2wgYmxvY2tFbmFibGVkKTsKIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJj
ZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9h
ZGVyKiwgY29uc3QgY2hhciosIGludCk7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5ODc1OCkKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDExLTEwLTI4ICBUb20gU2VwZXog
IDx0c2VwZXpAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFhTU0F1ZGl0b3IgaXMgc2lsZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDk3MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6OmRp
ZERldGVjdFhTUyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW06
CisgICAgICAgICgtW0ZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6ZGlkRGV0ZWN0WFNTOl0pOgor
ICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAg
ICAgICAoZGlkRGV0ZWN0WFNTRm9yRnJhbWUpOgorICAgICAgICAoLVtCcm93c2VyV2luZG93Q29u
dHJvbGxlciBhd2FrZUZyb21OaWJdKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVk
QnVuZGxlUGFnZTo6SW5qZWN0ZWRCdW5kbGVQYWdlKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGVQYWdlOjpkaWREZXRlY3RYU1NGb3JGcmFtZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaDoKKwogMjAxMS0xMC0yOCAg
RXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTlJXVCBjcmFzaGVzIHdo
ZW4gcGFyc2luZyBsZWFrcyBvdXRwdXQgZHVlIHRvIFVURi04IGRlY29kaW5nIGVycm9yCkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCShyZXZp
c2lvbiA5ODc1MikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3MSw2ICsxMTcxLDEyIEBAIHZvaWQgV2ViVmlld0hv
c3Q6OmRpZFJ1bkluc2VjdXJlQ29udGVudCgKICAgICAgICAgZnB1dHMoImRpZFJ1bkluc2VjdXJl
Q29udGVudFxuIiwgc3Rkb3V0KTsKIH0KIAordm9pZCBXZWJWaWV3SG9zdDo6ZGlkRGV0ZWN0WFNT
KFdlYkZyYW1lKiwgY29uc3QgV2ViVVJMJiwgYm9vbCkKK3sKKyAgICBpZiAobV9zaGVsbC0+c2hv
dWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKQorICAgICAgICBmcHV0cygiZGlkRGV0ZWN0WFNT
XG4iLCBzdGRvdXQpOworfQorCiB2b2lkIFdlYlZpZXdIb3N0OjpvcGVuRmlsZVN5c3RlbShXZWJG
cmFtZSogZnJhbWUsIFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUsIGJv
b2wgY3JlYXRlLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7CiAgICAgd2Vi
a2l0X3N1cHBvcnQ6Ok9wZW5GaWxlU3lzdGVtKGZyYW1lLCB0eXBlLCBzaXplLCBjcmVhdGUsIGNh
bGxiYWNrcyk7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9z
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0LmgJKHJldmlzaW9uIDk4NzUyKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDYgKzIxMCw3IEBAIGNsYXNzIFdl
YlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2ViU3AKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFp
bFJlc291cmNlTG9hZChXZWJLaXQ6OldlYkZyYW1lKiwgdW5zaWduZWQgaWRlbnRpZmllciwgY29u
c3QgV2ViS2l0OjpXZWJVUkxFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5z
ZWN1cmVDb250ZW50KFdlYktpdDo6V2ViRnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVu
SW5zZWN1cmVDb250ZW50KFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBXZWJLaXQ6OldlYlNlY3Vy
aXR5T3JpZ2luJiwgY29uc3QgV2ViS2l0OjpXZWJVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
RGV0ZWN0WFNTKFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBXZWJLaXQ6OldlYlVSTCYsIGJvb2wg
YmxvY2tFbmFibGVkKTsKICAgICB2aXJ0dWFsIHZvaWQgb3BlbkZpbGVTeXN0ZW0oV2ViS2l0OjpX
ZWJGcmFtZSosIFdlYktpdDo6V2ViRmlsZVN5c3RlbTo6VHlwZSwgbG9uZyBsb25nIHNpemUsIGJv
b2wgY3JlYXRlLCBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKIAogICAgIFdlYktp
dDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKiBkZXZpY2VPcmllbnRhdGlvbkNsaWVu
dE1vY2soKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0
ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVs
ZWdhdGUubW0JKHJldmlzaW9uIDk4NzUyKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0Zy
YW1lTG9hZERlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MDUsNCArNDA1LDEwIEBAIC0g
KHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRSdW4KICAgICAgICAgcHJpbnRmICgi
ZGlkUnVuSW5zZWN1cmVDb250ZW50XG4iKTsKIH0KIAorLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3
ICopc2VuZGVyIGRpZERldGVjdFhTUzooTlNVUkwgKilpbnNlY3VyZVVSTAoreworICAgIGlmICgh
ZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkK
KyAgICAgICAgcHJpbnRmICgiZGlkRGV0ZWN0WFNTXG4iKTsKK30KKwogQGVuZApJbmRleDogVG9v
bHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0JKHJldmlz
aW9uIDk4NzUyKQorKysgVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9s
bGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTMyNSw2ICszMjUsMTEgQEAgc3RhdGljIHZvaWQgZGlk
UnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbQogICAgIExPRyhAImRpZFJ1bkluc2VjdXJlQ29udGVu
dEZvckZyYW1lIik7CiB9CiAKK3N0YXRpYyB2b2lkIGRpZERldGVjdFhTU0ZvckZyYW1lKFdLUGFn
ZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZv
aWQgKmNsaWVudEluZm8pCit7CisgICAgTE9HKEAiZGlkRGV0ZWN0WFNTRm9yRnJhbWUiKTsKK30K
Kwogc3RhdGljIHZvaWQgZGlkU3RhcnRQcm9ncmVzcyhXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9p
ZCAqY2xpZW50SW5mbykKIHsKICAgICBbKEJyb3dzZXJXaW5kb3dDb250cm9sbGVyICopY2xpZW50
SW5mbyBkaWRTdGFydFByb2dyZXNzXTsKQEAgLTU5Myw2ICs1OTgsNyBAQCAtICh2b2lkKWF3YWtl
RnJvbU5pYgogICAgICAgICBkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHksCiAgICAgICAgIGRp
ZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSwKICAgICAgICAgZGlkUnVuSW5zZWN1cmVD
b250ZW50Rm9yRnJhbWUsCisgICAgICAgIGRpZERldGVjdFhTU0ZvckZyYW1lLAogICAgICAgICAw
LCAvLyBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZQogICAgICAg
ICAwLCAvLyBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lCiAgICAgICAg
IGRpZFN0YXJ0UHJvZ3Jlc3MsCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCShyZXZpc2lv
biA5ODc1MikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGVQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDYgKzIxMSw3IEBAIEluamVj
dGVkQnVuZGxlUGFnZTo6SW5qZWN0ZWRCdW5kbGVQYWdlKFcKICAgICAgICAgd2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdEZvckZyYW1lLAogICAgICAgICBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JG
cmFtZSwKICAgICAgICAgMCwgLy8gZGlkTGF5b3V0Rm9yRnJhbWUKKyAgICAgICAgZGlkRGV0ZWN0
WFNTRm9yRnJhbWUsCiAgICAgfTsKICAgICBXS0J1bmRsZVBhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50
KG1fcGFnZSwgJmxvYWRlckNsaWVudCk7CiAKQEAgLTM4Myw2ICszODQsMTEgQEAgdm9pZCBJbmpl
Y3RlZEJ1bmRsZVBhZ2U6OmRpZERpc3BsYXlJbnNlYwogICAgIHN0YXRpY19jYXN0PEluamVjdGVk
QnVuZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkRGlzcGxheUlu
c2VjdXJlQ29udGVudEZvckZyYW1lKGZyYW1lKTsKIH0KIAordm9pZCBJbmplY3RlZEJ1bmRsZVBh
Z2U6OmRpZERldGVjdFhTU0ZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZy
YW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYqLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAg
IHN0YXRpY19jYXN0PEluamVjdGVkQnVuZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVu
dEluZm8pKS0+ZGlkRGV0ZWN0WFNTRm9yRnJhbWUoZnJhbWUpOworfQorCiB2b2lkIEluamVjdGVk
QnVuZGxlUGFnZTo6ZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCiB7CiAgICAgc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVQYWdlKj4oY29uc3Rf
Y2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZShm
cmFtZSk7CkBAIC02ODIsNiArNjg4LDEwIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRS
dW5JbnNlY3VyZUMKIHsKIH0KIAordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZERldGVjdFhT
U0ZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpCit7Cit9CisKIHZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlOjpkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYsIFdL
QnVuZGxlRnJhbWVSZWYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFdLVVJMUmVxdWVzdFJlZiwgYm9v
bCkKIHsKIH0KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAkocmV2aXNpb24gOTg3NTIpCisrKyBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZv
aWQgZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRs
ZUZyYW1lUmVmLCBjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIHZvaWQgZGlkRGlzcGxheUluc2Vj
dXJlQ29udGVudEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgV0tU
eXBlUmVmKiwgY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJ1bkluc2VjdXJlQ29u
dGVudEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgV0tUeXBlUmVm
KiwgY29uc3Qgdm9pZCopOworICAgIHN0YXRpYyB2b2lkIGRpZERldGVjdFhTU0ZvckZyYW1lKFdL
QnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgV0tUeXBlUmVmKiwgY29uc3Qgdm9pZCop
OwogICAgIHN0YXRpYyB2b2lkIGRpZEluaXRpYXRlTG9hZEZvclJlc291cmNlKFdLQnVuZGxlUGFn
ZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgdWludDY0X3QgaWRlbnRpZmllciwgV0tVUkxSZXF1ZXN0
UmVmLCBib29sIHBhZ2VMb2FkSXNQcm92aXNpb25hbCwgY29uc3Qgdm9pZCopOwogICAgIHN0YXRp
YyBXS1VSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0Rm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVm
LCBXS0J1bmRsZUZyYW1lUmVmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBXS1VSTFJlcXVlc3RSZWYs
IFdLVVJMUmVzcG9uc2VSZWYsIGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2VGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYs
IHVpbnQ2NF90IGlkZW50aWZpZXIsIFdLVVJMUmVzcG9uc2VSZWYsIGNvbnN0IHZvaWQqKTsKQEAg
LTg1LDYgKzg2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0Zv
ckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYpOwogICAgIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29u
dGVudEZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYpOwogICAgIHZvaWQgZGlkUnVuSW5zZWN1cmVD
b250ZW50Rm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZik7CisgICAgdm9pZCBkaWREZXRlY3RYU1NG
b3JGcmFtZShXS0J1bmRsZUZyYW1lUmVmKTsKIAogICAgIC8vIFJlc291cmNlIExvYWQgQ2xpZW50
CiAgICAgdm9pZCBkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYsIFdL
QnVuZGxlRnJhbWVSZWYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFdLVVJMUmVxdWVzdFJlZiwgYm9v
bCBwYWdlTG9hZElzUHJvdmlzaW9uYWwpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTg3NTgpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAx
MS0xMC0yOCAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KKworICAgICAgICBYU1NB
dWRpdG9yIGlzIHNpbGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzA5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXdpdGgt
Y2FsbGJhY2tzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctd2l0aC1jYWxsYmFja3MuaHRtbDogQWRkZWQuCisK
IDIwMTEtMTAtMjggIEpvaG4gR3JlZ2cgIDxqb2hubnlnQGdvb2dsZS5jb20+CiAKICAgICAgICAg
VW5yZXZpZXdlZCBnYXJkZW5pbmcuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLWNhbGxiYWNrcy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Nj
cmlwdC10YWctd2l0aC1jYWxsYmFja3MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctd2l0aC1j
YWxsYmFja3MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACitmcmFt
ZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkU3RhcnRQcm92aXNpb25h
bExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1l
CitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkQ29tbWl0TG9h
ZEZvckZyYW1lCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0byBleGVjdXRlIGEg
SmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4gcmVx
dWVzdC4KKworZGlkRGV0ZWN0WFNTCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAt
LT4tLT4iIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJhbWVQ
YXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZQor
bWFpbiBmcmFtZSAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCitmcmFtZSAiPCEtLWZy
YW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCittYWlu
IGZyYW1lIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCisKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtY2FsbGJhY2tzLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9y
L3NjcmlwdC10YWctd2l0aC1jYWxsYmFja3MuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtY2FsbGJh
Y2tzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKTsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5zZXRYU1NBdWRpdG9yRW5hYmxlZCh0cnVlKTsKK30KKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5L3hz
c0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGw/cT08c2NyaXB0PmFsZXJ0KFN0cmlu
Zy5mcm9tQ2hhckNvZGUoMHg1OCwweDUzLDB4NTMpKTwvc2NyaXB0PiI+Cis8L2lmcmFtZT4KKzwv
Ym9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113066</attachid>
            <date>2011-10-31 10:16:09 -0700</date>
            <delta_ts>2011-11-02 12:53:31 -0700</delta_ts>
            <desc>Proposed patch + improved boolean naming.</desc>
            <filename>patch_70973.txt</filename>
            <type>text/plain</type>
            <size>49665</size>
            <attacher name="Thomas Sepez">tsepez</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4NzU4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMTAtMjggIFRvbSBTZXBl
eiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgWFNTQXVkaXRvciBpcyBzaWxlbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwOTczCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDogaHR0
cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctd2l0aC1jYWxsYmFja3MuaHRt
bAorCisgICAgICAgICogaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpYU1NBdWRpdG9yOjpYU1NBdWRpdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlhTU0F1ZGl0
b3I6OmZpbHRlclRva2VuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmg6Cisg
ICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlG
cmFtZUxvYWRlckNsaWVudDo6ZGlkRGV0ZWN0WFNTKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVM
b2FkZXJDbGllbnQuaDoKKwogMjAxMS0xMC0yOCAgQWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29n
bGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gSW1wbGljaXRseSBza2lwIHJlbmRlciBzdXJm
YWNlcyB0aGF0IHdvbid0IGJlIGRyYXduCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yLmNwcAkocmV2aXNpb24gOTg3NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9YU1NBdWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNs
dWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAi
SFRNTERvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAi
SFRNTFBhcmFtRWxlbWVudC5oIgpAQCAtMTg2LDYgKzE4Nyw3IEBAIFhTU0F1ZGl0b3I6OlhTU0F1
ZGl0b3IoSFRNTERvY3VtZW50UGFyc2UKICAgICAsIG1faXNFbmFibGVkKGZhbHNlKQogICAgICwg
bV94c3NQcm90ZWN0aW9uKFhTU1Byb3RlY3Rpb25FbmFibGVkKQogICAgICwgbV9zdGF0ZShVbmlu
aXRpYWxpemVkKQorICAgICwgbV9ub3RpZmllZENsaWVudChmYWxzZSkKIHsKICAgICBBU1NFUlQo
bV9wYXJzZXIpOwogICAgIGlmIChGcmFtZSogZnJhbWUgPSBwYXJzZXItPmRvY3VtZW50KCktPmZy
YW1lKCkpIHsKQEAgLTI4NSwxMCArMjg3LDE3IEBAIHZvaWQgWFNTQXVkaXRvcjo6ZmlsdGVyVG9r
ZW4oSFRNTFRva2VuJiAKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhZGQgdGhlIHJlYWwg
bGluZSBudW1iZXIgdG8gdGhlIGNvbnNvbGUuCiAgICAgICAgIG1fcGFyc2VyLT5kb2N1bWVudCgp
LT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5hZGRNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgTG9n
TWVzc2FnZVR5cGUsIEVycm9yTWVzc2FnZUxldmVsLCBjb25zb2xlTWVzc2FnZSwgMSwgU3RyaW5n
KCkpOwogCi0gICAgICAgIGlmIChtX3hzc1Byb3RlY3Rpb24gPT0gWFNTUHJvdGVjdGlvbkJsb2Nr
RW5hYmxlZCkgewotICAgICAgICAgICAgbV9wYXJzZXItPmRvY3VtZW50KCktPmZyYW1lKCktPmxv
YWRlcigpLT5zdG9wQWxsTG9hZGVycygpOwotICAgICAgICAgICAgbV9wYXJzZXItPmRvY3VtZW50
KCktPmZyYW1lKCktPm5hdmlnYXRpb25TY2hlZHVsZXIoKS0+c2NoZWR1bGVMb2NhdGlvbkNoYW5n
ZShtX3BhcnNlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgYmxhbmtVUkwoKSwgU3Ry
aW5nKCkpOworICAgICAgICBib29sIGJsb2NrRW50aXJlUGFnZSA9IChtX3hzc1Byb3RlY3Rpb24g
PT0gWFNTUHJvdGVjdGlvbkJsb2NrRW5hYmxlZCk7CisgICAgICAgIGlmIChibG9ja0VudGlyZVBh
Z2UpCisgICAgICAgICAgICAgbV9wYXJzZXItPmRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigp
LT5zdG9wQWxsTG9hZGVycygpOworCisgICAgICAgIGlmICghbV9ub3RpZmllZENsaWVudCkgewor
ICAgICAgICAgICAgbV9wYXJzZXItPmRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT5jbGll
bnQoKS0+ZGlkRGV0ZWN0WFNTKG1fcGFyc2VyLT5kb2N1bWVudCgpLT51cmwoKSwgYmxvY2tFbnRp
cmVQYWdlKTsKKyAgICAgICAgICAgIG1fbm90aWZpZWRDbGllbnQgPSB0cnVlOwogICAgICAgICB9
CisKKyAgICAgICAgaWYgKGJsb2NrRW50aXJlUGFnZSkKKyAgICAgICAgICAgIG1fcGFyc2VyLT5k
b2N1bWVudCgpLT5mcmFtZSgpLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCktPnNjaGVkdWxlTG9jYXRp
b25DaGFuZ2UobV9wYXJzZXItPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIGJsYW5rVVJM
KCksIFN0cmluZygpKTsKICAgICB9CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL1hTU0F1ZGl0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9YU1NBdWRpdG9yLmgJKHJldmlzaW9uIDk4NzUyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvWFNTQXVkaXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw2ICs4OCw3IEBAIHByaXZh
dGU6CiAKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIFN0cmluZyBtX2NhY2hlZFNuaXBwZXQ7Cisg
ICAgYm9vbCBtX25vdGlmaWVkQ2xpZW50OwogfTsKIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gOTg3NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3MCw2ICszNzAsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIGNhbkNhY2hlUGFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNl
OyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29u
c3QgS1VSTCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYs
IGJvb2wpIHsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxGcmFtZT4gY3JlYXRlRnJhbWUoY29u
c3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIEhUTUxGcmFtZU93bmVyRWxlbWVudCosIGNvbnN0IFN0
cmluZyYsIGJvb2wsIGludCwgaW50KSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
ZFRyYW5zZmVyQ2hpbGRGcmFtZVRvTmV3RG9jdW1lbnQoUGFnZSopIHsgfQogICAgIHZpcnR1YWwg
dm9pZCB0cmFuc2ZlckxvYWRpbmdSZXNvdXJjZUZyb21QYWdlKFJlc291cmNlTG9hZGVyKiwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiwgUGFnZSopIHsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDk4NzUyKQorKysgU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOCw2ICsy
MDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIHNjcmlwdCkgZnJvbSBhbiBp
bnNlY3VyZSBzb3VyY2UuICBOb3RlIHRoYXQgdGhlIGluc2VjdXJlIGNvbnRlbnQgY2FuCiAgICAg
ICAgIC8vIHNwcmVhZCB0byBvdGhlciBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29u
c3QgS1VSTCYpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBL
VVJMJiwgYm9vbCBibG9ja0VudGlyZVBhZ2UpID0gMDsKIAogICAgICAgICB2aXJ0dWFsIFJlc291
cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgPSAwOwogICAg
ICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVx
dWVzdCYpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDk4NzU4KQorKysgU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAKKzIwMTEtMTAt
MjggIFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgWFNTQXVkaXRv
ciBpcyBzaWxlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTcwOTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKHdlYmtpdFdlYkxvYWRlckNs
aWVudEF0dGFjaExvYWRlckNsaWVudFRvUGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkxv
YWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRlckNsaWVudDo6ZGlkRGV0
ZWN0WFNTRm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkaWREZXRlY3RYU1NGb3JGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2Fn
ZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZVBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlUGFnZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudDo6ZGlkRGV0ZWN0WFNTRm9yRnJhbWUpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1Mp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaDoKKwogMjAxMS0xMC0yOCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4K
IAogICAgICAgICBDbGVhbiB1cCBCdWlsdEluUERGVmlldyBhIGxpdHRsZQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDk4NzUy
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0Nyw2ICsxNDcsMTQgQEAgdm9pZCBXZWJMb2FkZXJDbGllbnQ6OmRpZFJ1
bkluc2VjdXJlQ29udAogICAgIG1fY2xpZW50LmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1l
KHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuY2xp
ZW50SW5mbyk7CiB9CiAKK3ZvaWQgV2ViTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1NGb3JGcmFt
ZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBBUElPYmplY3QqIHVz
ZXJEYXRhKQoreworICAgIGlmICghbV9jbGllbnQuZGlkRGV0ZWN0WFNTRm9yRnJhbWUpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LmRpZERldGVjdFhTU0ZvckZyYW1lKHRvQVBJKHBh
Z2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7
Cit9CisKIGJvb2wgV2ViTG9hZGVyQ2xpZW50OjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVj
dGlvblNwYWNlSW5GcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1l
LCBXZWJQcm90ZWN0aW9uU3BhY2UqIHByb3RlY3Rpb25TcGFjZSkKIHsKICAgICBpZiAoIW1fY2xp
ZW50LmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKQpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gOTg3
NTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVtb3ZlRnJh
bWVGcm9tSGllcmFyY2h5KFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBBUElPYmplY3Qq
KTsKICAgICB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZShXZWJQYWdlUHJv
eHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJT2JqZWN0Kik7CiAgICAgdm9pZCBkaWRSdW5JbnNlY3Vy
ZUNvbnRlbnRGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgQVBJT2JqZWN0
Kik7CisgICAgdm9pZCBkaWREZXRlY3RYU1NGb3JGcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFt
ZVByb3h5KiwgQVBJT2JqZWN0Kik7CiAgICAgCiAgICAgYm9vbCBjYW5BdXRoZW50aWNhdGVBZ2Fp
bnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5Kiwg
V2ViUHJvdGVjdGlvblNwYWNlKik7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VJbkZyYW1lKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5Kik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAkocmV2aXNpb24gOTg3NTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzNCw2ICsxODM0LDE5IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQKICAgICBtX2xvYWRlckNs
aWVudC5kaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh0aGlzLCBmcmFtZSwgdXNlckRhdGEu
Z2V0KCkpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRGV0ZWN0WFNTRm9yRnJhbWUodWlu
dDY0X3QgZnJhbWVJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBhcmd1bWVudHMpCit7Cisg
ICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CisgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdl
RGVjb2RlciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgbV9wcm9jZXNzLT5jb250ZXh0KCkpOwor
ICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUobWVzc2FnZURlY29kZXIpKQorICAgICAgICByZXR1
cm47CisKKyAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJh
bWVJRCk7CisgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CisKKyAgICBtX2xvYWRlckNsaWVudC5k
aWREZXRlY3RYU1NGb3JGcmFtZSh0aGlzLCBmcmFtZSwgdXNlckRhdGEuZ2V0KCkpOworfQorCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZnJhbWVEaWRCZWNvbWVGcmFtZVNldCh1aW50NjRfdCBmcmFtZUlE
LCBib29sIHZhbHVlKQogewogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gcHJvY2VzcygpLT53
ZWJGcmFtZShmcmFtZUlEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHJldmlzaW9uIDk4NzUyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MDcsNiArNjA3LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeSh1aW50NjRfdCBmcmFtZUlELCBDb3Jl
SVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAgICB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRl
bnRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsK
ICAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOworICAgIHZvaWQgZGlkRGV0ZWN0WFNTRm9yRnJh
bWUodWludDY0X3QgZnJhbWVJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiAgICAgdm9p
ZCBmcmFtZURpZEJlY29tZUZyYW1lU2V0KHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wpOwogICAgIHZv
aWQgZGlkU3RhcnRQcm9ncmVzcygpOwogICAgIHZvaWQgZGlkQ2hhbmdlUHJvZ3Jlc3MoZG91Ymxl
KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgkocmV2aXNpb24gOTg3NTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDcg
QEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBEaWRSZWNlaXZlVGl0bGVGb3JGcmFt
ZSh1aW50NjRfdCBmcmFtZUlELCBXVEY6OlN0cmluZyB0aXRsZSwgV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZVVzZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKICAgICBEaWREaXNwbGF5SW5zZWN1cmVD
b250ZW50Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVz
ZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKICAgICBEaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JG
cmFtZSh1aW50NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VF
bmNvZGVyIHVzZXJEYXRhKQorICAgIERpZERldGVjdFhTU0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1l
SUQsIFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpCiAg
ICAgRGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVp
bnQzMl90IHR5cGUsIFdURjo6U3RyaW5nIHVybCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVzZXJN
ZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKIAogICAgIEZyYW1lRGlkQmVjb21lRnJhbWVTZXQodWlu
dDY0X3QgZnJhbWVJRCwgYm9vbCB2YWx1ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmgJKHJldmlzaW9uIDk4NzUyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBAIHR5cGVk
ZWYgdm9pZCAoKldLUGFnZURpZEZpcnN0VmlzdWFsbHlOb24KIHR5cGVkZWYgdm9pZCAoKldLUGFn
ZURpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tG
cmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZv
KTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFt
ZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVz
ZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURp
ZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0Zy
YW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8p
OwordHlwZWRlZiB2b2lkICgqV0tQYWdlRGlkRGV0ZWN0WFNTRm9yRnJhbWVDYWxsYmFjaykoV0tQ
YWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIGJvb2wgKCpXS1BhZ2VDYW5BdXRoZW50aWNhdGVB
Z2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tG
cmFtZVJlZiBmcmFtZSwgV0tQcm90ZWN0aW9uU3BhY2VSZWYgcHJvdGVjdGlvblNwYWNlLCBjb25z
dCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLUGFnZURpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJh
bWVSZWYgZnJhbWUsIFdLQXV0aGVudGljYXRpb25DaGFsbGVuZ2VSZWYgYXV0aGVudGljYXRpb25D
aGFsbGVuZ2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tQYWdl
RGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0Q2FsbGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0JhY2tG
b3J3YXJkTGlzdEl0ZW1SZWYgYWRkZWRJdGVtLCBXS0FycmF5UmVmIHJlbW92ZWRJdGVtcywgY29u
c3Qgdm9pZCAqY2xpZW50SW5mbyk7CkBAIC04Nyw2ICs4OCw3IEBAIHN0cnVjdCBXS1BhZ2VMb2Fk
ZXJDbGllbnQgewogICAgIFdLUGFnZURpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeUNhbGxiYWNr
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5Owog
ICAgIFdLUGFnZURpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZUNhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lOwogICAgIFdL
UGFnZURpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICAgICAgICAgZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWU7CisgICAgV0tQYWdlRGlkRGV0
ZWN0WFNTRm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
aWREZXRlY3RYU1NGb3JGcmFtZTsKICAgICBXS1BhZ2VDYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJv
dGVjdGlvblNwYWNlSW5GcmFtZUNhbGxiYWNrICAgICAgICAgIGNhbkF1dGhlbnRpY2F0ZUFnYWlu
c3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lOwogICAgIFdLUGFnZURpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUluRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZTsKIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuY3BwCShy
ZXZpc2lvbiA5ODc1MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFdlYkxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw2ICsxNjIsNyBAQCB2
b2lkIHdlYmtpdFdlYkxvYWRlckNsaWVudEF0dGFjaExvYWRlckNsCiAgICAgICAgIDAsIC8vIGRp
ZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeQogICAgICAgICAwLCAvLyBkaWREaXNwbGF5SW5zZWN1
cmVDb250ZW50Rm9yRnJhbWUKICAgICAgICAgMCwgLy8gZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9y
RnJhbWUKKyAgICAgICAgMCwgLy8gZGlkRGV0ZWN0WFNTRm9yRnJhbWUKICAgICAgICAgMCwgLy8g
Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUKICAgICAgICAgMCwg
Ly8gZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZQogICAgICAgICBkaWRD
aGFuZ2VQcm9ncmVzcywgLy8gZGlkU3RhcnRQcm9ncmVzcwpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gOTg3NTIpCisr
KyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw2ICsxNTYsMTYgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZAogICAgIHVzZXJEYXRhID0g
YWRvcHRSZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1NGb3JGcmFtZShXZWJQYWdlKiBwYWdlLCBX
ZWJGcmFtZSogZnJhbWUsIFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSkKK3sKKyAgICBpZiAo
IW1fY2xpZW50LmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKQorICAgICAgICByZXR1cm47
CisKKyAgICBXS1R5cGVSZWYgdXNlckRhdGFUb1Bhc3MgPSAwOworICAgIG1fY2xpZW50LmRpZERl
dGVjdFhTU0ZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksICZ1c2VyRGF0YVRvUGFz
cywgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgdXNlckRhdGEgPSBhZG9wdFJlZih0b0ltcGwo
dXNlckRhdGFUb1Bhc3MpKTsKK30KKwogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGll
bnQ6OmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1l
LCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpCiB7CiAgICAgaWYgKCFtX2NsaWVudC5kaWRG
aXJzdExheW91dEZvckZyYW1lKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA5ODc1MikKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUmVt
b3ZlRnJhbWVGcm9tSGllcmFyY2h5KFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxBUElPYmpl
Y3Q+JiB1c2VyRGF0YSk7CiAgICAgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJh
bWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKICAg
ICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSos
IFJlZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CisgICAgdm9pZCBkaWREZXRlY3RYU1NGb3JG
cmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOwog
CiAgICAgdm9pZCBkaWRGaXJzdExheW91dEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJl
ZlB0cjxBUElPYmplY3Q+JiB1c2VyRGF0YSk7CiAgICAgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRGb3JGcmFtZShXZWJQYWdlKiwgV2ViRnJhbWUqLCBSZWZQdHI8QVBJT2JqZWN0
PiYgdXNlckRhdGEpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCShyZXZpc2lvbiA5
ODc1MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGVQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDcgQEAgdHlwZWRlZiB2
b2lkICgqV0tCdW5kbGVQYWdlRGlkUmVjZWl2ZVRpdAogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQ
YWdlRGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2
b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZERpc3BsYXlJ
bnNlY3VyZUNvbnRlbnRGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tC
dW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xp
ZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VEaWRSdW5JbnNlY3VyZUNvbnRl
bnRGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJl
ZiBmcmFtZSwgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0
eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VEaWREZXRlY3RYU1NGb3JGcmFtZUNhbGxiYWNrKShX
S0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiB1
c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRs
ZVBhZ2VEaWRGaXJzdExheW91dEZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdl
LCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lk
ICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZEZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dEZvckZyYW1lQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkICpj
bGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZExheW91dEZvckZyYW1l
Q2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1lLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKTsKQEAgLTEyNiw2ICsxMjcsNyBAQCBzdHJ1Y3QgV0tCdW5k
bGVQYWdlTG9hZGVyQ2xpZW50IHsKIAogICAgIC8vIFZlcnNpb24gMS4KICAgICBXS0J1bmRsZVBh
Z2VEaWRMYXlvdXRGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRpZExheW91dEZvckZyYW1lOworICAgIFdLQnVuZGxlUGFnZURpZERldGVjdFhTU0ZvckZyYW1l
Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlkRGV0ZWN0WFNTRm9yRnJhbWU7
CiB9OwogdHlwZWRlZiBzdHJ1Y3QgV0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50IFdLQnVuZGxlUGFn
ZUxvYWRlckNsaWVudDsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJ
KHJldmlzaW9uIDk4NzUyKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0NCw2ICs5
NDQsMTkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cgogICAgIHdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkUnVuSW5zZWN1cmVDb250ZW50
Rm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5j
b2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIH0KIAordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlkRGV0ZWN0WFNTKGNvbnN0IEtVUkwmLCBib29sKQoreworICAgIFdlYlBhZ2UqIHdlYlBhZ2Ug
PSBtX2ZyYW1lLT5wYWdlKCk7CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1cm47CisK
KyAgICBSZWZQdHI8QVBJT2JqZWN0PiB1c2VyRGF0YTsKKworICAgIHdlYlBhZ2UtPmluamVjdGVk
QnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkRGV0ZWN0WFNTRm9yRnJhbWUod2ViUGFnZSwgbV9mcmFt
ZSwgdXNlckRhdGEpOworCisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEaWREZXRlY3RYU1NGb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIEluamVjdGVkQnVuZGxl
VXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworfQorCiBSZXNvdXJjZUVycm9y
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCiB7CiAgICAgcmV0dXJuIFdlYktpdDo6Y2FuY2VsbGVkRXJyb3IocmVxdWVz
dCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA5ODc1MikK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNyw3IEBAIHByaXZhdGU6CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4qLCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpLVVJMJiwgYm9vbCBibG9ja0VudGlyZVBhZ2Up
IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxl
ZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwkocmV2aXNpb24gOTg3NTgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTEwLTI4ICBUb20gU2VwZXogIDx0
c2VwZXpAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFhTU0F1ZGl0b3IgaXMgc2lsZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDk3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcHVibGljL1dlYkZy
YW1lQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50OjpkaWREZXRlY3RY
U1MpOgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpZERldGVjdFhTUyk6CisgICAgICAgICog
c3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorCiAyMDExLTEwLTI4ICBKb2NoZW4gRWlzaW5n
ZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbmFtZSBhIG51bWJlciBvZiBt
ZXRob2RzIG1lbnRpb25pbmcgSmF2YVNjcmlwdCB0byBqdXN0IFNjcmlwdCBpbnN0ZWFkCkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgJKHJl
dmlzaW9uIDk4NzUyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjg2LDYgKzI4Niw5IEBAIHB1YmxpYzoKICAgICAv
LyBzcHJlYWQgdG8gb3RoZXIgZnJhbWVzIGluIHRoZSBzYW1lIG9yaWdpbi4KICAgICB2aXJ0dWFs
IHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkZyYW1lKiwgY29uc3QgV2ViU2VjdXJpdHlP
cmlnaW4mLCBjb25zdCBXZWJVUkwmIGluc2VjdXJlVVJMKSB7IH0KIAorICAgIC8vIEEgcmVmbGVj
dGVkIFhTUyB3YXMgZW5jb3VudGVyZWQgaW4gdGhlIHBhZ2UgYW5kIHN1cHByZXNzZWQuCisgICAg
dmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhXZWJGcmFtZSosIGNvbnN0IFdlYlVSTCYsIGJvb2wg
YmxvY2tFbnRpcmVQYWdlKSB7IH0KKwogICAgIC8vIFRoaXMgZnJhbWUgYWRvcHRlZCB0aGUgcmVz
b3VyY2UgdGhhdCBpcyBiZWluZyBsb2FkZWQuIFRoaXMgaGFwcGVucyB3aGVuCiAgICAgLy8gYW4g
aWZyYW1lLCB0aGF0IGlzIGxvYWRpbmcgYSBzdWJyZXNvdXJjZSwgaXMgdHJhbnNmZXJyZWQgYmV0
d2VlbiB3aW5kb3dzLgogICAgIHZpcnR1YWwgdm9pZCBkaWRBZG9wdFVSTExvYWRlcihXZWJVUkxM
b2FkZXIqKSB7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gOTg3NTIpCisrKyBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjA0LDYgKzEyMDQsMTIgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpZFJ1
bkluc2VjdQogICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkUnVuSW5zZWN1cmVDb250
ZW50KG1fd2ViRnJhbWUsIFdlYlNlY3VyaXR5T3JpZ2luKG9yaWdpbiksIGluc2VjdXJlVVJMKTsK
IH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpZERldGVjdFhTUyhjb25zdCBLVVJM
JiBpbnNlY3VyZVVSTCwgYm9vbCBibG9ja0VudGlyZVBhZ2UpCit7CisgICAgaWYgKG1fd2ViRnJh
bWUtPmNsaWVudCgpKQorICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkRGV0ZWN0WFNT
KG1fd2ViRnJhbWUsIGluc2VjdXJlVVJMLCBibG9ja0VudGlyZVBhZ2UpOworfQorCiBSZXNvdXJj
ZUVycm9yIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6YmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpCiB7CiAgICAgLy8gRklYTUUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA5ODc1MikKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzgsNiArMTM4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKikgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
KiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgaW5zZWN1cmVVUkwpOworICAgIHZpcnR1YWwgdm9pZCBk
aWREZXRlY3RYU1MoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGJvb2wgYmxvY2tFbnRpcmVQYWdlKTsK
ICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2Fubm90U2hvd1VSTEVycm9yKGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwpJbmRleDogU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwkocmV2aXNp
b24gOTg3NTgpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNCBAQAorMjAxMS0xMC0yOCAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBYU1NBdWRpdG9yIGlzIHNpbGVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA5NzMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpk
aWREZXRlY3RYU1MpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
RWZsLmg6CisKIDIwMTEtMTAtMjggIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgUmVuYW1lIGEgbnVtYmVyIG9mIG1ldGhvZHMgbWVudGlvbmluZyBKYXZh
U2NyaXB0IHRvIGp1c3QgU2NyaXB0IGluc3RlYWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHJl
dmlzaW9uIDk4NzUyKQorKysgU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MzEsNiArNTMxLDExIEBAIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpZFJ1bkluc2VjdXIKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjpkaWREZXRlY3RYU1MoY29uc3Qg
S1VSTCYsIGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBGcmFtZUxv
YWRlckNsaWVudEVmbDo6bWFrZVJlcHJlc2VudGF0aW9uKERvY3VtZW50TG9hZGVyKikKIHsKICAg
ICBtX2hhc1JlcHJlc2VudGF0aW9uID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZWZsL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAkocmV2aXNp
b24gOTg3NTIpCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsNiArMTYzLDcgQEAgY2xhc3MgRnJh
bWVMb2FkZXJDbGllbnRFZmwgOiBwdWJsaWMgRnJhbQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRT
dG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJdGVtKikgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgS1VSTCYpOworICAgIHZp
cnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYsIGJvb2wgYmxvY2tFbnRpcmVQYWdl
KTsKIAogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNv
dXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYpOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gOTg3
NTgpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNCBAQAorMjAxMS0xMC0yOCAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4K
KworICAgICAgICBYU1NBdWRpdG9yIGlzIHNpbGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpZERldGVjdFhT
Uyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaDoKKwog
MjAxMS0xMC0yOCAgSm9jaGVuIEVpc2luZ2VyICA8am9jaGVuQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZW5hbWUgYSBudW1iZXIgb2YgbWV0aG9kcyBtZW50aW9uaW5nIEphdmFTY3JpcHQgdG8g
anVzdCBTY3JpcHQgaW5zdGVhZApJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gOTg3
NTIpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNCw2ICs3MjQsMTEgQEAgdm9pZCBGcmFtZUxv
YWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDbwogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAK
K3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpZERldGVjdFhTUyhjb25zdCBLVVJMJiwgYm9vbCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50Ojpt
YWtlUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKQogewogICAgIG1faGFz
UmVwcmVzZW50YXRpb24gPSB0cnVlOwpJbmRleDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCShyZXZpc2lvbiA5ODc1
MikKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw2ICsxNDUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBib29sIGJsb2NrRW50aXJlUGFnZSk7
CiAKICAgICAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9y
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgICAgICB2aXJ0dWFsIFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gOTg3NTgpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAx
MS0xMC0yOCAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KKworICAgICAgICBYU1NB
dWRpdG9yIGlzIHNpbGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzA5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDb250ZW50KToKKyAgICAgICAgKFdlYkZy
YW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MpOgorICAgICAgICAqIFdlYlZpZXcvV2ViRGVs
ZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1l
TG9hZERlbGVnYXRlUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV2ViVmlldyBfY2FjaGVGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uc10p
OgorCiAyMDExLTEwLTI4ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJlbmFtZSBhIG51bWJlciBvZiBtZXRob2RzIG1lbnRpb25pbmcgSmF2YVNjcmlw
dCB0byBqdXN0IFNjcmlwdCBpbnN0ZWFkCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDk4
NzUyKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1Niw3IEBAIHByaXZhdGU6CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4qLCBjb25zdCBXZWJDb3JlOjpLVVJMJikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGRp
ZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpLVVJMJiwgYm9vbCBibG9ja0VudGlyZVBhZ2UpIE9W
RVJSSURFOwogCiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24g
OTg3NTIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtOTg5LDEyICs5ODksMjMgQEAgdm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlkRGlzcGxheUlucwogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3Qg
S1VSTCYgaW5zZWN1cmVVUkwpCiB7Ci0gICAgUmV0YWluUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiB3
ZWJTZWN1cml0eU9yaWdpbihBZG9wdE5TLCBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5p
dFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46b3JpZ2luXSk7Ci0KICAgICBXZWJWaWV3ICp3ZWJW
aWV3ID0gZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdldCgpKTsgICAKICAgICBXZWJGcmFtZUxvYWRE
ZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRG
cmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9ucyh3ZWJWaWV3KTsKLSAgICBpZiAoaW1wbGVt
ZW50YXRpb25zLT5kaWRSdW5JbnNlY3VyZUNvbnRlbnRGdW5jKQorICAgIGlmIChpbXBsZW1lbnRh
dGlvbnMtPmRpZFJ1bkluc2VjdXJlQ29udGVudEZ1bmMpIHsKKyAgICAgICAgUmV0YWluUHRyPFdl
YlNlY3VyaXR5T3JpZ2luPiB3ZWJTZWN1cml0eU9yaWdpbihBZG9wdE5TLCBbW1dlYlNlY3VyaXR5
T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46b3JpZ2luXSk7CiAg
ICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZFJ1bkluc2Vj
dXJlQ29udGVudEZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJ1bkluc2VjdXJl
Q29udGVudDopLCB3ZWJTZWN1cml0eU9yaWdpbi5nZXQoKSk7CisgICAgfQorfQorCit2b2lkIFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYgaW5zZWN1cmVVUkws
IGJvb2wgYmxvY2tFbnRpcmVQYWdlKQoreworICAgIFdlYlZpZXcgKndlYlZpZXcgPSBnZXRXZWJW
aWV3KG1fd2ViRnJhbWUuZ2V0KCkpOyAgIAorICAgIFdlYkZyYW1lTG9hZERlbGVnYXRlSW1wbGVt
ZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldEZyYW1lTG9hZERlbGVn
YXRlSW1wbGVtZW50YXRpb25zKHdlYlZpZXcpOworICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPmRp
ZERldGVjdFhTU0Z1bmMpIHsKKyAgICAgICAgLy8gRklYTUU6IG11c3QgcGFzcyBibG9ja0VudGly
ZVBhZ2UgaWYgd2Ugd2FudCB0byBkbyBtb3JlIG9uIG1hYyB0aGFuIGp1c3QgcGFzcyB0ZXN0cy4K
KyAgICAgICAgTlNVUkwqIGluc2VjdXJlTlNVUkwgPSBpbnNlY3VyZVVSTDsKKyAgICAgICAgQ2Fs
bEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkRGV0ZWN0WFNTRnVuYywgd2Vi
VmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkRGV0ZWN0WFNTOiksIGluc2VjdXJlTlNVUkwpOwor
ICAgIH0KIH0KIAogUmVzb3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsbGVk
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlv
bkNhY2hpbmcuaAkocmV2aXNpb24gOTg3NTIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTc3
LDYgKzc3LDcgQEAgc3RydWN0IFdlYkZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpbwogICAg
IElNUCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZUZ1bmM7CiAgICAgSU1QIGRpZERpc3Bs
YXlJbnNlY3VyZUNvbnRlbnRGdW5jOwogICAgIElNUCBkaWRSdW5JbnNlY3VyZUNvbnRlbnRGdW5j
OworICAgIElNUCBkaWREZXRlY3RYU1NGdW5jOwogfTsKIAogc3RydWN0IFdlYlNjcmlwdERlYnVn
RGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUuaAkocmV2aXNp
b24gOTg3NTIpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lTG9hZERlbGVn
YXRlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCwxMSArMzQsOSBAQAogQGludGVyZmFj
ZSBOU09iamVjdCAoV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlKQogCiAtICh2b2lkKXdlYlZp
ZXdEaWREaXNwbGF5SW5zZWN1cmVDb250ZW50OihXZWJWaWV3ICopd2ViVmlldzsKLQogLSAodm9p
ZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkaWRSdW5JbnNlY3VyZUNvbnRlbnQ6KFdlYlNl
Y3VyaXR5T3JpZ2luICopb3JpZ2luOwotCistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJW
aWV3IGRpZERldGVjdFhTUzooTlNVUkwgKilpbnNlY3VyZVVSTDsKIC0gKHZvaWQpd2ViVmlldzoo
V2ViVmlldyAqKXdlYlZpZXcgZGlkQ2xlYXJXaW5kb3dPYmplY3RGb3JGcmFtZTooV2ViRnJhbWUg
KilmcmFtZSBpblNjcmlwdFdvcmxkOihXZWJTY3JpcHRXb3JsZCAqKXdvcmxkOwotCiAtICh2b2lk
KXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRpZFB1c2hTdGF0ZVdpdGhpblBhZ2VGb3JGcmFt
ZTooV2ViRnJhbWUgKilmcmFtZTsKIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcg
ZGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZUZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lOwogLSAo
dm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkaWRQb3BTdGF0ZVdpdGhpblBhZ2VGb3JG
cmFtZTooV2ViRnJhbWUgKilmcmFtZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0JKHJldmlzaW9uIDk4NzUyKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUxLDYgKzE1NTEsNyBAQCAtICh2b2lkKV9jYWNo
ZUZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50CiAgICAgY2FjaGUtPndpbmRvd1NjcmlwdE9iamVj
dEF2YWlsYWJsZUZ1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3Ondp
bmRvd1NjcmlwdE9iamVjdEF2YWlsYWJsZTopKTsKICAgICBjYWNoZS0+ZGlkRGlzcGxheUluc2Vj
dXJlQ29udGVudEZ1bmMgPSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3RGlk
RGlzcGxheUluc2VjdXJlQ29udGVudDopKTsKICAgICBjYWNoZS0+ZGlkUnVuSW5zZWN1cmVDb250
ZW50RnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkUnVuSW5z
ZWN1cmVDb250ZW50OikpOworICAgIGNhY2hlLT5kaWREZXRlY3RYU1NGdW5jID0gZ2V0TWV0aG9k
KGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmlldzpkaWREZXRlY3RYU1M6KSk7CiB9CiAKIC0gKHZv
aWQpX2NhY2hlU2NyaXB0RGVidWdEZWxlZ2F0ZUltcGxlbWVudGF0aW9ucwpJbmRleDogU291cmNl
L1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDk4NzU4KQorKysgU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0xMC0yOCAgVG9tIFNlcGV6ICA8dHNl
cGV6QGNocm9taXVtLm9yZz4KKworICAgICAgICBYU1NBdWRpdG9yIGlzIHNpbGVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA5NzMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJD
bGllbnRRdDo6ZGlkRGV0ZWN0WFNTKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0Lmg6CisKIDIwMTEtMTAtMjggIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIGEgbnVtYmVyIG9mIG1ldGhvZHMgbWVudGlv
bmluZyBKYXZhU2NyaXB0IHRvIGp1c3QgU2NyaXB0IGluc3RlYWQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNw
cAkocmV2aXNpb24gOTg3NTIpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzMsNiArODczLDE0IEBA
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkUnVuSW5zZWN1cmUKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZERldGVjdFhTUyhjb25z
dCBLVVJMJiwgYm9vbCkKK3sKKyAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzKQorICAg
ICAgICBwcmludGYoImRpZERldGVjdFhTU1xuIik7CisKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNhdmVWaWV3U3RhdGVUb0l0ZW0oV2ViQ29y
ZTo6SGlzdG9yeUl0ZW0qIGl0ZW0pCiB7CiAgICAgUVdlYkhpc3RvcnlJdGVtIGhpc3RvcnlJdGVt
KG5ldyBRV2ViSGlzdG9yeUl0ZW1Qcml2YXRlKGl0ZW0pKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCShyZXZp
c2lvbiA5ODc1MikKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNiArMTYyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhpc3RvcnlJ
dGVtKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2lu
KiwgY29uc3QgS1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgS1VS
TCYsIGJvb2wgYmxvY2tFbnRpcmVQYWdlKTsKIAogICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBj
YW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0dWFsIFJlc291
cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwpJbmRleDogU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwkocmV2aXNpb24gOTg3NTgpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0xMC0yOCAgVG9tIFNlcGV6
ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KKworICAgICAgICBYU1NBdWRpdG9yIGlzIHNpbGVudAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA5NzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaWREZXRlY3RYU1MpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lmg6CisKIDIwMTEtMTAtMjggIEpvY2hlbiBFaXNpbmdlciAgPGpvY2hlbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIGEgbnVtYmVyIG9mIG1ldGhvZHMgbWVudGlv
bmluZyBKYXZhU2NyaXB0IHRvIGp1c3QgU2NyaXB0IGluc3RlYWQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAJKHJldmlzaW9uIDk4NzUyKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NTYsNiArNjU2
LDExIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXIKICAgICBmcmFt
ZUxvYWREZWxlZ2F0ZVByaXYyLT5kaWRSdW5JbnNlY3VyZUNvbnRlbnQod2ViVmlldywgd2ViU2Vj
dXJpdHlPcmlnaW4uZ2V0KCkpOwogfQogCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRE
ZXRlY3RYU1MoY29uc3QgS1VSTCYsIGJvb2wpCit7CisgICAgLy8gRklYTUU6IHByb3BvZ2F0ZSBj
YWxsIGludG8gdGhlIHByaXZhdGUgZGVsZWdhdGUuCit9CisKIFBhc3NSZWZQdHI8RG9jdW1lbnRM
b2FkZXI+IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRl
RGF0YSkKIHsKICAgICBSZWZQdHI8V2ViRG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IFdlYkRvY3Vt
ZW50TG9hZGVyOjpjcmVhdGUocmVxdWVzdCwgc3Vic3RpdHV0ZURhdGEpOwpJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCShyZXZpc2lvbiA5ODc1MikKKysrIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk4LDYgKzk4LDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQo
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBkaWRE
ZXRlY3RYU1MoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGJvb2wgYmxvY2tFbnRpcmVQYWdlKTsKIAog
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxXZWJDb3JlOjpEb2N1bWVudExvYWRlcj4gY3JlYXRlRG9j
dW1lbnRMb2FkZXIoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29y
ZTo6U3Vic3RpdHV0ZURhdGEmKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2Vi
Q29yZTo6U3RyaW5nV2l0aERpcmVjdGlvbiYsIGNvbnN0IFdlYkNvcmU6OktVUkwmKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvd2luY2UvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvd2luY2UvQ2hhbmdlTG9nCShyZXZpc2lvbiA5ODc1OCkKKysrIFNvdXJjZS9XZWJLaXQvd2lu
Y2UvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTAtMjgg
IFRvbSBTZXBleiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgWFNTQXVkaXRvciBp
cyBzaWxlbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcwOTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6RnJhbWVMb2FkZXJDbGllbnRXaW5DRTo6ZGlkRGV0ZWN0WFNTKToKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmg6CisKIDIwMTEtMTAtMjggIEpv
Y2hlbiBFaXNpbmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVuYW1lIGEg
bnVtYmVyIG9mIG1ldGhvZHMgbWVudGlvbmluZyBKYXZhU2NyaXB0IHRvIGp1c3QgU2NyaXB0IGlu
c3RlYWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRXaW5DRS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW5jZS9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFdpbkNFLmNwcAkocmV2aXNpb24gOTg3NTIpCisr
KyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2lu
Q0UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzQsNiArMjc0LDExIEBAIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRXaW5DRTo6ZGlkUnVuSW5zZWMKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpZERldGVjdFhTUyhjb25zdCBLVVJMJiwgYm9v
bCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
V2luQ0U6Om1ha2VSZXByZXNlbnRhdGlvbihEb2N1bWVudExvYWRlciopCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRXaW5DRS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2Uv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oCShyZXZpc2lvbiA5ODc1MikK
KysrIFNvdXJjZS9XZWJLaXQvd2luY2UvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRX
aW5DRS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsNiArMTQwLDcgQEAgcHVibGljOgogCiAgICAg
dmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
V2ViQ29yZTo6S1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2Vi
Q29yZTo6S1VSTCYsIGJvb2wgYmxvY2tFbnRpcmVQYWdlKTsKIAogICAgIHZpcnR1YWwgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmKTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9y
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwpJbmRleDogU291cmNlL1dlYktpdC93
eC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDk4NzU4KQorKysgU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0xMC0yOCAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBYU1NBdWRpdG9yIGlzIHNpbGVudAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA5NzMKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4Ojpk
aWREZXRlY3RYU1MpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRX
eC5oOgorCiAyMDExLTEwLTI4ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFJlbmFtZSBhIG51bWJlciBvZiBtZXRob2RzIG1lbnRpb25pbmcgSmF2YVNj
cmlwdCB0byBqdXN0IFNjcmlwdCBpbnN0ZWFkCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYktp
dFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCShyZXZpc2lvbiA5
ODc1MikKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAyLDYgKzYwMiwxMSBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50V3g6OmRpZFJ1bkluc2VjdXJlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAor
dm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYsIGJvb2wp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBGcmFtZUxvYWRlckNsaWVudFd4
OjpzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0oV2ViQ29yZTo6SGlzdG9yeUl0
ZW0qKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dl
YktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgJKHJldmlzaW9uIDk4
NzUyKQorKysgU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
V3guaAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDYgKzE3MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250
ZW50KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJp
dHlPcmlnaW4qLCBjb25zdCBLVVJMJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RY
U1MoY29uc3QgS1VSTCYsIGJvb2wgYmxvY2tFbnRpcmVQYWdlKTsKIAogICAgICAgICB2aXJ0dWFs
IHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBSZXNvdXJj
ZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9h
ZGVyKiwgY29uc3QgY2hhciosIGludCk7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5ODc1OCkKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDExLTEwLTI4ICBUb20gU2VwZXog
IDx0c2VwZXpAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFhTU0F1ZGl0b3IgaXMgc2lsZW50Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDk3MworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoV2ViVmlld0hvc3Q6OmRp
ZERldGVjdFhTUyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW06
CisgICAgICAgICgtW0ZyYW1lTG9hZERlbGVnYXRlIHdlYlZpZXc6ZGlkRGV0ZWN0WFNTOl0pOgor
ICAgICAgICAqIE1pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAg
ICAgICAoZGlkRGV0ZWN0WFNTRm9yRnJhbWUpOgorICAgICAgICAoLVtCcm93c2VyV2luZG93Q29u
dHJvbGxlciBhd2FrZUZyb21OaWJdKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVk
QnVuZGxlUGFnZTo6SW5qZWN0ZWRCdW5kbGVQYWdlKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRC
dW5kbGVQYWdlOjpkaWREZXRlY3RYU1NGb3JGcmFtZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaDoKKwogMjAxMS0xMC0yOCAg
RXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTlJXVCBjcmFzaGVzIHdo
ZW4gcGFyc2luZyBsZWFrcyBvdXRwdXQgZHVlIHRvIFVURi04IGRlY29kaW5nIGVycm9yCkluZGV4
OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCShyZXZp
c2lvbiA5ODc1MikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3MSw2ICsxMTcxLDEyIEBAIHZvaWQgV2ViVmlld0hv
c3Q6OmRpZFJ1bkluc2VjdXJlQ29udGVudCgKICAgICAgICAgZnB1dHMoImRpZFJ1bkluc2VjdXJl
Q29udGVudFxuIiwgc3Rkb3V0KTsKIH0KIAordm9pZCBXZWJWaWV3SG9zdDo6ZGlkRGV0ZWN0WFNT
KFdlYkZyYW1lKiwgY29uc3QgV2ViVVJMJiwgYm9vbCkKK3sKKyAgICBpZiAobV9zaGVsbC0+c2hv
dWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKQorICAgICAgICBmcHV0cygiZGlkRGV0ZWN0WFNT
XG4iLCBzdGRvdXQpOworfQorCiB2b2lkIFdlYlZpZXdIb3N0OjpvcGVuRmlsZVN5c3RlbShXZWJG
cmFtZSogZnJhbWUsIFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUsIGJv
b2wgY3JlYXRlLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MpCiB7CiAgICAgd2Vi
a2l0X3N1cHBvcnQ6Ok9wZW5GaWxlU3lzdGVtKGZyYW1lLCB0eXBlLCBzaXplLCBjcmVhdGUsIGNh
bGxiYWNrcyk7CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9z
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0LmgJKHJldmlzaW9uIDk4NzUyKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDYgKzIxMCw3IEBAIGNsYXNzIFdl
YlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2ViU3AKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFp
bFJlc291cmNlTG9hZChXZWJLaXQ6OldlYkZyYW1lKiwgdW5zaWduZWQgaWRlbnRpZmllciwgY29u
c3QgV2ViS2l0OjpXZWJVUkxFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5z
ZWN1cmVDb250ZW50KFdlYktpdDo6V2ViRnJhbWUqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVu
SW5zZWN1cmVDb250ZW50KFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBXZWJLaXQ6OldlYlNlY3Vy
aXR5T3JpZ2luJiwgY29uc3QgV2ViS2l0OjpXZWJVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
RGV0ZWN0WFNTKFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBXZWJLaXQ6OldlYlVSTCYsIGJvb2wg
YmxvY2tFbnRpcmVQYWdlKTsKICAgICB2aXJ0dWFsIHZvaWQgb3BlbkZpbGVTeXN0ZW0oV2ViS2l0
OjpXZWJGcmFtZSosIFdlYktpdDo6V2ViRmlsZVN5c3RlbTo6VHlwZSwgbG9uZyBsb25nIHNpemUs
IGJvb2wgY3JlYXRlLCBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKIAogICAgIFdl
YktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKiBkZXZpY2VPcmllbnRhdGlvbkNs
aWVudE1vY2soKTsKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxl
Z2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2Fk
RGVsZWdhdGUubW0JKHJldmlzaW9uIDk4NzUyKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L0ZyYW1lTG9hZERlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MDUsNCArNDA1LDEwIEBA
IC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRSdW4KICAgICAgICAgcHJpbnRm
ICgiZGlkUnVuSW5zZWN1cmVDb250ZW50XG4iKTsKIH0KIAorLSAodm9pZCl3ZWJWaWV3OihXZWJW
aWV3ICopc2VuZGVyIGRpZERldGVjdFhTUzooTlNVUkwgKilpbnNlY3VyZVVSTAoreworICAgIGlm
ICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBGcmFtZUxvYWRDYWxsYmFja3Mo
KSkKKyAgICAgICAgcHJpbnRmICgiZGlkRGV0ZWN0WFNTXG4iKTsKK30KKwogQGVuZApJbmRleDog
VG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0JKHJl
dmlzaW9uIDk4NzUyKQorKysgVG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250
cm9sbGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTMyNSw2ICszMjUsMTEgQEAgc3RhdGljIHZvaWQg
ZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbQogICAgIExPRyhAImRpZFJ1bkluc2VjdXJlQ29u
dGVudEZvckZyYW1lIik7CiB9CiAKK3N0YXRpYyB2b2lkIGRpZERldGVjdFhTU0ZvckZyYW1lKFdL
UGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pCit7CisgICAgTE9HKEAiZGlkRGV0ZWN0WFNTRm9yRnJhbWUiKTsK
K30KKwogc3RhdGljIHZvaWQgZGlkU3RhcnRQcm9ncmVzcyhXS1BhZ2VSZWYgcGFnZSwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mbykKIHsKICAgICBbKEJyb3dzZXJXaW5kb3dDb250cm9sbGVyICopY2xp
ZW50SW5mbyBkaWRTdGFydFByb2dyZXNzXTsKQEAgLTU5Myw2ICs1OTgsNyBAQCAtICh2b2lkKWF3
YWtlRnJvbU5pYgogICAgICAgICBkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHksCiAgICAgICAg
IGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSwKICAgICAgICAgZGlkUnVuSW5zZWN1
cmVDb250ZW50Rm9yRnJhbWUsCisgICAgICAgIGRpZERldGVjdFhTU0ZvckZyYW1lLAogICAgICAg
ICAwLCAvLyBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZQogICAg
ICAgICAwLCAvLyBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lCiAgICAg
ICAgIGRpZFN0YXJ0UHJvZ3Jlc3MsCkluZGV4OiBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCShyZXZp
c2lvbiA5ODc1MikKKysrIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjExLDYgKzIxMSw3IEBAIElu
amVjdGVkQnVuZGxlUGFnZTo6SW5qZWN0ZWRCdW5kbGVQYWdlKFcKICAgICAgICAgd2lsbFBlcmZv
cm1DbGllbnRSZWRpcmVjdEZvckZyYW1lLAogICAgICAgICBkaWRIYW5kbGVPbmxvYWRFdmVudHNG
b3JGcmFtZSwKICAgICAgICAgMCwgLy8gZGlkTGF5b3V0Rm9yRnJhbWUKKyAgICAgICAgZGlkRGV0
ZWN0WFNTRm9yRnJhbWUsCiAgICAgfTsKICAgICBXS0J1bmRsZVBhZ2VTZXRQYWdlTG9hZGVyQ2xp
ZW50KG1fcGFnZSwgJmxvYWRlckNsaWVudCk7CiAKQEAgLTM4Myw2ICszODQsMTEgQEAgdm9pZCBJ
bmplY3RlZEJ1bmRsZVBhZ2U6OmRpZERpc3BsYXlJbnNlYwogICAgIHN0YXRpY19jYXN0PEluamVj
dGVkQnVuZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+ZGlkRGlzcGxh
eUluc2VjdXJlQ29udGVudEZvckZyYW1lKGZyYW1lKTsKIH0KIAordm9pZCBJbmplY3RlZEJ1bmRs
ZVBhZ2U6OmRpZERldGVjdFhTU0ZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRs
ZUZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYqLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorewor
ICAgIHN0YXRpY19jYXN0PEluamVjdGVkQnVuZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNs
aWVudEluZm8pKS0+ZGlkRGV0ZWN0WFNTRm9yRnJhbWUoZnJhbWUpOworfQorCiB2b2lkIEluamVj
dGVkQnVuZGxlUGFnZTo6ZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV0tCdW5kbGVQYWdl
UmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCiB7CiAgICAgc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVQYWdlKj4oY29u
c3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpLT5kaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFt
ZShmcmFtZSk7CkBAIC02ODIsNiArNjg4LDEwIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpk
aWRSdW5JbnNlY3VyZUMKIHsKIH0KIAordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZERldGVj
dFhTU0ZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpCit7Cit9CisKIHZvaWQgSW5qZWN0
ZWRCdW5kbGVQYWdlOjpkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYs
IFdLQnVuZGxlRnJhbWVSZWYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFdLVVJMUmVxdWVzdFJlZiwg
Ym9vbCkKIHsKIH0KSW5kZXg6IFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGVQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAkocmV2aXNpb24gOTg3NTIpCisr
KyBUb29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IHZvaWQgZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmLCBXS0J1
bmRsZUZyYW1lUmVmLCBjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIHZvaWQgZGlkRGlzcGxheUlu
c2VjdXJlQ29udGVudEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwg
V0tUeXBlUmVmKiwgY29uc3Qgdm9pZCopOwogICAgIHN0YXRpYyB2b2lkIGRpZFJ1bkluc2VjdXJl
Q29udGVudEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgV0tUeXBl
UmVmKiwgY29uc3Qgdm9pZCopOworICAgIHN0YXRpYyB2b2lkIGRpZERldGVjdFhTU0ZvckZyYW1l
KFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgV0tUeXBlUmVmKiwgY29uc3Qgdm9p
ZCopOwogICAgIHN0YXRpYyB2b2lkIGRpZEluaXRpYXRlTG9hZEZvclJlc291cmNlKFdLQnVuZGxl
UGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgdWludDY0X3QgaWRlbnRpZmllciwgV0tVUkxSZXF1
ZXN0UmVmLCBib29sIHBhZ2VMb2FkSXNQcm92aXNpb25hbCwgY29uc3Qgdm9pZCopOwogICAgIHN0
YXRpYyBXS1VSTFJlcXVlc3RSZWYgd2lsbFNlbmRSZXF1ZXN0Rm9yRnJhbWUoV0tCdW5kbGVQYWdl
UmVmLCBXS0J1bmRsZUZyYW1lUmVmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBXS1VSTFJlcXVlc3RS
ZWYsIFdLVVJMUmVzcG9uc2VSZWYsIGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2VGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVS
ZWYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFdLVVJMUmVzcG9uc2VSZWYsIGNvbnN0IHZvaWQqKTsK
QEAgLTg1LDYgKzg2LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZEhhbmRsZU9ubG9hZEV2ZW50
c0ZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYpOwogICAgIHZvaWQgZGlkRGlzcGxheUluc2VjdXJl
Q29udGVudEZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYpOwogICAgIHZvaWQgZGlkUnVuSW5zZWN1
cmVDb250ZW50Rm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZik7CisgICAgdm9pZCBkaWREZXRlY3RY
U1NGb3JGcmFtZShXS0J1bmRsZUZyYW1lUmVmKTsKIAogICAgIC8vIFJlc291cmNlIExvYWQgQ2xp
ZW50CiAgICAgdm9pZCBkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYs
IFdLQnVuZGxlRnJhbWVSZWYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFdLVVJMUmVxdWVzdFJlZiwg
Ym9vbCBwYWdlTG9hZElzUHJvdmlzaW9uYWwpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTg3NTgpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAor
MjAxMS0xMC0yOCAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KKworICAgICAgICBY
U1NBdWRpdG9yIGlzIHNpbGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzA5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXdp
dGgtY2FsbGJhY2tzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9z
ZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctd2l0aC1jYWxsYmFja3MuaHRtbDogQWRkZWQu
CisKIDIwMTEtMTAtMjggIEpvaG4gR3JlZ2cgIDxqb2hubnlnQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcuCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLWNhbGxiYWNrcy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9y
L3NjcmlwdC10YWctd2l0aC1jYWxsYmFja3MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWctd2l0
aC1jYWxsYmFja3MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACitm
cmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZy
YW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkQ29tbWl0
TG9hZEZvckZyYW1lCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTogUmVmdXNlZCB0byBleGVjdXRl
IGEgSmF2YVNjcmlwdCBzY3JpcHQuIFNvdXJjZSBjb2RlIG9mIHNjcmlwdCBmb3VuZCB3aXRoaW4g
cmVxdWVzdC4KKworZGlkRGV0ZWN0WFNTCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFt
ZTAtLT4tLT4iIC0gZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUKK2ZyYW1lICI8IS0tZnJh
bWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFt
ZQorbWFpbiBmcmFtZSAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCitmcmFtZSAiPCEt
LWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCitt
YWluIGZyYW1lIC0gZGlkRmluaXNoTG9hZEZvckZyYW1lCisKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtY2FsbGJhY2tzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRp
dG9yL3NjcmlwdC10YWctd2l0aC1jYWxsYmFja3MuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtY2Fs
bGJhY2tzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBGcmFtZUxvYWRDYWxsYmFja3MoKTsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5zZXRYU1NBdWRpdG9yRW5hYmxlZCh0cnVlKTsKK30KKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8aWZyYW1lIHNyYz0iaHR0cDovL2xvY2FsaG9zdDo4MDAwL3NlY3VyaXR5
L3hzc0F1ZGl0b3IvcmVzb3VyY2VzL2VjaG8taW50ZXJ0YWcucGw/cT08c2NyaXB0PmFsZXJ0KFN0
cmluZy5mcm9tQ2hhckNvZGUoMHg1OCwweDUzLDB4NTMpKTwvc2NyaXB0PiI+Cis8L2lmcmFtZT4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113353</attachid>
            <date>2011-11-02 12:53:38 -0700</date>
            <delta_ts>2011-11-02 14:05:27 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-70973-20111102125337.patch</filename>
            <type>text/plain</type>
            <size>49693</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5MDQwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMTEtMDIgIFRvbSBTZXBl
eiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgWFNTQXVkaXRvciBpcyBzaWxlbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwOTczCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICBUZXN0OiBodHRwL3Rl
c3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLWNhbGxiYWNrcy5odG1sCisK
KyAgICAgICAgKiBodG1sL3BhcnNlci9YU1NBdWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlhTU0F1ZGl0b3I6OlhTU0F1ZGl0b3IpOgorICAgICAgICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6
ZmlsdGVyVG9rZW4pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL1hTU0F1ZGl0b3IuaDoKKyAgICAg
ICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1l
TG9hZGVyQ2xpZW50OjpkaWREZXRlY3RYU1MpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oOgorCiAyMDExLTExLTAxICBMZXZpIFdlaW50cmF1YiAgPGxldml3QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBGaXggdXNlcyBvZiBMYXlvdXRVbml0IGluIEZyYW1lLSwgU2Nyb2xs
LSwgYW5kIFJlbmRlclZpZXcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1
ZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL1hTU0F1
ZGl0b3IuY3BwCShyZXZpc2lvbiA5OTA0MCkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L1hTU0F1ZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJIVE1MRG9j
dW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFy
YW1FbGVtZW50LmgiCkBAIC0xODYsNiArMTg3LDcgQEAgWFNTQXVkaXRvcjo6WFNTQXVkaXRvcihI
VE1MRG9jdW1lbnRQYXJzZQogICAgICwgbV9pc0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3hzc1By
b3RlY3Rpb24oWFNTUHJvdGVjdGlvbkVuYWJsZWQpCiAgICAgLCBtX3N0YXRlKFVuaW5pdGlhbGl6
ZWQpCisgICAgLCBtX25vdGlmaWVkQ2xpZW50KGZhbHNlKQogewogICAgIEFTU0VSVChtX3BhcnNl
cik7CiAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHBhcnNlci0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkg
ewpAQCAtMjg1LDEwICsyODcsMTcgQEAgdm9pZCBYU1NBdWRpdG9yOjpmaWx0ZXJUb2tlbihIVE1M
VG9rZW4mIAogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFkZCB0aGUgcmVhbCBsaW5lIG51
bWJlciB0byB0aGUgY29uc29sZS4KICAgICAgICAgbV9wYXJzZXItPmRvY3VtZW50KCktPmRvbVdp
bmRvdygpLT5jb25zb2xlKCktPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdl
VHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIGNvbnNvbGVNZXNzYWdlLCAxLCBTdHJpbmcoKSk7CiAK
LSAgICAgICAgaWYgKG1feHNzUHJvdGVjdGlvbiA9PSBYU1NQcm90ZWN0aW9uQmxvY2tFbmFibGVk
KSB7Ci0gICAgICAgICAgICBtX3BhcnNlci0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCkt
PnN0b3BBbGxMb2FkZXJzKCk7Ci0gICAgICAgICAgICBtX3BhcnNlci0+ZG9jdW1lbnQoKS0+ZnJh
bWUoKS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLT5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKG1fcGFy
c2VyLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBibGFua1VSTCgpLCBTdHJpbmcoKSk7
CisgICAgICAgIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlID0gKG1feHNzUHJvdGVjdGlvbiA9PSBY
U1NQcm90ZWN0aW9uQmxvY2tFbmFibGVkKTsKKyAgICAgICAgaWYgKGRpZEJsb2NrRW50aXJlUGFn
ZSkKKyAgICAgICAgICAgICBtX3BhcnNlci0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCkt
PnN0b3BBbGxMb2FkZXJzKCk7CisKKyAgICAgICAgaWYgKCFtX25vdGlmaWVkQ2xpZW50KSB7Cisg
ICAgICAgICAgICBtX3BhcnNlci0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVu
dCgpLT5kaWREZXRlY3RYU1MobV9wYXJzZXItPmRvY3VtZW50KCktPnVybCgpLCBkaWRCbG9ja0Vu
dGlyZVBhZ2UpOworICAgICAgICAgICAgbV9ub3RpZmllZENsaWVudCA9IHRydWU7CiAgICAgICAg
IH0KKworICAgICAgICBpZiAoZGlkQmxvY2tFbnRpcmVQYWdlKQorICAgICAgICAgICAgbV9wYXJz
ZXItPmRvY3VtZW50KCktPmZyYW1lKCktPm5hdmlnYXRpb25TY2hlZHVsZXIoKS0+c2NoZWR1bGVM
b2NhdGlvbkNoYW5nZShtX3BhcnNlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgYmxh
bmtVUkwoKSwgU3RyaW5nKCkpOwogICAgIH0KIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvWFNTQXVkaXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL1hTU0F1ZGl0b3IuaAkocmV2aXNpb24gOTkwNDApCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9YU1NBdWRpdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTg4LDYgKzg4LDcgQEAg
cHJpdmF0ZToKIAogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgU3RyaW5nIG1fY2FjaGVkU25pcHBl
dDsKKyAgICBib29sIG1fbm90aWZpZWRDbGllbnQ7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiA5OTA0MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcwLDYgKzM3MCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgY2FuQ2FjaGVQYWdlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBLVVJMJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBL
VVJMJiwgYm9vbCkgeyB9CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVGcmFt
ZShjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29u
c3QgU3RyaW5nJiwgYm9vbCwgaW50LCBpbnQpIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGlkVHJhbnNmZXJDaGlsZEZyYW1lVG9OZXdEb2N1bWVudChQYWdlKikgeyB9CiAgICAgdmly
dHVhbCB2b2lkIHRyYW5zZmVyTG9hZGluZ1Jlc291cmNlRnJvbVBhZ2UoUmVzb3VyY2VMb2FkZXIq
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBQYWdlKikgeyB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gOTkwNDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjA4
LDYgKzIwOCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gc2NyaXB0KSBmcm9t
IGFuIGluc2VjdXJlIHNvdXJjZS4gIE5vdGUgdGhhdCB0aGUgaW5zZWN1cmUgY29udGVudCBjYW4K
ICAgICAgICAgLy8gc3ByZWFkIHRvIG90aGVyIGZyYW1lcyBpbiB0aGUgc2FtZSBvcmlnaW4uCiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4q
LCBjb25zdCBLVVJMJikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNv
bnN0IEtVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkgPSAwOwogCiAgICAgICAgIHZpcnR1
YWwgUmVzb3VyY2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgUmVzb3VyY2VFcnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JikgPSAwOwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gOTkwNDApCisrKyBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyOCBAQAor
MjAxMS0xMS0wMiAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KKworICAgICAgICBY
U1NBdWRpdG9yIGlzIHNpbGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzA5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYkxvYWRlckNsaWVudC5jcHA6CisgICAgICAgICh3ZWJraXRXZWJMb2Fk
ZXJDbGllbnRBdHRhY2hMb2FkZXJDbGllbnRUb1BhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJDbGllbnQ6OmRp
ZERldGVjdFhTU0ZvckZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkRGV0ZWN0WFNTRm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZVBhZ2VMb2FkZXJDbGllbnQ6OmRpZERldGVjdFhTU0ZvckZyYW1lKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkRGV0ZWN0
WFNTKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lmg6CisKIDIwMTEtMTEtMDEgIEFuZHJhcyBCZWNzaSAgPGFuZHJhcy5iZWNzaUBub2tp
YS5jb20+CiAKICAgICAgICAgW1F0XVtXSzJdIE1ha2UgQVBJIHRlc3RzIGxlc3Mgbm9pc3kKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuY3BwCShyZXZp
c2lvbiA5OTA0MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcsNiArMTQ3LDE0IEBAIHZvaWQgV2ViTG9hZGVyQ2xp
ZW50OjpkaWRSdW5JbnNlY3VyZUNvbnQKICAgICBtX2NsaWVudC5kaWRSdW5JbnNlY3VyZUNvbnRl
bnRGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1f
Y2xpZW50LmNsaWVudEluZm8pOwogfQogCit2b2lkIFdlYkxvYWRlckNsaWVudDo6ZGlkRGV0ZWN0
WFNTRm9yRnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJ
T2JqZWN0KiB1c2VyRGF0YSkKK3sKKyAgICBpZiAoIW1fY2xpZW50LmRpZERldGVjdFhTU0ZvckZy
YW1lKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5kaWREZXRlY3RYU1NGb3JGcmFt
ZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmNs
aWVudEluZm8pOworfQorCiBib29sIFdlYkxvYWRlckNsaWVudDo6Y2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVBy
b3h5KiBmcmFtZSwgV2ViUHJvdGVjdGlvblNwYWNlKiBwcm90ZWN0aW9uU3BhY2UpCiB7CiAgICAg
aWYgKCFtX2NsaWVudC5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFt
ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJMb2FkZXJDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViTG9hZGVyQ2xpZW50LmgJKHJl
dmlzaW9uIDk5MDQwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkxvYWRlckNsaWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRp
ZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5Kiwg
QVBJT2JqZWN0Kik7CiAgICAgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUo
V2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIEFQSU9iamVjdCopOwogICAgIHZvaWQgZGlk
UnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSos
IEFQSU9iamVjdCopOworICAgIHZvaWQgZGlkRGV0ZWN0WFNTRm9yRnJhbWUoV2ViUGFnZVByb3h5
KiwgV2ViRnJhbWVQcm94eSosIEFQSU9iamVjdCopOwogICAgIAogICAgIGJvb2wgY2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJh
bWVQcm94eSosIFdlYlByb3RlY3Rpb25TcGFjZSopOwogICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5Kiwg
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSopOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDk5MDQwKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MzQsNiAr
MTgzNCwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUnVuSW5zZWN1cmVDb250ZW50CiAgICAg
bV9sb2FkZXJDbGllbnQuZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodGhpcywgZnJhbWUs
IHVzZXJEYXRhLmdldCgpKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmRpZERldGVjdFhTU0Zv
ckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1l
bnRzKQoreworICAgIFJlZlB0cjxBUElPYmplY3Q+IHVzZXJEYXRhOworICAgIFdlYkNvbnRleHRV
c2VyTWVzc2FnZURlY29kZXIgbWVzc2FnZURlY29kZXIodXNlckRhdGEsIG1fcHJvY2Vzcy0+Y29u
dGV4dCgpKTsKKyAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKG1lc3NhZ2VEZWNvZGVyKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBwcm9jZXNzKCktPndl
YkZyYW1lKGZyYW1lSUQpOworICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOworCisgICAgbV9sb2Fk
ZXJDbGllbnQuZGlkRGV0ZWN0WFNTRm9yRnJhbWUodGhpcywgZnJhbWUsIHVzZXJEYXRhLmdldCgp
KTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmZyYW1lRGlkQmVjb21lRnJhbWVTZXQodWludDY0
X3QgZnJhbWVJRCwgYm9vbCB2YWx1ZSkKIHsKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IHBy
b2Nlc3MoKS0+d2ViRnJhbWUoZnJhbWVJRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiA5OTA0MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtNjA3LDYgKzYwNyw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkodWludDY0X3QgZnJh
bWVJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CiAgICAgdm9pZCBkaWREaXNwbGF5SW5z
ZWN1cmVDb250ZW50Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyKik7CiAgICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSh1aW50NjRf
dCBmcmFtZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKKyAgICB2b2lkIGRpZERldGVj
dFhTU0ZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlciop
OwogICAgIHZvaWQgZnJhbWVEaWRCZWNvbWVGcmFtZVNldCh1aW50NjRfdCBmcmFtZUlELCBib29s
KTsKICAgICB2b2lkIGRpZFN0YXJ0UHJvZ3Jlc3MoKTsKICAgICB2b2lkIGRpZENoYW5nZVByb2dy
ZXNzKGRvdWJsZSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDk5MDQwKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTA4
LDYgKzEwOCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgRGlkUmVjZWl2ZVRp
dGxlRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV1RGOjpTdHJpbmcgdGl0bGUsIFdlYktpdDo6
SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpCiAgICAgRGlkRGlzcGxh
eUluc2VjdXJlQ29udGVudEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpCiAgICAgRGlkUnVuSW5zZWN1cmVD
b250ZW50Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVVz
ZXJNZXNzYWdlRW5jb2RlciB1c2VyRGF0YSkKKyAgICBEaWREZXRlY3RYU1NGb3JGcmFtZSh1aW50
NjRfdCBmcmFtZUlELCBXZWJLaXQ6OkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyIHVz
ZXJEYXRhKQogICAgIERpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh1aW50NjRfdCBm
cmFtZUlELCB1aW50MzJfdCB0eXBlLCBXVEY6OlN0cmluZyB1cmwsIFdlYktpdDo6SW5qZWN0ZWRC
dW5kbGVVc2VyTWVzc2FnZUVuY29kZXIgdXNlckRhdGEpCiAKICAgICBGcmFtZURpZEJlY29tZUZy
YW1lU2V0KHVpbnQ2NF90IGZyYW1lSUQsIGJvb2wgdmFsdWUpCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5oCShyZXZpc2lvbiA5OTA0MCkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQs
NyBAQCB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRGaXJzdFZpc3VhbGx5Tm9uCiB0eXBlZGVmIHZv
aWQgKCpXS1BhZ2VEaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHlDYWxsYmFjaykoV0tQYWdlUmVm
IHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAq
Y2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWREaXNwbGF5SW5zZWN1cmVDb250
ZW50Rm9yRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdL
VHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQg
KCpXS1BhZ2VEaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZUNhbGxiYWNrKShXS1BhZ2VSZWYg
cGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpj
bGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLUGFnZURpZERldGVjdFhTU0ZvckZyYW1lQ2Fs
bGJhY2spKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRh
dGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiBib29sICgqV0tQYWdlQ2FuQXV0
aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWVDYWxsYmFjaykoV0tQYWdlUmVm
IHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLUHJvdGVjdGlvblNwYWNlUmVmIHByb3RlY3Rpb25T
cGFjZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1BhZ2VEaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lQ2FsbGJhY2spKFdLUGFnZVJlZiBw
YWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmIGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9p
ZCAoKldLUGFnZURpZENoYW5nZUJhY2tGb3J3YXJkTGlzdENhbGxiYWNrKShXS1BhZ2VSZWYgcGFn
ZSwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGFkZGVkSXRlbSwgV0tBcnJheVJlZiByZW1vdmVk
SXRlbXMsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwpAQCAtODcsNiArODgsNyBAQCBzdHJ1Y3Qg
V0tQYWdlTG9hZGVyQ2xpZW50IHsKICAgICBXS1BhZ2VEaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJj
aHlDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJlbW92ZUZyYW1lRnJvbUhp
ZXJhcmNoeTsKICAgICBXS1BhZ2VEaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWVDYWxs
YmFjayAgICAgICAgICAgICAgICAgICAgIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFt
ZTsKICAgICBXS1BhZ2VEaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZUNhbGxiYWNrICAgICAg
ICAgICAgICAgICAgICAgICAgIGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lOworICAgIFdL
UGFnZURpZERldGVjdFhTU0ZvckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGlkRGV0ZWN0WFNTRm9yRnJhbWU7CiAgICAgV0tQYWdlQ2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWVDYWxsYmFjayAgICAgICAgICBjYW5BdXRoZW50
aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZTsKICAgICBXS1BhZ2VEaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAgIGRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWU7CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkxvYWRlckNsaWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViTG9hZGVyQ2xp
ZW50LmNwcAkocmV2aXNpb24gOTkwNDApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRXZWJMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNiAr
MTYyLDcgQEAgdm9pZCB3ZWJraXRXZWJMb2FkZXJDbGllbnRBdHRhY2hMb2FkZXJDbAogICAgICAg
ICAwLCAvLyBkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkKICAgICAgICAgMCwgLy8gZGlkRGlz
cGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lCiAgICAgICAgIDAsIC8vIGRpZFJ1bkluc2VjdXJl
Q29udGVudEZvckZyYW1lCisgICAgICAgIDAsIC8vIGRpZERldGVjdFhTU0ZvckZyYW1lCiAgICAg
ICAgIDAsIC8vIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lCiAg
ICAgICAgIDAsIC8vIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUKICAg
ICAgICAgZGlkQ2hhbmdlUHJvZ3Jlc3MsIC8vIGRpZFN0YXJ0UHJvZ3Jlc3MKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9h
ZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9u
IDk5MDQwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNiAr
MTU2LDE2IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50OjpkaWQKICAgICB1
c2VyRGF0YSA9IGFkb3B0UmVmKHRvSW1wbCh1c2VyRGF0YVRvUGFzcykpOwogfQogCit2b2lkIElu
amVjdGVkQnVuZGxlUGFnZUxvYWRlckNsaWVudDo6ZGlkRGV0ZWN0WFNTRm9yRnJhbWUoV2ViUGFn
ZSogcGFnZSwgV2ViRnJhbWUqIGZyYW1lLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpCit7
CisgICAgaWYgKCFtX2NsaWVudC5kaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0gMDsKKyAgICBtX2Ns
aWVudC5kaWREZXRlY3RYU1NGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCAmdXNl
ckRhdGFUb1Bhc3MsIG1fY2xpZW50LmNsaWVudEluZm8pOworICAgIHVzZXJEYXRhID0gYWRvcHRS
ZWYodG9JbXBsKHVzZXJEYXRhVG9QYXNzKSk7Cit9CisKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdl
TG9hZGVyQ2xpZW50OjpkaWRGaXJzdExheW91dEZvckZyYW1lKFdlYlBhZ2UqIHBhZ2UsIFdlYkZy
YW1lKiBmcmFtZSwgUmVmUHRyPEFQSU9iamVjdD4mIHVzZXJEYXRhKQogewogICAgIGlmICghbV9j
bGllbnQuZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlTG9hZGVyQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2VMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gOTkwNDApCisrKyBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUxvYWRl
ckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIGRpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeShXZWJQYWdlKiwgV2ViRnJhbWUqLCBSZWZQ
dHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOwogICAgIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29u
dGVudEZvckZyYW1lKFdlYlBhZ2UqLCBXZWJGcmFtZSosIFJlZlB0cjxBUElPYmplY3Q+JiB1c2Vy
RGF0YSk7CiAgICAgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZShXZWJQYWdlKiwg
V2ViRnJhbWUqLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOworICAgIHZvaWQgZGlkRGV0
ZWN0WFNTRm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgUmVmUHRyPEFQSU9iamVjdD4mIHVz
ZXJEYXRhKTsKIAogICAgIHZvaWQgZGlkRmlyc3RMYXlvdXRGb3JGcmFtZShXZWJQYWdlKiwgV2Vi
RnJhbWUqLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOwogICAgIHZvaWQgZGlkRmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZSosIFdlYkZyYW1lKiwgUmVmUHRy
PEFQSU9iamVjdD4mIHVzZXJEYXRhKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAko
cmV2aXNpb24gOTkwNDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5Miw3IEBA
IHR5cGVkZWYgdm9pZCAoKldLQnVuZGxlUGFnZURpZFJlY2VpdmVUaXQKIHR5cGVkZWYgdm9pZCAo
KldLQnVuZGxlUGFnZURpZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeUNhbGxiYWNrKShXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiB1c2VyRGF0
YSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VE
aWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVm
IHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkUnVuSW5z
ZWN1cmVDb250ZW50Rm9yRnJhbWVDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVu
ZGxlRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVu
dEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tCdW5kbGVQYWdlRGlkRGV0ZWN0WFNTRm9yRnJhbWVD
YWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdL
VHlwZVJlZiogdXNlckRhdGEsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lk
ICgqV0tCdW5kbGVQYWdlRGlkRmlyc3RMYXlvdXRGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBh
Z2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiB1c2VyRGF0YSwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VEaWRG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VS
ZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29u
c3Qgdm9pZCAqY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VEaWRMYXlv
dXRGb3JGcmFtZUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJl
ZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CkBAIC0xMjYsNiArMTI3LDcgQEAgc3Ry
dWN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCB7CiAKICAgICAvLyBWZXJzaW9uIDEuCiAgICAg
V0tCdW5kbGVQYWdlRGlkTGF5b3V0Rm9yRnJhbWVDYWxsYmFjayAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkaWRMYXlvdXRGb3JGcmFtZTsKKyAgICBXS0J1bmRsZVBhZ2VEaWREZXRlY3RY
U1NGb3JGcmFtZUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZERldGVjdFhT
U0ZvckZyYW1lOwogfTsKIHR5cGVkZWYgc3RydWN0IFdLQnVuZGxlUGFnZUxvYWRlckNsaWVudCBX
S0J1bmRsZVBhZ2VMb2FkZXJDbGllbnQ7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCShyZXZpc2lvbiA5OTA0MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NDQsNiArOTQ0LDE5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZFJ1bkluc2Vj
dXIKICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFJ1bkluc2Vj
dXJlQ29udGVudEZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgSW5qZWN0ZWRCdW5kbGVVc2Vy
TWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpZERldGVjdFhTUyhjb25zdCBLVVJMJiwgYm9vbCkKK3sKKyAgICBXZWJQYWdl
KiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOworICAgIGlmICghd2ViUGFnZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRhdGE7CisKKyAgICB3ZWJQYWdl
LT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVudCgpLmRpZERldGVjdFhTU0ZvckZyYW1lKHdlYlBh
Z2UsIG1fZnJhbWUsIHVzZXJEYXRhKTsKKworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkRGV0ZWN0WFNTRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBJbmpl
Y3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKK30KKwogUmVz
b3VyY2VFcnJvciBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsbGVkRXJyb3IoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIHJldHVybiBXZWJLaXQ6OmNhbmNlbGxlZEVy
cm9yKHJlcXVlc3QpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNp
b24gOTkwNDApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNyw2ICsxMzcsNyBAQCBw
cml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQoKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29uc3QgV2ViQ29yZTo6S1VSTCYsIGJvb2wgZGlkQmxv
Y2tFbnRpcmVQYWdlKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBPVkVS
UklERTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIE9WRVJSSURFOwpJbmRleDogU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5MDQwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0xMS0wMiAg
VG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KKworICAgICAgICBYU1NBdWRpdG9yIGlz
IHNpbGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzA5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgICogcHVi
bGljL1dlYkZyYW1lQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50Ojpk
aWREZXRlY3RYU1MpOgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpZERldGVjdFhTUyk6Cisg
ICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorCiAyMDExLTExLTAxICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBDaGFuZ2UgSFRNTFNlbGVjdEVs
ZW1lbnQ6OnNldFNlbGVjdGVkSW5kZXggdG8gdXNlIGVudW1zIGluc3RlYWQgb2YgYm9vbHMKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAko
cmV2aXNpb24gOTkwNDApCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFt
ZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODYsNiArMjg2LDkgQEAgcHVibGljOgogICAg
IC8vIHNwcmVhZCB0byBvdGhlciBmcmFtZXMgaW4gdGhlIHNhbWUgb3JpZ2luLgogICAgIHZpcnR1
YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViRnJhbWUqLCBjb25zdCBXZWJTZWN1cml0
eU9yaWdpbiYsIGNvbnN0IFdlYlVSTCYgaW5zZWN1cmVVUkwpIHsgfQogCisgICAgLy8gQSByZWZs
ZWN0ZWQgWFNTIHdhcyBlbmNvdW50ZXJlZCBpbiB0aGUgcGFnZSBhbmQgc3VwcHJlc3NlZC4KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKFdlYkZyYW1lKiwgY29uc3QgV2ViVVJMJiwgYm9v
bCBkaWRCbG9ja0VudGlyZVBhZ2UpIHsgfQorCiAgICAgLy8gVGhpcyBmcmFtZSBhZG9wdGVkIHRo
ZSByZXNvdXJjZSB0aGF0IGlzIGJlaW5nIGxvYWRlZC4gVGhpcyBoYXBwZW5zIHdoZW4KICAgICAv
LyBhbiBpZnJhbWUsIHRoYXQgaXMgbG9hZGluZyBhIHN1YnJlc291cmNlLCBpcyB0cmFuc2ZlcnJl
ZCBiZXR3ZWVuIHdpbmRvd3MuCiAgICAgdmlydHVhbCB2b2lkIGRpZEFkb3B0VVJMTG9hZGVyKFdl
YlVSTExvYWRlciopIHsgfQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA5OTA0MCkKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMDQsNiArMTIwNCwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6
ZGlkUnVuSW5zZWN1CiAgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRSdW5JbnNlY3Vy
ZUNvbnRlbnQobV93ZWJGcmFtZSwgV2ViU2VjdXJpdHlPcmlnaW4ob3JpZ2luKSwgaW5zZWN1cmVV
UkwpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlkRGV0ZWN0WFNTKGNvbnN0
IEtVUkwmIGluc2VjdXJlVVJMLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSkKK3sKKyAgICBpZiAo
bV93ZWJGcmFtZS0+Y2xpZW50KCkpCisgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRE
ZXRlY3RYU1MobV93ZWJGcmFtZSwgaW5zZWN1cmVVUkwsIGRpZEJsb2NrRW50aXJlUGFnZSk7Cit9
CisKIFJlc291cmNlRXJyb3IgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpibG9ja2VkRXJyb3IoY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JikKIHsKICAgICAvLyBGSVhNRQpJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHJldmlzaW9u
IDk5MDQwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJ
bXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBib29sIHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oV2ViQ29yZTo6SGlzdG9y
eUl0ZW0qKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVu
dCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW4qLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBpbnNlY3VyZVVSTCk7CisgICAgdmly
dHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpLVVJMJiwgYm9vbCBkaWRCbG9j
a0VudGlyZVBhZ2UpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2Vk
RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgdmlydHVhbCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCYpOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5ub3RTaG93
VVJMRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCShyZXZpc2lvbiA5OTA0MCkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTExLTAyICBUb20gU2VwZXogIDx0
c2VwZXpAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFhTU0F1ZGl0b3IgaXMgc2lsZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDk3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNs
aWVudEVmbDo6ZGlkRGV0ZWN0WFNTKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEVmbC5oOgorCiAyMDExLTEwLTMxICBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgIDxr
dWJvQHByb2Z1c2lvbi5tb2JpPgogCiAgICAgICAgIFtFRkxdIFJlbmFtZSBld2tfdmlld19zZXR0
aW5nX3NjcmlwdHNfd2luZG93X29wZW5fe2dldCxzZXR9IGFmdGVyIHI5MzgzMwpJbmRleDogU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50RWZsLmNwcAkocmV2aXNpb24gOTkwNDApCisrKyBTb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUz
MSw2ICs1MzEsMTEgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudEVmbDo6ZGlkUnVuSW5zZWN1cgog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRp
ZERldGVjdFhTUyhjb25zdCBLVVJMJiwgYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50RWZsOjptYWtlUmVwcmVzZW50YXRpb24oRG9jdW1l
bnRMb2FkZXIqKQogewogICAgIG1faGFzUmVwcmVzZW50YXRpb24gPSB0cnVlOwpJbmRleDogU291
cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEVmbC5oCShyZXZpc2lvbiA5OTA0MCkKKysrIFNvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Myw2ICsx
NjMsNyBAQCBjbGFzcyBGcmFtZUxvYWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtCiAgICAgdmly
dHVhbCBib29sIHNob3VsZFN0b3BMb2FkaW5nRm9ySGlzdG9yeUl0ZW0oSGlzdG9yeUl0ZW0qKSBj
b25zdDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudCgpOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qLCBjb25z
dCBLVVJMJik7CisgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhjb25zdCBLVVJMJiwgYm9v
bCBkaWRCbG9ja0VudGlyZVBhZ2UpOwogCiAgICAgdmlydHVhbCBSZXNvdXJjZUVycm9yIGNhbmNl
bGxlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogICAgIHZpcnR1YWwgUmVzb3VyY2VF
cnJvciBibG9ja2VkRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0Jik7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCShyZXZpc2lvbiA5OTA0MCkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTExLTAyICBUb20gU2VwZXogIDx0
c2VwZXpAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFhTU0F1ZGl0b3IgaXMgc2lsZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDk3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaWREZXRlY3RYU1MpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmg6CisKIDIwMTEtMTAtMzEgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEluc3RhbGwgaHRtbCBhbmQgdG1wbCBkaXJz
IGluIGEgJChET0NfTU9EVUxFKSBkaXIgaW4gdGFyYmFsbApJbmRleDogU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNw
cAkocmV2aXNpb24gOTkwNDApCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNCw2ICs3MjQsMTEg
QEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cmVDbwogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpZERldGVjdFhTUyhjb25z
dCBLVVJMJiwgYm9vbCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjptYWtlUmVwcmVzZW50YXRpb24oV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
KQogewogICAgIG1faGFzUmVwcmVzZW50YXRpb24gPSB0cnVlOwpJbmRleDogU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5o
CShyZXZpc2lvbiA5OTA0MCkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw2ICsxNDUsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2Vj
dXJlQ29udGVudCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50
KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBib29sIGRp
ZEJsb2NrRW50aXJlUGFnZSk7CiAKICAgICAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVy
cm9yIGNhbmNlbGxlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAg
ICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24g
OTkwNDApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOSBAQAorMjAxMS0xMS0wMiAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9y
Zz4KKworICAgICAgICBYU1NBdWRpdG9yIGlzIHNpbGVudAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBB
ZGFtIEJhcnRoLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToK
KyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWRSdW5JbnNlY3VyZUNvbnRlbnQpOgor
ICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZERldGVjdFhTUyk6CisgICAgICAgICog
V2ViVmlldy9XZWJEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oOgorICAgICAgICAqIFdl
YlZpZXcvV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogV2ViVmlldy9X
ZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9jYWNoZUZyYW1lTG9hZERlbGVnYXRlSW1w
bGVtZW50YXRpb25zXSk6CisKIDIwMTEtMTEtMDEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIENyYXNoIGluIFBERiBjb2RlIHdoZW4gc2NyaXB0IGhhcyBpbGxlZ2Fs
IFVURi04IG9yIFVURi0xNiBzZXF1ZW5jZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24g
OTkwNDApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNiArMTU2LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbiosIGNvbnN0IFdlYkNvcmU6OktVUkwmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkRGV0ZWN0WFNTKGNvbnN0IFdlYkNvcmU6OktVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFn
ZSkgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2Vs
bGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgT1ZFUlJJREU7CiAgICAg
dmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZp
c2lvbiA5OTA0MCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC05ODksMTIgKzk4OSwyMyBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaWREaXNwbGF5SW5zCiAKIHZvaWQgV2ViRnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpZFJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBj
b25zdCBLVVJMJiBpbnNlY3VyZVVSTCkKIHsKLSAgICBSZXRhaW5QdHI8V2ViU2VjdXJpdHlPcmln
aW4+IHdlYlNlY3VyaXR5T3JpZ2luKEFkb3B0TlMsIFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2Nd
IF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpvcmlnaW5dKTsKLQogICAgIFdlYlZpZXcg
KndlYlZpZXcgPSBnZXRXZWJWaWV3KG1fd2ViRnJhbWUuZ2V0KCkpOyAgIAogICAgIFdlYkZyYW1l
TG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmll
d0dldEZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25zKHdlYlZpZXcpOwotICAgIGlmIChp
bXBsZW1lbnRhdGlvbnMtPmRpZFJ1bkluc2VjdXJlQ29udGVudEZ1bmMpCisgICAgaWYgKGltcGxl
bWVudGF0aW9ucy0+ZGlkUnVuSW5zZWN1cmVDb250ZW50RnVuYykgeworICAgICAgICBSZXRhaW5Q
dHI8V2ViU2VjdXJpdHlPcmlnaW4+IHdlYlNlY3VyaXR5T3JpZ2luKEFkb3B0TlMsIFtbV2ViU2Vj
dXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpvcmlnaW5d
KTsKICAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkUnVu
SW5zZWN1cmVDb250ZW50RnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkUnVuSW5z
ZWN1cmVDb250ZW50OiksIHdlYlNlY3VyaXR5T3JpZ2luLmdldCgpKTsKKyAgICB9Cit9CisKK3Zv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpZERldGVjdFhTUyhjb25zdCBLVVJMJiBpbnNlY3Vy
ZVVSTCwgYm9vbCBkaWRCbG9ja0VudGlyZVBhZ2UpCit7CisgICAgV2ViVmlldyAqd2ViVmlldyA9
IGdldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSk7ICAgCisgICAgV2ViRnJhbWVMb2FkRGVsZWdh
dGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3R2V0RnJhbWVM
b2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMod2ViVmlldyk7CisgICAgaWYgKGltcGxlbWVudGF0
aW9ucy0+ZGlkRGV0ZWN0WFNTRnVuYykgeworICAgICAgICAvLyBGSVhNRTogbXVzdCBwYXNzIGRp
ZEJsb2NrRW50aXJlUGFnZSBpZiB3ZSB3YW50IHRvIGRvIG1vcmUgb24gbWFjIHRoYW4ganVzdCBw
YXNzIHRlc3RzLgorICAgICAgICBOU1VSTCogaW5zZWN1cmVOU1VSTCA9IGluc2VjdXJlVVJMOwor
ICAgICAgICBDYWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWREZXRlY3RY
U1NGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWREZXRlY3RYU1M6KSwgaW5zZWN1
cmVOU1VSTCk7CisgICAgfQogfQogCiBSZXNvdXJjZUVycm9yIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCkluZGV4OiBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkRlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoaW5n
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJEZWxlZ2F0ZUlt
cGxlbWVudGF0aW9uQ2FjaGluZy5oCShyZXZpc2lvbiA5OTA0MCkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hpbmcuaAkod29ya2luZyBj
b3B5KQpAQCAtNzcsNiArNzcsNyBAQCBzdHJ1Y3QgV2ViRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1l
bnRhdGlvCiAgICAgSU1QIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lRnVuYzsKICAgICBJ
TVAgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZ1bmM7CiAgICAgSU1QIGRpZFJ1bkluc2VjdXJl
Q29udGVudEZ1bmM7CisgICAgSU1QIGRpZERldGVjdFhTU0Z1bmM7CiB9OwogCiBzdHJ1Y3QgV2Vi
U2NyaXB0RGVidWdEZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2FjaGUgewpJbmRleDogU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0
ZS5oCShyZXZpc2lvbiA5OTA0MCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJh
bWVMb2FkRGVsZWdhdGVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDExICszNCw5IEBA
CiBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUpCiAKIC0g
KHZvaWQpd2ViVmlld0RpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnQ6KFdlYlZpZXcgKil3ZWJWaWV3
OwotCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRpZFJ1bkluc2VjdXJlQ29u
dGVudDooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW47Ci0KKy0gKHZvaWQpd2ViVmlldzooV2Vi
VmlldyAqKXdlYlZpZXcgZGlkRGV0ZWN0WFNTOihOU1VSTCAqKWluc2VjdXJlVVJMOwogLSAodm9p
ZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkaWRDbGVhcldpbmRvd09iamVjdEZvckZyYW1l
OihXZWJGcmFtZSAqKWZyYW1lIGluU2NyaXB0V29ybGQ6KFdlYlNjcmlwdFdvcmxkICopd29ybGQ7
Ci0KIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGlkUHVzaFN0YXRlV2l0aGlu
UGFnZUZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lOwogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3
ICopd2ViVmlldyBkaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlRm9yRnJhbWU6KFdlYkZyYW1lICop
ZnJhbWU7CiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRpZFBvcFN0YXRlV2l0
aGluUGFnZUZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lOwpJbmRleDogU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gOTkwNDApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1NTIsNiArMTU1Miw3IEBAIC0g
KHZvaWQpX2NhY2hlRnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnQKICAgICBjYWNoZS0+d2luZG93
U2NyaXB0T2JqZWN0QXZhaWxhYmxlRnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9y
KHdlYlZpZXc6d2luZG93U2NyaXB0T2JqZWN0QXZhaWxhYmxlOikpOwogICAgIGNhY2hlLT5kaWRE
aXNwbGF5SW5zZWN1cmVDb250ZW50RnVuYyA9IGdldE1ldGhvZChkZWxlZ2F0ZSwgQHNlbGVjdG9y
KHdlYlZpZXdEaWREaXNwbGF5SW5zZWN1cmVDb250ZW50OikpOwogICAgIGNhY2hlLT5kaWRSdW5J
bnNlY3VyZUNvbnRlbnRGdW5jID0gZ2V0TWV0aG9kKGRlbGVnYXRlLCBAc2VsZWN0b3Iod2ViVmll
dzpkaWRSdW5JbnNlY3VyZUNvbnRlbnQ6KSk7CisgICAgY2FjaGUtPmRpZERldGVjdFhTU0Z1bmMg
PSBnZXRNZXRob2QoZGVsZWdhdGUsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZERldGVjdFhTUzopKTsK
IH0KIAogLSAodm9pZClfY2FjaGVTY3JpcHREZWJ1Z0RlbGVnYXRlSW1wbGVtZW50YXRpb25zCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gOTkwNDApCisrKyBTb3VyY2UvV2ViS2l0L3F0L0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTExLTAyICBUb20g
U2VwZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFhTU0F1ZGl0b3IgaXMgc2ls
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDk3
MworCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyQ2xpZW50UXQ6OmRpZERldGVjdFhTUyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5oOgorCiAyMDExLTExLTAxICBTaW1vbiBIYXVzbWFubiAgPHNp
bW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdW1dLMl0gRml4IGJ1aWxkIG9m
IFdlYktpdFRlc3RSdW5uZXIgd2l0aCBFTEYgc3ltYm9sIHZpc2liaWxpdHkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0LmNwcAkocmV2aXNpb24gOTkwNDApCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NzMsNiArODcz
LDE0IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkUnVuSW5zZWN1cmUKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZERldGVjdFhT
Uyhjb25zdCBLVVJMJiwgYm9vbCkKK3sKKyAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tz
KQorICAgICAgICBwcmludGYoImRpZERldGVjdFhTU1xuIik7CisKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OnNhdmVWaWV3U3RhdGVUb0l0ZW0o
V2ViQ29yZTo6SGlzdG9yeUl0ZW0qIGl0ZW0pCiB7CiAgICAgUVdlYkhpc3RvcnlJdGVtIGhpc3Rv
cnlJdGVtKG5ldyBRV2ViSGlzdG9yeUl0ZW1Qcml2YXRlKGl0ZW0pKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5o
CShyZXZpc2lvbiA5OTA0MCkKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRRdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNiArMTYyLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTdG9wTG9hZGluZ0Zvckhpc3RvcnlJdGVtKEhp
c3RvcnlJdGVtKikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNv
bnRlbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50KFNlY3VyaXR5
T3JpZ2luKiwgY29uc3QgS1VSTCYpOworICAgIHZpcnR1YWwgdm9pZCBkaWREZXRlY3RYU1MoY29u
c3QgS1VSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKTsKIAogICAgIHZpcnR1YWwgUmVzb3Vy
Y2VFcnJvciBjYW5jZWxsZWRFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmKTsKICAgICB2aXJ0
dWFsIFJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwpJ
bmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gOTkwNDApCisrKyBTb3VyY2UvV2ViS2l0L3dp
bi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0xMS0wMiAg
VG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KKworICAgICAgICBYU1NBdWRpdG9yIGlz
IHNpbGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzA5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpZERldGVjdFhTUyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMS0xMC0yOCAgSm9jaGVuIEVpc2luZ2VyICA8am9j
aGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW5hbWUgYSBudW1iZXIgb2YgbWV0aG9kcyBt
ZW50aW9uaW5nIEphdmFTY3JpcHQgdG8ganVzdCBTY3JpcHQgaW5zdGVhZApJbmRleDogU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAkocmV2aXNpb24gOTkwNDApCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1Niw2
ICs2NTYsMTEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlkUnVuSW5zZWN1cgogICAg
IGZyYW1lTG9hZERlbGVnYXRlUHJpdjItPmRpZFJ1bkluc2VjdXJlQ29udGVudCh3ZWJWaWV3LCB3
ZWJTZWN1cml0eU9yaWdpbi5nZXQoKSk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpZERldGVjdFhTUyhjb25zdCBLVVJMJiwgYm9vbCkKK3sKKyAgICAvLyBGSVhNRTogcHJvcG9n
YXRlIGNhbGwgaW50byB0aGUgcHJpdmF0ZSBkZWxlZ2F0ZS4KK30KKwogUGFzc1JlZlB0cjxEb2N1
bWVudExvYWRlcj4gV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNyZWF0ZURvY3VtZW50TG9hZGVyKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0
aXR1dGVEYXRhKQogewogICAgIFJlZlB0cjxXZWJEb2N1bWVudExvYWRlcj4gbG9hZGVyID0gV2Vi
RG9jdW1lbnRMb2FkZXI6OmNyZWF0ZShyZXF1ZXN0LCBzdWJzdGl0dXRlRGF0YSk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmgJKHJldmlzaW9uIDk5MDQwKQorKysgU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTgsNiAr
OTgsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29u
dGVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW4qLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CisgICAgdmlydHVhbCB2b2lk
IGRpZERldGVjdFhTUyhjb25zdCBXZWJDb3JlOjpLVVJMJiwgYm9vbCBkaWRCbG9ja0VudGlyZVBh
Z2UpOwogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBj
cmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShj
b25zdCBXZWJDb3JlOjpTdHJpbmdXaXRoRGlyZWN0aW9uJiwgY29uc3QgV2ViQ29yZTo6S1VSTCYp
OwpJbmRleDogU291cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC93aW5jZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5MDQwKQorKysgU291cmNlL1dl
YktpdC93aW5jZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAx
MS0xMS0wMiAgVG9tIFNlcGV6ICA8dHNlcGV6QGNocm9taXVtLm9yZz4KKworICAgICAgICBYU1NB
dWRpdG9yIGlzIHNpbGVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzA5NzMKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50V2luQ0U6OmRpZERldGVjdFhTUyk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5oOgorCiAyMDExLTEwLTI4
ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbmFt
ZSBhIG51bWJlciBvZiBtZXRob2RzIG1lbnRpb25pbmcgSmF2YVNjcmlwdCB0byBqdXN0IFNjcmlw
dCBpbnN0ZWFkCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50V2luQ0UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd2luY2Uv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXaW5DRS5jcHAJKHJldmlzaW9uIDk5MDQw
KQorKysgU291cmNlL1dlYktpdC93aW5jZS9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFdpbkNFLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCwxMSBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50V2luQ0U6OmRpZFJ1bkluc2VjCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAordm9pZCBGcmFtZUxvYWRlckNsaWVudFdpbkNFOjpkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYs
IGJvb2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBGcmFtZUxvYWRlckNs
aWVudFdpbkNFOjptYWtlUmVwcmVzZW50YXRpb24oRG9jdW1lbnRMb2FkZXIqKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dp
bmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V2luQ0UuaAkocmV2aXNpb24gOTkw
NDApCisrKyBTb3VyY2UvV2ViS2l0L3dpbmNlL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V2luQ0UuaAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDYgKzE0MCw3IEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50KCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNv
bnN0IFdlYkNvcmU6OktVUkwmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRGV0ZWN0WFNTKGNvbnN0
IFdlYkNvcmU6OktVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CiAKICAgICB2aXJ0dWFs
IFdlYkNvcmU6OlJlc291cmNlRXJyb3IgY2FuY2VsbGVkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Jik7CiAgICAgdmlydHVhbCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2Nr
ZWRFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvd3gvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdl
TG9nCShyZXZpc2lvbiA5OTA0MCkKKysrIFNvdXJjZS9XZWJLaXQvd3gvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTEtMTEtMDIgIFRvbSBTZXBleiAgPHRzZXBl
ekBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgWFNTQXVkaXRvciBpcyBzaWxlbnQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwOTczCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRXeC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFd4
OjpkaWREZXRlY3RYU1MpOgorICAgICAgICAqIFdlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRXeC5oOgorCiAyMDExLTEwLTI4ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJlbmFtZSBhIG51bWJlciBvZiBtZXRob2RzIG1lbnRpb25pbmcgSmF2
YVNjcmlwdCB0byBqdXN0IFNjcmlwdCBpbnN0ZWFkCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dl
YktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50V3guY3BwCShyZXZpc2lv
biA5OTA0MCkKKysrIFNvdXJjZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFd4LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjAyLDYgKzYwMiwxMSBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50V3g6OmRpZFJ1bkluc2VjdXJlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAordm9pZCBGcmFtZUxvYWRlckNsaWVudFd4OjpkaWREZXRlY3RYU1MoY29uc3QgS1VSTCYsIGJv
b2wpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBGcmFtZUxvYWRlckNsaWVu
dFd4OjpzYXZlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0oV2ViQ29yZTo6SGlzdG9y
eUl0ZW0qKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4
L1dlYktpdFN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRXeC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvd3gvV2ViS2l0U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFd4LmgJKHJldmlzaW9u
IDk5MDQwKQorKysgU291cmNlL1dlYktpdC93eC9XZWJLaXRTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50V3guaAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDYgKzE3MCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVD
b250ZW50KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnQoU2Vj
dXJpdHlPcmlnaW4qLCBjb25zdCBLVVJMJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWREZXRl
Y3RYU1MoY29uc3QgS1VSTCYsIGJvb2wgZGlkQmxvY2tFbnRpcmVQYWdlKTsKIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgc2V0TWFpbkRvY3VtZW50RXJyb3IoRG9jdW1lbnRMb2FkZXIqLCBjb25zdCBS
ZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKERvY3Vt
ZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGludCk7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTA0MCkKKysrIFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDExLTExLTAyICBUb20g
U2VwZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFhTU0F1ZGl0b3IgaXMgc2ls
ZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDk3
MworCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChXZWJWaWV3SG9zdDo6
ZGlkRGV0ZWN0WFNTKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5t
bToKKyAgICAgICAgKC1bRnJhbWVMb2FkRGVsZWdhdGUgd2ViVmlldzpkaWREZXRlY3RYU1M6XSk6
CisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm06Cisg
ICAgICAgIChkaWREZXRlY3RYU1NGb3JGcmFtZSk6CisgICAgICAgICgtW0Jyb3dzZXJXaW5kb3dD
b250cm9sbGVyIGF3YWtlRnJvbU5pYl0pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcDoKKyAgICAgICAgKFdUUjo6SW5qZWN0
ZWRCdW5kbGVQYWdlOjpJbmplY3RlZEJ1bmRsZVBhZ2UpOgorICAgICAgICAoV1RSOjpJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OmRpZERldGVjdFhTU0ZvckZyYW1lKToKKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5oOgorCiAyMDExLTExLTAx
ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgcmVzb2x2ZS1DaGFuZ2VM
b2dzIC0taGVscCBzaG91bGQgYmUgZmFzdGVyLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAkocmV2aXNpb24gOTkwNDApCisrKyBUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExNzEsNiArMTE3MSwxMiBAQCB2b2lkIFdlYlZpZXdIb3N0OjpkaWRSdW5JbnNlY3VyZUNvbnRl
bnQoCiAgICAgICAgIGZwdXRzKCJkaWRSdW5JbnNlY3VyZUNvbnRlbnRcbiIsIHN0ZG91dCk7CiB9
CiAKK3ZvaWQgV2ViVmlld0hvc3Q6OmRpZERldGVjdFhTUyhXZWJGcmFtZSosIGNvbnN0IFdlYlVS
TCYsIGJvb2wpCit7CisgICAgaWYgKG1fc2hlbGwtPnNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFj
a3MoKSkKKyAgICAgICAgZnB1dHMoImRpZERldGVjdFhTU1xuIiwgc3Rkb3V0KTsKK30KKwogdm9p
ZCBXZWJWaWV3SG9zdDo6b3BlbkZpbGVTeXN0ZW0oV2ViRnJhbWUqIGZyYW1lLCBXZWJGaWxlU3lz
dGVtOjpUeXBlIHR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgV2ViRmlsZVN5c3Rl
bUNhbGxiYWNrcyogY2FsbGJhY2tzKQogewogICAgIHdlYmtpdF9zdXBwb3J0OjpPcGVuRmlsZVN5
c3RlbShmcmFtZSwgdHlwZSwgc2l6ZSwgY3JlYXRlLCBjYWxsYmFja3MpOwpJbmRleDogVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCShyZXZpc2lvbiA5OTA0MCkK
KysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIxMCw2ICsyMTAsNyBAQCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJL
aXQ6OldlYlNwCiAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxSZXNvdXJjZUxvYWQoV2ViS2l0OjpX
ZWJGcmFtZSosIHVuc2lnbmVkIGlkZW50aWZpZXIsIGNvbnN0IFdlYktpdDo6V2ViVVJMRXJyb3Im
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudChXZWJLaXQ6Oldl
YkZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudChXZWJLaXQ6
OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJTZWN1cml0eU9yaWdpbiYsIGNvbnN0IFdlYktp
dDo6V2ViVVJMJik7CisgICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTUyhXZWJLaXQ6OldlYkZy
YW1lKiwgY29uc3QgV2ViS2l0OjpXZWJVUkwmLCBib29sIGRpZEJsb2NrRW50aXJlUGFnZSk7CiAg
ICAgdmlydHVhbCB2b2lkIG9wZW5GaWxlU3lzdGVtKFdlYktpdDo6V2ViRnJhbWUqLCBXZWJLaXQ6
OldlYkZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgV2ViS2l0
OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKik7CiAKICAgICBXZWJLaXQ6OldlYkRldmljZU9yaWVu
dGF0aW9uQ2xpZW50TW9jayogZGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCk7CkluZGV4OiBU
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRnJhbWVMb2FkRGVsZWdhdGUubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0ZyYW1lTG9hZERlbGVnYXRlLm1tCShyZXZpc2lv
biA5OTA0MCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9GcmFtZUxvYWREZWxlZ2F0ZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNDA1LDQgKzQwNSwxMCBAQCAtICh2b2lkKXdlYlZpZXc6KFdl
YlZpZXcgKilzZW5kZXIgZGlkUnVuCiAgICAgICAgIHByaW50ZiAoImRpZFJ1bkluc2VjdXJlQ29u
dGVudFxuIik7CiB9CiAKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWREZXRl
Y3RYU1M6KE5TVVJMICopaW5zZWN1cmVVUkwKK3sKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRl
c3RDb250cm9sbGVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpCisgICAgICAgIHByaW50ZiAo
ImRpZERldGVjdFhTU1xuIik7Cit9CisKIEBlbmQKSW5kZXg6IFRvb2xzL01pbmlCcm93c2VyL21h
Yy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL01pbmlCcm93
c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCShyZXZpc2lvbiA5OTA0MCkKKysrIFRv
b2xzL01pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tCSh3b3JraW5nIGNv
cHkpCkBAIC0zMjUsNiArMzI1LDExIEBAIHN0YXRpYyB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVu
dEZvckZyYW0KICAgICBMT0coQCJkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSIpOwogfQog
CitzdGF0aWMgdm9pZCBkaWREZXRlY3RYU1NGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFt
ZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQor
eworICAgIExPRyhAImRpZERldGVjdFhTU0ZvckZyYW1lIik7Cit9CisKIHN0YXRpYyB2b2lkIGRp
ZFN0YXJ0UHJvZ3Jlc3MoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7
CiAgICAgWyhCcm93c2VyV2luZG93Q29udHJvbGxlciAqKWNsaWVudEluZm8gZGlkU3RhcnRQcm9n
cmVzc107CkBAIC01OTMsNiArNTk4LDcgQEAgLSAodm9pZClhd2FrZUZyb21OaWIKICAgICAgICAg
ZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5LAogICAgICAgICBkaWREaXNwbGF5SW5zZWN1cmVD
b250ZW50Rm9yRnJhbWUsCiAgICAgICAgIGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lLAor
ICAgICAgICBkaWREZXRlY3RYU1NGb3JGcmFtZSwKICAgICAgICAgMCwgLy8gY2FuQXV0aGVudGlj
YXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUKICAgICAgICAgMCwgLy8gZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZQogICAgICAgICBkaWRTdGFydFByb2dyZXNz
LApJbmRleDogVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAkocmV2aXNpb24gOTkwNDApCisrKyBUb29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIxNSw2ICsyMTUsNyBAQCBJbmplY3RlZEJ1bmRsZVBhZ2U6Oklu
amVjdGVkQnVuZGxlUGFnZShXCiAgICAgICAgIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RGb3JG
cmFtZSwKICAgICAgICAgZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUsCiAgICAgICAgIDAs
IC8vIGRpZExheW91dEZvckZyYW1lCisgICAgICAgIGRpZERldGVjdFhTU0ZvckZyYW1lLAogICAg
IH07CiAgICAgV0tCdW5kbGVQYWdlU2V0UGFnZUxvYWRlckNsaWVudChtX3BhZ2UsICZsb2FkZXJD
bGllbnQpOwogCkBAIC0zODcsNiArMzg4LDExIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpk
aWREaXNwbGF5SW5zZWMKICAgICBzdGF0aWNfY2FzdDxJbmplY3RlZEJ1bmRsZVBhZ2UqPihjb25z
dF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JG
cmFtZShmcmFtZSk7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWREZXRlY3RYU1NG
b3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tU
eXBlUmVmKiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBzdGF0aWNfY2FzdDxJbmpl
Y3RlZEJ1bmRsZVBhZ2UqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSktPmRpZERldGVj
dFhTU0ZvckZyYW1lKGZyYW1lKTsKK30KKwogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFJ1
bkluc2VjdXJlQ29udGVudEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZUZy
YW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYqLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAg
IHN0YXRpY19jYXN0PEluamVjdGVkQnVuZGxlUGFnZSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVu
dEluZm8pKS0+ZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoZnJhbWUpOwpAQCAtNjkwLDYg
KzY5NiwxMCBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkUnVuSW5zZWN1cmVDCiB7CiB9
CiAKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWREZXRlY3RYU1NGb3JGcmFtZShXS0J1bmRs
ZUZyYW1lUmVmIGZyYW1lKQoreworfQorCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkSW5p
dGlhdGVMb2FkRm9yUmVzb3VyY2UoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCB1
aW50NjRfdCBpZGVudGlmaWVyLCBXS1VSTFJlcXVlc3RSZWYsIGJvb2wpCiB7CiB9CkluZGV4OiBU
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVQYWdlLmgJKHJldmlzaW9uIDk5MDQwKQorKysgVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAkod29ya2luZyBjb3B5KQpA
QCAtNjMsNiArNjMsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZEhhbmRsZU9ubG9h
ZEV2ZW50c0ZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZiwgY29uc3Qg
dm9pZCopOwogICAgIHN0YXRpYyB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFt
ZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIFdLVHlwZVJlZiosIGNvbnN0IHZv
aWQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZShXS0J1
bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJhbWVSZWYsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQqKTsK
KyAgICBzdGF0aWMgdm9pZCBkaWREZXRlY3RYU1NGb3JGcmFtZShXS0J1bmRsZVBhZ2VSZWYsIFdL
QnVuZGxlRnJhbWVSZWYsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgdm9p
ZCBkaWRJbml0aWF0ZUxvYWRGb3JSZXNvdXJjZShXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlRnJh
bWVSZWYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFdLVVJMUmVxdWVzdFJlZiwgYm9vbCBwYWdlTG9h
ZElzUHJvdmlzaW9uYWwsIGNvbnN0IHZvaWQqKTsKICAgICBzdGF0aWMgV0tVUkxSZXF1ZXN0UmVm
IHdpbGxTZW5kUmVxdWVzdEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJl
ZiwgdWludDY0X3QgaWRlbnRpZmllciwgV0tVUkxSZXF1ZXN0UmVmLCBXS1VSTFJlc3BvbnNlUmVm
LCBjb25zdCB2b2lkKik7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlRm9yUmVz
b3VyY2UoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCB1aW50NjRfdCBpZGVudGlm
aWVyLCBXS1VSTFJlc3BvbnNlUmVmLCBjb25zdCB2b2lkKik7CkBAIC04NSw2ICs4Niw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZShXS0J1bmRsZUZy
YW1lUmVmKTsKICAgICB2b2lkIGRpZERpc3BsYXlJbnNlY3VyZUNvbnRlbnRGb3JGcmFtZShXS0J1
bmRsZUZyYW1lUmVmKTsKICAgICB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKFdL
QnVuZGxlRnJhbWVSZWYpOworICAgIHZvaWQgZGlkRGV0ZWN0WFNTRm9yRnJhbWUoV0tCdW5kbGVG
cmFtZVJlZik7CiAKICAgICAvLyBSZXNvdXJjZSBMb2FkIENsaWVudAogICAgIHZvaWQgZGlkSW5p
dGlhdGVMb2FkRm9yUmVzb3VyY2UoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmLCB1
aW50NjRfdCBpZGVudGlmaWVyLCBXS1VSTFJlcXVlc3RSZWYsIGJvb2wgcGFnZUxvYWRJc1Byb3Zp
c2lvbmFsKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5MDQwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTEtMDIgIFRvbSBTZXBl
eiAgPHRzZXBlekBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgWFNTQXVkaXRvciBpcyBzaWxlbnQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwOTczCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtY2FsbGJhY2tzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3Njcmlw
dC10YWctd2l0aC1jYWxsYmFja3MuaHRtbDogQWRkZWQuCisKIDIwMTEtMTEtMDEgIFNhbSBXZWlu
aWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQgX19sb29rdXBHZXR0ZXJf
Xy9fX2xvb2t1cFNldHRlcl9fIGluIHRlcm1zIG9mIGdldFByb3BlcnR5RGVzY3JpcHRvcgpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS94c3NBdWRpdG9yL3NjcmlwdC10YWct
d2l0aC1jYWxsYmFja3MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtY2FsbGJhY2tzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtY2FsbGJhY2tzLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJh
bWUwLS0+LS0+IiAtIGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKK21haW4gZnJhbWUg
LSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88
IS0tZnJhbWUwLS0+LS0+IiAtIGRpZENvbW1pdExvYWRGb3JGcmFtZQorQ09OU09MRSBNRVNTQUdF
OiBsaW5lIDE6IFJlZnVzZWQgdG8gZXhlY3V0ZSBhIEphdmFTY3JpcHQgc2NyaXB0LiBTb3VyY2Ug
Y29kZSBvZiBzY3JpcHQgZm91bmQgd2l0aGluIHJlcXVlc3QuCisKK2RpZERldGVjdFhTUworZnJh
bWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGRpZEZpbmlzaERvY3VtZW50
TG9hZEZvckZyYW1lCitmcmFtZSAiPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4iIC0g
ZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRIYW5kbGVPbmxv
YWRFdmVudHNGb3JGcmFtZQorZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+
IiAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRpZEZpbmlzaExvYWRGb3JG
cmFtZQorCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hzc0F1ZGl0b3Iv
c2NyaXB0LXRhZy13aXRoLWNhbGxiYWNrcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkveHNzQXVkaXRvci9zY3JpcHQtdGFnLXdpdGgtY2FsbGJhY2tz
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3hz
c0F1ZGl0b3Ivc2NyaXB0LXRhZy13aXRoLWNhbGxiYWNrcy5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0Pgor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wRnJhbWVMb2Fk
Q2FsbGJhY2tzKCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuc2V0WFNTQXVkaXRvckVuYWJs
ZWQodHJ1ZSk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZSBzcmM9Imh0
dHA6Ly9sb2NhbGhvc3Q6ODAwMC9zZWN1cml0eS94c3NBdWRpdG9yL3Jlc291cmNlcy9lY2hvLWlu
dGVydGFnLnBsP3E9PHNjcmlwdD5hbGVydChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4NTgsMHg1Myww
eDUzKSk8L3NjcmlwdD4iPgorPC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>