<?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>71745</bug_id>
          
          <creation_ts>2011-11-07 16:23:18 -0800</creation_ts>
          <short_desc>Unique SecurityOrigins shouldn&apos;t remember their old schemes and hosts</short_desc>
          <delta_ts>2011-11-17 20:59:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>72241</dependson>
    
    <dependson>72242</dependson>
    
    <dependson>72244</dependson>
    
    <dependson>72250</dependson>
    
    <dependson>72277</dependson>
    
    <dependson>72283</dependson>
    
    <dependson>72287</dependson>
    
    <dependson>72308</dependson>
    
    <dependson>72342</dependson>
    
    <dependson>72676</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>japhet</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>497573</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-07 16:23:18 -0800</bug_when>
    <thetext>We should create unique security origins with SecurityOrigin::createUnique rather than just setting a flag on SecurityOrigin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497575</commentid>
    <comment_count>1</comment_count>
      <attachid>113950</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-07 16:24:17 -0800</bug_when>
    <thetext>Created attachment 113950
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499376</commentid>
    <comment_count>2</comment_count>
      <attachid>114372</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-09 14:52:58 -0800</bug_when>
    <thetext>Created attachment 114372
more work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499638</commentid>
    <comment_count>3</comment_count>
      <attachid>114431</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-09 21:46:01 -0800</bug_when>
    <thetext>Created attachment 114431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499654</commentid>
    <comment_count>4</comment_count>
      <attachid>114438</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-09 22:28:11 -0800</bug_when>
    <thetext>Created attachment 114438
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499662</commentid>
    <comment_count>5</comment_count>
      <attachid>114431</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-09 22:43:58 -0800</bug_when>
    <thetext>Comment on attachment 114431
Patch

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

I think I need to read this again in the morning.  I also think this might need another round.

&gt; Source/WebCore/ChangeLog:65
&gt; +            - Whenever we set a SecurityOrigin explicitly, we have not longer

not longer -&gt; no longer?

&gt; Source/WebCore/dom/Document.cpp:4393
&gt;  void Document::initSecurityContext()

You noted in our discussion that this should move to SecurityContext.  Seems you should note that in a FIXME here.  It seems this also deserves a FIXME about breaking this up into smaller pieces. :)  &quot;init&quot; is also not a very descriptive name.  I&apos;m not sure I have a better one though.  &quot;compute&quot;, &quot;inherit&quot;, not sure.  Anyway, that can all be a separate patch too.

&gt; Source/WebCore/dom/Document.cpp:4457
&gt; +        didFailToInheritSecurityOrigin();

Maybe this is not quite the right name.  It&apos;s less about recording what you have done, and more about giving yourself a special permission to try again... no?

&gt; Source/WebCore/dom/Document.cpp:4462
&gt; +    // We alias the SecurityOrigins to match Firefox, see Bug 15313

period, not sure you should capitalize Bug either, or simply write &quot;see:&quot; then you don&apos;t need a period or the bug number :)

&gt; Source/WebCore/dom/Document.cpp:4465
&gt; +    // FIXME: Consider moving m_contentSecurityPolicy into SecurityOrigin.

Seems like you should be more definite.  You&apos;re the one doing the considering. :)

&gt; Source/WebCore/dom/SecurityContext.cpp:59
&gt; +    if (m_failedToInheritSecurityOrigin)

Yeah, I really think this &quot;I have special powers&quot; bool needs a better name.

&gt; Source/WebCore/dom/SecurityContext.cpp:63
&gt; +    RefPtr&lt;SecurityOrigin&gt; other = SecurityOrigin::create(url);
&gt; +    return securityOrigin()-&gt;canAccess(other.get());

Really?  A malloc and ref just to check canAccess?

&gt; Source/WebCore/page/SecurityOrigin.cpp:53
&gt; +    // FIXME: Should we use the inner HTML even when BLOB and FILE_SYSTEM are disabled?

You mean inner URL?  Yes.  Seems we should. :)

&gt; Source/WebCore/page/SecurityOrigin.cpp:92
&gt; +        &amp;&amp; (!effectiveURL.hasPath() || effectiveURL.path().endsWith(&quot;/&quot;))) {

Why the endsWith check instead of something more semantic?  Like &quot;isDirectory&quot; or whatever that&apos;s trying to mean?

&gt; Source/WebCore/page/SecurityOrigin.cpp:106
&gt; +    , m_isUnique(!url.isValid())

I don&apos;t like that we use this in-band data.  I would prefer to have a separate constructor for unique origins.  That obviously makes it possible to forget to initialize some variable in one or the other (since c++ is stupid), but I think it cleaner.  You&apos;d use an enum type, with a single value like &quot;IsUnique&quot; or similar?  This could be a separate patch of course.

&gt; Source/WebCore/page/SecurityOrigin.cpp:118
&gt; +    if (isDefaultPortForProtocol(m_port, m_protocol))
&gt; +        m_port = 0;

Is 0 always an invalid port?  (May seem like a dumb quesiton, but I think of X display ports, which I think start with 0.)  Seems a constant might be useful here.  InvalidPort?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499672</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-09 23:13:53 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/page/SecurityOrigin.cpp:118
&gt; &gt; +    if (isDefaultPortForProtocol(m_port, m_protocol))
&gt; &gt; +        m_port = 0;
&gt; 
&gt; Is 0 always an invalid port?

Yes.  Specifically, it&apos;s the value KURL uses to represent a missing port.

&gt; InvalidPort?

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499673</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-09 23:21:03 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/ChangeLog:65
&gt; &gt; +            - Whenever we set a SecurityOrigin explicitly, we have not longer
&gt; 
&gt; not longer -&gt; no longer?

Fixed.

&gt; &gt; Source/WebCore/dom/Document.cpp:4393
&gt; &gt;  void Document::initSecurityContext()
&gt; 
&gt; You noted in our discussion that this should move to SecurityContext.  Seems you should note that in a FIXME here.  It seems this also deserves a FIXME about breaking this up into smaller pieces. :)  &quot;init&quot; is also not a very descriptive name.  I&apos;m not sure I have a better one though.  &quot;compute&quot;, &quot;inherit&quot;, not sure.  Anyway, that can all be a separate patch too.

I added a FIXME.  Hopefully when we move it to SecurityContext and break it into pieces, we&apos;ll think of better names.

&gt; &gt; Source/WebCore/dom/Document.cpp:4462
&gt; &gt; +    // We alias the SecurityOrigins to match Firefox, see Bug 15313
&gt; 
&gt; period, not sure you should capitalize Bug either, or simply write &quot;see:&quot; then you don&apos;t need a period or the bug number :)

Fixed.

&gt; &gt; Source/WebCore/dom/Document.cpp:4465
&gt; &gt; +    // FIXME: Consider moving m_contentSecurityPolicy into SecurityOrigin.
&gt; 
&gt; Seems like you should be more definite.  You&apos;re the one doing the considering. :)

I&apos;ve removed the FIXME.  This is on SecurityContext now, which is correct.

&gt; &gt; Source/WebCore/dom/SecurityContext.cpp:63
&gt; &gt; +    RefPtr&lt;SecurityOrigin&gt; other = SecurityOrigin::create(url);
&gt; &gt; +    return securityOrigin()-&gt;canAccess(other.get());
&gt; 
&gt; Really?  A malloc and ref just to check canAccess?

This happens very rarely, actually, because it only happens when the FrameLoader is in the DisplayingInitialDocument state.

&gt; &gt; Source/WebCore/page/SecurityOrigin.cpp:53
&gt; &gt; +    // FIXME: Should we use the inner HTML even when BLOB and FILE_SYSTEM are disabled?
&gt; 
&gt; You mean inner URL?  Yes.  Seems we should. :)

Fixed.

&gt; &gt; Source/WebCore/page/SecurityOrigin.cpp:92
&gt; &gt; +        &amp;&amp; (!effectiveURL.hasPath() || effectiveURL.path().endsWith(&quot;/&quot;))) {
&gt; 
&gt; Why the endsWith check instead of something more semantic?  Like &quot;isDirectory&quot; or whatever that&apos;s trying to mean?

Fixed.

&gt; &gt; Source/WebCore/page/SecurityOrigin.cpp:106
&gt; &gt; +    , m_isUnique(!url.isValid())
&gt; 
&gt; I don&apos;t like that we use this in-band data.  I would prefer to have a separate constructor for unique origins.  That obviously makes it possible to forget to initialize some variable in one or the other (since c++ is stupid), but I think it cleaner.  You&apos;d use an enum type, with a single value like &quot;IsUnique&quot; or similar?  This could be a separate patch of course.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499674</commentid>
    <comment_count>8</comment_count>
      <attachid>114438</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-09 23:25:32 -0800</bug_when>
    <thetext>Comment on attachment 114438
Patch

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

New failing tests:
http/tests/inspector/compiler-source-mapping-provider.html
media/video-controls-no-scripting.html
editing/pasteboard/drag-drop-dead-frame.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499681</commentid>
    <comment_count>9</comment_count>
      <attachid>114431</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-09 23:38:04 -0800</bug_when>
    <thetext>Comment on attachment 114431
Patch

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

New failing tests:
fast/frames/sandboxed-iframe-storage.html
fast/frames/sandboxed-iframe-navigation-top-by-constant-name.html
fast/frames/sandboxed-iframe-navigation-top-by-constant-name2.html
http/tests/inspector/compiler-source-mapping-provider.html
fast/frames/sandboxed-iframe-navigation-top.html
fast/frames/sandboxed-iframe-navigation-top-by-name.html
media/video-controls-no-scripting.html
editing/pasteboard/drag-drop-dead-frame.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499690</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-09 23:54:35 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/dom/SecurityContext.cpp:59
&gt; &gt; +    if (m_failedToInheritSecurityOrigin)
&gt; 
&gt; Yeah, I really think this &quot;I have special powers&quot; bool needs a better name.

Ok, I&apos;ve tried a new name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499697</commentid>
    <comment_count>11</comment_count>
      <attachid>114445</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-10 00:06:37 -0800</bug_when>
    <thetext>Created attachment 114445
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499715</commentid>
    <comment_count>12</comment_count>
      <attachid>114445</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-10 00:59:29 -0800</bug_when>
    <thetext>Comment on attachment 114445
Patch

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

New failing tests:
http/tests/inspector/compiler-source-mapping-provider.html
editing/pasteboard/drag-drop-dead-frame.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500015</commentid>
    <comment_count>13</comment_count>
      <attachid>114523</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-10 09:57:20 -0800</bug_when>
    <thetext>Created attachment 114523
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500018</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-10 09:58:18 -0800</bug_when>
    <thetext>There&apos;s still an issue with compiler-source-mapping-provider.html that I need to investigate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500112</commentid>
    <comment_count>15</comment_count>
      <attachid>114523</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-10 12:17:47 -0800</bug_when>
    <thetext>Comment on attachment 114523
Patch

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

&gt; Source/WebCore/page/SecurityOrigin.cpp:98
&gt; +    // We use unique origins for directory listings to make it harder to crawl a local filesystem.
&gt; +    if (SchemeRegistry::shouldTreatURLSchemeAsLocal(protocol)
&gt; +        &amp;&amp; !shouldUseInnerURL(url) // Note the use of url rather than effectiveURL.
&gt; +        &amp;&amp; (!effectiveURL.hasPath() || isDirectory(effectiveURL.path()))) {

I don&apos;t understand this strange heuristic?  Do we have tests for this?

&gt; LayoutTests/ChangeLog:23
&gt; +            - Previously sandboxed local iframes still got universal access
&gt; +              when we&apos;re running with universal access for file URLs!  Now that
&gt; +              they correctly get unique origins, we need to update these tests
&gt; +              to allow-same-origin access in order for them to function
&gt; +              properly.

So did you update the tests, or do we still need to?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500142</commentid>
    <comment_count>16</comment_count>
      <attachid>114523</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-10 12:37:15 -0800</bug_when>
    <thetext>Comment on attachment 114523
Patch

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

I think you could do some preparation steps and make the patch a bit smaller, especially the changes to Document.cpp. Not sure it’s worthwhile.

&gt; Source/WebCore/dom/Document.cpp:1732
&gt; -    ScriptExecutionContext::setSecurityOrigin(SecurityOrigin::create(url(), true));
&gt; +    ScriptExecutionContext::setSecurityOrigin(SecurityOrigin::createUnique());

This change could be done in a separate initial step where we introduce the new create functions but otherwise make no changes.

&gt; Source/WebCore/dom/Document.cpp:4414
&gt; -    ScriptExecutionContext::setSecurityOrigin(SecurityOrigin::create(m_url, isSandboxed(SandboxOrigin)));
&gt; +    ScriptExecutionContext::setSecurityOrigin(isSandboxed(SandboxOrigin) ? SecurityOrigin::createUnique() : SecurityOrigin::create(m_url));

This change could be done in a separate initial step where we introduce the new create functions but otherwise make no changes.

&gt; Source/WebCore/dom/Document.cpp:4448
&gt; -    if (!securityOrigin()-&gt;isEmpty())
&gt; +    // FIXME: We should not inherit our security origin if we&apos;re sandboxed.
&gt; +    if (m_url.isValid() &amp;&amp; !m_url.protocolIs(&quot;about&quot;))
&gt;          return;

Is there a way to write this code so that the “why” is self-explanatory? The explicit mention of &quot;about&quot; here is super-mysterious!

&gt; Source/WebCore/dom/Document.cpp:4462
&gt; +    if (!ownerFrame) {
&gt; +        didFailToInitializeSecurityOrigin();
&gt; +        return;
&gt;      }

Changing this to an early return in a first patch would make this patch easier to read; it might be clearer that the only thing added is a call to didFailToInitializeSecurityOrigin. As it is, the change of indentation hides whether there is anything changing in the code that is being unindented.

&gt; Source/WebCore/dom/SecurityContext.h:63
&gt; +    bool isSecureTransitionTo(const KURL&amp;) const;

Could a separate patch move this function here to SecurityContext without changing its behavior?

&gt; Source/WebCore/page/DOMWindow.cpp:881
&gt;          target = SecurityOrigin::createFromString(targetOrigin);
&gt; -        if (target-&gt;isEmpty()) {
&gt; +        if (target-&gt;isUnique()) {

Could we find a way to be clearer that this is about failure to create a security origin from a string? It seems unpleasant that the caller needs to know specifically what kind of bad security origin is returned to indicate failure. Maybe the best design is to indicate failure separately instead of with a special value, even though unique origin is available. It’s often considered better design to avoid “in-band signaling”.

&gt; Source/WebCore/page/SecurityOrigin.cpp:49
&gt; +    return url.protocolIs(&quot;http&quot;) || url.protocolIs(&quot;https&quot;) || url.protocolIs(&quot;ftp&quot;);

I prefer use of protocolIsInHTTPFamily for call sites like this.

Despite the clear name, I think a brief why comment would help here.

&gt; Source/WebCore/page/SecurityOrigin.cpp:64
&gt; +static bool shouldUseInnerURL(const KURL&amp; url)
&gt; +{
&gt; +    // FIXME: Use the inner URL even when BLOB and FILE_SYSTEM are disabled.
&gt; +#if ENABLE(BLOB)
&gt; +    if (url.protocolIs(&quot;blob&quot;))
&gt; +        return true;
&gt; +#endif
&gt; +#if ENABLE(FILE_SYSTEM)
&gt; +    if (url.protocolIs(&quot;filesystem&quot;))
&gt; +        return true;
&gt; +#endif
&gt; +    return false;
&gt; +}

To me the relationship between these protocols and the concept “use inner URL” is unclear, so I’d like to see a why comment that explains what an inner URL is and what the connection is. For example, this function can’t correctly answer the question whether this URL has an inner URL. It can only answer the question of whether it is known to use an inner URL, or the question of whether it uses an inner URL and has processing implemented by WebKit itself.

&gt; Source/WebCore/page/SecurityOrigin.h:170
&gt; +    enum UniqueOriginTag {
&gt; +        UniqueOrigin,
&gt; +    };

I’d do this all on one line, and omit the comma.

Also, I’m not sure that this is significantly better than using a private constructor with no arguments. If it was public, then I clearly see the value of the tag.

&gt; Source/WebKit/chromium/src/WebSecurityOrigin.cpp:93
&gt; +// FIXME: Renamed this API to isUnique().

Typo: &quot;Renamed&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500145</commentid>
    <comment_count>17</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-10 12:37:57 -0800</bug_when>
    <thetext>It’d be really good if the changes to policy were isolated from the refactoring. I can’t tell whether this patch includes any changes to policy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500147</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-10 12:38:45 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 114523 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=114523&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/SecurityOrigin.cpp:98
&gt; &gt; +    // We use unique origins for directory listings to make it harder to crawl a local filesystem.
&gt; &gt; +    if (SchemeRegistry::shouldTreatURLSchemeAsLocal(protocol)
&gt; &gt; +        &amp;&amp; !shouldUseInnerURL(url) // Note the use of url rather than effectiveURL.
&gt; &gt; +        &amp;&amp; (!effectiveURL.hasPath() || isDirectory(effectiveURL.path()))) {
&gt; 
&gt; I don&apos;t understand this strange heuristic?  Do we have tests for this?

I believe so.  I can hunt around for their names if that would be helpful.  Generally, this is trying to catch these sorts of URLs:

A) file:///Users/fred/

versus these sort of URLs:

B) file:///Users/fred/Downloads/resume.html
C) filesystem:file:///temporary/directory/

For the URLs of type A, the browser supplies a directory listing, which we place in a unique origin.  That does a couple things:

1) Any bugs in the directory listing code aren&apos;t exploitable to read the contents of your local filesystem.
2) A malicious local HTML file (e.g., a downloaded resume) can&apos;t use these directory listings to crawl your filesystem.  Instead, they need to guess at paths.

For URLs for type B, their security model is controlled by some settings.  For example, Chrome and Safari place them in a unique origin too, but other Mac OS X apps might use WebKit&apos;s legacy behavior of granting them more privileges.

For URLs of type C (the nested case), we&apos;re not worried about crawling the file system because we&apos;re not really dealing with the user&apos;s local file system.  In the case of &quot;filesystem&quot;, we&apos;re dealing with per-origin sandboxed file system, here the one associated with the &quot;file&quot; origin.  The Blob case is similar, in that there isn&apos;t any directory listing to protect.

&gt; &gt; LayoutTests/ChangeLog:23
&gt; &gt; +            - Previously sandboxed local iframes still got universal access
&gt; &gt; +              when we&apos;re running with universal access for file URLs!  Now that
&gt; &gt; +              they correctly get unique origins, we need to update these tests
&gt; &gt; +              to allow-same-origin access in order for them to function
&gt; &gt; +              properly.
&gt; 
&gt; So did you update the tests, or do we still need to?

Yes, all the tests should be updated.  I can add some new tests targeted at this issue if that would be helpful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500160</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-10 12:46:43 -0800</bug_when>
    <thetext>&gt; I think you could do some preparation steps and make the patch a bit smaller, especially the changes to Document.cpp. Not sure it’s worthwhile.

I&apos;ve done a few of those already, but I can look at this patch again to see if I can do more.

&gt; &gt; Source/WebCore/dom/Document.cpp:1732
&gt; &gt; -    ScriptExecutionContext::setSecurityOrigin(SecurityOrigin::create(url(), true));
&gt; &gt; +    ScriptExecutionContext::setSecurityOrigin(SecurityOrigin::createUnique());
&gt; 
&gt; This change could be done in a separate initial step where we introduce the new create functions but otherwise make no changes.

Ok.

&gt; &gt; Source/WebCore/dom/Document.cpp:4414
&gt; &gt; -    ScriptExecutionContext::setSecurityOrigin(SecurityOrigin::create(m_url, isSandboxed(SandboxOrigin)));
&gt; &gt; +    ScriptExecutionContext::setSecurityOrigin(isSandboxed(SandboxOrigin) ? SecurityOrigin::createUnique() : SecurityOrigin::create(m_url));
&gt; 
&gt; This change could be done in a separate initial step where we introduce the new create functions but otherwise make no changes.

Ok.

&gt; &gt; Source/WebCore/dom/Document.cpp:4448
&gt; &gt; -    if (!securityOrigin()-&gt;isEmpty())
&gt; &gt; +    // FIXME: We should not inherit our security origin if we&apos;re sandboxed.
&gt; &gt; +    if (m_url.isValid() &amp;&amp; !m_url.protocolIs(&quot;about&quot;))
&gt; &gt;          return;
&gt; 
&gt; Is there a way to write this code so that the “why” is self-explanatory? The explicit mention of &quot;about&quot; here is super-mysterious!

I can certainly split the check off into a helper function with a descriptive name.  We can also link to the relevant requirement in HTML5.

&gt; &gt; Source/WebCore/dom/Document.cpp:4462
&gt; &gt; +    if (!ownerFrame) {
&gt; &gt; +        didFailToInitializeSecurityOrigin();
&gt; &gt; +        return;
&gt; &gt;      }
&gt; 
&gt; Changing this to an early return in a first patch would make this patch easier to read; it might be clearer that the only thing added is a call to didFailToInitializeSecurityOrigin. As it is, the change of indentation hides whether there is anything changing in the code that is being unindented.

Sure.  That&apos;s easy to do.

&gt; &gt; Source/WebCore/dom/SecurityContext.h:63
&gt; &gt; +    bool isSecureTransitionTo(const KURL&amp;) const;
&gt; 
&gt; Could a separate patch move this function here to SecurityContext without changing its behavior?

Yes.

&gt; &gt; Source/WebCore/page/DOMWindow.cpp:881
&gt; &gt;          target = SecurityOrigin::createFromString(targetOrigin);
&gt; &gt; -        if (target-&gt;isEmpty()) {
&gt; &gt; +        if (target-&gt;isUnique()) {
&gt; 
&gt; Could we find a way to be clearer that this is about failure to create a security origin from a string? It seems unpleasant that the caller needs to know specifically what kind of bad security origin is returned to indicate failure. Maybe the best design is to indicate failure separately instead of with a special value, even though unique origin is available. It’s often considered better design to avoid “in-band signaling”.

We can return null if the string fails to parse, if that&apos;s what you&apos;re getting at.

&gt; &gt; Source/WebCore/page/SecurityOrigin.cpp:49
&gt; &gt; +    return url.protocolIs(&quot;http&quot;) || url.protocolIs(&quot;https&quot;) || url.protocolIs(&quot;ftp&quot;);
&gt; 
&gt; I prefer use of protocolIsInHTTPFamily for call sites like this.

Will do.

&gt; Despite the clear name, I think a brief why comment would help here.

Ok.

&gt; &gt; Source/WebCore/page/SecurityOrigin.cpp:64
&gt; &gt; +static bool shouldUseInnerURL(const KURL&amp; url)
&gt; &gt; +{
&gt; &gt; +    // FIXME: Use the inner URL even when BLOB and FILE_SYSTEM are disabled.
&gt; &gt; +#if ENABLE(BLOB)
&gt; &gt; +    if (url.protocolIs(&quot;blob&quot;))
&gt; &gt; +        return true;
&gt; &gt; +#endif
&gt; &gt; +#if ENABLE(FILE_SYSTEM)
&gt; &gt; +    if (url.protocolIs(&quot;filesystem&quot;))
&gt; &gt; +        return true;
&gt; &gt; +#endif
&gt; &gt; +    return false;
&gt; &gt; +}
&gt; 
&gt; To me the relationship between these protocols and the concept “use inner URL” is unclear, so I’d like to see a why comment that explains what an inner URL is and what the connection is.

I&apos;ll add a comment and link to the specs for these schemes.

&gt; For example, this function can’t correctly answer the question whether this URL has an inner URL. It can only answer the question of whether it is known to use an inner URL, or the question of whether it uses an inner URL and has processing implemented by WebKit itself.

I&apos;ll rename the function to be clear that this function returns an answer that&apos;s to the best of its knowledge.

&gt; &gt; Source/WebCore/page/SecurityOrigin.h:170
&gt; &gt; +    enum UniqueOriginTag {
&gt; &gt; +        UniqueOrigin,
&gt; &gt; +    };
&gt; 
&gt; I’d do this all on one line, and omit the comma.

Ok.

&gt; Also, I’m not sure that this is significantly better than using a private constructor with no arguments. If it was public, then I clearly see the value of the tag.

I&apos;m happy to make that change.

&gt; &gt; Source/WebKit/chromium/src/WebSecurityOrigin.cpp:93
&gt; &gt; +// FIXME: Renamed this API to isUnique().
&gt; 
&gt; Typo: &quot;Renamed&quot;.

Thanks.

&gt; It’d be really good if the changes to policy were isolated from the refactoring. I can’t tell whether this patch includes any changes to policy.

Your comments above are good suggestions for breaking this change down into smaller pieces.  I&apos;ll make those changes first and then take another stab at making the core part of the change in smaller pieces.

Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500179</commentid>
    <comment_count>20</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-10 13:05:09 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; &gt; &gt; Source/WebCore/page/DOMWindow.cpp:881
&gt; &gt; &gt;          target = SecurityOrigin::createFromString(targetOrigin);
&gt; &gt; &gt; -        if (target-&gt;isEmpty()) {
&gt; &gt; &gt; +        if (target-&gt;isUnique()) {
&gt; &gt; 
&gt; &gt; Could we find a way to be clearer that this is about failure to create a security origin from a string? It seems unpleasant that the caller needs to know specifically what kind of bad security origin is returned to indicate failure. Maybe the best design is to indicate failure separately instead of with a special value, even though unique origin is available. It’s often considered better design to avoid “in-band signaling”.
&gt; 
&gt; We can return null if the string fails to parse, if that&apos;s what you&apos;re getting at.

I’d make it more like this:

    static bool parseXXX(const String&amp; string, SecurityOrigin&amp; origin);

The boolean would be true if you can parse. The XXX would be words for whatever we call the string that describes a security origin.

Not sure if that becomes too inelegant, though.

&gt; I&apos;ll rename the function to be clear that this function returns an answer that&apos;s to the best of its knowledge.

I think another point important for someone reading the code is: What are the consequences for getting the answer wrong?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500181</commentid>
    <comment_count>21</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-11-10 13:06:09 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; &gt; I&apos;ll rename the function to be clear that this function returns an answer that&apos;s to the best of its knowledge.
&gt; 
&gt; I think another point important for someone reading the code is: What are the consequences for getting the answer wrong?

For example, lets say I find a W3C spec that makes it clear some particular URL has this kind of inner URL. Is it helpful to the WebKit project to add it to this function?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500212</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-10 13:29:23 -0800</bug_when>
    <thetext>&gt; I’d make it more like this:
&gt; 
&gt;     static bool parseXXX(const String&amp; string, SecurityOrigin&amp; origin);
&gt; 
&gt; The boolean would be true if you can parse. The XXX would be words for whatever we call the string that describes a security origin.
&gt; 
&gt; Not sure if that becomes too inelegant, though.

I need to look at the spec to see why we&apos;re supposed to throw this exception here.  For most of the callers, returning a unique origin is the right behavior for this function.  This seems to be the only caller that wants to do something unusual in the &quot;fails-to-parse&quot; case.

&gt; &gt; I&apos;ll rename the function to be clear that this function returns an answer that&apos;s to the best of its knowledge.
&gt; 
&gt; I think another point important for someone reading the code is: What are the consequences for getting the answer wrong?

The consequences depend on whether the engine understands these sorts of URLs in general.  For Blob and Filesystem, other parts of WebKit rip them apart and look inside.  If WebKit doesn&apos;t understand the URLs, there isn&apos;t too bad that will happen.

None of these issues are new in this patch.  This patch just refactors the code to make it clearer what&apos;s going on.

&gt; For example, lets say I find a W3C spec that makes it clear some particular URL has this kind of inner URL. Is it helpful to the WebKit project to add it to this function?

That depends whether WebKit supports that spec.  For example, jar is another scheme that has an inner URL.  In Firefox&apos;s implementation of this function, they list jar because Firefox implements the rest of the jar protocol.  Similarly, Firefox doesn&apos;t list &quot;filesystem&quot; in their implementation of this function because they don&apos;t yet support the Filesystem API.

I&apos;ll add some more documentation to the code along these lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505358</commentid>
    <comment_count>23</comment_count>
      <attachid>115710</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-17 16:53:01 -0800</bug_when>
    <thetext>Created attachment 115710
Work in progress (needs WebCore.exp.in tweaks)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505361</commentid>
    <comment_count>24</comment_count>
      <attachid>115710</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-11-17 17:01:19 -0800</bug_when>
    <thetext>Comment on attachment 115710
Work in progress (needs WebCore.exp.in tweaks)

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505368</commentid>
    <comment_count>25</comment_count>
      <attachid>115712</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-17 17:18:31 -0800</bug_when>
    <thetext>Created attachment 115712
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505457</commentid>
    <comment_count>26</comment_count>
      <attachid>115712</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-17 20:59:00 -0800</bug_when>
    <thetext>Comment on attachment 115712
Patch

Clearing flags on attachment: 115712

Committed r100716: &lt;http://trac.webkit.org/changeset/100716&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505458</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-17 20:59:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113950</attachid>
            <date>2011-11-07 16:24:17 -0800</date>
            <delta_ts>2011-11-09 14:52:54 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-71745-20111107162416.patch</filename>
            <type>text/plain</type>
            <size>5693</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gOTk0NzcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzI1LDcgKzE3MjUs
NyBAQCB2b2lkIERvY3VtZW50OjpzZXRJc1ZpZXdTb3VyY2UoYm9vbCBpc1ZpCiAgICAgaWYgKCFt
X2lzVmlld1NvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6c2V0U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwoKSwgdHJ1
ZSkpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNldFNlY3VyaXR5T3JpZ2luKFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmNyZWF0ZVN0
eWxlU2VsZWN0b3IoKQpAQCAtNDQwNCw3ICs0NDA0LDcgQEAgdm9pZCBEb2N1bWVudDo6aW5pdFNl
Y3VyaXR5Q29udGV4dCgpCiAgICAgLy8gbG9hZGluZyBVUkwgd2l0aCBhIGZyZXNoIGNvbnRlbnQg
c2VjdXJpdHkgcG9saWN5LgogICAgIG1fY29va2llVVJMID0gbV91cmw7CiAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6ZW5mb3JjZVNhbmRib3hGbGFncyhtX2ZyYW1lLT5sb2FkZXIoKS0+ZWZm
ZWN0aXZlU2FuZGJveEZsYWdzKCkpOwotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNldFNl
Y3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwsIGlzU2FuZGJveGVkKFNh
bmRib3hPcmlnaW4pKSk7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0U2VjdXJpdHlP
cmlnaW4oaXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikgPyBTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
VW5pcXVlKCkgOiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKSk7CiAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6c2V0Q29udGVudFNlY3VyaXR5UG9saWN5KENvbnRlbnRTZWN1cml0eVBv
bGljeTo6Y3JlYXRlKHRoaXMpKTsKIAogICAgIGlmIChTZWN1cml0eU9yaWdpbjo6YWxsb3dTdWJz
dGl0dXRlRGF0YUFjY2Vzc1RvTG9jYWwoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHAJKHJldmlzaW9uIDk5NDc3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3LDExICs2NywxMSBAQCBzdGF0
aWMgYm9vbCBzY2hlbWVSZXF1aXJlc0F1dGhvcml0eShjb25zCiAgICAgcmV0dXJuIHNjaGVtZXMu
Y29udGFpbnMoc2NoZW1lKTsKIH0KIAotU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNv
bnN0IEtVUkwmIHVybCwgYm9vbCBmb3JjZVVuaXF1ZSkKK1NlY3VyaXR5T3JpZ2luOjpTZWN1cml0
eU9yaWdpbihjb25zdCBLVVJMJiB1cmwpCiAgICAgOiBtX3Byb3RvY29sKHVybC5wcm90b2NvbCgp
LmlzTnVsbCgpID8gIiIgOiB1cmwucHJvdG9jb2woKS5sb3dlcigpKQogICAgICwgbV9ob3N0KHVy
bC5ob3N0KCkuaXNOdWxsKCkgPyAiIiA6IHVybC5ob3N0KCkubG93ZXIoKSkKICAgICAsIG1fcG9y
dCh1cmwucG9ydCgpKQotICAgICwgbV9pc1VuaXF1ZShmb3JjZVVuaXF1ZSB8fCBTY2hlbWVSZWdp
c3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc05vQWNjZXNzKG1fcHJvdG9jb2wpKQorICAgICwg
bV9pc1VuaXF1ZShTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc05vQWNjZXNz
KG1fcHJvdG9jb2wpKQogICAgICwgbV91bml2ZXJzYWxBY2Nlc3MoZmFsc2UpCiAgICAgLCBtX2Rv
bWFpbldhc1NldEluRE9NKGZhbHNlKQogICAgICwgbV9lbmZvcmNlRmlsZVBhdGhTZXBhcmF0aW9u
KGZhbHNlKQpAQCAtMTQ1LDE3ICsxNDUsMTEgQEAgU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3Jp
Z2luKGNvbnN0IFNlYwogewogfQogCi1ib29sIFNlY3VyaXR5T3JpZ2luOjppc0VtcHR5KCkgY29u
c3QKLXsKLSAgICBBU1NFUlQoIW1fcHJvdG9jb2wuaXNFbXB0eSgpIHx8IG1faXNVbmlxdWUpOwot
ICAgIHJldHVybiBtX3Byb3RvY29sLmlzRW1wdHkoKTsKLX0KLQotUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIGJvb2wgZm9y
Y2VVbmlxdWUpCitQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKGNvbnN0IEtVUkwmIHVybCkKIHsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCi0gICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgU2VjdXJpdHlPcmlnaW4oYmxhbmtVUkwoKSwgZm9yY2VVbmlx
dWUpKTsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlY3VyaXR5T3JpZ2luKHVybCwgZm9yY2VV
bmlxdWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWN1cml0eU9yaWdpbihLVVJM
KCkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlY3VyaXR5T3JpZ2luKHVybCkpOwogfQog
CiBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVl
KCkKQEAgLTQwMSwxMCArMzk1LDYgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6aXNMb2NhbCgpIGNv
bnN0CiAKIGJvb2wgU2VjdXJpdHlPcmlnaW46OmlzU2VjdXJlVHJhbnNpdGlvblRvKGNvbnN0IEtV
UkwmIHVybCkgY29uc3QKIHsKLSAgICAvLyBUaGlzIG9yaWdpbiByZXByZXNlbnRzIGEgbmV3IHdp
bmRvdyBjcmVhdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4KLSAgICBpZiAoaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLQogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3RoZXIgPSBT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCk7CiAgICAgcmV0dXJuIGNhbkFjY2VzcyhvdGhlci5n
ZXQoKSk7CiB9CkBAIC01OTcsOCArNTg3LDggQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6YWxsb3dT
dWJzdGl0dXRlRGF0YQogdm9pZCBTZWN1cml0eU9yaWdpbjo6YWRkT3JpZ2luQWNjZXNzV2hpdGVs
aXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5n
JiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uRG9tYWluLCBi
b29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7Ci0gICAgQVNTRVJUKCFzb3VyY2VPcmlnaW4uaXNFbXB0eSgpKTsKLSAgICBpZiAoc291
cmNlT3JpZ2luLmlzRW1wdHkoKSkKKyAgICBBU1NFUlQoIXNvdXJjZU9yaWdpbi5pc1VuaXF1ZSgp
KTsKKyAgICBpZiAoc291cmNlT3JpZ2luLmlzVW5pcXVlKCkpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIFN0cmluZyBzb3VyY2VTdHJpbmcgPSBzb3VyY2VPcmlnaW4udG9TdHJpbmcoKTsKQEAgLTYx
Myw4ICs2MDMsOCBAQCB2b2lkIFNlY3VyaXR5T3JpZ2luOjphZGRPcmlnaW5BY2Nlc3NXaGl0CiB2
b2lkIFNlY3VyaXR5T3JpZ2luOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25z
dCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9u
UHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Eb21haW4sIGJvb2wgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBB
U1NFUlQoIXNvdXJjZU9yaWdpbi5pc0VtcHR5KCkpOwotICAgIGlmIChzb3VyY2VPcmlnaW4uaXNF
bXB0eSgpKQorICAgIEFTU0VSVCghc291cmNlT3JpZ2luLmlzVW5pcXVlKCkpOworICAgIGlmIChz
b3VyY2VPcmlnaW4uaXNVbmlxdWUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIHNv
dXJjZVN0cmluZyA9IHNvdXJjZU9yaWdpbi50b1N0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW4uaAkocmV2aXNpb24gOTk0NzcpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgY2xh
c3MgS1VSTDsKIAogY2xhc3MgU2VjdXJpdHlPcmlnaW4gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U2VjdXJpdHlPcmlnaW4+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IEtVUkwmLCBib29sIGZvcmNlVW5pcXVlID0gZmFs
c2UpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGUoY29uc3Qg
S1VSTCYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGVVbmlx
dWUoKTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBjcmVhdGVGcm9t
RGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwpAQCAtMTQxLDEzICsxNDEsNiBAQCBw
dWJsaWM6CiAgICAgLy8gYWRkaXRpb24sIHRoZSBTYW5kYm94T3JpZ2luIGZsYWcgaXMgaW5oZXJp
dGVkIGJ5IGlmcmFtZXMuCiAgICAgYm9vbCBpc1VuaXF1ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNV
bmlxdWU7IH0KIAotICAgIC8vIFRoZSBlbXB0eSBTZWN1cml0eU9yaWdpbiBpcyBhIHVuaXF1ZSBz
ZWN1cml0eSBvcmlnbiAoaW4gdGhlIHNlbnNlIG9mCi0gICAgLy8gaXNVbmlxdWUgYWJvdmUpIHRo
YXQgd2FzIGNyZWF0ZWQgZm9yIGEgImJsYW5rIiBkb2N1bWVudCwgc3VjaCBhYm91dAotICAgIC8v
IGFib3V0OmJsYW5rLiBFbXB0eSBvcmlnaW5zIGRpZmZlciBmcm9tIHVuaXF1ZSBvcmlnaW5zIGlu
IHRoYXQgdGhleSBjYW4KLSAgICAvLyBzb21ldGltZXMgYmUgcmVwbGFjZWQgYnkgbm9uLWVtcHR5
IG9yaWdpbnMsIGZvciBleGFtcGxlIHdoZW4gYW4KLSAgICAvLyBhYm91dDpibGFuayBpZnJhbWUg
aW5oZXJpdHMgaXRzIHNlY3VyaXR5IG9yaWdpbiBmcm9tIGl0cyBwYXJlbnQgZnJhbWUuCi0gICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3Q7Ci0KICAgICAvLyBNYXJrcyBhIGZpbGU6Ly8gb3JpZ2luIGFz
IGJlaW5nIGluIGEgZG9tYWluIGRlZmluZWQgYnkgaXRzIHBhdGguCiAgICAgdm9pZCBlbmZvcmNl
RmlsZVBhdGhTZXBhcmF0aW9uKCk7CiAKQEAgLTE5Niw3ICsxODksNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIHZvaWQgcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CiAKIHByaXZhdGU6Ci0g
ICAgZXhwbGljaXQgU2VjdXJpdHlPcmlnaW4oY29uc3QgS1VSTCYsIGJvb2wgZm9yY2VVbmlxdWUp
OworICAgIGV4cGxpY2l0IFNlY3VyaXR5T3JpZ2luKGNvbnN0IEtVUkwmKTsKICAgICBleHBsaWNp
dCBTZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiopOwogCiAgICAgLy8gRklYTUU6
IFJlbmFtZSB0aGlzIGZ1bmN0aW9uIHRvIHNvbWV0aGluZyBtb3JlIHNlbWFudGljLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114372</attachid>
            <date>2011-11-09 14:52:58 -0800</date>
            <delta_ts>2011-11-09 21:45:49 -0800</delta_ts>
            <desc>more work in progress</desc>
            <filename>bug-71745-20111109145257.patch</filename>
            <type>text/plain</type>
            <size>12637</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gOTk3MjgpCisrKyBTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzI5LDcgKzE3Mjks
NyBAQCB2b2lkIERvY3VtZW50OjpzZXRJc1ZpZXdTb3VyY2UoYm9vbCBpc1ZpCiAgICAgaWYgKCFt
X2lzVmlld1NvdXJjZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6c2V0U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwoKSwgdHJ1
ZSkpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNldFNlY3VyaXR5T3JpZ2luKFNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmNyZWF0ZVN0
eWxlU2VsZWN0b3IoKQpAQCAtNDM5Miw4ICs0MzkyLDggQEAgYm9vbCBEb2N1bWVudDo6dXNlU2Vj
dXJlS2V5Ym9hcmRFbnRyeVdoZQogCiB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0
KCkKIHsKLSAgICBpZiAoc2VjdXJpdHlPcmlnaW4oKSAmJiAhc2VjdXJpdHlPcmlnaW4oKS0+aXNF
bXB0eSgpKQotICAgICAgICByZXR1cm47IC8vIG1fc2VjdXJpdHlPcmlnaW4gaGFzIGFscmVhZHkg
YmVlbiBpbml0aWFsaXplZC4KKyAgICBpZiAoc2VjdXJpdHlPcmlnaW4oKSkKKyAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKCFtX2ZyYW1lKSB7CiAgICAgICAgIC8vIE5vIHNvdXJjZSBmb3IgYSBz
ZWN1cml0eSBjb250ZXh0LgpAQCAtNDQwOCw3ICs0NDA4LDcgQEAgdm9pZCBEb2N1bWVudDo6aW5p
dFNlY3VyaXR5Q29udGV4dCgpCiAgICAgLy8gbG9hZGluZyBVUkwgd2l0aCBhIGZyZXNoIGNvbnRl
bnQgc2VjdXJpdHkgcG9saWN5LgogICAgIG1fY29va2llVVJMID0gbV91cmw7CiAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6ZW5mb3JjZVNhbmRib3hGbGFncyhtX2ZyYW1lLT5sb2FkZXIoKS0+
ZWZmZWN0aXZlU2FuZGJveEZsYWdzKCkpOwotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNl
dFNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwsIGlzU2FuZGJveGVk
KFNhbmRib3hPcmlnaW4pKSk7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0U2VjdXJp
dHlPcmlnaW4oaXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikgPyBTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlVW5pcXVlKCkgOiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKSk7CiAgICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6c2V0Q29udGVudFNlY3VyaXR5UG9saWN5KENvbnRlbnRTZWN1cml0
eVBvbGljeTo6Y3JlYXRlKHRoaXMpKTsKIAogICAgIGlmIChTZWN1cml0eVBvbGljeTo6YWxsb3dT
dWJzdGl0dXRlRGF0YUFjY2Vzc1RvTG9jYWwoKSkgewpAQCAtNDQxNiw3ICs0NDE2LDcgQEAgdm9p
ZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgICAgIC8vIGxvYWQgbG9jYWwg
cmVzb3VyY2VzLiAgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Njc1NgogICAgICAgICAvLyBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NzYwIGZvciBmdXJ0aGVyCiAgICAgICAgIC8vIGRpc2N1c3Npb24uCi0gICAgICAgIAor
CiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGxvYWRlcigpOwogICAg
ICAgICBpZiAoZG9jdW1lbnRMb2FkZXIgJiYgZG9jdW1lbnRMb2FkZXItPnN1YnN0aXR1dGVEYXRh
KCkuaXNWYWxpZCgpKQogICAgICAgICAgICAgc2VjdXJpdHlPcmlnaW4oKS0+Z3JhbnRMb2FkTG9j
YWxSZXNvdXJjZXMoKTsKQEAgLTQ0NDAsNyArNDQ0MCw4IEBAIHZvaWQgRG9jdW1lbnQ6OmluaXRT
ZWN1cml0eUNvbnRleHQoKQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFzZWN1cml0eU9y
aWdpbigpLT5pc0VtcHR5KCkpCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgaW5oZXJpdCBv
dXIgc2VjdXJpdHkgb3JpZ2luIGlmIHdlJ3JlIHNhbmRib3hlZC4KKyAgICBpZiAoIW1fdXJsLmlz
VmFsaWQoKSB8fCBtX3VybC5wcm90b2NvbElzKCJhYm91dCIpKQogICAgICAgICByZXR1cm47CiAK
ICAgICAvLyBJZiB3ZSBkbyBub3Qgb2J0YWluIGEgbWVhbmluZ2Z1bCBvcmlnaW4gZnJvbSB0aGUg
VVJMLCB0aGVuIHdlIHRyeSB0bwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2
aXNpb24gOTk3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTg3OCw3ICs4NzgsNyBAQCB2b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2Uo
UGFzc1JlZlB0cjxTCiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0YXJnZXQ7CiAgICAgaWYg
KHRhcmdldE9yaWdpbiAhPSAiKiIpIHsKICAgICAgICAgdGFyZ2V0ID0gU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZUZyb21TdHJpbmcodGFyZ2V0T3JpZ2luKTsKLSAgICAgICAgaWYgKHRhcmdldC0+aXNF
bXB0eSgpKSB7CisgICAgICAgIGlmICh0YXJnZXQtPmlzVW5pcXVlKCkpIHsKICAgICAgICAgICAg
IGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAJKHJldmlzaW9uIDk5NzI4KQorKysg
U291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDgwICs0Myw4NSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IGludCBNYXhBbGxv
d2VkUG9ydCA9IDY1NTM1OwogCi1zdGF0aWMgYm9vbCBzY2hlbWVSZXF1aXJlc0F1dGhvcml0eShj
b25zdCBTdHJpbmcmIHNjaGVtZSkKK3N0YXRpYyBib29sIHNjaGVtZVJlcXVpcmVzQXV0aG9yaXR5
KGNvbnN0IEtVUkwmIHVybCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVtZXNN
YXAsIHNjaGVtZXMsICgpKTsKKyAgICByZXR1cm4gdXJsLnByb3RvY29sSXMoImh0dHAiKSB8fCB1
cmwucHJvdG9jb2xJcygiaHR0cHMiKSB8fCB1cmwucHJvdG9jb2xJcygiZnRwIik7Cit9CiAKLSAg
ICBpZiAoc2NoZW1lcy5pc0VtcHR5KCkpIHsKLSAgICAgICAgc2NoZW1lcy5hZGQoImh0dHAiKTsK
LSAgICAgICAgc2NoZW1lcy5hZGQoImh0dHBzIik7Ci0gICAgICAgIHNjaGVtZXMuYWRkKCJmdHAi
KTsKK3N0YXRpYyBib29sIHNob3VsZFVzZUlubmVyVVJMKGNvbnN0IEtVUkwmIHVybCkKK3sKKyAg
ICAvLyBGSVhNRTogU2hvdWxkIHdlIHVzZSB0aGUgaW5uZXIgSFRNTCBldmVuIHdoZW4gQkxPQiBh
bmQgRklMRV9TWVNURU0gYXJlIGRpc2FibGVkPworI2lmIEVOQUJMRShCTE9CKQorICAgIGlmICh1
cmwucHJvdG9jb2xJcygiYmxvYiIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lm
IEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICBpZiAodXJsLnByb3RvY29sSXMoImZpbGVzeXN0ZW0i
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K3N0YXRpYyBLVVJMIGV4dHJhY3RJbm5lclVSTChjb25zdCBLVVJMJiB1cmwpCit7CisgICAgcmV0
dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLnBh
dGgoKSkpOworfQorCitzdGF0aWMgYm9vbCBzaG91bGRUcmVhdEFzVW5pcXVlT3JpZ2luKGNvbnN0
IEtVUkwmIHVybCkKK3sKKyAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gdW53cmFwIHRoZSBVUkwgZnVydGhl
cj8KKyAgICBLVVJMIGVmZmVjdGl2ZVVSTCA9IHNob3VsZFVzZUlubmVyVVJMKHVybCkgPyBleHRy
YWN0SW5uZXJVUkwodXJsKSA6IHVybDsKKworICAgIC8vIEZJWE1FOiBDaGVjayB3aGV0aGVyIGVm
ZmVjdGl2ZVVSTCBpcyB2YWxpZC4KKworICAgIC8vIEZvciBlZGdlIGNhc2UgVVJMcyB0aGF0IHdl
cmUgcHJvYmFibHkgbWlzcGFyc2VkLCBtYWtlIHN1cmUgdGhhdCB0aGUgb3JpZ2luIGlzIHVuaXF1
ZS4KKyAgICBpZiAoc2NoZW1lUmVxdWlyZXNBdXRob3JpdHkoZWZmZWN0aXZlVVJMKSAmJiBlZmZl
Y3RpdmVVUkwuaG9zdCgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBT
dHJpbmcgcHJvdG9jb2wgPSBlZmZlY3RpdmVVUkwucHJvdG9jb2woKS5sb3dlcigpOworCisgICAg
aWYgKFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTm9BY2Nlc3MocHJvdG9j
b2wpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIFdlIHVzZSB1bmlxdWUgb3JpZ2lu
cyBmb3IgZGlyZWN0b3J5IGxpc3RpbmdzIHRvIG1ha2UgaXQgaGFyZGVyIHRvIGNyYXdsIGEgbG9j
YWwgZmlsZXN5c3RlbS4KKyAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2No
ZW1lQXNMb2NhbChwcm90b2NvbCkKKyAgICAgICAgJiYgIXNob3VsZFVzZUlubmVyVVJMKHVybCkg
Ly8gTm90ZSB0aGUgdXNlIG9mIHVybCByYXRoZXIgdGhhbiBlZmZlY3RpdmVVUkwuCisgICAgICAg
ICYmICghZWZmZWN0aXZlVVJMLmhhc1BhdGgoKSB8fCBlZmZlY3RpdmVVUkwucGF0aCgpLmVuZHNX
aXRoKCIvIikpKSB7CisgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYmUgdXNpbmcgc2hvdWxk
VXNlSW5uZXJVUkwgaGVyZT8KKyAgICAgICAgLy8gV2Ugb3JpZ2luYWxseSBkaWQgdGhhdCBjaGVj
ayB0byBhdm9pZCB0cmVhdGluZyBibG9iIGFuZCBmaWxlc3lzdGVtCisgICAgICAgIC8vIHVybHMg
YXMgdW5pcXVlIHdoZW4gaXQgaXMgY3JlYXRlZCBmcm9tIGxvY2FsIGZpbGUgdXJscy4KKyAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgcmV0dXJuIHNjaGVtZXMuY29udGFpbnMoc2No
ZW1lKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9y
aWdpbihjb25zdCBLVVJMJiB1cmwsIGJvb2wgZm9yY2VVbmlxdWUpCiAgICAgOiBtX3Byb3RvY29s
KHVybC5wcm90b2NvbCgpLmlzTnVsbCgpID8gIiIgOiB1cmwucHJvdG9jb2woKS5sb3dlcigpKQog
ICAgICwgbV9ob3N0KHVybC5ob3N0KCkuaXNOdWxsKCkgPyAiIiA6IHVybC5ob3N0KCkubG93ZXIo
KSkKICAgICAsIG1fcG9ydCh1cmwucG9ydCgpKQotICAgICwgbV9pc1VuaXF1ZShmb3JjZVVuaXF1
ZSB8fCBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc05vQWNjZXNzKG1fcHJv
dG9jb2wpKQorICAgICwgbV9pc1VuaXF1ZSghdXJsLmlzVmFsaWQoKSkKICAgICAsIG1fdW5pdmVy
c2FsQWNjZXNzKGZhbHNlKQogICAgICwgbV9kb21haW5XYXNTZXRJbkRPTShmYWxzZSkKICAgICAs
IG1fZW5mb3JjZUZpbGVQYXRoU2VwYXJhdGlvbihmYWxzZSkKIHsKLSAgICAvLyBUaGVzZSBwcm90
b2NvbHMgZG8gbm90IGNyZWF0ZSBzZWN1cml0eSBvcmlnaW5zOyB0aGUgb3duZXIgZnJhbWUgcHJv
dmlkZXMgdGhlIG9yaWdpbgotICAgIGlmIChtX3Byb3RvY29sID09ICJhYm91dCIgfHwgbV9wcm90
b2NvbCA9PSAiamF2YXNjcmlwdCIpCi0gICAgICAgIG1fcHJvdG9jb2wgPSAiIjsKLQotI2lmIEVO
QUJMRShCTE9CKSB8fCBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgYm9vbCBpc0Jsb2JPckZpbGVT
eXN0ZW1Qcm90b2NvbCA9IGZhbHNlOwotI2lmIEVOQUJMRShCTE9CKQotICAgIGlmIChtX3Byb3Rv
Y29sID09IEJsb2JVUkw6OmJsb2JQcm90b2NvbCgpKQotICAgICAgICBpc0Jsb2JPckZpbGVTeXN0
ZW1Qcm90b2NvbCA9IHRydWU7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAg
aWYgKG1fcHJvdG9jb2wgPT0gImZpbGVzeXN0ZW0iKQotICAgICAgICBpc0Jsb2JPckZpbGVTeXN0
ZW1Qcm90b2NvbCA9IHRydWU7Ci0jZW5kaWYKLSAgICBpZiAoaXNCbG9iT3JGaWxlU3lzdGVtUHJv
dG9jb2wpIHsKLSAgICAgICAgS1VSTCBvcmlnaW5VUkwoUGFyc2VkVVJMU3RyaW5nLCBkZWNvZGVV
UkxFc2NhcGVTZXF1ZW5jZXModXJsLnBhdGgoKSkpOwotICAgICAgICBpZiAob3JpZ2luVVJMLmlz
VmFsaWQoKSkgewotICAgICAgICAgICAgbV9wcm90b2NvbCA9IG9yaWdpblVSTC5wcm90b2NvbCgp
Lmxvd2VyKCk7Ci0gICAgICAgICAgICBtX2hvc3QgPSBvcmlnaW5VUkwuaG9zdCgpLmxvd2VyKCk7
Ci0gICAgICAgICAgICBtX3BvcnQgPSBvcmlnaW5VUkwucG9ydCgpOwotICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgIG1faXNVbmlxdWUgPSB0cnVlOwotICAgIH0KLSNlbmRpZgotCi0gICAgLy8g
Rm9yIGVkZ2UgY2FzZSBVUkxzIHRoYXQgd2VyZSBwcm9iYWJseSBtaXNwYXJzZWQsIG1ha2Ugc3Vy
ZSB0aGF0IHRoZSBvcmlnaW4gaXMgdW5pcXVlLgotICAgIGlmIChzY2hlbWVSZXF1aXJlc0F1dGhv
cml0eShtX3Byb3RvY29sKSAmJiBtX2hvc3QuaXNFbXB0eSgpKQotICAgICAgICBtX2lzVW5pcXVl
ID0gdHJ1ZTsKLSAgICBpZiAobV9wcm90b2NvbC5pc0VtcHR5KCkpCi0gICAgICAgIG1faXNVbmlx
dWUgPSB0cnVlOworICAgIC8vIEZJWE1FOiBSZW1vdmUgZm9yY2VVbmlxdWUgcGFyYW1ldGVyLgor
ICAgIEFTU0VSVCghZm9yY2VVbmlxdWUpOwogCiAgICAgLy8gZG9jdW1lbnQuZG9tYWluIHN0YXJ0
cyBhcyBtX2hvc3QsIGJ1dCBjYW4gYmUgc2V0IGJ5IHRoZSBET00uCiAgICAgbV9kb21haW4gPSBt
X2hvc3Q7CiAKKyAgICBpZiAoaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKG1fcG9ydCwgbV9wcm90
b2NvbCkpCisgICAgICAgIG1fcG9ydCA9IDA7CisKICAgICAvLyBCeSBkZWZhdWx0LCBvbmx5IGxv
Y2FsIFNlY3VyaXR5T3JpZ2lucyBjYW4gbG9hZCBsb2NhbCByZXNvdXJjZXMuCiAgICAgbV9jYW5M
b2FkTG9jYWxSZXNvdXJjZXMgPSBpc0xvY2FsKCk7Ci0gICAgaWYgKG1fY2FuTG9hZExvY2FsUmVz
b3VyY2VzKSB7Ci0gICAgICAgIC8vIERpcmVjdG9yaWVzIHNob3VsZCBuZXZlciBiZSByZWFkYWJs
ZS4KLSAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGRvIG5vdCBkbyB0aGlzIGNoZWNrIGZvciBibG9i
IG9yIGZpbGVzeXN0ZW0gdXJsIGJlY2F1c2UgaXRzIG9yaWdpbiBpcyBmaWxlOi8vLyB3aGVuIGl0
IGlzIGNyZWF0ZWQgZnJvbSBsb2NhbCBmaWxlIHVybHMuCi0jaWYgRU5BQkxFKEJMT0IpIHx8IEVO
QUJMRShGSUxFX1NZU1RFTSkKLSAgICAgICAgYm9vbCBkb0RpcmVjdG9yeUNoZWNrID0gIWlzQmxv
Yk9yRmlsZVN5c3RlbVByb3RvY29sOwotI2Vsc2UKLSAgICAgICAgYm9vbCBkb0RpcmVjdG9yeUNo
ZWNrID0gdHJ1ZTsKLSNlbmRpZgotICAgICAgICBpZiAoZG9EaXJlY3RvcnlDaGVjayAmJiAoIXVy
bC5oYXNQYXRoKCkgfHwgdXJsLnBhdGgoKS5lbmRzV2l0aCgiLyIpKSkKLSAgICAgICAgICAgIG1f
aXNVbmlxdWUgPSB0cnVlOwotICAgICAgICAvLyBTdG9yZSB0aGUgcGF0aCBpbiBjYXNlIHdlIGFy
ZSBkb2luZyBwZXItZmlsZSBvcmlnaW4gY2hlY2tpbmcuCi0gICAgICAgIG1fZmlsZVBhdGggPSB1
cmwucGF0aCgpOwotICAgIH0KIAotICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9w
b3J0LCBtX3Byb3RvY29sKSkKLSAgICAgICAgbV9wb3J0ID0gMDsKKyAgICBpZiAobV9jYW5Mb2Fk
TG9jYWxSZXNvdXJjZXMpCisgICAgICAgIG1fZmlsZVBhdGggPSB1cmwucGF0aCgpOyAvLyBJbiBj
YXNlIGVuZm9yY2VGaWxlUGF0aFNlcGFyYXRpb24oKSBpcyBjYWxsZWQuCiB9CiAKIFNlY3VyaXR5
T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiogb3RoZXIpCkBAIC0x
MzQsMTYgKzEzOSwxMCBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgU2Vj
CiB7CiB9CiAKLWJvb2wgU2VjdXJpdHlPcmlnaW46OmlzRW1wdHkoKSBjb25zdAotewotICAgIEFT
U0VSVCghbV9wcm90b2NvbC5pc0VtcHR5KCkgfHwgbV9pc1VuaXF1ZSk7Ci0gICAgcmV0dXJuIG1f
cHJvdG9jb2wuaXNFbXB0eSgpOwotfQotCiBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKGNvbnN0IEtVUkwmIHVybCwgYm9vbCBmb3JjZVVuaXF1ZSkKIHsK
LSAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2Vj
dXJpdHlPcmlnaW4oYmxhbmtVUkwoKSwgZm9yY2VVbmlxdWUpKTsKKyAgICBpZiAoc2hvdWxkVHJl
YXRBc1VuaXF1ZU9yaWdpbih1cmwpKQorICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlY3Vy
aXR5T3JpZ2luKEtVUkwoKSwgZm9yY2VVbmlxdWUpKTsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFNlY3VyaXR5T3JpZ2luKHVybCwgZm9yY2VVbmlxdWUpKTsKIH0KIApAQCAtMzQ4LDggKzM0Nyw3
IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmlzTG9jYWwoKSBjb25zdAogYm9vbCBTZWN1cml0eU9y
aWdpbjo6aXNTZWN1cmVUcmFuc2l0aW9uVG8oY29uc3QgS1VSTCYgdXJsKSBjb25zdAogewogICAg
IC8vIFRoaXMgb3JpZ2luIHJlcHJlc2VudHMgYSBuZXcgd2luZG93IGNyZWF0ZWQgYnkgdGhlIGFw
cGxpY2F0aW9uLgotICAgIGlmIChpc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOworICAg
IC8vIEZJWE1FLi4uCiAKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG90aGVyID0gU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZSh1cmwpOwogICAgIHJldHVybiBjYW5BY2Nlc3Mob3RoZXIuZ2V0KCkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAkocmV2aXNpb24gOTk3Mjgp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEzNiwxMyArMTM2LDYgQEAgcHVibGljOgogICAgIC8vIGFkZGl0aW9uLCB0aGUgU2FuZGJv
eE9yaWdpbiBmbGFnIGlzIGluaGVyaXRlZCBieSBpZnJhbWVzLgogICAgIGJvb2wgaXNVbmlxdWUo
KSBjb25zdCB7IHJldHVybiBtX2lzVW5pcXVlOyB9CiAKLSAgICAvLyBUaGUgZW1wdHkgU2VjdXJp
dHlPcmlnaW4gaXMgYSB1bmlxdWUgc2VjdXJpdHkgb3JpZ24gKGluIHRoZSBzZW5zZSBvZgotICAg
IC8vIGlzVW5pcXVlIGFib3ZlKSB0aGF0IHdhcyBjcmVhdGVkIGZvciBhICJibGFuayIgZG9jdW1l
bnQsIHN1Y2ggYWJvdXQKLSAgICAvLyBhYm91dDpibGFuay4gRW1wdHkgb3JpZ2lucyBkaWZmZXIg
ZnJvbSB1bmlxdWUgb3JpZ2lucyBpbiB0aGF0IHRoZXkgY2FuCi0gICAgLy8gc29tZXRpbWVzIGJl
IHJlcGxhY2VkIGJ5IG5vbi1lbXB0eSBvcmlnaW5zLCBmb3IgZXhhbXBsZSB3aGVuIGFuCi0gICAg
Ly8gYWJvdXQ6YmxhbmsgaWZyYW1lIGluaGVyaXRzIGl0cyBzZWN1cml0eSBvcmlnaW4gZnJvbSBp
dHMgcGFyZW50IGZyYW1lLgotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0OwotCiAgICAgLy8gTWFy
a3MgYSBmaWxlOi8vIG9yaWdpbiBhcyBiZWluZyBpbiBhIGRvbWFpbiBkZWZpbmVkIGJ5IGl0cyBw
YXRoLgogICAgIHZvaWQgZW5mb3JjZUZpbGVQYXRoU2VwYXJhdGlvbigpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAkocmV2aXNpb24gOTk3MjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTks
OCArOTksOCBAQCBib29sIFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1RvVVJMV2hpdGVMCiB2b2lk
IFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1
cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9j
b2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Eb21haW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlv
blN1YmRvbWFpbnMpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlQo
IXNvdXJjZU9yaWdpbi5pc0VtcHR5KCkpOwotICAgIGlmIChzb3VyY2VPcmlnaW4uaXNFbXB0eSgp
KQorICAgIEFTU0VSVCghc291cmNlT3JpZ2luLmlzVW5pcXVlKCkpOworICAgIGlmIChzb3VyY2VP
cmlnaW4uaXNVbmlxdWUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIHNvdXJjZVN0
cmluZyA9IHNvdXJjZU9yaWdpbi50b1N0cmluZygpOwpAQCAtMTE1LDggKzExNSw4IEBAIHZvaWQg
U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXQKIHZvaWQgU2VjdXJpdHlQb2xpY3k6
OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBz
b3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3Ry
aW5nJiBkZXN0aW5hdGlvbkRvbWFpbiwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VSVCghc291cmNlT3JpZ2lu
LmlzRW1wdHkoKSk7Ci0gICAgaWYgKHNvdXJjZU9yaWdpbi5pc0VtcHR5KCkpCisgICAgQVNTRVJU
KCFzb3VyY2VPcmlnaW4uaXNVbmlxdWUoKSk7CisgICAgaWYgKHNvdXJjZU9yaWdpbi5pc1VuaXF1
ZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgc291cmNlU3RyaW5nID0gc291cmNl
T3JpZ2luLnRvU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVS
ZWdpc3RyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1l
UmVnaXN0cnkuY3BwCShyZXZpc2lvbiA5OTcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NjaGVtZVJlZ2lzdHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgsMTAgKzY4LDEzIEBAIHN0
YXRpYyBVUkxTY2hlbWVzTWFwJiBzY2hlbWVzV2l0aFVuaXF1ZU8KIHsKICAgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFVSTFNjaGVtZXNNYXAsIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucywgKCkpOwog
Ci0gICAgLy8gVGhpcyBpcyBhIHdpbGxmdWwgdmlvbGF0aW9uIG9mIEhUTUw1LgotICAgIC8vIFNl
ZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4ODUKLSAgICBpZiAo
c2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmlzRW1wdHkoKSkKKyAgICBpZiAoc2NoZW1lc1dpdGhV
bmlxdWVPcmlnaW5zLmlzRW1wdHkoKSkgeworICAgICAgICBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdp
bnMuYWRkKCJhYm91dCIpOworICAgICAgICBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMuYWRkKCJq
YXZhc2NyaXB0Iik7CisgICAgICAgIC8vIFRoaXMgaXMgYSB3aWxsZnVsIHZpb2xhdGlvbiBvZiBI
VE1MNS4KKyAgICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTg4NQogICAgICAgICBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMuYWRkKCJkYXRhIik7
CisgICAgfQogCiAgICAgcmV0dXJuIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2luczsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZWN1cml0eU9yaWdpbi5jcHAJ
KHJldmlzaW9uIDk5NzI4KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VjdXJp
dHlPcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MCwxMCArOTAsMTEgQEAgdW5zaWduZWQg
c2hvcnQgV2ViU2VjdXJpdHlPcmlnaW46OnBvcnQoKQogICAgIHJldHVybiBtX3ByaXZhdGUtPnBv
cnQoKTsKIH0KIAorLy8gRklYTUU6IFJuYW1lZCB0aGlzIEFQSSB0byBpc1VuaXF1ZSgpLgogYm9v
bCBXZWJTZWN1cml0eU9yaWdpbjo6aXNFbXB0eSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fcHJp
dmF0ZSk7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+aXNFbXB0eSgpOworICAgIHJldHVybiBtX3By
aXZhdGUtPmlzVW5pcXVlKCk7CiB9CiAKIGJvb2wgV2ViU2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vz
cyhjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3RoZXIpIGNvbnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114431</attachid>
            <date>2011-11-09 21:46:01 -0800</date>
            <delta_ts>2011-11-10 00:06:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71745-20111109214600.patch</filename>
            <type>text/plain</type>
            <size>40437</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5ODEyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTI4IEBACisyMDExLTExLTA5ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5pcXVlIFNlY3VyaXR5T3JpZ2lu
cyBzaG91bGRuJ3QgcmVtZW1iZXIgdGhlaXIgb2xkIHNjaGVtZXMgYW5kIGhvc3RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTc0NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgc29t
ZXdoYXQgc3VidGxlLiAgVGhpcyBwYXRjaCBoYXMgdGhyZWUgbWFpbiBnb2FsczoKKworICAgICAg
ICAxKSBSZW1vdmUgdGhlIGNvbmNlcHQgb2YgYW4gZW1wdHkgb3JpZ2luLiAgVGhpcyBjb25jZXB0
IHVzZWQgdG8KKyAgICAgICAgICAgcmVwcmVzZW50IGEgZG9jdW1lbnQgdGhhdCBoYWRuJ3QgeWV0
IGZpZ3VyZWQgb3V0IGl0J3Mgb3JpZ2luLCBidXQgaXQKKyAgICAgICAgICAgd2FzIHN1cGVyIHN1
YnRsZSBhbmQgbGVhZCB0byBhIG51bWJlciBvZiBzZWN1cml0eSBidWdzLiAgTm93LCB3ZQorICAg
ICAgICAgICByZXByZXNlbnQgdGhhdCBzdGF0ZSBieSB1c2luZyBhIHVuaXF1ZSBvcmlnaW4gYW5k
IGEKKyAgICAgICAgICAgImZhaWxlZFRvSW5oZXJpdFNlY3VyaXR5T3JpZ2luIiBvbiBTZWN1cml0
eUNvbnRleHQuICBUaGlzIHNob3VsZAorICAgICAgICAgICBoZWxwIHVzIGF2b2lkIHNlY3VyaXR5
IGJ1Z3MgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICAyKSBSZW1vdmUgc2NoZW1lcywgaG9zdHMs
IGFuZCBwb3J0cyBmcm9tIHVuaXF1ZSBvcmlnaW5zLiAgVW5pcXVlCisgICAgICAgICAgIG9yaWdp
bnMgYXJlbid0IHJlbGF0ZWQgdG8gc2NoZW1lL2hvc3QvcG9ydCBvcmlnaW5zLiAgUHJldmlvdXNs
eSwgd2UKKyAgICAgICAgICAgc3RvcmVkIHRoZSBzY2hlbWUsIGhvc3QsIGFuZCBwb3J0IG9uIFNl
Y3VyaXR5T3JpZ2luIG9iamVjdHMgdGhhdCBoYWQKKyAgICAgICAgICAgdGhlIGlzVW5pcXVlIGJp
dCBzZXQgZXZlbiB0aG91Z2ggd2Ugd2VyZSBzdXBwb3NlZCB0byBpZ25vcmUgdGhlbSwKKyAgICAg
ICAgICAgd2hpY2ggc2VlbXMgZXJyb3IgcHJvbmUuCisKKyAgICAgICAgMykgU2ltcGxpZnkgdGhl
IFNlY3VyaXR5T3JpZ2luIGNvbnN0cnVjdG9yLiAgT3ZlciB0aW1lLCB0aGUKKyAgICAgICAgICAg
U2VjdXJpdHlPcmlnaW4gY29uc3RydWN0b3IgaGFzIGdyb3duIGEgYnVuY2ggb2YgaWZkZWZzIGFu
ZAorICAgICAgICAgICBjb21wbGV4aXR5LiAgVGhpcyBwYXRjaCBmYWN0b3JzIGEgYnVuY2ggb2Yg
dGhhdCBjb21wbGV4aXR5IG91dCBpbnRvCisgICAgICAgICAgIGZyZWUgZnVuY3Rpb25zIGFuZCBz
aW1wbGlmaWVzIHRoZSBjb25zdHJ1Y3RvciB0byBqdXN0IGluaXRpYWxpemluZworICAgICAgICAg
ICB0aGUgZXNzZW50aWFsIGRhdGEgZmllbGRzLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIHRo
ZXNlIHRocmVlIGNoYW5nZXMgYXJlIGZhaXJseSB0aWdodGx5IGxpbmtlZCBiZWNhdXNlIHdlCisg
ICAgICAgIHdlcmUgdXNpbmcgdGhlIHByb3RvY29sIG1lbWJlciB2YXJpYWJsZSBvZiBTZWN1cml0
eU9yaWdpbiBvbiB1bmlxdWUKKyAgICAgICAgb3JpZ2lucyB0byByZXByZXNlbnQgZW1wdHkgb3Jp
Z2lucy4KKworICAgICAgICBDbGVhbmluZyB1cCB0aGVzZSBzdGF0ZSByZXByZXNlbnRhdGlvbnMg
Zml4ZWQgdHdvIG1pbm9yIGJ1Z3MsIGFzCisgICAgICAgIHJlZmxlY3RlZCBpbiB0aGUgdXBkYXRl
ZCB0ZXN0IHJlc3VsdHM6CisKKyAgICAgICAgQSkgU3RvcmFnZSBpZGVudGlmaWVycyBmb3IgdW5p
cXVlIG9yaWdpbnMgd2hlcmUgbGVha2luZyB0aGUgb3JpZ2luCisgICAgICAgICAgIHNjaGVtZS4g
IE5vdywgd2UganVzdCB1c2UgdGhlIGVtcHR5IHN0cmluZy4KKworICAgICAgICBCKSBTYW5kYm94
ZWQgaWZyYW1lcyBpbiBmcm9tIGxvY2FsIFVSTHMgd2hlcmUgZ2FpbmluZyAibG9jYWwiCisgICAg
ICAgICAgIHByaXZpbGVnZXMgZnJvbSB0aGVpciBzY2hlbWUuICBOb3cgdGhhdCB0aGV5IGhhdmUg
ZW1wdHkgc2NoZW1lcywKKyAgICAgICAgICAgdGhleSBubyBsb25nZXIgZ2FpbiB0aG9zZSBwcml2
aWxlZ2VzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyByZXZlYWxlZCBhIGhhbmRmdWwgb2Yg
c3VidGxlIGJ1Z3Mgd2l0aCB0aGUgb2xkIGNvZGUuCisgICAgICAgIEkndmUgYXR0ZW1wdGVkIHRv
IHByZXNlcnZlIHRob3NlIGJ1Z3MgKG5vdGVkIHdpdGggRklYTUUgY29tbWVudHMpIGluIGFuCisg
ICAgICAgIGVmZm9ydCB0byBjb250YWluIHRoZSBzY29wZSBvZiB0aGlzIHBhdGNoLiAgSSdsbCBs
aWtlbHkgZml4IHRob3NlIGJ1Z3MKKyAgICAgICAgaW4gYSBmb2xsb3ctdXAgcGF0Y2guCisKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNl
dElzVmlld1NvdXJjZSk6CisgICAgICAgICAgICAtIFRoaXMgbm93IHVzZXMgYSBuZXctc3R5bGUg
dW5pcXVlIG9yaWdpbi4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppbml0U2VjdXJpdHlD
b250ZXh0KToKKyAgICAgICAgICAgIC0gV2hlbiBzYW5kYm94ZWQsIHdlIG5vdyB1c2UgYSBuZXct
c3R5bGUgdW5pcXVlIG9yaWdpbiByYXRoZXIgdGhhbgorICAgICAgICAgICAgICBqdXN0IHNldHRp
bmcgdGhlIGlzVW5pcXVlIGJpdC4gIFRoaXMgcmVxdWlyZWQgc29tZSBjaGFuZ2VzIHRvIGhvdwor
ICAgICAgICAgICAgICB3ZSBpbmhlcml0IHNlY3VyaXR5IG9yaWdpbnMgaW4gdGhlIGFib3V0OmJs
YW5rIGNhc2UuICBUaGUgbm90aW9uCisgICAgICAgICAgICAgIG9mIGZhaWxlZFRvSW5oZXJpdFNl
Y3VyaXR5T3JpZ2luKCkgcmVwbGFjZXMgdGhlIG5vdGlvbiBvZiBhbgorICAgICAgICAgICAgICBl
bXB0eSBTZWN1cml0eU9yaWdpbi4KKyAgICAgICAgICAgIC0gT24gbGluZSA0NDQzLCB3ZSBhcmUg
bm93IG1vcmUgZXhwbGljaXQgYWJvdXQgdGhlIGNhc2VzIHdoZXJlIHdlCisgICAgICAgICAgICAg
IGluaGVyaXQgdGhlIFNlY3VyaXR5T3JpZ2luLiAgUmF0aGVyIHRoYW4gZG9pbmcgc28gZm9yIGFs
bCAiZW1wdHkiCisgICAgICAgICAgICAgIG9yaWdpbnMsIHdlIGluaGVyaXQgb25seSB3aGVuIHRo
ZSBVUkwgaXMgaW4gdGhlIGFib3V0IHNjaGVtZQorICAgICAgICAgICAgICAoZS5nLiwgYWJvdXQ6
YmxhbmspIG9yIHdoZW4gdGhlIFVSTCBpcyBpbnZhbGlkLgorICAgICAgICAqIGRvbS9TZWN1cml0
eUNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlDb250ZXh0OjpTZWN1cml0
eUNvbnRleHQpOgorICAgICAgICAgICAgLSBJbml0aWFsaXplIG1fZmFpbGVkVG9Jbmhlcml0U2Vj
dXJpdHlPcmlnaW4gdG8gZmFsc2UuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eUNvbnRleHQ6
OnNldFNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgICAgIC0gV2hlbmV2ZXIgd2Ugc2V0IGEgU2Vj
dXJpdHlPcmlnaW4gZXhwbGljaXRseSwgd2UgaGF2ZSBub3QgbG9uZ2VyCisgICAgICAgICAgICAg
IGZhaWxlZCB0byBpbmhlcml0IGEgc2VjdXJpdHkgb3JpZ2luLiAgSW4gY29tYmluYXRpb24gd2l0
aCB0aGUKKyAgICAgICAgICAgICAgZ3VhcmQgYXQgdGhlIHRvcCBvZiBpbml0U2VjdWl0eU9yaWdp
biwgdGhpcyBhc3NpZ25tZW50IHN0b3BzIHVzCisgICAgICAgICAgICAgIGZyb20gaW5oZXJpdGlu
ZyB0aGUgc2VjdXJpdHkgb3JpZ2luIG1vcmUgdGhhbiBvbmNlLgorICAgICAgICAoV2ViQ29yZTo6
U2VjdXJpdHlDb250ZXh0Ojppc1NlY3VyZVRyYW5zaXRpb25Ubyk6CisgICAgICAgICAgICAtIFRo
aXMgcGF0Y2ggbW92ZXMgaXNTZWN1cmVUcmFuc2l0aW9uVG8gZnJvbSBTZWN1cml0eU9yaWdpbiB0
bworICAgICAgICAgICAgICBTZWN1cml0eUNvbnRleHQgc28gdGhhdCBpdCBjYW4gcmVhZCB0aGUK
KyAgICAgICAgICAgICAgZmFpbGVkVG9Jbmhlcml0U2VjdXJpdHlPcmlnaW4gc3RhdGUsIHdoaWNo
IGlzIHJlYWxseSBwZXItRG9jdW1lbnQKKyAgICAgICAgICAgICAgKGFuZCBoZW5jZSBjYW4ndCBi
ZSBvbiBTZWN1cml0eU9yaWdpbiwgd2hpY2ggbWlnaHQgYmUgc2hhcmVkCisgICAgICAgICAgICAg
IGJldHdlZW4gZG9jdW1lbnRzIGluIHRoZSBpbmhlcml0ZW5jZSBjYXNlKS4KKyAgICAgICAgKiBk
b20vU2VjdXJpdHlDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eUNvbnRleHQ6
OmRpZEZhaWxUb0luaGVyaXRTZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTZWN1
cml0eUNvbnRleHQ6OmZhaWxlZFRvSW5oZXJpdFNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKiBs
b2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRXcml0
ZXI6OmJlZ2luKToKKyAgICAgICAgICAgIC0gVXBkYXRlIGNhbGxzaXRlIGZvciBpc1NlY3VyZVRy
YW5zaXRpb25UbyB0byBpdHMgbmV3IGxvY2F0aW9uLgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3RvcExvYWRpbmcpOgor
ICAgICAgICAgICAgLSBVcGRhdGUgY2FsbHNpdGUgZm9yIGlzU2VjdXJlVHJhbnNpdGlvblRvIHRv
IGl0cyBuZXcgbG9jYXRpb24uCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICAgICAtIE5vdyB3
aGVuIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nIGZhaWwsIGl0IHJldHVybnMgYQor
ICAgICAgICAgICAgICB1bmlxdWUgb3JpZ2luIHJhdGhlciB0aGFuIGFuIGVtcHR5IG9yaWdpbi4g
IFRoaXMgc2hvdWxkIGJlCisgICAgICAgICAgICAgIGZ1bmN0aW9uYWxseSBpZGVudGljYWwuCisg
ICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY2hl
bWVSZXF1aXJlc0F1dGhvcml0eSk6CisgICAgICAgICAgICAtIENoYW5nZSB0aGlzIGZ1bmN0aW9u
IHRvIGp1c3QgZG8gYSBjb3VwbGUgc3RyY21wcyByYXRoZXIgdGhhbgorICAgICAgICAgICAgICBo
YXZpbmcgYSBzdGF0aWMgVVJMU2NoZW1lc01hcC4gIFdlIHVzZSBVUkxTY2hlbWVzTWFwcyB3aGVu
IHRoZQorICAgICAgICAgICAgICBzZXQgb2Ygc2NoZW1lcyBpcyBleHRlbnNpYmxlLCB3aGljaCB0
aGlzIHNldCBpcyBub3QuCisgICAgICAgIChXZWJDb3JlOjpzaG91bGRVc2VJbm5lclVSTCk6Cisg
ICAgICAgICAgICAtIFRoaXMgZnVuY3Rpb24gYWJzdHJhY3RzIHNvbWUgdHJpY2t5IGxvZ2ljIHRo
YXQgdXNlZCB0byBiZSBpbiB0aGUKKyAgICAgICAgICAgICAgU2VjdXJpdHlPcmlnaW4gY29uc3Ry
dWN0b3IuICBNdWNoIHRvIG15IGNoYWdyaW4sIGJsb2IgYW5kCisgICAgICAgICAgICAgIGZpbGVz
eXN0ZW0gc3RvcmUgdGhlaXIgb3JpZ2luIGluIGEgbmVzdGVkIGlubmVyIFVSTC4KKyAgICAgICAg
KFdlYkNvcmU6OmV4dHJhY3RJbm5lclVSTCk6CisgICAgICAgICAgICAtIFRoaXMgZnVuY3Rpb24g
anVzdCBhYnN0cmFjdHMgdGhlIG9wZXJhdGlvbiBvZiBleHRyYWN0aW5nIHRoZQorICAgICAgICAg
ICAgICBpbm5lciBVUkwgdGhhdCdzIHVzZWQgaW4gdGhlIGJsb2IgYW5kIGZpbGVzeXN0ZW0gY2Fz
ZXMuCisgICAgICAgIChXZWJDb3JlOjpzaG91bGRUcmVhdEFzVW5pcXVlT3JpZ2luKToKKyAgICAg
ICAgICAgIC0gVGhlcmUgYXJlIGEgYnVuY2ggb2YgY2FzZXMgd2hlcmUgd2Ugd2FudCB0byB1c2Ug
YSB1bmlxdWUgb3JpZ2luCisgICAgICAgICAgICAgIHJhdGhlciB0aGFuIHRoZSBvcmlnaW4geW91
IG1pZ2h0IG90aGVyd2lzZSBleHRyYWN0IGZyb20gYSBVUkwuCisgICAgICAgICAgICAgIE1vdmlu
ZyB0aGlzIGxvZ2ljIG91dCBvZiB0aGUgY29uc3RydWN0b3IgbGV0cyB1cyBjYWxsIGl0IGluIHRo
ZQorICAgICAgICAgICAgICBjcmVhdGUgZnVuY3Rpb24gaW5zdGVhZCwgc2ltcGxpZnlpbmcgdGhl
IGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5
T3JpZ2luKToKKyAgICAgICAgICAgIC0gVGhlIFNlY3VyaXR5T3JpZ2luIGNvbnN0cnVjdG9yIG5v
dyBqdXN0IGluaXRpYWxpemUgZmllbGRzIHJhdGhlcgorICAgICAgICAgICAgICB0aGFuIG1ha2lu
ZyBjb21wbGV4IHNlY3VyaXR5IGRlY2lzaW9ucy4KKyAgICAgICAgICAgIC0gSSdsbCByZW1vdmUg
dGhlIGZvcmNlVW5pcXVlIHBhcmFtZXRlciBpbiBhIGZvbGxvdy11cCBwYXRjaC4gIFRoZQorICAg
ICAgICAgICAgICBBU1NFUlQgZW5zdXJlcyB0aGF0IHdlJ3JlIG5vdCB1c2luZyBpdC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUpOgorICAgICAgICAgICAgLSBTb21l
IG9mIHRoZSBjb21wbGV4aXR5IGZyb20gdGhlIGNvbnN0cnVjdG9yIG1vdmVkIHRvIHRoaXMKKyAg
ICAgICAgICAgICAgZnVuY3Rpb24sIHdoaWNoIG5vdyBkZWNpZGVzIHdoZXRoZXIgdG8gY29uc3Ry
dWN0IGEgdW5pcXVlIG9yaWdpbiwKKyAgICAgICAgICAgICAgYW4gb3JpZ2luIGZyb20gdGhlIGlu
bmVyIFVSTCwgb3IgdGhlIHJlZ3VsYXIgb3JpZ2luLgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlP
cmlnaW4uaDoKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVs
aXN0RW50cnkpOgorICAgICAgICAgICAgLSBNb3ZlIHRoZXNlIGZ1bmN0aW9ucyBvdmVyIHRvIGNh
bGxpbmcgaXNVbmlxdWUgaW5zdGVhZCBvZiBpc0VtcHR5LgorICAgICAgICAqIHBsYXRmb3JtL1Nj
aGVtZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjaGVtZXNXaXRoVW5pcXVlT3Jp
Z2lucyk6CisgICAgICAgICAgICAtIFJhdGhlciB0aGFuIHNwZWNpYWwtY2FzaW5nIHRoZSBhYm91
dCBhbmQgamF2YXNjcmlwdCBzY2hlbWVzLCB0aGlzCisgICAgICAgICAgICAgIHBhdGNoIG1vdmVz
IHRoZW0gaW50byB0aGUgZ2VuZXJhbCBjYXNlIG9mIHNjaGVtZXMgd2l0aCB1bmlxdWUKKyAgICAg
ICAgICAgICAgb3JpZ2lucy4KKwogMjAxMS0xMS0wOSAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9A
dGhlb2xsaXZpZXJzLmNvbT4KIAogICAgICAgICBbd3hdIFVucmV2aWV3ZWQgYnVpbGQgZml4LiBB
ZGQgc3R1YiBmb3IgbmV3IG1ldGhvZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2
aXNpb24gOTk3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzI5LDcgKzE3MjksNyBAQCB2b2lkIERvY3VtZW50OjpzZXRJc1ZpZXdTb3Vy
Y2UoYm9vbCBpc1ZpCiAgICAgaWYgKCFtX2lzVmlld1NvdXJjZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZSh1cmwoKSwgdHJ1ZSkpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OnNldFNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSk7CiB9CiAK
IHZvaWQgRG9jdW1lbnQ6OmNyZWF0ZVN0eWxlU2VsZWN0b3IoKQpAQCAtNDM5Miw4ICs0MzkyLDgg
QEAgYm9vbCBEb2N1bWVudDo6dXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZQogCiB2b2lkIERvY3Vt
ZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKIHsKLSAgICBpZiAoc2VjdXJpdHlPcmlnaW4oKSAm
JiAhc2VjdXJpdHlPcmlnaW4oKS0+aXNFbXB0eSgpKQotICAgICAgICByZXR1cm47IC8vIG1fc2Vj
dXJpdHlPcmlnaW4gaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZC4KKyAgICBpZiAoc2VjdXJp
dHlPcmlnaW4oKSAmJiAhZmFpbGVkVG9Jbmhlcml0U2VjdXJpdHlPcmlnaW4oKSkKKyAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKCFtX2ZyYW1lKSB7CiAgICAgICAgIC8vIE5vIHNvdXJjZSBmb3Ig
YSBzZWN1cml0eSBjb250ZXh0LgpAQCAtNDQwOCw3ICs0NDA4LDcgQEAgdm9pZCBEb2N1bWVudDo6
aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgLy8gbG9hZGluZyBVUkwgd2l0aCBhIGZyZXNoIGNv
bnRlbnQgc2VjdXJpdHkgcG9saWN5LgogICAgIG1fY29va2llVVJMID0gbV91cmw7CiAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6ZW5mb3JjZVNhbmRib3hGbGFncyhtX2ZyYW1lLT5sb2FkZXIo
KS0+ZWZmZWN0aXZlU2FuZGJveEZsYWdzKCkpOwotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OnNldFNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwsIGlzU2FuZGJv
eGVkKFNhbmRib3hPcmlnaW4pKSk7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0U2Vj
dXJpdHlPcmlnaW4oaXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikgPyBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlVW5pcXVlKCkgOiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKSk7CiAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0Q29udGVudFNlY3VyaXR5UG9saWN5KENvbnRlbnRTZWN1
cml0eVBvbGljeTo6Y3JlYXRlKHRoaXMpKTsKIAogICAgIGlmIChTZWN1cml0eVBvbGljeTo6YWxs
b3dTdWJzdGl0dXRlRGF0YUFjY2Vzc1RvTG9jYWwoKSkgewpAQCAtNDQxNiw3ICs0NDE2LDcgQEAg
dm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgICAgIC8vIGxvYWQgbG9j
YWwgcmVzb3VyY2VzLiAgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjc1NgogICAgICAgICAvLyBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NzYwIGZvciBmdXJ0aGVyCiAgICAgICAgIC8vIGRpc2N1c3Npb24uCi0gICAgICAg
IAorCiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGxvYWRlcigpOwog
ICAgICAgICBpZiAoZG9jdW1lbnRMb2FkZXIgJiYgZG9jdW1lbnRMb2FkZXItPnN1YnN0aXR1dGVE
YXRhKCkuaXNWYWxpZCgpKQogICAgICAgICAgICAgc2VjdXJpdHlPcmlnaW4oKS0+Z3JhbnRMb2Fk
TG9jYWxSZXNvdXJjZXMoKTsKQEAgLTQ0NDAsOSArNDQ0MCwxMiBAQCB2b2lkIERvY3VtZW50Ojpp
bml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghc2VjdXJp
dHlPcmlnaW4oKS0+aXNFbXB0eSgpKQorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGluaGVy
aXQgb3VyIHNlY3VyaXR5IG9yaWdpbiBpZiB3ZSdyZSBzYW5kYm94ZWQuCisgICAgaWYgKG1fdXJs
LmlzVmFsaWQoKSAmJiAhbV91cmwucHJvdG9jb2xJcygiYWJvdXQiKSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgQVNTRVJUKHNlY3VyaXR5T3JpZ2luKCktPmlzVW5pcXVlKCkpOworCiAgICAgLy8g
SWYgd2UgZG8gbm90IG9idGFpbiBhIG1lYW5pbmdmdWwgb3JpZ2luIGZyb20gdGhlIFVSTCwgdGhl
biB3ZSB0cnkgdG8KICAgICAvLyBmaW5kIG9uZSB2aWEgdGhlIGZyYW1lIGhpZXJhcmNoeS4KIApA
QCAtNDQ1MCwxNCArNDQ1MywxNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0
KCkKICAgICBpZiAoIW93bmVyRnJhbWUpCiAgICAgICAgIG93bmVyRnJhbWUgPSBtX2ZyYW1lLT5s
b2FkZXIoKS0+b3BlbmVyKCk7CiAKLSAgICBpZiAob3duZXJGcmFtZSkgewotICAgICAgICBtX2Nv
b2tpZVVSTCA9IG93bmVyRnJhbWUtPmRvY3VtZW50KCktPmNvb2tpZVVSTCgpOwotICAgICAgICAv
LyBXZSBhbGlhcyB0aGUgU2VjdXJpdHlPcmlnaW5zIHRvIG1hdGNoIEZpcmVmb3gsIHNlZSBCdWcg
MTUzMTMKLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MzEzCi0gICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNldFNlY3VyaXR5T3JpZ2lu
KG93bmVyRnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpOwotICAgICAgICAvLyBG
SVhNRTogQ29uc2lkZXIgbW92aW5nIG1fY29udGVudFNlY3VyaXR5UG9saWN5IGludG8gU2VjdXJp
dHlPcmlnaW4uCi0gICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNldENvbnRlbnRTZWN1
cml0eVBvbGljeShvd25lckZyYW1lLT5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3ko
KSk7CisgICAgaWYgKCFvd25lckZyYW1lKSB7CisgICAgICAgIGRpZEZhaWxUb0luaGVyaXRTZWN1
cml0eU9yaWdpbigpOworICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgbV9jb29raWVVUkwg
PSBvd25lckZyYW1lLT5kb2N1bWVudCgpLT5jb29raWVVUkwoKTsKKyAgICAvLyBXZSBhbGlhcyB0
aGUgU2VjdXJpdHlPcmlnaW5zIHRvIG1hdGNoIEZpcmVmb3gsIHNlZSBCdWcgMTUzMTMKKyAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTMKKyAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpzZXRTZWN1cml0eU9yaWdpbihvd25lckZyYW1lLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICAvLyBGSVhNRTogQ29uc2lkZXIgbW92aW5nIG1f
Y29udGVudFNlY3VyaXR5UG9saWN5IGludG8gU2VjdXJpdHlPcmlnaW4uCisgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6c2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG93bmVyRnJhbWUtPmRvY3Vt
ZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6c2V0
U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKQpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAJKHJldmlzaW9uIDk5NzI4KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDcgKzM0LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2VjdXJpdHlDb250ZXh0OjpTZWN1
cml0eUNvbnRleHQoKQotICAgIDogbV9zYW5kYm94RmxhZ3MoU2FuZGJveE5vbmUpCisgICAgOiBt
X2ZhaWxlZFRvSW5oZXJpdFNlY3VyaXR5T3JpZ2luKGZhbHNlKQorICAgICwgbV9zYW5kYm94Rmxh
Z3MoU2FuZGJveE5vbmUpCiB7CiB9CiAKQEAgLTQ1LDYgKzQ2LDcgQEAgU2VjdXJpdHlDb250ZXh0
Ojp+U2VjdXJpdHlDb250ZXh0KCkKIHZvaWQgU2VjdXJpdHlDb250ZXh0OjpzZXRTZWN1cml0eU9y
aWdpbihQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBt
X3NlY3VyaXR5T3JpZ2luID0gc2VjdXJpdHlPcmlnaW47CisgICAgbV9mYWlsZWRUb0luaGVyaXRT
ZWN1cml0eU9yaWdpbiA9IGZhbHNlOwogfQogCiB2b2lkIFNlY3VyaXR5Q29udGV4dDo6c2V0Q29u
dGVudFNlY3VyaXR5UG9saWN5KFBhc3NSZWZQdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBjb250
ZW50U2VjdXJpdHlQb2xpY3kpCkBAIC01Miw2ICs1NCwxNSBAQCB2b2lkIFNlY3VyaXR5Q29udGV4
dDo6c2V0Q29udGVudFNlY3VyaXR5CiAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3kgPSBjb250
ZW50U2VjdXJpdHlQb2xpY3k7CiB9CiAKK2Jvb2wgU2VjdXJpdHlDb250ZXh0Ojppc1NlY3VyZVRy
YW5zaXRpb25Ubyhjb25zdCBLVVJMJiB1cmwpIGNvbnN0Cit7CisgICAgaWYgKG1fZmFpbGVkVG9J
bmhlcml0U2VjdXJpdHlPcmlnaW4pCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBvdGhlciA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKTsKKyAg
ICByZXR1cm4gc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzKG90aGVyLmdldCgpKTsKK30KKwog
U2FuZGJveEZsYWdzIFNlY3VyaXR5Q29udGV4dDo6cGFyc2VTYW5kYm94UG9saWN5KGNvbnN0IFN0
cmluZyYgcG9saWN5KQogewogICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3RoZS1p
ZnJhbWUtZWxlbWVudC5odG1sI2F0dHItaWZyYW1lLXNhbmRib3gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vU2VjdXJpdHlDb250ZXh0LmgJKHJldmlzaW9uIDk5NzI4KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL1NlY3VyaXR5Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw5IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBDb250
ZW50U2VjdXJpdHlQb2xpY3k7CitjbGFzcyBLVVJMOworY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAK
IGVudW0gU2FuZGJveEZsYWcgewogICAgIFNhbmRib3hOb25lID0gMCwKQEAgLTU5LDYgKzYwLDgg
QEAgcHVibGljOgogICAgIHZvaWQgZW5mb3JjZVNhbmRib3hGbGFncyhTYW5kYm94RmxhZ3MgbWFz
aykgeyBtX3NhbmRib3hGbGFncyB8PSBtYXNrOyB9CiAgICAgYm9vbCBpc1NhbmRib3hlZChTYW5k
Ym94RmxhZ3MgbWFzaykgY29uc3QgeyByZXR1cm4gbV9zYW5kYm94RmxhZ3MgJiBtYXNrOyB9CiAK
KyAgICBib29sIGlzU2VjdXJlVHJhbnNpdGlvblRvKGNvbnN0IEtVUkwmKSBjb25zdDsKKwogICAg
IHN0YXRpYyBTYW5kYm94RmxhZ3MgcGFyc2VTYW5kYm94UG9saWN5KGNvbnN0IFN0cmluZyYgcG9s
aWN5KTsKIAogcHJvdGVjdGVkOgpAQCAtNzEsNyArNzQsMTEgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgc2V0U2VjdXJpdHlPcmlnaW4oUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pOwogICAgIHZv
aWQgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KFBhc3NSZWZQdHI8Q29udGVudFNlY3VyaXR5UG9s
aWN5Pik7CiAKKyAgICB2b2lkIGRpZEZhaWxUb0luaGVyaXRTZWN1cml0eU9yaWdpbigpIHsgbV9m
YWlsZWRUb0luaGVyaXRTZWN1cml0eU9yaWdpbiA9IHRydWU7IH0KKyAgICBib29sIGZhaWxlZFRv
SW5oZXJpdFNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9mYWlsZWRUb0luaGVyaXRT
ZWN1cml0eU9yaWdpbjsgfQorCiBwcml2YXRlOgorICAgIGJvb2wgbV9mYWlsZWRUb0luaGVyaXRT
ZWN1cml0eU9yaWdpbjsKICAgICBTYW5kYm94RmxhZ3MgbV9zYW5kYm94RmxhZ3M7CiAgICAgUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBtX3NlY3VyaXR5T3JpZ2luOwogICAgIFJlZlB0cjxDb250ZW50
U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5OwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCShyZXZpc2lvbiA5OTcyOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
NCw3ICsxMjQsNyBAQCB2b2lkIERvY3VtZW50V3JpdGVyOjpiZWdpbihjb25zdCBLVVJMJiB1CiAK
ICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBjb25zdWx0IHRoZSBjb250ZW50IHNlY3VyaXR5
IHBvbGljeSBoZXJlIGFib3V0IGJsb2NrZWQgcGx1Zy1pbnM/CiAKLSAgICBib29sIHJlc2V0U2Ny
aXB0aW5nID0gIShtX2ZyYW1lLT5sb2FkZXIoKS0+c3RhdGVNYWNoaW5lKCktPmlzRGlzcGxheWlu
Z0luaXRpYWxFbXB0eURvY3VtZW50KCkgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKS0+aXNTZWN1cmVUcmFuc2l0aW9uVG8odXJsKSk7CisgICAgYm9vbCByZXNldFNjcmlw
dGluZyA9ICEobV9mcmFtZS0+bG9hZGVyKCktPnN0YXRlTWFjaGluZSgpLT5pc0Rpc3BsYXlpbmdJ
bml0aWFsRW1wdHlEb2N1bWVudCgpICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPmlzU2VjdXJlVHJh
bnNpdGlvblRvKHVybCkpOwogICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGVhcihyZXNldFNjcmlw
dGluZywgcmVzZXRTY3JpcHRpbmcpOwogICAgIGNsZWFyKCk7CiAgICAgaWYgKHJlc2V0U2NyaXB0
aW5nKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA5
OTcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw3ICszOTQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyhV
bmxvYWRFdmVuCiAgICAgICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpICYmICFtX2ZyYW1lLT5k
b2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKSB7CiAgICAgICAgICAgICAvLyBEb24ndCByZW1vdmUg
ZXZlbnQgbGlzdGVuZXJzIGZyb20gYSB0cmFuc2l0aW9uYWwgZW1wdHkgZG9jdW1lbnQgKHNlZSBi
dWcgMjg3MTYgZm9yIG1vcmUgaW5mb3JtYXRpb24pLgogICAgICAgICAgICAgYm9vbCBrZWVwRXZl
bnRMaXN0ZW5lcnMgPSBtX3N0YXRlTWFjaGluZS5pc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1
bWVudCgpICYmIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcgotICAgICAgICAgICAgICAgICYm
IG1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmlzU2VjdXJlVHJhbnNpdGlv
blRvKG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+dXJsKCkpOworICAgICAgICAgICAgICAg
ICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPmlzU2VjdXJlVHJhbnNpdGlvblRvKG1fcHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlci0+dXJsKCkpOwogCiAgICAgICAgICAgICBpZiAoIWtlZXBFdmVudExp
c3RlbmVycykKICAgICAgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5yZW1vdmVBbGxF
dmVudExpc3RlbmVycygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNp
b24gOTk3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg3OCw3ICs4NzgsNyBAQCB2b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoUGFz
c1JlZlB0cjxTCiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0YXJnZXQ7CiAgICAgaWYgKHRh
cmdldE9yaWdpbiAhPSAiKiIpIHsKICAgICAgICAgdGFyZ2V0ID0gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZUZyb21TdHJpbmcodGFyZ2V0T3JpZ2luKTsKLSAgICAgICAgaWYgKHRhcmdldC0+aXNFbXB0
eSgpKSB7CisgICAgICAgIGlmICh0YXJnZXQtPmlzVW5pcXVlKCkpIHsKICAgICAgICAgICAgIGVj
ID0gU1lOVEFYX0VSUjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAJKHJldmlzaW9uIDk5NzI4KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDgwICs0Myw4NSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IGludCBNYXhBbGxvd2Vk
UG9ydCA9IDY1NTM1OwogCi1zdGF0aWMgYm9vbCBzY2hlbWVSZXF1aXJlc0F1dGhvcml0eShjb25z
dCBTdHJpbmcmIHNjaGVtZSkKK3N0YXRpYyBib29sIHNjaGVtZVJlcXVpcmVzQXV0aG9yaXR5KGNv
bnN0IEtVUkwmIHVybCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVtZXNNYXAs
IHNjaGVtZXMsICgpKTsKKyAgICByZXR1cm4gdXJsLnByb3RvY29sSXMoImh0dHAiKSB8fCB1cmwu
cHJvdG9jb2xJcygiaHR0cHMiKSB8fCB1cmwucHJvdG9jb2xJcygiZnRwIik7Cit9CisKK3N0YXRp
YyBib29sIHNob3VsZFVzZUlubmVyVVJMKGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICAvLyBGSVhN
RTogU2hvdWxkIHdlIHVzZSB0aGUgaW5uZXIgSFRNTCBldmVuIHdoZW4gQkxPQiBhbmQgRklMRV9T
WVNURU0gYXJlIGRpc2FibGVkPworI2lmIEVOQUJMRShCTE9CKQorICAgIGlmICh1cmwucHJvdG9j
b2xJcygiYmxvYiIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKKyAgICBpZiAodXJsLnByb3RvY29sSXMoImZpbGVzeXN0ZW0iKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBL
VVJMIGV4dHJhY3RJbm5lclVSTChjb25zdCBLVVJMJiB1cmwpCit7CisgICAgcmV0dXJuIEtVUkwo
UGFyc2VkVVJMU3RyaW5nLCBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLnBhdGgoKSkpOwor
fQogCi0gICAgaWYgKHNjaGVtZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHNjaGVtZXMuYWRkKCJo
dHRwIik7Ci0gICAgICAgIHNjaGVtZXMuYWRkKCJodHRwcyIpOwotICAgICAgICBzY2hlbWVzLmFk
ZCgiZnRwIik7CitzdGF0aWMgYm9vbCBzaG91bGRUcmVhdEFzVW5pcXVlT3JpZ2luKGNvbnN0IEtV
UkwmIHVybCkKK3sKKyAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gdW53cmFwIHRoZSBVUkwgZnVydGhlcj8K
KyAgICBLVVJMIGVmZmVjdGl2ZVVSTCA9IHNob3VsZFVzZUlubmVyVVJMKHVybCkgPyBleHRyYWN0
SW5uZXJVUkwodXJsKSA6IHVybDsKKworICAgIC8vIEZJWE1FOiBDaGVjayB3aGV0aGVyIGVmZmVj
dGl2ZVVSTCBpcyB2YWxpZC4KKworICAgIC8vIEZvciBlZGdlIGNhc2UgVVJMcyB0aGF0IHdlcmUg
cHJvYmFibHkgbWlzcGFyc2VkLCBtYWtlIHN1cmUgdGhhdCB0aGUgb3JpZ2luIGlzIHVuaXF1ZS4K
KyAgICBpZiAoc2NoZW1lUmVxdWlyZXNBdXRob3JpdHkoZWZmZWN0aXZlVVJMKSAmJiBlZmZlY3Rp
dmVVUkwuaG9zdCgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBTdHJp
bmcgcHJvdG9jb2wgPSBlZmZlY3RpdmVVUkwucHJvdG9jb2woKS5sb3dlcigpOworCisgICAgaWYg
KFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTm9BY2Nlc3MocHJvdG9jb2wp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIFdlIHVzZSB1bmlxdWUgb3JpZ2lucyBm
b3IgZGlyZWN0b3J5IGxpc3RpbmdzIHRvIG1ha2UgaXQgaGFyZGVyIHRvIGNyYXdsIGEgbG9jYWwg
ZmlsZXN5c3RlbS4KKyAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1l
QXNMb2NhbChwcm90b2NvbCkKKyAgICAgICAgJiYgIXNob3VsZFVzZUlubmVyVVJMKHVybCkgLy8g
Tm90ZSB0aGUgdXNlIG9mIHVybCByYXRoZXIgdGhhbiBlZmZlY3RpdmVVUkwuCisgICAgICAgICYm
ICghZWZmZWN0aXZlVVJMLmhhc1BhdGgoKSB8fCBlZmZlY3RpdmVVUkwucGF0aCgpLmVuZHNXaXRo
KCIvIikpKSB7CisgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYmUgdXNpbmcgc2hvdWxkVXNl
SW5uZXJVUkwgaGVyZT8KKyAgICAgICAgLy8gV2Ugb3JpZ2luYWxseSBkaWQgdGhhdCBjaGVjayB0
byBhdm9pZCB0cmVhdGluZyBibG9iIGFuZCBmaWxlc3lzdGVtCisgICAgICAgIC8vIHVybHMgYXMg
dW5pcXVlIHdoZW4gaXQgaXMgY3JlYXRlZCBmcm9tIGxvY2FsIGZpbGUgdXJscy4KKyAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgcmV0dXJuIHNjaGVtZXMuY29udGFpbnMoc2NoZW1l
KTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdp
bihjb25zdCBLVVJMJiB1cmwsIGJvb2wgZm9yY2VVbmlxdWUpCiAgICAgOiBtX3Byb3RvY29sKHVy
bC5wcm90b2NvbCgpLmlzTnVsbCgpID8gIiIgOiB1cmwucHJvdG9jb2woKS5sb3dlcigpKQogICAg
ICwgbV9ob3N0KHVybC5ob3N0KCkuaXNOdWxsKCkgPyAiIiA6IHVybC5ob3N0KCkubG93ZXIoKSkK
ICAgICAsIG1fcG9ydCh1cmwucG9ydCgpKQotICAgICwgbV9pc1VuaXF1ZShmb3JjZVVuaXF1ZSB8
fCBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc05vQWNjZXNzKG1fcHJvdG9j
b2wpKQorICAgICwgbV9pc1VuaXF1ZSghdXJsLmlzVmFsaWQoKSkKICAgICAsIG1fdW5pdmVyc2Fs
QWNjZXNzKGZhbHNlKQogICAgICwgbV9kb21haW5XYXNTZXRJbkRPTShmYWxzZSkKICAgICAsIG1f
ZW5mb3JjZUZpbGVQYXRoU2VwYXJhdGlvbihmYWxzZSkKIHsKLSAgICAvLyBUaGVzZSBwcm90b2Nv
bHMgZG8gbm90IGNyZWF0ZSBzZWN1cml0eSBvcmlnaW5zOyB0aGUgb3duZXIgZnJhbWUgcHJvdmlk
ZXMgdGhlIG9yaWdpbgotICAgIGlmIChtX3Byb3RvY29sID09ICJhYm91dCIgfHwgbV9wcm90b2Nv
bCA9PSAiamF2YXNjcmlwdCIpCi0gICAgICAgIG1fcHJvdG9jb2wgPSAiIjsKLQotI2lmIEVOQUJM
RShCTE9CKSB8fCBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgYm9vbCBpc0Jsb2JPckZpbGVTeXN0
ZW1Qcm90b2NvbCA9IGZhbHNlOwotI2lmIEVOQUJMRShCTE9CKQotICAgIGlmIChtX3Byb3RvY29s
ID09IEJsb2JVUkw6OmJsb2JQcm90b2NvbCgpKQotICAgICAgICBpc0Jsb2JPckZpbGVTeXN0ZW1Q
cm90b2NvbCA9IHRydWU7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgaWYg
KG1fcHJvdG9jb2wgPT0gImZpbGVzeXN0ZW0iKQotICAgICAgICBpc0Jsb2JPckZpbGVTeXN0ZW1Q
cm90b2NvbCA9IHRydWU7Ci0jZW5kaWYKLSAgICBpZiAoaXNCbG9iT3JGaWxlU3lzdGVtUHJvdG9j
b2wpIHsKLSAgICAgICAgS1VSTCBvcmlnaW5VUkwoUGFyc2VkVVJMU3RyaW5nLCBkZWNvZGVVUkxF
c2NhcGVTZXF1ZW5jZXModXJsLnBhdGgoKSkpOwotICAgICAgICBpZiAob3JpZ2luVVJMLmlzVmFs
aWQoKSkgewotICAgICAgICAgICAgbV9wcm90b2NvbCA9IG9yaWdpblVSTC5wcm90b2NvbCgpLmxv
d2VyKCk7Ci0gICAgICAgICAgICBtX2hvc3QgPSBvcmlnaW5VUkwuaG9zdCgpLmxvd2VyKCk7Ci0g
ICAgICAgICAgICBtX3BvcnQgPSBvcmlnaW5VUkwucG9ydCgpOwotICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIG1faXNVbmlxdWUgPSB0cnVlOwotICAgIH0KLSNlbmRpZgotCi0gICAgLy8gRm9y
IGVkZ2UgY2FzZSBVUkxzIHRoYXQgd2VyZSBwcm9iYWJseSBtaXNwYXJzZWQsIG1ha2Ugc3VyZSB0
aGF0IHRoZSBvcmlnaW4gaXMgdW5pcXVlLgotICAgIGlmIChzY2hlbWVSZXF1aXJlc0F1dGhvcml0
eShtX3Byb3RvY29sKSAmJiBtX2hvc3QuaXNFbXB0eSgpKQotICAgICAgICBtX2lzVW5pcXVlID0g
dHJ1ZTsKLSAgICBpZiAobV9wcm90b2NvbC5pc0VtcHR5KCkpCi0gICAgICAgIG1faXNVbmlxdWUg
PSB0cnVlOworICAgIC8vIEZJWE1FOiBSZW1vdmUgZm9yY2VVbmlxdWUgcGFyYW1ldGVyLgorICAg
IEFTU0VSVCghZm9yY2VVbmlxdWUpOwogCiAgICAgLy8gZG9jdW1lbnQuZG9tYWluIHN0YXJ0cyBh
cyBtX2hvc3QsIGJ1dCBjYW4gYmUgc2V0IGJ5IHRoZSBET00uCiAgICAgbV9kb21haW4gPSBtX2hv
c3Q7CiAKKyAgICBpZiAoaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKG1fcG9ydCwgbV9wcm90b2Nv
bCkpCisgICAgICAgIG1fcG9ydCA9IDA7CisKICAgICAvLyBCeSBkZWZhdWx0LCBvbmx5IGxvY2Fs
IFNlY3VyaXR5T3JpZ2lucyBjYW4gbG9hZCBsb2NhbCByZXNvdXJjZXMuCiAgICAgbV9jYW5Mb2Fk
TG9jYWxSZXNvdXJjZXMgPSBpc0xvY2FsKCk7Ci0gICAgaWYgKG1fY2FuTG9hZExvY2FsUmVzb3Vy
Y2VzKSB7Ci0gICAgICAgIC8vIERpcmVjdG9yaWVzIHNob3VsZCBuZXZlciBiZSByZWFkYWJsZS4K
LSAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGRvIG5vdCBkbyB0aGlzIGNoZWNrIGZvciBibG9iIG9y
IGZpbGVzeXN0ZW0gdXJsIGJlY2F1c2UgaXRzIG9yaWdpbiBpcyBmaWxlOi8vLyB3aGVuIGl0IGlz
IGNyZWF0ZWQgZnJvbSBsb2NhbCBmaWxlIHVybHMuCi0jaWYgRU5BQkxFKEJMT0IpIHx8IEVOQUJM
RShGSUxFX1NZU1RFTSkKLSAgICAgICAgYm9vbCBkb0RpcmVjdG9yeUNoZWNrID0gIWlzQmxvYk9y
RmlsZVN5c3RlbVByb3RvY29sOwotI2Vsc2UKLSAgICAgICAgYm9vbCBkb0RpcmVjdG9yeUNoZWNr
ID0gdHJ1ZTsKLSNlbmRpZgotICAgICAgICBpZiAoZG9EaXJlY3RvcnlDaGVjayAmJiAoIXVybC5o
YXNQYXRoKCkgfHwgdXJsLnBhdGgoKS5lbmRzV2l0aCgiLyIpKSkKLSAgICAgICAgICAgIG1faXNV
bmlxdWUgPSB0cnVlOwotICAgICAgICAvLyBTdG9yZSB0aGUgcGF0aCBpbiBjYXNlIHdlIGFyZSBk
b2luZyBwZXItZmlsZSBvcmlnaW4gY2hlY2tpbmcuCi0gICAgICAgIG1fZmlsZVBhdGggPSB1cmwu
cGF0aCgpOwotICAgIH0KIAotICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0
LCBtX3Byb3RvY29sKSkKLSAgICAgICAgbV9wb3J0ID0gMDsKKyAgICBpZiAobV9jYW5Mb2FkTG9j
YWxSZXNvdXJjZXMpCisgICAgICAgIG1fZmlsZVBhdGggPSB1cmwucGF0aCgpOyAvLyBJbiBjYXNl
IGVuZm9yY2VGaWxlUGF0aFNlcGFyYXRpb24oKSBpcyBjYWxsZWQuCiB9CiAKIFNlY3VyaXR5T3Jp
Z2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiogb3RoZXIpCkBAIC0xMzQs
MTYgKzEzOSwxMiBAQCBTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlPcmlnaW4oY29uc3QgU2VjCiB7
CiB9CiAKLWJvb2wgU2VjdXJpdHlPcmlnaW46OmlzRW1wdHkoKSBjb25zdAotewotICAgIEFTU0VS
VCghbV9wcm90b2NvbC5pc0VtcHR5KCkgfHwgbV9pc1VuaXF1ZSk7Ci0gICAgcmV0dXJuIG1fcHJv
dG9jb2wuaXNFbXB0eSgpOwotfQotCiBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKGNvbnN0IEtVUkwmIHVybCwgYm9vbCBmb3JjZVVuaXF1ZSkKIHsKLSAg
ICBpZiAoIXVybC5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VjdXJp
dHlPcmlnaW4oYmxhbmtVUkwoKSwgZm9yY2VVbmlxdWUpKTsKKyAgICBpZiAoc2hvdWxkVHJlYXRB
c1VuaXF1ZU9yaWdpbih1cmwpKQorICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNlY3VyaXR5
T3JpZ2luKEtVUkwoKSwgZm9yY2VVbmlxdWUpKTsKKyAgICBpZiAoc2hvdWxkVXNlSW5uZXJVUkwo
dXJsKSkKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWN1cml0eU9yaWdpbihleHRyYWN0
SW5uZXJVUkwodXJsKSwgZm9yY2VVbmlxdWUpKTsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNl
Y3VyaXR5T3JpZ2luKHVybCwgZm9yY2VVbmlxdWUpKTsKIH0KIApAQCAtMzQ1LDE2ICszNDYsNiBA
QCBib29sIFNlY3VyaXR5T3JpZ2luOjppc0xvY2FsKCkgY29uc3QKICAgICByZXR1cm4gU2NoZW1l
UmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChtX3Byb3RvY29sKTsKIH0KIAot
Ym9vbCBTZWN1cml0eU9yaWdpbjo6aXNTZWN1cmVUcmFuc2l0aW9uVG8oY29uc3QgS1VSTCYgdXJs
KSBjb25zdAotewotICAgIC8vIFRoaXMgb3JpZ2luIHJlcHJlc2VudHMgYSBuZXcgd2luZG93IGNy
ZWF0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLgotICAgIGlmIChpc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybiB0cnVlOwotCi0gICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvdGhlciA9IFNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUodXJsKTsKLSAgICByZXR1cm4gY2FuQWNjZXNzKG90aGVyLmdldCgpKTsK
LX0KLQogU3RyaW5nIFNlY3VyaXR5T3JpZ2luOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgaWYg
KGlzVW5pcXVlKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCShyZXZp
c2lvbiA5OTcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAkod29y
a2luZyBjb3B5KQpAQCAtMTIxLDggKzEyMSw2IEBAIHB1YmxpYzoKICAgICAvLyBvcmlnaW5zLgog
ICAgIGJvb2wgY2FuQWNjZXNzU2Vzc2lvblN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiAhaXNVbmlx
dWUoKTsgfQogCi0gICAgYm9vbCBpc1NlY3VyZVRyYW5zaXRpb25Ubyhjb25zdCBLVVJMJikgY29u
c3Q7Ci0KICAgICAvLyBUaGUgbG9jYWwgU2VjdXJpdHlPcmlnaW4gaXMgdGhlIG1vc3QgcHJpdmls
ZWdlZCBTZWN1cml0eU9yaWdpbi4KICAgICAvLyBUaGUgbG9jYWwgU2VjdXJpdHlPcmlnaW4gY2Fu
IHNjcmlwdCBhbnkgZG9jdW1lbnQsIG5hdmlnYXRlIHRvIGxvY2FsCiAgICAgLy8gcmVzb3VyY2Vz
LCBhbmQgY2FuIHNldCBhcmJpdHJhcnkgaGVhZGVycyBvbiBYTUxIdHRwUmVxdWVzdHMuCkBAIC0x
MzYsMTMgKzEzNCw2IEBAIHB1YmxpYzoKICAgICAvLyBhZGRpdGlvbiwgdGhlIFNhbmRib3hPcmln
aW4gZmxhZyBpcyBpbmhlcml0ZWQgYnkgaWZyYW1lcy4KICAgICBib29sIGlzVW5pcXVlKCkgY29u
c3QgeyByZXR1cm4gbV9pc1VuaXF1ZTsgfQogCi0gICAgLy8gVGhlIGVtcHR5IFNlY3VyaXR5T3Jp
Z2luIGlzIGEgdW5pcXVlIHNlY3VyaXR5IG9yaWduIChpbiB0aGUgc2Vuc2Ugb2YKLSAgICAvLyBp
c1VuaXF1ZSBhYm92ZSkgdGhhdCB3YXMgY3JlYXRlZCBmb3IgYSAiYmxhbmsiIGRvY3VtZW50LCBz
dWNoIGFib3V0Ci0gICAgLy8gYWJvdXQ6YmxhbmsuIEVtcHR5IG9yaWdpbnMgZGlmZmVyIGZyb20g
dW5pcXVlIG9yaWdpbnMgaW4gdGhhdCB0aGV5IGNhbgotICAgIC8vIHNvbWV0aW1lcyBiZSByZXBs
YWNlZCBieSBub24tZW1wdHkgb3JpZ2lucywgZm9yIGV4YW1wbGUgd2hlbiBhbgotICAgIC8vIGFi
b3V0OmJsYW5rIGlmcmFtZSBpbmhlcml0cyBpdHMgc2VjdXJpdHkgb3JpZ2luIGZyb20gaXRzIHBh
cmVudCBmcmFtZS4KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKLQogICAgIC8vIE1hcmtzIGEg
ZmlsZTovLyBvcmlnaW4gYXMgYmVpbmcgaW4gYSBkb21haW4gZGVmaW5lZCBieSBpdHMgcGF0aC4K
ICAgICB2b2lkIGVuZm9yY2VGaWxlUGF0aFNlcGFyYXRpb24oKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAJKHJldmlzaW9uIDk5NzI4KQorKysgU291cmNlL1dl
YkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDggKzk5
LDggQEAgYm9vbCBTZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NUb1VSTFdoaXRlTAogdm9pZCBTZWN1
cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlP
cmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uRG9tYWluLCBib29sIGFsbG93RGVzdGluYXRpb25TdWJk
b21haW5zKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQVNTRVJUKCFzb3Vy
Y2VPcmlnaW4uaXNFbXB0eSgpKTsKLSAgICBpZiAoc291cmNlT3JpZ2luLmlzRW1wdHkoKSkKKyAg
ICBBU1NFUlQoIXNvdXJjZU9yaWdpbi5pc1VuaXF1ZSgpKTsKKyAgICBpZiAoc291cmNlT3JpZ2lu
LmlzVW5pcXVlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyBzb3VyY2VTdHJpbmcg
PSBzb3VyY2VPcmlnaW4udG9TdHJpbmcoKTsKQEAgLTExNSw4ICsxMTUsOCBAQCB2b2lkIFNlY3Vy
aXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0CiB2b2lkIFNlY3VyaXR5UG9saWN5OjpyZW1v
dmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNl
T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYg
ZGVzdGluYXRpb25Eb21haW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlQoIXNvdXJjZU9yaWdpbi5pc0Vt
cHR5KCkpOwotICAgIGlmIChzb3VyY2VPcmlnaW4uaXNFbXB0eSgpKQorICAgIEFTU0VSVCghc291
cmNlT3JpZ2luLmlzVW5pcXVlKCkpOworICAgIGlmIChzb3VyY2VPcmlnaW4uaXNVbmlxdWUoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIHNvdXJjZVN0cmluZyA9IHNvdXJjZU9yaWdp
bi50b1N0cmluZygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0
cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lz
dHJ5LmNwcAkocmV2aXNpb24gOTk3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hl
bWVSZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDEwICs2OCwxMyBAQCBzdGF0aWMg
VVJMU2NoZW1lc01hcCYgc2NoZW1lc1dpdGhVbmlxdWVPCiB7CiAgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChVUkxTY2hlbWVzTWFwLCBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnMsICgpKTsKIAotICAg
IC8vIFRoaXMgaXMgYSB3aWxsZnVsIHZpb2xhdGlvbiBvZiBIVE1MNS4KLSAgICAvLyBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODg1Ci0gICAgaWYgKHNjaGVt
ZXNXaXRoVW5pcXVlT3JpZ2lucy5pc0VtcHR5KCkpCisgICAgaWYgKHNjaGVtZXNXaXRoVW5pcXVl
T3JpZ2lucy5pc0VtcHR5KCkpIHsKKyAgICAgICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmFk
ZCgiYWJvdXQiKTsKKyAgICAgICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmFkZCgiamF2YXNj
cmlwdCIpOworICAgICAgICAvLyBUaGlzIGlzIGEgd2lsbGZ1bCB2aW9sYXRpb24gb2YgSFRNTDUu
CisgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTE4ODUKICAgICAgICAgc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmFkZCgiZGF0YSIpOworICAg
IH0KIAogICAgIHJldHVybiBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdpbnM7CiB9CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gOTk4MTIpCisrKyBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTEx
LTA5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5pcXVlIFNl
Y3VyaXR5T3JpZ2lucyBzaG91bGRuJ3QgcmVtZW1iZXIgdGhlaXIgb2xkIHNjaGVtZXMgYW5kIGhv
c3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTc0
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBj
b25jZXB0IG9mIGFuIGVtcHR5IG9yaWdpbiBubyBsb25nZXIgZXhpc3RzLiAgSW4gYSBmb2xsb3ct
dXAgcGF0Y2gsCisgICAgICAgIEknbGwgcmVuYW1lIHRoaXMgQVBJIHRvIGlzVW5pcXVlLgorCisg
ICAgICAgICogc3JjL1dlYlNlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
U2VjdXJpdHlPcmlnaW46OmlzRW1wdHkpOgorCiAyMDExLTExLTA5ICBUb21teSBXaWRlbmZseWNo
dCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTWVkaWFTdHJlYW0g
QVBJOiBBZGQgV2ViTWVkaWFTdHJlYW1SZWdpc3RyeQpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlNlY3VyaXR5T3JpZ2luLmNwcAkocmV2aXNpb24gOTk3MjgpCisr
KyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTkwLDEwICs5MCwxMSBAQCB1bnNpZ25lZCBzaG9ydCBXZWJTZWN1cml0eU9y
aWdpbjo6cG9ydCgpCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+cG9ydCgpOwogfQogCisvLyBGSVhN
RTogUmVuYW1lZCB0aGlzIEFQSSB0byBpc1VuaXF1ZSgpLgogYm9vbCBXZWJTZWN1cml0eU9yaWdp
bjo6aXNFbXB0eSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fcHJpdmF0ZSk7Ci0gICAgcmV0dXJu
IG1fcHJpdmF0ZS0+aXNFbXB0eSgpOworICAgIHJldHVybiBtX3ByaXZhdGUtPmlzVW5pcXVlKCk7
CiB9CiAKIGJvb2wgV2ViU2VjdXJpdHlPcmlnaW46OmNhbkFjY2Vzcyhjb25zdCBXZWJTZWN1cml0
eU9yaWdpbiYgb3RoZXIpIGNvbnN0CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTgxMikKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDExLTEx
LTA5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5pcXVlIFNl
Y3VyaXR5T3JpZ2lucyBzaG91bGRuJ3QgcmVtZW1iZXIgdGhlaXIgb2xkIHNjaGVtZXMgYW5kIGhv
c3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTc0
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFz
dC9maWxlc3lzdGVtL2FzeW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3QvZmlsZXN5c3RlbS9ub3QtZW5vdWdoLWFyZ3VtZW50cy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9maWxlc3lzdGVtL3JlYWQtZGlyZWN0b3J5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBmYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXBlcnNpc3RlbnQtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGZhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVhZG9ubHktZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGZhc3QvZmlsZXN5c3RlbS9zaW1wbGUtdGVtcG9yYXJ5LWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgICAgIC0gVXBkYXRlIHRlc3QgcmVzdWx0cyB0byBzaG93IHRoYXQgd2Ugbm8gbG9uZ2VyIGxl
YWsgdGhlIHNjaGVtZSBpbgorICAgICAgICAgICAgICBzdG9yYWdlIGlkZW50aWZpZXJzLgorICAg
ICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmcuaHRt
bDoKKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm1zLWR5bmFtaWMu
aHRtbDoKKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm1zLmh0bWw6
CisgICAgICAgICAgICAtIFByZXZpb3VzbHkgc2FuZGJveGVkIGxvY2FsIGlmcmFtZXMgc3RpbGwg
Z290IHVuaXZlcnNhbCBhY2Nlc3MKKyAgICAgICAgICAgICAgd2hlbiB3ZSdyZSBydW5uaW5nIHdp
dGggdW5pdmVyc2FsIGFjY2VzcyBmb3IgZmlsZSBVUkxzISAgTm93IHRoYXQKKyAgICAgICAgICAg
ICAgdGhleSBjb3JyZWN0bHkgZ2V0IHVuaXF1ZSBvcmlnaW5zLCB3ZSBuZWVkIHRvIHVwZGF0ZSB0
aGVzZSB0ZXN0cworICAgICAgICAgICAgICB0byBhbGxvdy1zYW1lLW9yaWdpbiBhY2Nlc3MgaW4g
b3JkZXIgZm9yIHRoZW0gdG8gZnVuY3Rpb24KKyAgICAgICAgICAgICAgcHJvcGVybHkuCisKIDIw
MTEtMTEtMDkgIEFuZHJldyBTY2hlcmt1cyAgPHNjaGVya3VzQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBNb3JlIG1lZGlhIHJlYmFzZWxpbmVzIGR1ZSB0byByOTg1OTYuCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vYXN5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2FzeW5jLW9wZXJhdGlvbnMtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA5OTcyOCkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9hc3luYy1vcGVyYXRpb25zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0
LDcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogCiAKIHJlcXVl
c3RlZCBGaWxlU3lzdGVtLgotR290IEZpbGVTeXN0ZW06ZmlsZV9fMDpUZW1wb3JhcnkKK0dvdCBG
aWxlU3lzdGVtOl9fMDpUZW1wb3JhcnkKIFN0YXJ0aW5nIGFzeW5jIHRlc3Qgc3RhZ2UgMS4KIFN0
YXJ0aW5nIGFzeW5jIHRlc3Qgc3RhZ2UgMi4KIFZlcmlmeWluZyB0aGUgRmlsZVN5c3RlbSBzdGF0
dXMuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vbm90LWVub3VnaC1hcmd1bWVu
dHMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9ub3QtZW5vdWdoLWFyZ3VtZW50cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDk5NzI4KQorKysg
TGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL25vdC1lbm91Z2gtYXJndW1lbnRzLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAgVGhpcyB0ZXN0IHRyaWVzIGNhbGxp
bmcgdmFyaW91cyBmaWxlc3lzdAogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVN1Y2Nl
c3NmdWxseSBvYnRhaW5lZCBQZXJzaXN0ZW50IEZpbGVTeXN0ZW06ZmlsZV9fMDpUZW1wb3JhcnkK
K1N1Y2Nlc3NmdWxseSBvYnRhaW5lZCBQZXJzaXN0ZW50IEZpbGVTeXN0ZW06X18wOlRlbXBvcmFy
eQogUEFTUyBmaWxlU3lzdGVtLnJvb3QubW92ZVRvKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJv
cjogTm90IGVub3VnaCBhcmd1bWVudHMuCiBQQVNTIGZpbGVTeXN0ZW0ucm9vdC5jb3B5VG8oKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KIFBBU1MgcmVh
ZGVyLnJlYWRFbnRyaWVzKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBh
cmd1bWVudHMuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVhZC1kaXJlY3Rv
cnktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9yZWFkLWRpcmVjdG9yeS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDk5NzI4KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3JlYWQtZGlyZWN0b3J5LWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAgRGlyZWN0b3J5UmVhZGVyLnJlYWRFbnRyaWVzKCkgdGVz
dC4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1TdWNjZXNzZnVsbHkgb2J0YWluZWQg
UGVyc2lzdGVudCBGaWxlU3lzdGVtOmZpbGVfXzA6VGVtcG9yYXJ5CitTdWNjZXNzZnVsbHkgb2J0
YWluZWQgUGVyc2lzdGVudCBGaWxlU3lzdGVtOl9fMDpUZW1wb3JhcnkKIFBBU1MgcmVhZEVudHJp
ZXNDb3VudCBpcyBlbnRyaWVzQ2FsbGJhY2tDb3VudAogUEFTUyByZXN1bHRFbnRyaWVzLmxlbmd0
aCBpcyB0ZXN0RW50cmllc0NvdW50CiBFbnRyeTovYSBpc0RpcmVjdG9yeTp0cnVlCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXBlcnNpc3RlbnQtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcGVyc2lz
dGVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDk5NzI4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3NpbXBsZS1wZXJzaXN0ZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMyw3ICszLDcgQEAgcmVxdWVzdEZpbGVTeXN0ZW0gUEVSU0lTVEVOVCB0ZXN0LgogT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVN1Y2Nlc3NmdWxseSBvYnRhaW5lZCBQRVJTSVNURU5U
IEZpbGVTeXN0ZW06ZmlsZV9fMDpQZXJzaXN0ZW50CitTdWNjZXNzZnVsbHkgb2J0YWluZWQgUEVS
U0lTVEVOVCBGaWxlU3lzdGVtOl9fMDpQZXJzaXN0ZW50CiBQQVNTIGZpbGVTeXN0ZW0ubmFtZS5s
ZW5ndGggPiAwIGlzIHRydWUKIFBBU1MgZmlsZVN5c3RlbS5yb290LmZ1bGxQYXRoIGlzICIvIgog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9m
aWxlc3lzdGVtL3NpbXBsZS1yZWFkb25seS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZWFkb25seS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDk5NzI4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZWFk
b25seS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiw3IEBAIE9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEEKIHdlYmtpdFJlcXVlc3RGaWxlU3lzdGVt
KFRFTVBPUkFSWSwgMTAwLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spCiB0cnlpbmcg
dG8gc2V0IHJlYWRvbmx5IHByb3BlcnR5IGZpbGVTeXN0ZW0ubmFtZQogZmlsZVN5c3RlbS5uYW1l
ID0gJ2JhcicKLVBBU1MgZmlsZVN5c3RlbS5uYW1lIGlzIHN0aWxsIGZpbGVfXzA6VGVtcG9yYXJ5
CitQQVNTIGZpbGVTeXN0ZW0ubmFtZSBpcyBzdGlsbCBfXzA6VGVtcG9yYXJ5CiByb290ID0gZmls
ZVN5c3RlbS5yb290CiByb290LmdldEZpbGUoJ2ZvbycsIHtjcmVhdGU6dHJ1ZX0sIGdldEZpbGVD
YWxsYmFjaywgZXJyb3JDYWxsYmFjaykKIHRyeWluZyB0byBzZXQgcmVhZG9ubHkgcHJvcGVydHkg
ZmlsZUVudHJ5LmlzRmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBs
ZS10ZW1wb3JhcnktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
ZmlsZXN5c3RlbS9zaW1wbGUtdGVtcG9yYXJ5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTk3Mjgp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXRlbXBvcmFyeS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsNyArMyw3IEBAIHJlcXVlc3RGaWxlU3lzdGVtIFRF
TVBPUkFSWSB0ZXN0LgogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVN1Y2Nlc3NmdWxs
eSBvYnRhaW5lZCBURU1QT1JBUlkgRmlsZVN5c3RlbTpmaWxlX18wOlRlbXBvcmFyeQorU3VjY2Vz
c2Z1bGx5IG9idGFpbmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVtOl9fMDpUZW1wb3JhcnkKIFBBU1Mg
ZmlsZVN5c3RlbS5uYW1lLmxlbmd0aCA+IDAgaXMgdHJ1ZQogUEFTUyBmaWxlU3lzdGVtLnJvb3Qu
ZnVsbFBhdGggaXMgIi8iCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5n
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlm
cmFtZS1hdHRyaWJ1dGUtcGFyc2luZy5odG1sCShyZXZpc2lvbiA5OTcyOCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmcuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24o
KQogICAgIDwhLS0gaWZyYW1lcyB3aGVyZSBzY3JpcHQgZXhlY3V0aW9uIGlzIGFsbG93ZWQsIGJ1
dCBvcmlnaW4gaXMgbm90IHNoYXJlZCAtLT4KIAogICAgIDwhLS0gcGxhaW4sIHByb3BlciBhdHRy
aWJ1dGUgdmFsdWUgLS0+Ci0gICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIgorICAg
IDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbiIKICAgICAg
ICAgICAgIG5hbWU9ImYxIgogICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlm
cmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1hbGxvd2VkLmh0bWwiPgogICAgIDwvaWZyYW1lPgpAQCAt
NjYsNyArNjYsNyBAQCB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKQogCiBhbGxvdy1zY3JpcHRz
CiAKLSIKK2FsbG93LXNhbWUtb3JpZ2luIgogICAgICAgICAgICAgbmFtZT0iZjIiCiAgICAgICAg
ICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFs
bG93ZWQuaHRtbCI+CiAgICAgPC9pZnJhbWU+CkBAIC0xMDMsNyArMTAzLDcgQEAgYWxsb3ctc2Ny
aXB0cwogICAgICAgICAKICAgICAgICAgJ0t5c3Nhcm5hJyAoJ1RoZSBraXNzZXMnKSwgRXNhaWFz
IFRlZ27DqXIsIDE3ODItMTg0NgogCi0gICAgYWxsb3ctc2NyaXB0cworICAgIGFsbG93LXNjcmlw
dHMgYWxsb3ctc2FtZS1vcmlnaW4KICAgICAKICAgICAgICAgaW50IG1haW4odm9pZCkKICAgICAg
ICAgewpAQCAtMTE0LDQ0ICsxMTQsNDQgQEAgYWxsb3ctc2NyaXB0cwogICAgIDwvaWZyYW1lPgog
CiAgICAgPCEtLSB0YWIgY2hhcmFjdGVycyBiZWZvcmUgYW5kIGFmdGVyIGF0dHJpYnV0ZSB2YWx1
ZSAtLT4KLSAgICA8aWZyYW1lIHNhbmRib3g9IgkJYWxsb3ctc2NyaXB0cwkJIgorICAgIDxpZnJh
bWUgc2FuZGJveD0iCQlhbGxvdy1zY3JpcHRzCQlhbGxvdy1zYW1lLW9yaWdpbiIKICAgICAgICAg
ICAgIG5hbWU9ImY0IgogICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1hdHRyaWJ1dGUtcGFyc2luZy1hbGxvd2VkLmh0bWwiPgogICAgIDwvaWZyYW1lPgogCiAgICAg
PCEtLSBtaXhlZCBjYXNlIC0tPgotICAgIDxpZnJhbWUgc2FuZGJveD0iQWxMb1ctc0NySXBUcyIK
KyAgICA8aWZyYW1lIHNhbmRib3g9IkFsTG9XLXNDcklwVHMgYWxsb3ctc2FtZS1vcmlnaW4iCiAg
ICAgICAgICAgICBuYW1lPSJmNSIKICAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctYWxsb3dlZC5odG1sIj4KICAgICA8L2lmcmFtZT4K
IAogICAgIDwhLS0gaWZyYW1lcyB3aGVyZSBzY3JpcHQgZXhlY3V0aW9uIGlzIGRpc2FsbG93ZWQg
LS0+CiAKLSAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93c2NyaXB0cyIKKyAgICA8aWZyYW1lIHNh
bmRib3g9ImFsbG93c2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbiIKICAgICAgICAgICAgIHNyYz0i
cmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctZGlzYWxsb3dlZC5o
dG1sIj4KICAgICA8L2lmcmFtZT4KIAotICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3dzLWNyaXB0
cyIKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93cy1jcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4i
CiAgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1w
YXJzaW5nLWRpc2FsbG93ZWQuaHRtbCI+CiAgICAgPC9pZnJhbWU+CiAKLSAgICA8aWZyYW1lIHNh
bmRib3g9Ii1hbGxvdy1zY3JpcHRzIgorICAgIDxpZnJhbWUgc2FuZGJveD0iLWFsbG93LXNjcmlw
dHMgYWxsb3ctc2FtZS1vcmlnaW4iCiAgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRtbCI+CiAgICAgPC9pZnJh
bWU+CiAKLSAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93X3NjcmlwdHMiCisgICAgPGlmcmFtZSBz
YW5kYm94PSJhbGxvd19zY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2luIgogICAgICAgICAgICAgc3Jj
PSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2Vk
Lmh0bWwiPgogICAgIDwvaWZyYW1lPgogCi0gICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvd1Njcmlw
dHMiCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvd1NjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4i
CiAgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1w
YXJzaW5nLWRpc2FsbG93ZWQuaHRtbCI+CiAgICAgPC9pZnJhbWU+CiAKLSAgICA8aWZyYW1lIHNh
bmRib3g9ImFhbGxvdy1zY3JpcHRzIgorICAgIDxpZnJhbWUgc2FuZGJveD0iYWFsbG93LXNjcmlw
dHMgYWxsb3ctc2FtZS1vcmlnaW4iCiAgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94
ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRtbCI+CiAgICAgPC9pZnJh
bWU+CiAKLSAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNjcmlwdHNzIgorICAgIDxpZnJhbWUg
c2FuZGJveD0iYWxsb3ctc2NyaXB0c3MgYWxsb3ctc2FtZS1vcmlnaW4iCiAgICAgICAgICAgICBz
cmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWRpc2FsbG93
ZWQuaHRtbCI+CiAgICAgPC9pZnJhbWU+CiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NhbmRib3hlZC1pZnJhbWUtZm9ybXMtZHluYW1pYy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtZm9ybXMtZHluYW1pYy5odG1sCShy
ZXZpc2lvbiA5OTcyOCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJh
bWUtZm9ybXMtZHluYW1pYy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw5ICszMCw5IEBAIGZ1
bmN0aW9uIGRpc2FsbG93ZWRGb3JtU3VibWl0dGVkKCkKIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlv
bigpIHsKICAgICBmcmFtZUVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
ImlmcmFtZSIpOwogCi0gICAgZnJhbWVFbGVtZW50c1swXS5zYW5kYm94ID0gImFsbG93LXNjcmlw
dHMiOwotICAgIGZyYW1lRWxlbWVudHNbMV0uc2FuZGJveCA9ICJhbGxvdy1zY3JpcHRzIGFsbG93
LWZvcm1zIjsKLSAgICBmcmFtZUVsZW1lbnRzWzJdLnNhbmRib3ggPSAiYWxsb3ctc2NyaXB0cyI7
CisgICAgZnJhbWVFbGVtZW50c1swXS5zYW5kYm94ID0gImFsbG93LXNjcmlwdHMgYWxsb3ctc2Ft
ZS1vcmlnaW4iOworICAgIGZyYW1lRWxlbWVudHNbMV0uc2FuZGJveCA9ICJhbGxvdy1zY3JpcHRz
IGFsbG93LWZvcm1zIGFsbG93LXNhbWUtb3JpZ2luIjsKKyAgICBmcmFtZUVsZW1lbnRzWzJdLnNh
bmRib3ggPSAiYWxsb3ctc2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbiI7CiAKICAgICBmcmFtZXNb
MF0ucG9zdE1lc3NhZ2UoImdvIiwgIioiKTsKICAgICBmcmFtZXNbMV0ucG9zdE1lc3NhZ2UoImdv
IiwgIioiKTsKQEAgLTQ1LDE1ICs0NSwxNSBAQCB3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7
CiA8Ym9keT4KIAogICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7
IgotICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgorICAgICAgICBz
YW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIGFsbG93LXNhbWUtb3JpZ2luIgogICAg
ICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tZHluYW1pYy1hbGxvd2Vk
Lmh0bWwiPgogICAgIDwvaWZyYW1lPgogICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBo
ZWlnaHQ6IDYwcHg7IgotICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIgorICAgICAgICBz
YW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2luIgogICAgICAgICBzcmM9InJl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tZHluYW1pYy1kaXNhbGxvd2VkLmh0bWwiPgog
ICAgIDwvaWZyYW1lPgogICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYw
cHg7IgotICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgorICAgICAg
ICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIGFsbG93LXNhbWUtb3JpZ2luIgog
ICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tZHluYW1pYy1hbGxv
d2VkLmh0bWwiPgogICAgIDwvaWZyYW1lPgogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1l
cy9zYW5kYm94ZWQtaWZyYW1lLWZvcm1zLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy5odG1sCShyZXZpc2lvbiA5OTcyOCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtZm9ybXMuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtNDEsNTMgKzQxLDUzIEBAIGZ1bmN0aW9uIGRpc2FsbG93ZWRGb3Jt
U3VibWl0dGVkKCkKICAgICA8IS0tIGZpdmUgSUZyYW1lcyB3aXRoIGZvcm1zIGFsbG93ZWQgLS0+
CiAKICAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyIKLSAgICAg
ICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAgICAgICAgc2FuZGJveD0i
YWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyBhbGxvdy1zYW1lLW9yaWdpbiIKICAgICAgICAgc3Jj
PSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+CiAgICAgPC9p
ZnJhbWU+CiAgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCi0g
ICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisgICAgICAgIHNhbmRi
b3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMgYWxsb3ctc2FtZS1vcmlnaW4iCiAgICAgICAg
IHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwiPgogICAg
IDwvaWZyYW1lPgogICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7
IgotICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgorICAgICAgICBz
YW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIGFsbG93LXNhbWUtb3JpZ2luIgogICAg
ICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sIj4K
ICAgICA8L2lmcmFtZT4KICAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2
MHB4OyIKLSAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAgICAg
ICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyBhbGxvdy1zYW1lLW9yaWdpbiIK
ICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRt
bCI+CiAgICAgPC9pZnJhbWU+CiAgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdo
dDogNjBweDsiCi0gICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisg
ICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMgYWxsb3ctc2FtZS1vcmln
aW4iCiAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2Vk
Lmh0bWwiPgogICAgIDwvaWZyYW1lPgogCiAgICAgPCEtLSBvbmUgSUZyYW1lIHdpdGggZm9ybXMg
ZGlzYWxsb3dlZCAtLT4KIAogICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6
IDYwcHg7IgotICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIgorICAgICAgICBzYW5kYm94
PSJhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2luIgogICAgICAgICBzcmM9InJlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tZGlzYWxsb3dlZC5odG1sIj4KICAgICA8L2lmcmFtZT4K
IAogICAgIDwhLS0gZml2ZSBtb3JlIElGcmFtZXMgd2l0aCBmb3JtcyBhbGxvd2VkIC0tPgogCiAg
ICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCi0gICAgICAgIHNh
bmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisgICAgICAgIHNhbmRib3g9ImFsbG93
LXNjcmlwdHMgYWxsb3ctZm9ybXMgYWxsb3ctc2FtZS1vcmlnaW4iCiAgICAgICAgIHNyYz0icmVz
b3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwiPgogICAgIDwvaWZyYW1l
PgogICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgotICAgICAg
ICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgorICAgICAgICBzYW5kYm94PSJh
bGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIGFsbG93LXNhbWUtb3JpZ2luIgogICAgICAgICBzcmM9
InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sIj4KICAgICA8L2lm
cmFtZT4KICAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyIKLSAg
ICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAgICAgICAgc2FuZGJv
eD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyBhbGxvdy1zYW1lLW9yaWdpbiIKICAgICAgICAg
c3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+CiAgICAg
PC9pZnJhbWU+CiAgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsi
Ci0gICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisgICAgICAgIHNh
bmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMgYWxsb3ctc2FtZS1vcmlnaW4iCiAgICAg
ICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0bWwiPgog
ICAgIDwvaWZyYW1lPgogICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYw
cHg7IgotICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgorICAgICAg
ICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIGFsbG93LXNhbWUtb3JpZ2luIgog
ICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1s
Ij4KICAgICA8L2lmcmFtZT4KICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114438</attachid>
            <date>2011-11-09 22:28:11 -0800</date>
            <delta_ts>2011-11-10 00:06:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71745-20111109222810.patch</filename>
            <type>text/plain</type>
            <size>45326</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5ODEyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTI4IEBACisyMDExLTExLTA5ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5pcXVlIFNlY3VyaXR5T3JpZ2lu
cyBzaG91bGRuJ3QgcmVtZW1iZXIgdGhlaXIgb2xkIHNjaGVtZXMgYW5kIGhvc3RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTc0NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgc29t
ZXdoYXQgc3VidGxlLiAgVGhpcyBwYXRjaCBoYXMgdGhyZWUgbWFpbiBnb2FsczoKKworICAgICAg
ICAxKSBSZW1vdmUgdGhlIGNvbmNlcHQgb2YgYW4gZW1wdHkgb3JpZ2luLiAgVGhpcyBjb25jZXB0
IHVzZWQgdG8KKyAgICAgICAgICAgcmVwcmVzZW50IGEgZG9jdW1lbnQgdGhhdCBoYWRuJ3QgeWV0
IGZpZ3VyZWQgb3V0IGl0J3Mgb3JpZ2luLCBidXQgaXQKKyAgICAgICAgICAgd2FzIHN1cGVyIHN1
YnRsZSBhbmQgbGVhZCB0byBhIG51bWJlciBvZiBzZWN1cml0eSBidWdzLiAgTm93LCB3ZQorICAg
ICAgICAgICByZXByZXNlbnQgdGhhdCBzdGF0ZSBieSB1c2luZyBhIHVuaXF1ZSBvcmlnaW4gYW5k
IGEKKyAgICAgICAgICAgImZhaWxlZFRvSW5oZXJpdFNlY3VyaXR5T3JpZ2luIiBvbiBTZWN1cml0
eUNvbnRleHQuICBUaGlzIHNob3VsZAorICAgICAgICAgICBoZWxwIHVzIGF2b2lkIHNlY3VyaXR5
IGJ1Z3MgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICAyKSBSZW1vdmUgc2NoZW1lcywgaG9zdHMs
IGFuZCBwb3J0cyBmcm9tIHVuaXF1ZSBvcmlnaW5zLiAgVW5pcXVlCisgICAgICAgICAgIG9yaWdp
bnMgYXJlbid0IHJlbGF0ZWQgdG8gc2NoZW1lL2hvc3QvcG9ydCBvcmlnaW5zLiAgUHJldmlvdXNs
eSwgd2UKKyAgICAgICAgICAgc3RvcmVkIHRoZSBzY2hlbWUsIGhvc3QsIGFuZCBwb3J0IG9uIFNl
Y3VyaXR5T3JpZ2luIG9iamVjdHMgdGhhdCBoYWQKKyAgICAgICAgICAgdGhlIGlzVW5pcXVlIGJp
dCBzZXQgZXZlbiB0aG91Z2ggd2Ugd2VyZSBzdXBwb3NlZCB0byBpZ25vcmUgdGhlbSwKKyAgICAg
ICAgICAgd2hpY2ggc2VlbXMgZXJyb3IgcHJvbmUuCisKKyAgICAgICAgMykgU2ltcGxpZnkgdGhl
IFNlY3VyaXR5T3JpZ2luIGNvbnN0cnVjdG9yLiAgT3ZlciB0aW1lLCB0aGUKKyAgICAgICAgICAg
U2VjdXJpdHlPcmlnaW4gY29uc3RydWN0b3IgaGFzIGdyb3duIGEgYnVuY2ggb2YgaWZkZWZzIGFu
ZAorICAgICAgICAgICBjb21wbGV4aXR5LiAgVGhpcyBwYXRjaCBmYWN0b3JzIGEgYnVuY2ggb2Yg
dGhhdCBjb21wbGV4aXR5IG91dCBpbnRvCisgICAgICAgICAgIGZyZWUgZnVuY3Rpb25zIGFuZCBz
aW1wbGlmaWVzIHRoZSBjb25zdHJ1Y3RvciB0byBqdXN0IGluaXRpYWxpemluZworICAgICAgICAg
ICB0aGUgZXNzZW50aWFsIGRhdGEgZmllbGRzLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIHRo
ZXNlIHRocmVlIGNoYW5nZXMgYXJlIGZhaXJseSB0aWdodGx5IGxpbmtlZCBiZWNhdXNlIHdlCisg
ICAgICAgIHdlcmUgdXNpbmcgdGhlIHByb3RvY29sIG1lbWJlciB2YXJpYWJsZSBvZiBTZWN1cml0
eU9yaWdpbiBvbiB1bmlxdWUKKyAgICAgICAgb3JpZ2lucyB0byByZXByZXNlbnQgZW1wdHkgb3Jp
Z2lucy4KKworICAgICAgICBDbGVhbmluZyB1cCB0aGVzZSBzdGF0ZSByZXByZXNlbnRhdGlvbnMg
Zml4ZWQgdHdvIG1pbm9yIGJ1Z3MsIGFzCisgICAgICAgIHJlZmxlY3RlZCBpbiB0aGUgdXBkYXRl
ZCB0ZXN0IHJlc3VsdHM6CisKKyAgICAgICAgQSkgU3RvcmFnZSBpZGVudGlmaWVycyBmb3IgdW5p
cXVlIG9yaWdpbnMgd2hlcmUgbGVha2luZyB0aGUgb3JpZ2luCisgICAgICAgICAgIHNjaGVtZS4g
IE5vdywgd2UganVzdCB1c2UgdGhlIGVtcHR5IHN0cmluZy4KKworICAgICAgICBCKSBTYW5kYm94
ZWQgaWZyYW1lcyBpbiBmcm9tIGxvY2FsIFVSTHMgd2hlcmUgZ2FpbmluZyAibG9jYWwiCisgICAg
ICAgICAgIHByaXZpbGVnZXMgZnJvbSB0aGVpciBzY2hlbWUuICBOb3cgdGhhdCB0aGV5IGhhdmUg
ZW1wdHkgc2NoZW1lcywKKyAgICAgICAgICAgdGhleSBubyBsb25nZXIgZ2FpbiB0aG9zZSBwcml2
aWxlZ2VzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyByZXZlYWxlZCBhIGhhbmRmdWwgb2Yg
c3VidGxlIGJ1Z3Mgd2l0aCB0aGUgb2xkIGNvZGUuCisgICAgICAgIEkndmUgYXR0ZW1wdGVkIHRv
IHByZXNlcnZlIHRob3NlIGJ1Z3MgKG5vdGVkIHdpdGggRklYTUUgY29tbWVudHMpIGluIGFuCisg
ICAgICAgIGVmZm9ydCB0byBjb250YWluIHRoZSBzY29wZSBvZiB0aGlzIHBhdGNoLiAgSSdsbCBs
aWtlbHkgZml4IHRob3NlIGJ1Z3MKKyAgICAgICAgaW4gYSBmb2xsb3ctdXAgcGF0Y2guCisKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNl
dElzVmlld1NvdXJjZSk6CisgICAgICAgICAgICAtIFRoaXMgbm93IHVzZXMgYSBuZXctc3R5bGUg
dW5pcXVlIG9yaWdpbi4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppbml0U2VjdXJpdHlD
b250ZXh0KToKKyAgICAgICAgICAgIC0gV2hlbiBzYW5kYm94ZWQsIHdlIG5vdyB1c2UgYSBuZXct
c3R5bGUgdW5pcXVlIG9yaWdpbiByYXRoZXIgdGhhbgorICAgICAgICAgICAgICBqdXN0IHNldHRp
bmcgdGhlIGlzVW5pcXVlIGJpdC4gIFRoaXMgcmVxdWlyZWQgc29tZSBjaGFuZ2VzIHRvIGhvdwor
ICAgICAgICAgICAgICB3ZSBpbmhlcml0IHNlY3VyaXR5IG9yaWdpbnMgaW4gdGhlIGFib3V0OmJs
YW5rIGNhc2UuICBUaGUgbm90aW9uCisgICAgICAgICAgICAgIG9mIGZhaWxlZFRvSW5oZXJpdFNl
Y3VyaXR5T3JpZ2luKCkgcmVwbGFjZXMgdGhlIG5vdGlvbiBvZiBhbgorICAgICAgICAgICAgICBl
bXB0eSBTZWN1cml0eU9yaWdpbi4KKyAgICAgICAgICAgIC0gT24gbGluZSA0NDQzLCB3ZSBhcmUg
bm93IG1vcmUgZXhwbGljaXQgYWJvdXQgdGhlIGNhc2VzIHdoZXJlIHdlCisgICAgICAgICAgICAg
IGluaGVyaXQgdGhlIFNlY3VyaXR5T3JpZ2luLiAgUmF0aGVyIHRoYW4gZG9pbmcgc28gZm9yIGFs
bCAiZW1wdHkiCisgICAgICAgICAgICAgIG9yaWdpbnMsIHdlIGluaGVyaXQgb25seSB3aGVuIHRo
ZSBVUkwgaXMgaW4gdGhlIGFib3V0IHNjaGVtZQorICAgICAgICAgICAgICAoZS5nLiwgYWJvdXQ6
YmxhbmspIG9yIHdoZW4gdGhlIFVSTCBpcyBpbnZhbGlkLgorICAgICAgICAqIGRvbS9TZWN1cml0
eUNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlDb250ZXh0OjpTZWN1cml0
eUNvbnRleHQpOgorICAgICAgICAgICAgLSBJbml0aWFsaXplIG1fZmFpbGVkVG9Jbmhlcml0U2Vj
dXJpdHlPcmlnaW4gdG8gZmFsc2UuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eUNvbnRleHQ6
OnNldFNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgICAgIC0gV2hlbmV2ZXIgd2Ugc2V0IGEgU2Vj
dXJpdHlPcmlnaW4gZXhwbGljaXRseSwgd2UgaGF2ZSBub3QgbG9uZ2VyCisgICAgICAgICAgICAg
IGZhaWxlZCB0byBpbmhlcml0IGEgc2VjdXJpdHkgb3JpZ2luLiAgSW4gY29tYmluYXRpb24gd2l0
aCB0aGUKKyAgICAgICAgICAgICAgZ3VhcmQgYXQgdGhlIHRvcCBvZiBpbml0U2VjdWl0eU9yaWdp
biwgdGhpcyBhc3NpZ25tZW50IHN0b3BzIHVzCisgICAgICAgICAgICAgIGZyb20gaW5oZXJpdGlu
ZyB0aGUgc2VjdXJpdHkgb3JpZ2luIG1vcmUgdGhhbiBvbmNlLgorICAgICAgICAoV2ViQ29yZTo6
U2VjdXJpdHlDb250ZXh0Ojppc1NlY3VyZVRyYW5zaXRpb25Ubyk6CisgICAgICAgICAgICAtIFRo
aXMgcGF0Y2ggbW92ZXMgaXNTZWN1cmVUcmFuc2l0aW9uVG8gZnJvbSBTZWN1cml0eU9yaWdpbiB0
bworICAgICAgICAgICAgICBTZWN1cml0eUNvbnRleHQgc28gdGhhdCBpdCBjYW4gcmVhZCB0aGUK
KyAgICAgICAgICAgICAgZmFpbGVkVG9Jbmhlcml0U2VjdXJpdHlPcmlnaW4gc3RhdGUsIHdoaWNo
IGlzIHJlYWxseSBwZXItRG9jdW1lbnQKKyAgICAgICAgICAgICAgKGFuZCBoZW5jZSBjYW4ndCBi
ZSBvbiBTZWN1cml0eU9yaWdpbiwgd2hpY2ggbWlnaHQgYmUgc2hhcmVkCisgICAgICAgICAgICAg
IGJldHdlZW4gZG9jdW1lbnRzIGluIHRoZSBpbmhlcml0ZW5jZSBjYXNlKS4KKyAgICAgICAgKiBk
b20vU2VjdXJpdHlDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eUNvbnRleHQ6
OmRpZEZhaWxUb0luaGVyaXRTZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTZWN1
cml0eUNvbnRleHQ6OmZhaWxlZFRvSW5oZXJpdFNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKiBs
b2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRXcml0
ZXI6OmJlZ2luKToKKyAgICAgICAgICAgIC0gVXBkYXRlIGNhbGxzaXRlIGZvciBpc1NlY3VyZVRy
YW5zaXRpb25UbyB0byBpdHMgbmV3IGxvY2F0aW9uLgorICAgICAgICAqIGxvYWRlci9GcmFtZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3RvcExvYWRpbmcpOgor
ICAgICAgICAgICAgLSBVcGRhdGUgY2FsbHNpdGUgZm9yIGlzU2VjdXJlVHJhbnNpdGlvblRvIHRv
IGl0cyBuZXcgbG9jYXRpb24uCisgICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93Ojpwb3N0TWVzc2FnZSk6CisgICAgICAgICAgICAtIE5vdyB3
aGVuIFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nIGZhaWwsIGl0IHJldHVybnMgYQor
ICAgICAgICAgICAgICB1bmlxdWUgb3JpZ2luIHJhdGhlciB0aGFuIGFuIGVtcHR5IG9yaWdpbi4g
IFRoaXMgc2hvdWxkIGJlCisgICAgICAgICAgICAgIGZ1bmN0aW9uYWxseSBpZGVudGljYWwuCisg
ICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzY2hl
bWVSZXF1aXJlc0F1dGhvcml0eSk6CisgICAgICAgICAgICAtIENoYW5nZSB0aGlzIGZ1bmN0aW9u
IHRvIGp1c3QgZG8gYSBjb3VwbGUgc3RyY21wcyByYXRoZXIgdGhhbgorICAgICAgICAgICAgICBo
YXZpbmcgYSBzdGF0aWMgVVJMU2NoZW1lc01hcC4gIFdlIHVzZSBVUkxTY2hlbWVzTWFwcyB3aGVu
IHRoZQorICAgICAgICAgICAgICBzZXQgb2Ygc2NoZW1lcyBpcyBleHRlbnNpYmxlLCB3aGljaCB0
aGlzIHNldCBpcyBub3QuCisgICAgICAgIChXZWJDb3JlOjpzaG91bGRVc2VJbm5lclVSTCk6Cisg
ICAgICAgICAgICAtIFRoaXMgZnVuY3Rpb24gYWJzdHJhY3RzIHNvbWUgdHJpY2t5IGxvZ2ljIHRo
YXQgdXNlZCB0byBiZSBpbiB0aGUKKyAgICAgICAgICAgICAgU2VjdXJpdHlPcmlnaW4gY29uc3Ry
dWN0b3IuICBNdWNoIHRvIG15IGNoYWdyaW4sIGJsb2IgYW5kCisgICAgICAgICAgICAgIGZpbGVz
eXN0ZW0gc3RvcmUgdGhlaXIgb3JpZ2luIGluIGEgbmVzdGVkIGlubmVyIFVSTC4KKyAgICAgICAg
KFdlYkNvcmU6OmV4dHJhY3RJbm5lclVSTCk6CisgICAgICAgICAgICAtIFRoaXMgZnVuY3Rpb24g
anVzdCBhYnN0cmFjdHMgdGhlIG9wZXJhdGlvbiBvZiBleHRyYWN0aW5nIHRoZQorICAgICAgICAg
ICAgICBpbm5lciBVUkwgdGhhdCdzIHVzZWQgaW4gdGhlIGJsb2IgYW5kIGZpbGVzeXN0ZW0gY2Fz
ZXMuCisgICAgICAgIChXZWJDb3JlOjpzaG91bGRUcmVhdEFzVW5pcXVlT3JpZ2luKToKKyAgICAg
ICAgICAgIC0gVGhlcmUgYXJlIGEgYnVuY2ggb2YgY2FzZXMgd2hlcmUgd2Ugd2FudCB0byB1c2Ug
YSB1bmlxdWUgb3JpZ2luCisgICAgICAgICAgICAgIHJhdGhlciB0aGFuIHRoZSBvcmlnaW4geW91
IG1pZ2h0IG90aGVyd2lzZSBleHRyYWN0IGZyb20gYSBVUkwuCisgICAgICAgICAgICAgIE1vdmlu
ZyB0aGlzIGxvZ2ljIG91dCBvZiB0aGUgY29uc3RydWN0b3IgbGV0cyB1cyBjYWxsIGl0IGluIHRo
ZQorICAgICAgICAgICAgICBjcmVhdGUgZnVuY3Rpb24gaW5zdGVhZCwgc2ltcGxpZnlpbmcgdGhl
IGNvbnN0cnVjdG9yLgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5
T3JpZ2luKToKKyAgICAgICAgICAgIC0gVGhlIFNlY3VyaXR5T3JpZ2luIGNvbnN0cnVjdG9yIG5v
dyBqdXN0IGluaXRpYWxpemUgZmllbGRzIHJhdGhlcgorICAgICAgICAgICAgICB0aGFuIG1ha2lu
ZyBjb21wbGV4IHNlY3VyaXR5IGRlY2lzaW9ucy4KKyAgICAgICAgICAgIC0gSSdsbCByZW1vdmUg
dGhlIGZvcmNlVW5pcXVlIHBhcmFtZXRlciBpbiBhIGZvbGxvdy11cCBwYXRjaC4gIFRoZQorICAg
ICAgICAgICAgICBBU1NFUlQgZW5zdXJlcyB0aGF0IHdlJ3JlIG5vdCB1c2luZyBpdC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUpOgorICAgICAgICAgICAgLSBTb21l
IG9mIHRoZSBjb21wbGV4aXR5IGZyb20gdGhlIGNvbnN0cnVjdG9yIG1vdmVkIHRvIHRoaXMKKyAg
ICAgICAgICAgICAgZnVuY3Rpb24sIHdoaWNoIG5vdyBkZWNpZGVzIHdoZXRoZXIgdG8gY29uc3Ry
dWN0IGEgdW5pcXVlIG9yaWdpbiwKKyAgICAgICAgICAgICAgYW4gb3JpZ2luIGZyb20gdGhlIGlu
bmVyIFVSTCwgb3IgdGhlIHJlZ3VsYXIgb3JpZ2luLgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlP
cmlnaW4uaDoKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVs
aXN0RW50cnkpOgorICAgICAgICAgICAgLSBNb3ZlIHRoZXNlIGZ1bmN0aW9ucyBvdmVyIHRvIGNh
bGxpbmcgaXNVbmlxdWUgaW5zdGVhZCBvZiBpc0VtcHR5LgorICAgICAgICAqIHBsYXRmb3JtL1Nj
aGVtZVJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjaGVtZXNXaXRoVW5pcXVlT3Jp
Z2lucyk6CisgICAgICAgICAgICAtIFJhdGhlciB0aGFuIHNwZWNpYWwtY2FzaW5nIHRoZSBhYm91
dCBhbmQgamF2YXNjcmlwdCBzY2hlbWVzLCB0aGlzCisgICAgICAgICAgICAgIHBhdGNoIG1vdmVz
IHRoZW0gaW50byB0aGUgZ2VuZXJhbCBjYXNlIG9mIHNjaGVtZXMgd2l0aCB1bmlxdWUKKyAgICAg
ICAgICAgICAgb3JpZ2lucy4KKwogMjAxMS0xMS0wOSAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9A
dGhlb2xsaXZpZXJzLmNvbT4KIAogICAgICAgICBbd3hdIFVucmV2aWV3ZWQgYnVpbGQgZml4LiBB
ZGQgc3R1YiBmb3IgbmV3IG1ldGhvZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2
aXNpb24gOTk3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNzI5LDcgKzE3MjksNyBAQCB2b2lkIERvY3VtZW50OjpzZXRJc1ZpZXdTb3Vy
Y2UoYm9vbCBpc1ZpCiAgICAgaWYgKCFtX2lzVmlld1NvdXJjZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlP
cmlnaW46OmNyZWF0ZSh1cmwoKSwgdHJ1ZSkpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OnNldFNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKSk7CiB9CiAK
IHZvaWQgRG9jdW1lbnQ6OmNyZWF0ZVN0eWxlU2VsZWN0b3IoKQpAQCAtNDM5Miw4ICs0MzkyLDgg
QEAgYm9vbCBEb2N1bWVudDo6dXNlU2VjdXJlS2V5Ym9hcmRFbnRyeVdoZQogCiB2b2lkIERvY3Vt
ZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKIHsKLSAgICBpZiAoc2VjdXJpdHlPcmlnaW4oKSAm
JiAhc2VjdXJpdHlPcmlnaW4oKS0+aXNFbXB0eSgpKQotICAgICAgICByZXR1cm47IC8vIG1fc2Vj
dXJpdHlPcmlnaW4gaGFzIGFscmVhZHkgYmVlbiBpbml0aWFsaXplZC4KKyAgICBpZiAoc2VjdXJp
dHlPcmlnaW4oKSAmJiAhZmFpbGVkVG9Jbmhlcml0U2VjdXJpdHlPcmlnaW4oKSkKKyAgICAgICAg
cmV0dXJuOwogCiAgICAgaWYgKCFtX2ZyYW1lKSB7CiAgICAgICAgIC8vIE5vIHNvdXJjZSBmb3Ig
YSBzZWN1cml0eSBjb250ZXh0LgpAQCAtNDQwOCw3ICs0NDA4LDcgQEAgdm9pZCBEb2N1bWVudDo6
aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgLy8gbG9hZGluZyBVUkwgd2l0aCBhIGZyZXNoIGNv
bnRlbnQgc2VjdXJpdHkgcG9saWN5LgogICAgIG1fY29va2llVVJMID0gbV91cmw7CiAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6ZW5mb3JjZVNhbmRib3hGbGFncyhtX2ZyYW1lLT5sb2FkZXIo
KS0+ZWZmZWN0aXZlU2FuZGJveEZsYWdzKCkpOwotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OnNldFNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwsIGlzU2FuZGJv
eGVkKFNhbmRib3hPcmlnaW4pKSk7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0U2Vj
dXJpdHlPcmlnaW4oaXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikgPyBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlVW5pcXVlKCkgOiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKSk7CiAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0Q29udGVudFNlY3VyaXR5UG9saWN5KENvbnRlbnRTZWN1
cml0eVBvbGljeTo6Y3JlYXRlKHRoaXMpKTsKIAogICAgIGlmIChTZWN1cml0eVBvbGljeTo6YWxs
b3dTdWJzdGl0dXRlRGF0YUFjY2Vzc1RvTG9jYWwoKSkgewpAQCAtNDQxNiw3ICs0NDE2LDcgQEAg
dm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgICAgIC8vIGxvYWQgbG9j
YWwgcmVzb3VyY2VzLiAgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjc1NgogICAgICAgICAvLyBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NzYwIGZvciBmdXJ0aGVyCiAgICAgICAgIC8vIGRpc2N1c3Npb24uCi0gICAgICAg
IAorCiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGxvYWRlcigpOwog
ICAgICAgICBpZiAoZG9jdW1lbnRMb2FkZXIgJiYgZG9jdW1lbnRMb2FkZXItPnN1YnN0aXR1dGVE
YXRhKCkuaXNWYWxpZCgpKQogICAgICAgICAgICAgc2VjdXJpdHlPcmlnaW4oKS0+Z3JhbnRMb2Fk
TG9jYWxSZXNvdXJjZXMoKTsKQEAgLTQ0NDAsOSArNDQ0MCwxMiBAQCB2b2lkIERvY3VtZW50Ojpp
bml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghc2VjdXJp
dHlPcmlnaW4oKS0+aXNFbXB0eSgpKQorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGluaGVy
aXQgb3VyIHNlY3VyaXR5IG9yaWdpbiBpZiB3ZSdyZSBzYW5kYm94ZWQuCisgICAgaWYgKG1fdXJs
LmlzVmFsaWQoKSAmJiAhbV91cmwucHJvdG9jb2xJcygiYWJvdXQiKSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgQVNTRVJUKHNlY3VyaXR5T3JpZ2luKCktPmlzVW5pcXVlKCkpOworCiAgICAgLy8g
SWYgd2UgZG8gbm90IG9idGFpbiBhIG1lYW5pbmdmdWwgb3JpZ2luIGZyb20gdGhlIFVSTCwgdGhl
biB3ZSB0cnkgdG8KICAgICAvLyBmaW5kIG9uZSB2aWEgdGhlIGZyYW1lIGhpZXJhcmNoeS4KIApA
QCAtNDQ1MCwxNCArNDQ1MywxNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0
KCkKICAgICBpZiAoIW93bmVyRnJhbWUpCiAgICAgICAgIG93bmVyRnJhbWUgPSBtX2ZyYW1lLT5s
b2FkZXIoKS0+b3BlbmVyKCk7CiAKLSAgICBpZiAob3duZXJGcmFtZSkgewotICAgICAgICBtX2Nv
b2tpZVVSTCA9IG93bmVyRnJhbWUtPmRvY3VtZW50KCktPmNvb2tpZVVSTCgpOwotICAgICAgICAv
LyBXZSBhbGlhcyB0aGUgU2VjdXJpdHlPcmlnaW5zIHRvIG1hdGNoIEZpcmVmb3gsIHNlZSBCdWcg
MTUzMTMKLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MzEzCi0gICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNldFNlY3VyaXR5T3JpZ2lu
KG93bmVyRnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpOwotICAgICAgICAvLyBG
SVhNRTogQ29uc2lkZXIgbW92aW5nIG1fY29udGVudFNlY3VyaXR5UG9saWN5IGludG8gU2VjdXJp
dHlPcmlnaW4uCi0gICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNldENvbnRlbnRTZWN1
cml0eVBvbGljeShvd25lckZyYW1lLT5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3ko
KSk7CisgICAgaWYgKCFvd25lckZyYW1lKSB7CisgICAgICAgIGRpZEZhaWxUb0luaGVyaXRTZWN1
cml0eU9yaWdpbigpOworICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgbV9jb29raWVVUkwg
PSBvd25lckZyYW1lLT5kb2N1bWVudCgpLT5jb29raWVVUkwoKTsKKyAgICAvLyBXZSBhbGlhcyB0
aGUgU2VjdXJpdHlPcmlnaW5zIHRvIG1hdGNoIEZpcmVmb3gsIHNlZSBCdWcgMTUzMTMKKyAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzMTMKKyAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OjpzZXRTZWN1cml0eU9yaWdpbihvd25lckZyYW1lLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICAvLyBGSVhNRTogQ29uc2lkZXIgbW92aW5nIG1f
Y29udGVudFNlY3VyaXR5UG9saWN5IGludG8gU2VjdXJpdHlPcmlnaW4uCisgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6c2V0Q29udGVudFNlY3VyaXR5UG9saWN5KG93bmVyRnJhbWUtPmRvY3Vt
ZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6c2V0
U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKQpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAJKHJldmlzaW9uIDk5NzI4KQorKysgU291
cmNlL1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDcgKzM0LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2VjdXJpdHlDb250ZXh0OjpTZWN1
cml0eUNvbnRleHQoKQotICAgIDogbV9zYW5kYm94RmxhZ3MoU2FuZGJveE5vbmUpCisgICAgOiBt
X2ZhaWxlZFRvSW5oZXJpdFNlY3VyaXR5T3JpZ2luKGZhbHNlKQorICAgICwgbV9zYW5kYm94Rmxh
Z3MoU2FuZGJveE5vbmUpCiB7CiB9CiAKQEAgLTQ1LDYgKzQ2LDcgQEAgU2VjdXJpdHlDb250ZXh0
Ojp+U2VjdXJpdHlDb250ZXh0KCkKIHZvaWQgU2VjdXJpdHlDb250ZXh0OjpzZXRTZWN1cml0eU9y
aWdpbihQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbikKIHsKICAgICBt
X3NlY3VyaXR5T3JpZ2luID0gc2VjdXJpdHlPcmlnaW47CisgICAgbV9mYWlsZWRUb0luaGVyaXRT
ZWN1cml0eU9yaWdpbiA9IGZhbHNlOwogfQogCiB2b2lkIFNlY3VyaXR5Q29udGV4dDo6c2V0Q29u
dGVudFNlY3VyaXR5UG9saWN5KFBhc3NSZWZQdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBjb250
ZW50U2VjdXJpdHlQb2xpY3kpCkBAIC01Miw2ICs1NCwxNSBAQCB2b2lkIFNlY3VyaXR5Q29udGV4
dDo6c2V0Q29udGVudFNlY3VyaXR5CiAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3kgPSBjb250
ZW50U2VjdXJpdHlQb2xpY3k7CiB9CiAKK2Jvb2wgU2VjdXJpdHlDb250ZXh0Ojppc1NlY3VyZVRy
YW5zaXRpb25Ubyhjb25zdCBLVVJMJiB1cmwpIGNvbnN0Cit7CisgICAgaWYgKG1fZmFpbGVkVG9J
bmhlcml0U2VjdXJpdHlPcmlnaW4pCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgUmVmUHRy
PFNlY3VyaXR5T3JpZ2luPiBvdGhlciA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKTsKKyAg
ICByZXR1cm4gc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzKG90aGVyLmdldCgpKTsKK30KKwog
U2FuZGJveEZsYWdzIFNlY3VyaXR5Q29udGV4dDo6cGFyc2VTYW5kYm94UG9saWN5KGNvbnN0IFN0
cmluZyYgcG9saWN5KQogewogICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3RoZS1p
ZnJhbWUtZWxlbWVudC5odG1sI2F0dHItaWZyYW1lLXNhbmRib3gKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vU2VjdXJpdHlDb250ZXh0LmgJKHJldmlzaW9uIDk5NzI4KQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL1NlY3VyaXR5Q29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw5IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgU2VjdXJpdHlPcmlnaW47CiBjbGFzcyBDb250
ZW50U2VjdXJpdHlQb2xpY3k7CitjbGFzcyBLVVJMOworY2xhc3MgU2VjdXJpdHlPcmlnaW47CiAK
IGVudW0gU2FuZGJveEZsYWcgewogICAgIFNhbmRib3hOb25lID0gMCwKQEAgLTU5LDYgKzYwLDgg
QEAgcHVibGljOgogICAgIHZvaWQgZW5mb3JjZVNhbmRib3hGbGFncyhTYW5kYm94RmxhZ3MgbWFz
aykgeyBtX3NhbmRib3hGbGFncyB8PSBtYXNrOyB9CiAgICAgYm9vbCBpc1NhbmRib3hlZChTYW5k
Ym94RmxhZ3MgbWFzaykgY29uc3QgeyByZXR1cm4gbV9zYW5kYm94RmxhZ3MgJiBtYXNrOyB9CiAK
KyAgICBib29sIGlzU2VjdXJlVHJhbnNpdGlvblRvKGNvbnN0IEtVUkwmKSBjb25zdDsKKwogICAg
IHN0YXRpYyBTYW5kYm94RmxhZ3MgcGFyc2VTYW5kYm94UG9saWN5KGNvbnN0IFN0cmluZyYgcG9s
aWN5KTsKIAogcHJvdGVjdGVkOgpAQCAtNzEsNyArNzQsMTEgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgc2V0U2VjdXJpdHlPcmlnaW4oUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4pOwogICAgIHZv
aWQgc2V0Q29udGVudFNlY3VyaXR5UG9saWN5KFBhc3NSZWZQdHI8Q29udGVudFNlY3VyaXR5UG9s
aWN5Pik7CiAKKyAgICB2b2lkIGRpZEZhaWxUb0luaGVyaXRTZWN1cml0eU9yaWdpbigpIHsgbV9m
YWlsZWRUb0luaGVyaXRTZWN1cml0eU9yaWdpbiA9IHRydWU7IH0KKyAgICBib29sIGZhaWxlZFRv
SW5oZXJpdFNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9mYWlsZWRUb0luaGVyaXRT
ZWN1cml0eU9yaWdpbjsgfQorCiBwcml2YXRlOgorICAgIGJvb2wgbV9mYWlsZWRUb0luaGVyaXRT
ZWN1cml0eU9yaWdpbjsKICAgICBTYW5kYm94RmxhZ3MgbV9zYW5kYm94RmxhZ3M7CiAgICAgUmVm
UHRyPFNlY3VyaXR5T3JpZ2luPiBtX3NlY3VyaXR5T3JpZ2luOwogICAgIFJlZlB0cjxDb250ZW50
U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5OwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCShyZXZpc2lvbiA5OTcyOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
NCw3ICsxMjQsNyBAQCB2b2lkIERvY3VtZW50V3JpdGVyOjpiZWdpbihjb25zdCBLVVJMJiB1CiAK
ICAgICAvLyBGSVhNRTogRG8gd2UgbmVlZCB0byBjb25zdWx0IHRoZSBjb250ZW50IHNlY3VyaXR5
IHBvbGljeSBoZXJlIGFib3V0IGJsb2NrZWQgcGx1Zy1pbnM/CiAKLSAgICBib29sIHJlc2V0U2Ny
aXB0aW5nID0gIShtX2ZyYW1lLT5sb2FkZXIoKS0+c3RhdGVNYWNoaW5lKCktPmlzRGlzcGxheWlu
Z0luaXRpYWxFbXB0eURvY3VtZW50KCkgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKS0+aXNTZWN1cmVUcmFuc2l0aW9uVG8odXJsKSk7CisgICAgYm9vbCByZXNldFNjcmlw
dGluZyA9ICEobV9mcmFtZS0+bG9hZGVyKCktPnN0YXRlTWFjaGluZSgpLT5pc0Rpc3BsYXlpbmdJ
bml0aWFsRW1wdHlEb2N1bWVudCgpICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPmlzU2VjdXJlVHJh
bnNpdGlvblRvKHVybCkpOwogICAgIG1fZnJhbWUtPmxvYWRlcigpLT5jbGVhcihyZXNldFNjcmlw
dGluZywgcmVzZXRTY3JpcHRpbmcpOwogICAgIGNsZWFyKCk7CiAgICAgaWYgKHJlc2V0U2NyaXB0
aW5nKQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA5
OTcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM5NCw3ICszOTQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyhV
bmxvYWRFdmVuCiAgICAgICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpICYmICFtX2ZyYW1lLT5k
b2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKSB7CiAgICAgICAgICAgICAvLyBEb24ndCByZW1vdmUg
ZXZlbnQgbGlzdGVuZXJzIGZyb20gYSB0cmFuc2l0aW9uYWwgZW1wdHkgZG9jdW1lbnQgKHNlZSBi
dWcgMjg3MTYgZm9yIG1vcmUgaW5mb3JtYXRpb24pLgogICAgICAgICAgICAgYm9vbCBrZWVwRXZl
bnRMaXN0ZW5lcnMgPSBtX3N0YXRlTWFjaGluZS5pc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1
bWVudCgpICYmIG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcgotICAgICAgICAgICAgICAgICYm
IG1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmlzU2VjdXJlVHJhbnNpdGlv
blRvKG1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+dXJsKCkpOworICAgICAgICAgICAgICAg
ICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPmlzU2VjdXJlVHJhbnNpdGlvblRvKG1fcHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlci0+dXJsKCkpOwogCiAgICAgICAgICAgICBpZiAoIWtlZXBFdmVudExp
c3RlbmVycykKICAgICAgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5yZW1vdmVBbGxF
dmVudExpc3RlbmVycygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAkocmV2aXNp
b24gOTk3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTg3OCw3ICs4NzgsNyBAQCB2b2lkIERPTVdpbmRvdzo6cG9zdE1lc3NhZ2UoUGFz
c1JlZlB0cjxTCiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0YXJnZXQ7CiAgICAgaWYgKHRh
cmdldE9yaWdpbiAhPSAiKiIpIHsKICAgICAgICAgdGFyZ2V0ID0gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZUZyb21TdHJpbmcodGFyZ2V0T3JpZ2luKTsKLSAgICAgICAgaWYgKHRhcmdldC0+aXNFbXB0
eSgpKSB7CisgICAgICAgIGlmICh0YXJnZXQtPmlzVW5pcXVlKCkpIHsKICAgICAgICAgICAgIGVj
ID0gU1lOVEFYX0VSUjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAJKHJldmlzaW9uIDk5NzI4KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDgwICs0Myw4NSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IGludCBNYXhBbGxvd2Vk
UG9ydCA9IDY1NTM1OwogCi1zdGF0aWMgYm9vbCBzY2hlbWVSZXF1aXJlc0F1dGhvcml0eShjb25z
dCBTdHJpbmcmIHNjaGVtZSkKK3N0YXRpYyBib29sIHNjaGVtZVJlcXVpcmVzQXV0aG9yaXR5KGNv
bnN0IEtVUkwmIHVybCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVtZXNNYXAs
IHNjaGVtZXMsICgpKTsKKyAgICByZXR1cm4gdXJsLnByb3RvY29sSXMoImh0dHAiKSB8fCB1cmwu
cHJvdG9jb2xJcygiaHR0cHMiKSB8fCB1cmwucHJvdG9jb2xJcygiZnRwIik7Cit9CisKK3N0YXRp
YyBib29sIHNob3VsZFVzZUlubmVyVVJMKGNvbnN0IEtVUkwmIHVybCkKK3sKKyAgICAvLyBGSVhN
RTogU2hvdWxkIHdlIHVzZSB0aGUgaW5uZXIgSFRNTCBldmVuIHdoZW4gQkxPQiBhbmQgRklMRV9T
WVNURU0gYXJlIGRpc2FibGVkPworI2lmIEVOQUJMRShCTE9CKQorICAgIGlmICh1cmwucHJvdG9j
b2xJcygiYmxvYiIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShG
SUxFX1NZU1RFTSkKKyAgICBpZiAodXJsLnByb3RvY29sSXMoImZpbGVzeXN0ZW0iKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBL
VVJMIGV4dHJhY3RJbm5lclVSTChjb25zdCBLVVJMJiB1cmwpCit7CisgICAgcmV0dXJuIEtVUkwo
UGFyc2VkVVJMU3RyaW5nLCBkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXModXJsLnBhdGgoKSkpOwor
fQogCi0gICAgaWYgKHNjaGVtZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHNjaGVtZXMuYWRkKCJo
dHRwIik7Ci0gICAgICAgIHNjaGVtZXMuYWRkKCJodHRwcyIpOwotICAgICAgICBzY2hlbWVzLmFk
ZCgiZnRwIik7CitzdGF0aWMgYm9vbCBzaG91bGRUcmVhdEFzVW5pcXVlT3JpZ2luKGNvbnN0IEtV
UkwmIHVybCkKK3sKKyAgICBpZiAoIXVybC5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgLy8gRklYTUU6IERvIHdlIG5lZWQgdG8gdW53cmFwIHRoZSBVUkwgZnVydGhlcj8K
KyAgICBLVVJMIGVmZmVjdGl2ZVVSTCA9IHNob3VsZFVzZUlubmVyVVJMKHVybCkgPyBleHRyYWN0
SW5uZXJVUkwodXJsKSA6IHVybDsKKworICAgIC8vIEZJWE1FOiBDaGVjayB3aGV0aGVyIGVmZmVj
dGl2ZVVSTCBpcyB2YWxpZC4KKworICAgIC8vIEZvciBlZGdlIGNhc2UgVVJMcyB0aGF0IHdlcmUg
cHJvYmFibHkgbWlzcGFyc2VkLCBtYWtlIHN1cmUgdGhhdCB0aGUgb3JpZ2luIGlzIHVuaXF1ZS4K
KyAgICBpZiAoc2NoZW1lUmVxdWlyZXNBdXRob3JpdHkoZWZmZWN0aXZlVVJMKSAmJiBlZmZlY3Rp
dmVVUkwuaG9zdCgpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBTdHJp
bmcgcHJvdG9jb2wgPSBlZmZlY3RpdmVVUkwucHJvdG9jb2woKS5sb3dlcigpOworCisgICAgaWYg
KFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTm9BY2Nlc3MocHJvdG9jb2wp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIFdlIHVzZSB1bmlxdWUgb3JpZ2lucyBm
b3IgZGlyZWN0b3J5IGxpc3RpbmdzIHRvIG1ha2UgaXQgaGFyZGVyIHRvIGNyYXdsIGEgbG9jYWwg
ZmlsZXN5c3RlbS4KKyAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1l
QXNMb2NhbChwcm90b2NvbCkKKyAgICAgICAgJiYgIXNob3VsZFVzZUlubmVyVVJMKHVybCkgLy8g
Tm90ZSB0aGUgdXNlIG9mIHVybCByYXRoZXIgdGhhbiBlZmZlY3RpdmVVUkwuCisgICAgICAgICYm
ICghZWZmZWN0aXZlVVJMLmhhc1BhdGgoKSB8fCBlZmZlY3RpdmVVUkwucGF0aCgpLmVuZHNXaXRo
KCIvIikpKSB7CisgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYmUgdXNpbmcgc2hvdWxkVXNl
SW5uZXJVUkwgaGVyZT8KKyAgICAgICAgLy8gV2Ugb3JpZ2luYWxseSBkaWQgdGhhdCBjaGVjayB0
byBhdm9pZCB0cmVhdGluZyBibG9iIGFuZCBmaWxlc3lzdGVtCisgICAgICAgIC8vIHVybHMgYXMg
dW5pcXVlIHdoZW4gaXQgaXMgY3JlYXRlZCBmcm9tIGxvY2FsIGZpbGUgdXJscy4KKyAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgcmV0dXJuIHNjaGVtZXMuY29udGFpbnMoc2NoZW1l
KTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdp
bihjb25zdCBLVVJMJiB1cmwsIGJvb2wgZm9yY2VVbmlxdWUpCiAgICAgOiBtX3Byb3RvY29sKHVy
bC5wcm90b2NvbCgpLmlzTnVsbCgpID8gIiIgOiB1cmwucHJvdG9jb2woKS5sb3dlcigpKQogICAg
ICwgbV9ob3N0KHVybC5ob3N0KCkuaXNOdWxsKCkgPyAiIiA6IHVybC5ob3N0KCkubG93ZXIoKSkK
ICAgICAsIG1fcG9ydCh1cmwucG9ydCgpKQotICAgICwgbV9pc1VuaXF1ZShmb3JjZVVuaXF1ZSB8
fCBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc05vQWNjZXNzKG1fcHJvdG9j
b2wpKQorICAgICwgbV9pc1VuaXF1ZSghdXJsLmlzVmFsaWQoKSkKICAgICAsIG1fdW5pdmVyc2Fs
QWNjZXNzKGZhbHNlKQogICAgICwgbV9kb21haW5XYXNTZXRJbkRPTShmYWxzZSkKICAgICAsIG1f
ZW5mb3JjZUZpbGVQYXRoU2VwYXJhdGlvbihmYWxzZSkKIHsKLSAgICAvLyBUaGVzZSBwcm90b2Nv
bHMgZG8gbm90IGNyZWF0ZSBzZWN1cml0eSBvcmlnaW5zOyB0aGUgb3duZXIgZnJhbWUgcHJvdmlk
ZXMgdGhlIG9yaWdpbgotICAgIGlmIChtX3Byb3RvY29sID09ICJhYm91dCIgfHwgbV9wcm90b2Nv
bCA9PSAiamF2YXNjcmlwdCIpCi0gICAgICAgIG1fcHJvdG9jb2wgPSAiIjsKLQotI2lmIEVOQUJM
RShCTE9CKSB8fCBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgYm9vbCBpc0Jsb2JPckZpbGVTeXN0
ZW1Qcm90b2NvbCA9IGZhbHNlOwotI2lmIEVOQUJMRShCTE9CKQotICAgIGlmIChtX3Byb3RvY29s
ID09IEJsb2JVUkw6OmJsb2JQcm90b2NvbCgpKQotICAgICAgICBpc0Jsb2JPckZpbGVTeXN0ZW1Q
cm90b2NvbCA9IHRydWU7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoRklMRV9TWVNURU0pCi0gICAgaWYg
KG1fcHJvdG9jb2wgPT0gImZpbGVzeXN0ZW0iKQotICAgICAgICBpc0Jsb2JPckZpbGVTeXN0ZW1Q
cm90b2NvbCA9IHRydWU7Ci0jZW5kaWYKLSAgICBpZiAoaXNCbG9iT3JGaWxlU3lzdGVtUHJvdG9j
b2wpIHsKLSAgICAgICAgS1VSTCBvcmlnaW5VUkwoUGFyc2VkVVJMU3RyaW5nLCBkZWNvZGVVUkxF
c2NhcGVTZXF1ZW5jZXModXJsLnBhdGgoKSkpOwotICAgICAgICBpZiAob3JpZ2luVVJMLmlzVmFs
aWQoKSkgewotICAgICAgICAgICAgbV9wcm90b2NvbCA9IG9yaWdpblVSTC5wcm90b2NvbCgpLmxv
d2VyKCk7Ci0gICAgICAgICAgICBtX2hvc3QgPSBvcmlnaW5VUkwuaG9zdCgpLmxvd2VyKCk7Ci0g
ICAgICAgICAgICBtX3BvcnQgPSBvcmlnaW5VUkwucG9ydCgpOwotICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIG1faXNVbmlxdWUgPSB0cnVlOwotICAgIH0KLSNlbmRpZgotCi0gICAgLy8gRm9y
IGVkZ2UgY2FzZSBVUkxzIHRoYXQgd2VyZSBwcm9iYWJseSBtaXNwYXJzZWQsIG1ha2Ugc3VyZSB0
aGF0IHRoZSBvcmlnaW4gaXMgdW5pcXVlLgotICAgIGlmIChzY2hlbWVSZXF1aXJlc0F1dGhvcml0
eShtX3Byb3RvY29sKSAmJiBtX2hvc3QuaXNFbXB0eSgpKQotICAgICAgICBtX2lzVW5pcXVlID0g
dHJ1ZTsKLSAgICBpZiAobV9wcm90b2NvbC5pc0VtcHR5KCkpCi0gICAgICAgIG1faXNVbmlxdWUg
PSB0cnVlOworICAgIC8vIEZJWE1FOiBSZW1vdmUgZm9yY2VVbmlxdWUgcGFyYW1ldGVyLgorICAg
IEFTU0VSVF9VTlVTRUQoZm9yY2VVbmlxdWUsICFmb3JjZVVuaXF1ZSk7CiAKICAgICAvLyBkb2N1
bWVudC5kb21haW4gc3RhcnRzIGFzIG1faG9zdCwgYnV0IGNhbiBiZSBzZXQgYnkgdGhlIERPTS4K
ICAgICBtX2RvbWFpbiA9IG1faG9zdDsKIAorICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9j
b2wobV9wb3J0LCBtX3Byb3RvY29sKSkKKyAgICAgICAgbV9wb3J0ID0gMDsKKwogICAgIC8vIEJ5
IGRlZmF1bHQsIG9ubHkgbG9jYWwgU2VjdXJpdHlPcmlnaW5zIGNhbiBsb2FkIGxvY2FsIHJlc291
cmNlcy4KICAgICBtX2NhbkxvYWRMb2NhbFJlc291cmNlcyA9IGlzTG9jYWwoKTsKLSAgICBpZiAo
bV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXMpIHsKLSAgICAgICAgLy8gRGlyZWN0b3JpZXMgc2hvdWxk
IG5ldmVyIGJlIHJlYWRhYmxlLgotICAgICAgICAvLyBOb3RlIHRoYXQgd2UgZG8gbm90IGRvIHRo
aXMgY2hlY2sgZm9yIGJsb2Igb3IgZmlsZXN5c3RlbSB1cmwgYmVjYXVzZSBpdHMgb3JpZ2luIGlz
IGZpbGU6Ly8vIHdoZW4gaXQgaXMgY3JlYXRlZCBmcm9tIGxvY2FsIGZpbGUgdXJscy4KLSNpZiBF
TkFCTEUoQkxPQikgfHwgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgICAgICBib29sIGRvRGlyZWN0
b3J5Q2hlY2sgPSAhaXNCbG9iT3JGaWxlU3lzdGVtUHJvdG9jb2w7Ci0jZWxzZQotICAgICAgICBi
b29sIGRvRGlyZWN0b3J5Q2hlY2sgPSB0cnVlOwotI2VuZGlmCi0gICAgICAgIGlmIChkb0RpcmVj
dG9yeUNoZWNrICYmICghdXJsLmhhc1BhdGgoKSB8fCB1cmwucGF0aCgpLmVuZHNXaXRoKCIvIikp
KQotICAgICAgICAgICAgbV9pc1VuaXF1ZSA9IHRydWU7Ci0gICAgICAgIC8vIFN0b3JlIHRoZSBw
YXRoIGluIGNhc2Ugd2UgYXJlIGRvaW5nIHBlci1maWxlIG9yaWdpbiBjaGVja2luZy4KLSAgICAg
ICAgbV9maWxlUGF0aCA9IHVybC5wYXRoKCk7Ci0gICAgfQogCi0gICAgaWYgKGlzRGVmYXVsdFBv
cnRGb3JQcm90b2NvbChtX3BvcnQsIG1fcHJvdG9jb2wpKQotICAgICAgICBtX3BvcnQgPSAwOwor
ICAgIGlmIChtX2NhbkxvYWRMb2NhbFJlc291cmNlcykKKyAgICAgICAgbV9maWxlUGF0aCA9IHVy
bC5wYXRoKCk7IC8vIEluIGNhc2UgZW5mb3JjZUZpbGVQYXRoU2VwYXJhdGlvbigpIGlzIGNhbGxl
ZC4KIH0KIAogU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNvbnN0IFNlY3VyaXR5T3Jp
Z2luKiBvdGhlcikKQEAgLTEzNCwxNiArMTM5LDEyIEBAIFNlY3VyaXR5T3JpZ2luOjpTZWN1cml0
eU9yaWdpbihjb25zdCBTZWMKIHsKIH0KIAotYm9vbCBTZWN1cml0eU9yaWdpbjo6aXNFbXB0eSgp
IGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFtX3Byb3RvY29sLmlzRW1wdHkoKSB8fCBtX2lzVW5pcXVl
KTsKLSAgICByZXR1cm4gbV9wcm90b2NvbC5pc0VtcHR5KCk7Ci19Ci0KIFBhc3NSZWZQdHI8U2Vj
dXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29uc3QgS1VSTCYgdXJsLCBib29s
IGZvcmNlVW5pcXVlKQogewotICAgIGlmICghdXJsLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBTZWN1cml0eU9yaWdpbihibGFua1VSTCgpLCBmb3JjZVVuaXF1ZSkpOwor
ICAgIGlmIChzaG91bGRUcmVhdEFzVW5pcXVlT3JpZ2luKHVybCkpCisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU2VjdXJpdHlPcmlnaW4oS1VSTCgpLCBmb3JjZVVuaXF1ZSkpOworICAgIGlm
IChzaG91bGRVc2VJbm5lclVSTCh1cmwpKQorICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNl
Y3VyaXR5T3JpZ2luKGV4dHJhY3RJbm5lclVSTCh1cmwpLCBmb3JjZVVuaXF1ZSkpOwogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU2VjdXJpdHlPcmlnaW4odXJsLCBmb3JjZVVuaXF1ZSkpOwogfQog
CkBAIC0zNDUsMTYgKzM0Niw2IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmlzTG9jYWwoKSBjb25z
dAogICAgIHJldHVybiBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2Fs
KG1fcHJvdG9jb2wpOwogfQogCi1ib29sIFNlY3VyaXR5T3JpZ2luOjppc1NlY3VyZVRyYW5zaXRp
b25Ubyhjb25zdCBLVVJMJiB1cmwpIGNvbnN0Ci17Ci0gICAgLy8gVGhpcyBvcmlnaW4gcmVwcmVz
ZW50cyBhIG5ldyB3aW5kb3cgY3JlYXRlZCBieSB0aGUgYXBwbGljYXRpb24uCi0gICAgaWYgKGlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IG90aGVyID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOwotICAgIHJldHVybiBjYW5B
Y2Nlc3Mob3RoZXIuZ2V0KCkpOwotfQotCiBTdHJpbmcgU2VjdXJpdHlPcmlnaW46OnRvU3RyaW5n
KCkgY29uc3QKIHsKICAgICBpZiAoaXNVbmlxdWUoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2VjdXJpdHlPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmgJKHJldmlzaW9uIDk5NzI4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjEsOCArMTIxLDYgQEAgcHVibGlj
OgogICAgIC8vIG9yaWdpbnMuCiAgICAgYm9vbCBjYW5BY2Nlc3NTZXNzaW9uU3RvcmFnZSgpIGNv
bnN0IHsgcmV0dXJuICFpc1VuaXF1ZSgpOyB9CiAKLSAgICBib29sIGlzU2VjdXJlVHJhbnNpdGlv
blRvKGNvbnN0IEtVUkwmKSBjb25zdDsKLQogICAgIC8vIFRoZSBsb2NhbCBTZWN1cml0eU9yaWdp
biBpcyB0aGUgbW9zdCBwcml2aWxlZ2VkIFNlY3VyaXR5T3JpZ2luLgogICAgIC8vIFRoZSBsb2Nh
bCBTZWN1cml0eU9yaWdpbiBjYW4gc2NyaXB0IGFueSBkb2N1bWVudCwgbmF2aWdhdGUgdG8gbG9j
YWwKICAgICAvLyByZXNvdXJjZXMsIGFuZCBjYW4gc2V0IGFyYml0cmFyeSBoZWFkZXJzIG9uIFhN
TEh0dHBSZXF1ZXN0cy4KQEAgLTEzNiwxMyArMTM0LDYgQEAgcHVibGljOgogICAgIC8vIGFkZGl0
aW9uLCB0aGUgU2FuZGJveE9yaWdpbiBmbGFnIGlzIGluaGVyaXRlZCBieSBpZnJhbWVzLgogICAg
IGJvb2wgaXNVbmlxdWUoKSBjb25zdCB7IHJldHVybiBtX2lzVW5pcXVlOyB9CiAKLSAgICAvLyBU
aGUgZW1wdHkgU2VjdXJpdHlPcmlnaW4gaXMgYSB1bmlxdWUgc2VjdXJpdHkgb3JpZ24gKGluIHRo
ZSBzZW5zZSBvZgotICAgIC8vIGlzVW5pcXVlIGFib3ZlKSB0aGF0IHdhcyBjcmVhdGVkIGZvciBh
ICJibGFuayIgZG9jdW1lbnQsIHN1Y2ggYWJvdXQKLSAgICAvLyBhYm91dDpibGFuay4gRW1wdHkg
b3JpZ2lucyBkaWZmZXIgZnJvbSB1bmlxdWUgb3JpZ2lucyBpbiB0aGF0IHRoZXkgY2FuCi0gICAg
Ly8gc29tZXRpbWVzIGJlIHJlcGxhY2VkIGJ5IG5vbi1lbXB0eSBvcmlnaW5zLCBmb3IgZXhhbXBs
ZSB3aGVuIGFuCi0gICAgLy8gYWJvdXQ6YmxhbmsgaWZyYW1lIGluaGVyaXRzIGl0cyBzZWN1cml0
eSBvcmlnaW4gZnJvbSBpdHMgcGFyZW50IGZyYW1lLgotICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0
OwotCiAgICAgLy8gTWFya3MgYSBmaWxlOi8vIG9yaWdpbiBhcyBiZWluZyBpbiBhIGRvbWFpbiBk
ZWZpbmVkIGJ5IGl0cyBwYXRoLgogICAgIHZvaWQgZW5mb3JjZUZpbGVQYXRoU2VwYXJhdGlvbigp
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAkocmV2aXNpb24g
OTk3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTksOCArOTksOCBAQCBib29sIFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1Rv
VVJMV2hpdGVMCiB2b2lkIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RF
bnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRl
c3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Eb21haW4sIGJvb2wg
YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBBU1NFUlQoIXNvdXJjZU9yaWdpbi5pc0VtcHR5KCkpOwotICAgIGlmIChzb3VyY2VP
cmlnaW4uaXNFbXB0eSgpKQorICAgIEFTU0VSVCghc291cmNlT3JpZ2luLmlzVW5pcXVlKCkpOwor
ICAgIGlmIChzb3VyY2VPcmlnaW4uaXNVbmlxdWUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
U3RyaW5nIHNvdXJjZVN0cmluZyA9IHNvdXJjZU9yaWdpbi50b1N0cmluZygpOwpAQCAtMTE1LDgg
KzExNSw4IEBAIHZvaWQgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXQKIHZvaWQg
U2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFNl
Y3VyaXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90
b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkRvbWFpbiwgYm9vbCBhbGxvd0Rlc3RpbmF0
aW9uU3ViZG9tYWlucykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VS
VCghc291cmNlT3JpZ2luLmlzRW1wdHkoKSk7Ci0gICAgaWYgKHNvdXJjZU9yaWdpbi5pc0VtcHR5
KCkpCisgICAgQVNTRVJUKCFzb3VyY2VPcmlnaW4uaXNVbmlxdWUoKSk7CisgICAgaWYgKHNvdXJj
ZU9yaWdpbi5pc1VuaXF1ZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgc291cmNl
U3RyaW5nID0gc291cmNlT3JpZ2luLnRvU3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwCShyZXZpc2lvbiA5OTcyOCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgs
MTAgKzY4LDEzIEBAIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBzY2hlbWVzV2l0aFVuaXF1ZU8KIHsK
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVtZXNNYXAsIHNjaGVtZXNXaXRoVW5pcXVl
T3JpZ2lucywgKCkpOwogCi0gICAgLy8gVGhpcyBpcyBhIHdpbGxmdWwgdmlvbGF0aW9uIG9mIEhU
TUw1LgotICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTE4ODUKLSAgICBpZiAoc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmlzRW1wdHkoKSkKKyAgICBp
ZiAoc2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmlzRW1wdHkoKSkgeworICAgICAgICBzY2hlbWVz
V2l0aFVuaXF1ZU9yaWdpbnMuYWRkKCJhYm91dCIpOworICAgICAgICBzY2hlbWVzV2l0aFVuaXF1
ZU9yaWdpbnMuYWRkKCJqYXZhc2NyaXB0Iik7CisgICAgICAgIC8vIFRoaXMgaXMgYSB3aWxsZnVs
IHZpb2xhdGlvbiBvZiBIVE1MNS4KKyAgICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMTg4NQogICAgICAgICBzY2hlbWVzV2l0aFVuaXF1ZU9yaWdp
bnMuYWRkKCJkYXRhIik7CisgICAgfQogCiAgICAgcmV0dXJuIHNjaGVtZXNXaXRoVW5pcXVlT3Jp
Z2luczsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTgxMikK
KysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTEtMTEtMDkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
KworICAgICAgICBVbmlxdWUgU2VjdXJpdHlPcmlnaW5zIHNob3VsZG4ndCByZW1lbWJlciB0aGVp
ciBvbGQgc2NoZW1lcyBhbmQgaG9zdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTcxNzQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhlIGNvbmNlcHQgb2YgYW4gZW1wdHkgb3JpZ2luIG5vIGxvbmdlciBl
eGlzdHMuICBJbiBhIGZvbGxvdy11cCBwYXRjaCwKKyAgICAgICAgSSdsbCByZW5hbWUgdGhpcyBB
UEkgdG8gaXNVbmlxdWUuCisKKyAgICAgICAgKiBzcmMvV2ViU2VjdXJpdHlPcmlnaW4uY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTZWN1cml0eU9yaWdpbjo6aXNFbXB0eSk6CisKIDIwMTEtMTEt
MDkgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CiAKICAgICAgICAgW2No
cm9taXVtXSBNZWRpYVN0cmVhbSBBUEk6IEFkZCBXZWJNZWRpYVN0cmVhbVJlZ2lzdHJ5CkluZGV4
OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZWN1cml0eU9yaWdpbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VjdXJpdHlPcmlnaW4uY3Bw
CShyZXZpc2lvbiA5OTcyOCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlY3Vy
aXR5T3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsMTAgKzkwLDExIEBAIHVuc2lnbmVk
IHNob3J0IFdlYlNlY3VyaXR5T3JpZ2luOjpwb3J0KCkKICAgICByZXR1cm4gbV9wcml2YXRlLT5w
b3J0KCk7CiB9CiAKKy8vIEZJWE1FOiBSZW5hbWVkIHRoaXMgQVBJIHRvIGlzVW5pcXVlKCkuCiBi
b29sIFdlYlNlY3VyaXR5T3JpZ2luOjppc0VtcHR5KCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9w
cml2YXRlKTsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5pc0VtcHR5KCk7CisgICAgcmV0dXJuIG1f
cHJpdmF0ZS0+aXNVbmlxdWUoKTsKIH0KIAogYm9vbCBXZWJTZWN1cml0eU9yaWdpbjo6Y2FuQWNj
ZXNzKGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvdGhlcikgY29uc3QKSW5kZXg6IExheW91dFRl
c3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlz
aW9uIDk5ODEyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMzAgQEAKKzIwMTEtMTEtMDkgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
KworICAgICAgICBVbmlxdWUgU2VjdXJpdHlPcmlnaW5zIHNob3VsZG4ndCByZW1lbWJlciB0aGVp
ciBvbGQgc2NoZW1lcyBhbmQgaG9zdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTcxNzQ1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vYXN5bmMtb3BlcmF0aW9ucy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL25vdC1lbm91Z2gtYXJndW1lbnRzLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vcmVhZC1kaXJlY3RvcnktZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcGVyc2lzdGVudC1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1yZWFkb25seS1l
eHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3NpbXBsZS10ZW1wb3Jhcnkt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAgICAgLSBVcGRhdGUgdGVzdCByZXN1bHRzIHRvIHNob3cg
dGhhdCB3ZSBubyBsb25nZXIgbGVhayB0aGUgc2NoZW1lIGluCisgICAgICAgICAgICAgIHN0b3Jh
Z2UgaWRlbnRpZmllcnMuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1h
dHRyaWJ1dGUtcGFyc2luZy5odG1sOgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1p
ZnJhbWUtZm9ybXMtZHluYW1pYy5odG1sOgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hl
ZC1pZnJhbWUtZm9ybXMuaHRtbDoKKyAgICAgICAgICAgIC0gUHJldmlvdXNseSBzYW5kYm94ZWQg
bG9jYWwgaWZyYW1lcyBzdGlsbCBnb3QgdW5pdmVyc2FsIGFjY2VzcworICAgICAgICAgICAgICB3
aGVuIHdlJ3JlIHJ1bm5pbmcgd2l0aCB1bml2ZXJzYWwgYWNjZXNzIGZvciBmaWxlIFVSTHMhICBO
b3cgdGhhdAorICAgICAgICAgICAgICB0aGV5IGNvcnJlY3RseSBnZXQgdW5pcXVlIG9yaWdpbnMs
IHdlIG5lZWQgdG8gdXBkYXRlIHRoZXNlIHRlc3RzCisgICAgICAgICAgICAgIHRvIGFsbG93LXNh
bWUtb3JpZ2luIGFjY2VzcyBpbiBvcmRlciBmb3IgdGhlbSB0byBmdW5jdGlvbgorICAgICAgICAg
ICAgICBwcm9wZXJseS4KKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLXN0
b3JhZ2UuaHRtbDoKKyAgICAgICAgICAgIC0gSW5saW5lIHNjcmlwdCBiZWNhdXNlIHRoZSBzYW5k
Ym94IGlmcmFtZSBpc24ndCBhbGxvd2VkIHRvIGxvYWQKKyAgICAgICAgICAgICAgbG9jYWwgcmVz
b3VyY2VzLgorCiAyMDExLTExLTA5ICBBbmRyZXcgU2NoZXJrdXMgIDxzY2hlcmt1c0BjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgTW9yZSBtZWRpYSByZWJhc2VsaW5lcyBkdWUgdG8gcjk4NTk2LgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL2FzeW5jLW9wZXJhdGlvbnMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9hc3luYy1v
cGVyYXRpb25zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTk3MjgpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vYXN5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTQsNyArNCw3IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEEKIAogCiByZXF1ZXN0ZWQgRmlsZVN5c3RlbS4KLUdvdCBGaWxlU3lzdGVtOmZpbGVfXzA6VGVt
cG9yYXJ5CitHb3QgRmlsZVN5c3RlbTpfXzA6VGVtcG9yYXJ5CiBTdGFydGluZyBhc3luYyB0ZXN0
IHN0YWdlIDEuCiBTdGFydGluZyBhc3luYyB0ZXN0IHN0YWdlIDIuCiBWZXJpZnlpbmcgdGhlIEZp
bGVTeXN0ZW0gc3RhdHVzLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL25vdC1l
bm91Z2gtYXJndW1lbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vbm90LWVub3VnaC1hcmd1bWVudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biA5OTcyOCkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9ub3QtZW5vdWdoLWFyZ3Vt
ZW50cy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsNyArMyw3IEBAIFRoaXMgdGVz
dCB0cmllcyBjYWxsaW5nIHZhcmlvdXMgZmlsZXN5c3QKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
Ii4KIAogCi1TdWNjZXNzZnVsbHkgb2J0YWluZWQgUGVyc2lzdGVudCBGaWxlU3lzdGVtOmZpbGVf
XzA6VGVtcG9yYXJ5CitTdWNjZXNzZnVsbHkgb2J0YWluZWQgUGVyc2lzdGVudCBGaWxlU3lzdGVt
Ol9fMDpUZW1wb3JhcnkKIFBBU1MgZmlsZVN5c3RlbS5yb290Lm1vdmVUbygpIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzLgogUEFTUyBmaWxlU3lzdGVtLnJv
b3QuY29weVRvKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVu
dHMuCiBQQVNTIHJlYWRlci5yZWFkRW50cmllcygpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6
IE5vdCBlbm91Z2ggYXJndW1lbnRzLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVt
L3JlYWQtZGlyZWN0b3J5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vcmVhZC1kaXJlY3RvcnktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5OTcy
OCkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9yZWFkLWRpcmVjdG9yeS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsNyArMyw3IEBAIERpcmVjdG9yeVJlYWRlci5yZWFk
RW50cmllcygpIHRlc3QuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotU3VjY2Vzc2Z1
bGx5IG9idGFpbmVkIFBlcnNpc3RlbnQgRmlsZVN5c3RlbTpmaWxlX18wOlRlbXBvcmFyeQorU3Vj
Y2Vzc2Z1bGx5IG9idGFpbmVkIFBlcnNpc3RlbnQgRmlsZVN5c3RlbTpfXzA6VGVtcG9yYXJ5CiBQ
QVNTIHJlYWRFbnRyaWVzQ291bnQgaXMgZW50cmllc0NhbGxiYWNrQ291bnQKIFBBU1MgcmVzdWx0
RW50cmllcy5sZW5ndGggaXMgdGVzdEVudHJpZXNDb3VudAogRW50cnk6L2EgaXNEaXJlY3Rvcnk6
dHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS1wZXJzaXN0ZW50
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
c2ltcGxlLXBlcnNpc3RlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5OTcyOCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcGVyc2lzdGVudC1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTMsNyArMyw3IEBAIHJlcXVlc3RGaWxlU3lzdGVtIFBFUlNJU1RFTlQg
dGVzdC4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1TdWNjZXNzZnVsbHkgb2J0YWlu
ZWQgUEVSU0lTVEVOVCBGaWxlU3lzdGVtOmZpbGVfXzA6UGVyc2lzdGVudAorU3VjY2Vzc2Z1bGx5
IG9idGFpbmVkIFBFUlNJU1RFTlQgRmlsZVN5c3RlbTpfXzA6UGVyc2lzdGVudAogUEFTUyBmaWxl
U3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCiBQQVNTIGZpbGVTeXN0ZW0ucm9vdC5mdWxs
UGF0aCBpcyAiLyIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVhZG9ubHktZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVhZG9ubHktZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA5OTcyOCkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9zaW1wbGUtcmVhZG9ubHktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02LDcgKzYs
NyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBCiB3ZWJraXRSZXF1
ZXN0RmlsZVN5c3RlbShURU1QT1JBUlksIDEwMCwgc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxi
YWNrKQogdHJ5aW5nIHRvIHNldCByZWFkb25seSBwcm9wZXJ0eSBmaWxlU3lzdGVtLm5hbWUKIGZp
bGVTeXN0ZW0ubmFtZSA9ICdiYXInCi1QQVNTIGZpbGVTeXN0ZW0ubmFtZSBpcyBzdGlsbCBmaWxl
X18wOlRlbXBvcmFyeQorUEFTUyBmaWxlU3lzdGVtLm5hbWUgaXMgc3RpbGwgX18wOlRlbXBvcmFy
eQogcm9vdCA9IGZpbGVTeXN0ZW0ucm9vdAogcm9vdC5nZXRGaWxlKCdmb28nLCB7Y3JlYXRlOnRy
dWV9LCBnZXRGaWxlQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spCiB0cnlpbmcgdG8gc2V0IHJlYWRv
bmx5IHByb3BlcnR5IGZpbGVFbnRyeS5pc0ZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9zaW1wbGUtdGVtcG9yYXJ5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXRlbXBvcmFyeS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDk5NzI4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS10ZW1w
b3JhcnktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQCByZXF1ZXN0
RmlsZVN5c3RlbSBURU1QT1JBUlkgdGVzdC4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAog
Ci1TdWNjZXNzZnVsbHkgb2J0YWluZWQgVEVNUE9SQVJZIEZpbGVTeXN0ZW06ZmlsZV9fMDpUZW1w
b3JhcnkKK1N1Y2Nlc3NmdWxseSBvYnRhaW5lZCBURU1QT1JBUlkgRmlsZVN5c3RlbTpfXzA6VGVt
cG9yYXJ5CiBQQVNTIGZpbGVTeXN0ZW0ubmFtZS5sZW5ndGggPiAwIGlzIHRydWUKIFBBU1MgZmls
ZVN5c3RlbS5yb290LmZ1bGxQYXRoIGlzICIvIgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRy
aWJ1dGUtcGFyc2luZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmcuaHRtbAkocmV2aXNpb24gOTk3Mjgp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1w
YXJzaW5nLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgd2luZG93Lm9ubG9h
ZCA9IGZ1bmN0aW9uKCkKICAgICA8IS0tIGlmcmFtZXMgd2hlcmUgc2NyaXB0IGV4ZWN1dGlvbiBp
cyBhbGxvd2VkLCBidXQgb3JpZ2luIGlzIG5vdCBzaGFyZWQgLS0+CiAKICAgICA8IS0tIHBsYWlu
LCBwcm9wZXIgYXR0cmlidXRlIHZhbHVlIC0tPgotICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ct
c2NyaXB0cyIKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1v
cmlnaW4iCiAgICAgICAgICAgICBuYW1lPSJmMSIKICAgICAgICAgICAgIHNyYz0icmVzb3VyY2Vz
L3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctYWxsb3dlZC5odG1sIj4KICAgICA8
L2lmcmFtZT4KQEAgLTY2LDcgKzY2LDcgQEAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkKIAog
YWxsb3ctc2NyaXB0cwogCi0iCithbGxvdy1zYW1lLW9yaWdpbiIKICAgICAgICAgICAgIG5hbWU9
ImYyIgogICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1
dGUtcGFyc2luZy1hbGxvd2VkLmh0bWwiPgogICAgIDwvaWZyYW1lPgpAQCAtMTAzLDcgKzEwMyw3
IEBAIGFsbG93LXNjcmlwdHMKICAgICAgICAgCiAgICAgICAgICdLeXNzYXJuYScgKCdUaGUga2lz
c2VzJyksIEVzYWlhcyBUZWduw6lyLCAxNzgyLTE4NDYKIAotICAgIGFsbG93LXNjcmlwdHMKKyAg
ICBhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2luCiAgICAgCiAgICAgICAgIGludCBtYWlu
KHZvaWQpCiAgICAgICAgIHsKQEAgLTExNCw0NCArMTE0LDQ0IEBAIGFsbG93LXNjcmlwdHMKICAg
ICA8L2lmcmFtZT4KIAogICAgIDwhLS0gdGFiIGNoYXJhY3RlcnMgYmVmb3JlIGFuZCBhZnRlciBh
dHRyaWJ1dGUgdmFsdWUgLS0+Ci0gICAgPGlmcmFtZSBzYW5kYm94PSIJCWFsbG93LXNjcmlwdHMJ
CSIKKyAgICA8aWZyYW1lIHNhbmRib3g9IgkJYWxsb3ctc2NyaXB0cwkJYWxsb3ctc2FtZS1vcmln
aW4iCiAgICAgICAgICAgICBuYW1lPSJmNCIKICAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3Nh
bmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctYWxsb3dlZC5odG1sIj4KICAgICA8L2lm
cmFtZT4KIAogICAgIDwhLS0gbWl4ZWQgY2FzZSAtLT4KLSAgICA8aWZyYW1lIHNhbmRib3g9IkFs
TG9XLXNDcklwVHMiCisgICAgPGlmcmFtZSBzYW5kYm94PSJBbExvVy1zQ3JJcFRzIGFsbG93LXNh
bWUtb3JpZ2luIgogICAgICAgICAgICAgbmFtZT0iZjUiCiAgICAgICAgICAgICBzcmM9InJlc291
cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbCI+CiAg
ICAgPC9pZnJhbWU+CiAKICAgICA8IS0tIGlmcmFtZXMgd2hlcmUgc2NyaXB0IGV4ZWN1dGlvbiBp
cyBkaXNhbGxvd2VkIC0tPgogCi0gICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvd3NjcmlwdHMiCisg
ICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvd3NjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4iCiAgICAg
ICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5n
LWRpc2FsbG93ZWQuaHRtbCI+CiAgICAgPC9pZnJhbWU+CiAKLSAgICA8aWZyYW1lIHNhbmRib3g9
ImFsbG93cy1jcmlwdHMiCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvd3MtY3JpcHRzIGFsbG93
LXNhbWUtb3JpZ2luIgogICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwiPgogICAgIDwvaWZyYW1lPgogCi0g
ICAgPGlmcmFtZSBzYW5kYm94PSItYWxsb3ctc2NyaXB0cyIKKyAgICA8aWZyYW1lIHNhbmRib3g9
Ii1hbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2luIgogICAgICAgICAgICAgc3JjPSJyZXNv
dXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwi
PgogICAgIDwvaWZyYW1lPgogCi0gICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvd19zY3JpcHRzIgor
ICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3dfc2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbiIKICAg
ICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNp
bmctZGlzYWxsb3dlZC5odG1sIj4KICAgICA8L2lmcmFtZT4KIAotICAgIDxpZnJhbWUgc2FuZGJv
eD0iYWxsb3dTY3JpcHRzIgorICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3dTY3JpcHRzIGFsbG93
LXNhbWUtb3JpZ2luIgogICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFt
ZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwiPgogICAgIDwvaWZyYW1lPgogCi0g
ICAgPGlmcmFtZSBzYW5kYm94PSJhYWxsb3ctc2NyaXB0cyIKKyAgICA8aWZyYW1lIHNhbmRib3g9
ImFhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2luIgogICAgICAgICAgICAgc3JjPSJyZXNv
dXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1kaXNhbGxvd2VkLmh0bWwi
PgogICAgIDwvaWZyYW1lPgogCi0gICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzcyIK
KyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93LXNjcmlwdHNzIGFsbG93LXNhbWUtb3JpZ2luIgog
ICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFy
c2luZy1kaXNhbGxvd2VkLmh0bWwiPgogICAgIDwvaWZyYW1lPgogCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm1zLWR5bmFtaWMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm1zLWR5
bmFtaWMuaHRtbAkocmV2aXNpb24gOTk3MjgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9z
YW5kYm94ZWQtaWZyYW1lLWZvcm1zLWR5bmFtaWMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzAs
OSArMzAsOSBAQCBmdW5jdGlvbiBkaXNhbGxvd2VkRm9ybVN1Ym1pdHRlZCgpCiB3aW5kb3cub25s
b2FkID0gZnVuY3Rpb24oKSB7CiAgICAgZnJhbWVFbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1l
bnRzQnlUYWdOYW1lKCJpZnJhbWUiKTsKIAotICAgIGZyYW1lRWxlbWVudHNbMF0uc2FuZGJveCA9
ICJhbGxvdy1zY3JpcHRzIjsKLSAgICBmcmFtZUVsZW1lbnRzWzFdLnNhbmRib3ggPSAiYWxsb3ct
c2NyaXB0cyBhbGxvdy1mb3JtcyI7Ci0gICAgZnJhbWVFbGVtZW50c1syXS5zYW5kYm94ID0gImFs
bG93LXNjcmlwdHMiOworICAgIGZyYW1lRWxlbWVudHNbMF0uc2FuZGJveCA9ICJhbGxvdy1zY3Jp
cHRzIGFsbG93LXNhbWUtb3JpZ2luIjsKKyAgICBmcmFtZUVsZW1lbnRzWzFdLnNhbmRib3ggPSAi
YWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyBhbGxvdy1zYW1lLW9yaWdpbiI7CisgICAgZnJhbWVF
bGVtZW50c1syXS5zYW5kYm94ID0gImFsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4iOwog
CiAgICAgZnJhbWVzWzBdLnBvc3RNZXNzYWdlKCJnbyIsICIqIik7CiAgICAgZnJhbWVzWzFdLnBv
c3RNZXNzYWdlKCJnbyIsICIqIik7CkBAIC00NSwxNSArNDUsMTUgQEAgd2luZG93Lm9ubG9hZCA9
IGZ1bmN0aW9uKCkgewogPGJvZHk+CiAKICAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsg
aGVpZ2h0OiA2MHB4OyIKLSAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3Jt
cyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyBhbGxvdy1zYW1l
LW9yaWdpbiIKICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWR5
bmFtaWMtYWxsb3dlZC5odG1sIj4KICAgICA8L2lmcmFtZT4KICAgICA8aWZyYW1lIHN0eWxlPSJ3
aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyIKLSAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0
cyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbiIKICAg
ICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWR5bmFtaWMtZGlzYWxs
b3dlZC5odG1sIj4KICAgICA8L2lmcmFtZT4KICAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBw
eDsgaGVpZ2h0OiA2MHB4OyIKLSAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1m
b3JtcyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyBhbGxvdy1z
YW1lLW9yaWdpbiIKICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jt
LWR5bmFtaWMtYWxsb3dlZC5odG1sIj4KICAgICA8L2lmcmFtZT4KIApJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtZm9ybXMuaHRtbAkocmV2
aXNpb24gOTk3MjgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1l
LWZvcm1zLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQxLDUzICs0MSw1MyBAQCBmdW5jdGlvbiBk
aXNhbGxvd2VkRm9ybVN1Ym1pdHRlZCgpCiAgICAgPCEtLSBmaXZlIElGcmFtZXMgd2l0aCBmb3Jt
cyBhbGxvd2VkIC0tPgogCiAgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDog
NjBweDsiCi0gICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisgICAg
ICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMgYWxsb3ctc2FtZS1vcmlnaW4i
CiAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2VkLmh0
bWwiPgogICAgIDwvaWZyYW1lPgogICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWln
aHQ6IDYwcHg7IgotICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgor
ICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIGFsbG93LXNhbWUtb3Jp
Z2luIgogICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dl
ZC5odG1sIj4KICAgICA8L2lmcmFtZT4KICAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsg
aGVpZ2h0OiA2MHB4OyIKLSAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3Jt
cyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyBhbGxvdy1zYW1l
LW9yaWdpbiIKICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFs
bG93ZWQuaHRtbCI+CiAgICAgPC9pZnJhbWU+CiAgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYw
cHg7IGhlaWdodDogNjBweDsiCi0gICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ct
Zm9ybXMiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMgYWxsb3ct
c2FtZS1vcmlnaW4iCiAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9y
bS1hbGxvd2VkLmh0bWwiPgogICAgIDwvaWZyYW1lPgogICAgIDxpZnJhbWUgc3R5bGU9IndpZHRo
OiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgotICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFs
bG93LWZvcm1zIgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIGFs
bG93LXNhbWUtb3JpZ2luIgogICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LWZvcm0tYWxsb3dlZC5odG1sIj4KICAgICA8L2lmcmFtZT4KIAogICAgIDwhLS0gb25lIElGcmFt
ZSB3aXRoIGZvcm1zIGRpc2FsbG93ZWQgLS0+CiAKICAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDog
NjBweDsgaGVpZ2h0OiA2MHB4OyIKLSAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyIKKyAg
ICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbiIKICAgICAgICAg
c3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWRpc2FsbG93ZWQuaHRtbCI+CiAg
ICAgPC9pZnJhbWU+CiAKICAgICA8IS0tIGZpdmUgbW9yZSBJRnJhbWVzIHdpdGggZm9ybXMgYWxs
b3dlZCAtLT4KIAogICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7
IgotICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIgorICAgICAgICBz
YW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIGFsbG93LXNhbWUtb3JpZ2luIgogICAg
ICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxsb3dlZC5odG1sIj4K
ICAgICA8L2lmcmFtZT4KICAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2
MHB4OyIKLSAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAgICAg
ICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyBhbGxvdy1zYW1lLW9yaWdpbiIK
ICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRt
bCI+CiAgICAgPC9pZnJhbWU+CiAgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhlaWdo
dDogNjBweDsiCi0gICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiCisg
ICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMgYWxsb3ctc2FtZS1vcmln
aW4iCiAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxvd2Vk
Lmh0bWwiPgogICAgIDwvaWZyYW1lPgogICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBo
ZWlnaHQ6IDYwcHg7IgotICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1z
IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIGFsbG93LXNhbWUt
b3JpZ2luIgogICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxs
b3dlZC5odG1sIj4KICAgICA8L2lmcmFtZT4KICAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBw
eDsgaGVpZ2h0OiA2MHB4OyIKLSAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1m
b3JtcyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyBhbGxvdy1z
YW1lLW9yaWdpbiIKICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jt
LWFsbG93ZWQuaHRtbCI+CiAgICAgPC9pZnJhbWU+CiAgICAgCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdG9wLWJ5LWNvbnN0YW50LW5h
bWUyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVk
LWlmcmFtZS1uYXZpZ2F0aW9uLXRvcC1ieS1jb25zdGFudC1uYW1lMi5odG1sCShyZXZpc2lvbiA5
OTcyOCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdh
dGlvbi10b3AtYnktY29uc3RhbnQtbmFtZTIuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtOSw3ICs5
LDcgQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogPC9oZWFkPgogPGJvZHk+
CiA8cD5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCBhIHNhbmRib3hlZCBJRnJhbWUgY2FuIG5hdmln
YXRlIHRoZSB0b3AtbGV2ZWwgZnJhbWUgd2l0aCBhbGxvdy10b3AtbmF2aWdhdGlvbi48L3A+Ci08
aWZyYW1lIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctdG9wLW5hdmlnYXRpb24iCis8aWZy
YW1lIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctdG9wLW5hdmlnYXRpb24gYWxsb3ctc2Ft
ZS1vcmlnaW4iCiAgICAgICAgIHNyYz0icmVzb3VyY2VzL25hdmlnYXRlLXRvcC1ieS1jb25zdGFu
dC1uYW1lMi10by1wYXNzLmh0bWwiPgogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRvcC1ieS1jb25zdGFu
dC1uYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJv
eGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRvcC1ieS1jb25zdGFudC1uYW1lLmh0bWwJKHJldmlzaW9u
IDk5NzI4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZp
Z2F0aW9uLXRvcC1ieS1jb25zdGFudC1uYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTksNyAr
OSw3IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKIDwvaGVhZD4KIDxib2R5
PgogPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIGNhbiBuYXZp
Z2F0ZSB0aGUgdG9wLWxldmVsIGZyYW1lIHdpdGggYWxsb3ctdG9wLW5hdmlnYXRpb24uPC9wPgot
PGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LXRvcC1uYXZpZ2F0aW9uIgorPGlm
cmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LXRvcC1uYXZpZ2F0aW9uIGFsbG93LXNh
bWUtb3JpZ2luIgogICAgICAgICBzcmM9InJlc291cmNlcy9uYXZpZ2F0ZS10b3AtYnktY29uc3Rh
bnQtbmFtZS10by1wYXNzLmh0bWwiPgogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRvcC1ieS1uYW1lLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFt
ZS1uYXZpZ2F0aW9uLXRvcC1ieS1uYW1lLmh0bWwJKHJldmlzaW9uIDk5NzI4KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRvcC1ieS1uYW1l
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTEwLDcgKzEwLDcgQEAgd2luZG93Lm5hbWUgPSAidGFy
Z2V0IjsKIDwvaGVhZD4KIDxib2R5PgogPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBzYW5k
Ym94ZWQgSUZyYW1lIGNhbiBuYXZpZ2F0ZSB0aGUgdG9wLWxldmVsIGZyYW1lIHdpdGggYWxsb3ct
dG9wLW5hdmlnYXRpb24uPC9wPgotPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93
LXRvcC1uYXZpZ2F0aW9uIgorPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LXRv
cC1uYXZpZ2F0aW9uIGFsbG93LXNhbWUtb3JpZ2luIgogICAgICAgICBzcmM9InJlc291cmNlcy9u
YXZpZ2F0ZS10b3AtYnktbmFtZS10by1wYXNzLmh0bWwiPgogPC9ib2R5PgogPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRv
cC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1p
ZnJhbWUtbmF2aWdhdGlvbi10b3AuaHRtbAkocmV2aXNpb24gOTk3MjgpCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdG9wLmh0bWwJKHdvcmtp
bmcgY29weSkKQEAgLTksNyArOSw3IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKIDwvaGVhZD4KIDxib2R5PgogPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94
ZWQgSUZyYW1lIGNhbiBuYXZpZ2F0ZSB0aGUgdG9wLWxldmVsIGZyYW1lIHdpdGggYWxsb3ctdG9w
LW5hdmlnYXRpb24uPC9wPgotPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LXRv
cC1uYXZpZ2F0aW9uIgorPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LXRvcC1u
YXZpZ2F0aW9uIGFsbG93LXNhbWUtb3JpZ2luIgogICAgICAgICBzcmM9InJlc291cmNlcy9uYXZp
Z2F0ZS10b3AtdG8tcGFzcy5odG1sIj4KIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLXN0b3JhZ2UtZGlzYWxs
b3dlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNl
cy9zYW5kYm94ZWQtaWZyYW1lLXN0b3JhZ2UtZGlzYWxsb3dlZC5odG1sCShyZXZpc2lvbiA5OTcy
OCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Jlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1l
LXN0b3JhZ2UtZGlzYWxsb3dlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNTYgQEAK
IDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworZnVuY3Rpb24g
ZGVidWcobXNnKQoreworICAgIHZhciBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3Bh
biIpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQo
c3Bhbik7CisgICAgc3Bhbi5pbm5lckhUTUwgPSBtc2cgKyAnPGJyIC8+JzsKK30KKworZnVuY3Rp
b24gZXNjYXBlSFRNTCh0ZXh0KQoreworICAgIHJldHVybiB0ZXh0LnJlcGxhY2UoLyYvZywgIiZh
bXA7IikucmVwbGFjZSgvPC9nLCAiJmx0OyIpLnJlcGxhY2UoL1wwL2csICJcXDAiKTsKK30KKwor
ZnVuY3Rpb24gdGVzdFBhc3NlZChtc2cpCit7CisgICAgZGVidWcoJzxzcGFuPjxzcGFuIGNsYXNz
PSJwYXNzIj5QQVNTPC9zcGFuPiAnICsgZXNjYXBlSFRNTChtc2cpICsgJzwvc3Bhbj4nKTsKK30K
KworZnVuY3Rpb24gdGVzdEZhaWxlZChtc2cpCit7CisgICAgZGVidWcoJzxzcGFuPjxzcGFuIGNs
YXNzPSJmYWlsIj5GQUlMPC9zcGFuPiAnICsgZXNjYXBlSFRNTChtc2cpICsgJzwvc3Bhbj4nKTsK
K30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coX2EsIF9lKQoreworICB2YXIgZXhjZXB0aW9uOwor
ICB2YXIgX2F2OworICB0cnkgeworICAgICBfYXYgPSBldmFsKF9hKTsKKyAgfSBjYXRjaCAoZSkg
eworICAgICBleGNlcHRpb24gPSBlOworICB9CisKKyAgdmFyIF9ldjsKKyAgaWYgKF9lKQorICAg
ICAgX2V2ID0gIGV2YWwoX2UpOworCisgIGlmIChleGNlcHRpb24pIHsKKyAgICBpZiAodHlwZW9m
IF9lID09ICJ1bmRlZmluZWQiIHx8IGV4Y2VwdGlvbiA9PSBfZXYpCisgICAgICB0ZXN0UGFzc2Vk
KF9hICsgIiB0aHJldyBleGNlcHRpb24gIiArIGV4Y2VwdGlvbiArICIuIik7CisgICAgZWxzZQor
ICAgICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIHRocm93ICIgKyAodHlwZW9mIF9lID09ICJ1
bmRlZmluZWQiID8gImFuIGV4Y2VwdGlvbiIgOiBfZXYpICsgIi4gVGhyZXcgZXhjZXB0aW9uICIg
KyBleGNlcHRpb24gKyAiLiIpOworICB9IGVsc2UgaWYgKHR5cGVvZiBfYXYgPT0gInVuZGVmaW5l
ZCIpCisgICAgdGVzdEZhaWxlZChfYSArICIgc2hvdWxkIHRocm93ICIgKyAodHlwZW9mIF9lID09
ICJ1bmRlZmluZWQiID8gImFuIGV4Y2VwdGlvbiIgOiBfZXYpICsgIi4gV2FzIHVuZGVmaW5lZC4i
KTsKKyAgZWxzZQorICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCB0aHJvdyAiICsgKHR5cGVv
ZiBfZSA9PSAidW5kZWZpbmVkIiA/ICJhbiBleGNlcHRpb24iIDogX2V2KSArICIuIFdhcyAiICsg
X2F2ICsgIi4iKTsKK30KKzwvc2NyaXB0PgogPHNjcmlwdD4KIAogd2luZG93Lm9ubG9hZCA9IGZ1
bmN0aW9uKCkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114445</attachid>
            <date>2011-11-10 00:06:37 -0800</date>
            <delta_ts>2011-11-10 09:57:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71745-20111110000636.patch</filename>
            <type>text/plain</type>
            <size>65111</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5ODEyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTI4IEBACisyMDExLTExLTA5ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5pcXVlIFNlY3VyaXR5T3JpZ2lu
cyBzaG91bGRuJ3QgcmVtZW1iZXIgdGhlaXIgb2xkIHNjaGVtZXMgYW5kIGhvc3RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTc0NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgc29t
ZXdoYXQgc3VidGxlLiAgVGhpcyBwYXRjaCBoYXMgdGhyZWUgbWFpbiBnb2FsczoKKworICAgICAg
ICAxKSBSZW1vdmUgdGhlIGNvbmNlcHQgb2YgYW4gZW1wdHkgb3JpZ2luLiAgVGhpcyBjb25jZXB0
IHVzZWQgdG8KKyAgICAgICAgICAgcmVwcmVzZW50IGEgZG9jdW1lbnQgdGhhdCBoYWRuJ3QgeWV0
IGZpZ3VyZWQgb3V0IGl0J3Mgb3JpZ2luLCBidXQgaXQKKyAgICAgICAgICAgd2FzIHN1cGVyIHN1
YnRsZSBhbmQgbGVhZCB0byBhIG51bWJlciBvZiBzZWN1cml0eSBidWdzLiAgTm93LCB3ZQorICAg
ICAgICAgICByZXByZXNlbnQgdGhhdCBzdGF0ZSBieSB1c2luZyBhIHVuaXF1ZSBvcmlnaW4gYW5k
IGEKKyAgICAgICAgICAgImZhaWxlZFRvSW5oZXJpdFNlY3VyaXR5T3JpZ2luIiBvbiBTZWN1cml0
eUNvbnRleHQuICBUaGlzIHNob3VsZAorICAgICAgICAgICBoZWxwIHVzIGF2b2lkIHNlY3VyaXR5
IGJ1Z3MgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICAyKSBSZW1vdmUgc2NoZW1lcywgaG9zdHMs
IGFuZCBwb3J0cyBmcm9tIHVuaXF1ZSBvcmlnaW5zLiAgVW5pcXVlCisgICAgICAgICAgIG9yaWdp
bnMgYXJlbid0IHJlbGF0ZWQgdG8gc2NoZW1lL2hvc3QvcG9ydCBvcmlnaW5zLiAgUHJldmlvdXNs
eSwgd2UKKyAgICAgICAgICAgc3RvcmVkIHRoZSBzY2hlbWUsIGhvc3QsIGFuZCBwb3J0IG9uIFNl
Y3VyaXR5T3JpZ2luIG9iamVjdHMgdGhhdCBoYWQKKyAgICAgICAgICAgdGhlIGlzVW5pcXVlIGJp
dCBzZXQgZXZlbiB0aG91Z2ggd2Ugd2VyZSBzdXBwb3NlZCB0byBpZ25vcmUgdGhlbSwKKyAgICAg
ICAgICAgd2hpY2ggc2VlbXMgZXJyb3IgcHJvbmUuCisKKyAgICAgICAgMykgU2ltcGxpZnkgdGhl
IFNlY3VyaXR5T3JpZ2luIGNvbnN0cnVjdG9yLiAgT3ZlciB0aW1lLCB0aGUKKyAgICAgICAgICAg
U2VjdXJpdHlPcmlnaW4gY29uc3RydWN0b3IgaGFzIGdyb3duIGEgYnVuY2ggb2YgaWZkZWZzIGFu
ZAorICAgICAgICAgICBjb21wbGV4aXR5LiAgVGhpcyBwYXRjaCBmYWN0b3JzIGEgYnVuY2ggb2Yg
dGhhdCBjb21wbGV4aXR5IG91dCBpbnRvCisgICAgICAgICAgIGZyZWUgZnVuY3Rpb25zIGFuZCBz
aW1wbGlmaWVzIHRoZSBjb25zdHJ1Y3RvciB0byBqdXN0IGluaXRpYWxpemluZworICAgICAgICAg
ICB0aGUgZXNzZW50aWFsIGRhdGEgZmllbGRzLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIHRo
ZXNlIHRocmVlIGNoYW5nZXMgYXJlIGZhaXJseSB0aWdodGx5IGxpbmtlZCBiZWNhdXNlIHdlCisg
ICAgICAgIHdlcmUgdXNpbmcgdGhlIHByb3RvY29sIG1lbWJlciB2YXJpYWJsZSBvZiBTZWN1cml0
eU9yaWdpbiBvbiB1bmlxdWUKKyAgICAgICAgb3JpZ2lucyB0byByZXByZXNlbnQgZW1wdHkgb3Jp
Z2lucy4KKworICAgICAgICBDbGVhbmluZyB1cCB0aGVzZSBzdGF0ZSByZXByZXNlbnRhdGlvbnMg
Zml4ZWQgdHdvIG1pbm9yIGJ1Z3MsIGFzCisgICAgICAgIHJlZmxlY3RlZCBpbiB0aGUgdXBkYXRl
ZCB0ZXN0IHJlc3VsdHM6CisKKyAgICAgICAgQSkgU3RvcmFnZSBpZGVudGlmaWVycyBmb3IgdW5p
cXVlIG9yaWdpbnMgd2hlcmUgbGVha2luZyB0aGUgb3JpZ2luCisgICAgICAgICAgIHNjaGVtZS4g
IE5vdywgd2UganVzdCB1c2UgdGhlIGVtcHR5IHN0cmluZy4KKworICAgICAgICBCKSBTYW5kYm94
ZWQgaWZyYW1lcyBpbiBmcm9tIGxvY2FsIFVSTHMgd2hlcmUgZ2FpbmluZyAibG9jYWwiCisgICAg
ICAgICAgIHByaXZpbGVnZXMgZnJvbSB0aGVpciBzY2hlbWUuICBOb3cgdGhhdCB0aGV5IGhhdmUg
ZW1wdHkgc2NoZW1lcywKKyAgICAgICAgICAgdGhleSBubyBsb25nZXIgZ2FpbiB0aG9zZSBwcml2
aWxlZ2VzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyByZXZlYWxlZCBhIGhhbmRmdWwgb2Yg
c3VidGxlIGJ1Z3Mgd2l0aCB0aGUgb2xkIGNvZGUuCisgICAgICAgIEkndmUgYXR0ZW1wdGVkIHRv
IHByZXNlcnZlIHRob3NlIGJ1Z3MgKG5vdGVkIHdpdGggRklYTUUgY29tbWVudHMpIGluIGFuCisg
ICAgICAgIGVmZm9ydCB0byBjb250YWluIHRoZSBzY29wZSBvZiB0aGlzIHBhdGNoLiAgSSdsbCBs
aWtlbHkgZml4IHRob3NlIGJ1Z3MKKyAgICAgICAgaW4gYSBmb2xsb3ctdXAgcGF0Y2guCisKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNl
dElzVmlld1NvdXJjZSk6CisgICAgICAgICAgICAtIFRoaXMgbm93IHVzZXMgYSBuZXctc3R5bGUg
dW5pcXVlIG9yaWdpbi4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppbml0U2VjdXJpdHlD
b250ZXh0KToKKyAgICAgICAgICAgIC0gV2hlbiBzYW5kYm94ZWQsIHdlIG5vdyB1c2UgYSBuZXct
c3R5bGUgdW5pcXVlIG9yaWdpbiByYXRoZXIgdGhhbgorICAgICAgICAgICAgICBqdXN0IHNldHRp
bmcgdGhlIGlzVW5pcXVlIGJpdC4gIFRoaXMgcmVxdWlyZWQgc29tZSBjaGFuZ2VzIHRvIGhvdwor
ICAgICAgICAgICAgICB3ZSBpbmhlcml0IHNlY3VyaXR5IG9yaWdpbnMgaW4gdGhlIGFib3V0OmJs
YW5rIGNhc2UuICBUaGUgbm90aW9uCisgICAgICAgICAgICAgIG9mIGZhaWxlZFRvSW5oZXJpdFNl
Y3VyaXR5T3JpZ2luKCkgcmVwbGFjZXMgdGhlIG5vdGlvbiBvZiBhbgorICAgICAgICAgICAgICBl
bXB0eSBTZWN1cml0eU9yaWdpbi4KKyAgICAgICAgICAgIC0gT24gbGluZSA0NDQzLCB3ZSBhcmUg
bm93IG1vcmUgZXhwbGljaXQgYWJvdXQgdGhlIGNhc2VzIHdoZXJlIHdlCisgICAgICAgICAgICAg
IGluaGVyaXQgdGhlIFNlY3VyaXR5T3JpZ2luLiAgUmF0aGVyIHRoYW4gZG9pbmcgc28gZm9yIGFs
bCAiZW1wdHkiCisgICAgICAgICAgICAgIG9yaWdpbnMsIHdlIGluaGVyaXQgb25seSB3aGVuIHRo
ZSBVUkwgaXMgaW4gdGhlIGFib3V0IHNjaGVtZQorICAgICAgICAgICAgICAoZS5nLiwgYWJvdXQ6
YmxhbmspIG9yIHdoZW4gdGhlIFVSTCBpcyBpbnZhbGlkLgorICAgICAgICAqIGRvbS9TZWN1cml0
eUNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlDb250ZXh0OjpTZWN1cml0
eUNvbnRleHQpOgorICAgICAgICAgICAgLSBJbml0aWFsaXplIG1fZmFpbGVkVG9Jbmhlcml0U2Vj
dXJpdHlPcmlnaW4gdG8gZmFsc2UuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eUNvbnRleHQ6
OnNldFNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgICAgIC0gV2hlbmV2ZXIgd2Ugc2V0IGEgU2Vj
dXJpdHlPcmlnaW4gZXhwbGljaXRseSwgd2UgaGF2ZSBubyBsb25nZXIKKyAgICAgICAgICAgICAg
ZmFpbGVkIHRvIGluaGVyaXQgYSBzZWN1cml0eSBvcmlnaW4uICBJbiBjb21iaW5hdGlvbiB3aXRo
IHRoZQorICAgICAgICAgICAgICBndWFyZCBhdCB0aGUgdG9wIG9mIGluaXRTZWN1aXR5T3JpZ2lu
LCB0aGlzIGFzc2lnbm1lbnQgc3RvcHMgdXMKKyAgICAgICAgICAgICAgZnJvbSBpbmhlcml0aW5n
IHRoZSBzZWN1cml0eSBvcmlnaW4gbW9yZSB0aGFuIG9uY2UuCisgICAgICAgIChXZWJDb3JlOjpT
ZWN1cml0eUNvbnRleHQ6OmlzU2VjdXJlVHJhbnNpdGlvblRvKToKKyAgICAgICAgICAgIC0gVGhp
cyBwYXRjaCBtb3ZlcyBpc1NlY3VyZVRyYW5zaXRpb25UbyBmcm9tIFNlY3VyaXR5T3JpZ2luIHRv
CisgICAgICAgICAgICAgIFNlY3VyaXR5Q29udGV4dCBzbyB0aGF0IGl0IGNhbiByZWFkIHRoZQor
ICAgICAgICAgICAgICBmYWlsZWRUb0luaGVyaXRTZWN1cml0eU9yaWdpbiBzdGF0ZSwgd2hpY2gg
aXMgcmVhbGx5IHBlci1Eb2N1bWVudAorICAgICAgICAgICAgICAoYW5kIGhlbmNlIGNhbid0IGJl
IG9uIFNlY3VyaXR5T3JpZ2luLCB3aGljaCBtaWdodCBiZSBzaGFyZWQKKyAgICAgICAgICAgICAg
YmV0d2VlbiBkb2N1bWVudHMgaW4gdGhlIGluaGVyaXRlbmNlIGNhc2UpLgorICAgICAgICAqIGRv
bS9TZWN1cml0eUNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5Q29udGV4dDo6
ZGlkRmFpbFRvSW5oZXJpdFNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3Vy
aXR5Q29udGV4dDo6ZmFpbGVkVG9Jbmhlcml0U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudFdyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRl
cjo6YmVnaW4pOgorICAgICAgICAgICAgLSBVcGRhdGUgY2FsbHNpdGUgZm9yIGlzU2VjdXJlVHJh
bnNpdGlvblRvIHRvIGl0cyBuZXcgbG9jYXRpb24uCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyk6Cisg
ICAgICAgICAgICAtIFVwZGF0ZSBjYWxsc2l0ZSBmb3IgaXNTZWN1cmVUcmFuc2l0aW9uVG8gdG8g
aXRzIG5ldyBsb2NhdGlvbi4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3c6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgICAgIC0gTm93IHdo
ZW4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcgZmFpbCwgaXQgcmV0dXJucyBhCisg
ICAgICAgICAgICAgIHVuaXF1ZSBvcmlnaW4gcmF0aGVyIHRoYW4gYW4gZW1wdHkgb3JpZ2luLiAg
VGhpcyBzaG91bGQgYmUKKyAgICAgICAgICAgICAgZnVuY3Rpb25hbGx5IGlkZW50aWNhbC4KKyAg
ICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjaGVt
ZVJlcXVpcmVzQXV0aG9yaXR5KToKKyAgICAgICAgICAgIC0gQ2hhbmdlIHRoaXMgZnVuY3Rpb24g
dG8ganVzdCBkbyBhIGNvdXBsZSBzdHJjbXBzIHJhdGhlciB0aGFuCisgICAgICAgICAgICAgIGhh
dmluZyBhIHN0YXRpYyBVUkxTY2hlbWVzTWFwLiAgV2UgdXNlIFVSTFNjaGVtZXNNYXBzIHdoZW4g
dGhlCisgICAgICAgICAgICAgIHNldCBvZiBzY2hlbWVzIGlzIGV4dGVuc2libGUsIHdoaWNoIHRo
aXMgc2V0IGlzIG5vdC4KKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFVzZUlubmVyVVJMKToKKyAg
ICAgICAgICAgIC0gVGhpcyBmdW5jdGlvbiBhYnN0cmFjdHMgc29tZSB0cmlja3kgbG9naWMgdGhh
dCB1c2VkIHRvIGJlIGluIHRoZQorICAgICAgICAgICAgICBTZWN1cml0eU9yaWdpbiBjb25zdHJ1
Y3Rvci4gIE11Y2ggdG8gbXkgY2hhZ3JpbiwgYmxvYiBhbmQKKyAgICAgICAgICAgICAgZmlsZXN5
c3RlbSBzdG9yZSB0aGVpciBvcmlnaW4gaW4gYSBuZXN0ZWQgaW5uZXIgVVJMLgorICAgICAgICAo
V2ViQ29yZTo6ZXh0cmFjdElubmVyVVJMKToKKyAgICAgICAgICAgIC0gVGhpcyBmdW5jdGlvbiBq
dXN0IGFic3RyYWN0cyB0aGUgb3BlcmF0aW9uIG9mIGV4dHJhY3RpbmcgdGhlCisgICAgICAgICAg
ICAgIGlubmVyIFVSTCB0aGF0J3MgdXNlZCBpbiB0aGUgYmxvYiBhbmQgZmlsZXN5c3RlbSBjYXNl
cy4KKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFRyZWF0QXNVbmlxdWVPcmlnaW4pOgorICAgICAg
ICAgICAgLSBUaGVyZSBhcmUgYSBidW5jaCBvZiBjYXNlcyB3aGVyZSB3ZSB3YW50IHRvIHVzZSBh
IHVuaXF1ZSBvcmlnaW4KKyAgICAgICAgICAgICAgcmF0aGVyIHRoYW4gdGhlIG9yaWdpbiB5b3Ug
bWlnaHQgb3RoZXJ3aXNlIGV4dHJhY3QgZnJvbSBhIFVSTC4KKyAgICAgICAgICAgICAgTW92aW5n
IHRoaXMgbG9naWMgb3V0IG9mIHRoZSBjb25zdHJ1Y3RvciBsZXRzIHVzIGNhbGwgaXQgaW4gdGhl
CisgICAgICAgICAgICAgIGNyZWF0ZSBmdW5jdGlvbiBpbnN0ZWFkLCBzaW1wbGlmeWluZyB0aGUg
Y29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlP
cmlnaW4pOgorICAgICAgICAgICAgLSBUaGUgU2VjdXJpdHlPcmlnaW4gY29uc3RydWN0b3Igbm93
IGp1c3QgaW5pdGlhbGl6ZSBmaWVsZHMgcmF0aGVyCisgICAgICAgICAgICAgIHRoYW4gbWFraW5n
IGNvbXBsZXggc2VjdXJpdHkgZGVjaXNpb25zLgorICAgICAgICAgICAgLSBJJ2xsIHJlbW92ZSB0
aGUgZm9yY2VVbmlxdWUgcGFyYW1ldGVyIGluIGEgZm9sbG93LXVwIHBhdGNoLiAgVGhlCisgICAg
ICAgICAgICAgIEFTU0VSVCBlbnN1cmVzIHRoYXQgd2UncmUgbm90IHVzaW5nIGl0LgorICAgICAg
ICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSk6CisgICAgICAgICAgICAtIFNvbWUg
b2YgdGhlIGNvbXBsZXhpdHkgZnJvbSB0aGUgY29uc3RydWN0b3IgbW92ZWQgdG8gdGhpcworICAg
ICAgICAgICAgICBmdW5jdGlvbiwgd2hpY2ggbm93IGRlY2lkZXMgd2hldGhlciB0byBjb25zdHJ1
Y3QgYSB1bmlxdWUgb3JpZ2luLAorICAgICAgICAgICAgICBhbiBvcmlnaW4gZnJvbSB0aGUgaW5u
ZXIgVVJMLCBvciB0aGUgcmVndWxhciBvcmlnaW4uCisgICAgICAgICogcGFnZS9TZWN1cml0eU9y
aWdpbi5oOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RFbnRyeSk6CisgICAgICAgICAgICAtIE1vdmUgdGhlc2UgZnVuY3Rpb25zIG92ZXIgdG8gY2Fs
bGluZyBpc1VuaXF1ZSBpbnN0ZWFkIG9mIGlzRW1wdHkuCisgICAgICAgICogcGxhdGZvcm0vU2No
ZW1lUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NoZW1lc1dpdGhVbmlxdWVPcmln
aW5zKToKKyAgICAgICAgICAgIC0gUmF0aGVyIHRoYW4gc3BlY2lhbC1jYXNpbmcgdGhlIGFib3V0
IGFuZCBqYXZhc2NyaXB0IHNjaGVtZXMsIHRoaXMKKyAgICAgICAgICAgICAgcGF0Y2ggbW92ZXMg
dGhlbSBpbnRvIHRoZSBnZW5lcmFsIGNhc2Ugb2Ygc2NoZW1lcyB3aXRoIHVuaXF1ZQorICAgICAg
ICAgICAgICBvcmlnaW5zLgorCiAyMDExLTExLTA5ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0
aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIFt3eF0gVW5yZXZpZXdlZCBidWlsZCBmaXguIEFk
ZCBzdHViIGZvciBuZXcgbWV0aG9kLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZp
c2lvbiA5OTcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE3MjksNyArMTcyOSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldElzVmlld1NvdXJj
ZShib29sIGlzVmkKICAgICBpZiAoIW1faXNWaWV3U291cmNlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzZXRTZWN1cml0eU9yaWdpbihTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKHVybCgpLCB0cnVlKSk7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
c2V0U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKTsKIH0KIAog
dm9pZCBEb2N1bWVudDo6Y3JlYXRlU3R5bGVTZWxlY3RvcigpCkBAIC00MzkwLDEwICs0MzkwLDEz
IEBAIGJvb2wgRG9jdW1lbnQ6OnVzZVNlY3VyZUtleWJvYXJkRW50cnlXaGUKICAgICByZXR1cm4g
bV91c2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZTsKIH0KIAorLy8gRklYTUU6IFRoaXMg
ZnVuY3Rpb24gc2hvdWxkIG1vdmUgdG8gU2VjdXJpdHlDb250ZXh0IGFuZCBiZSBicm9rZW4gZG93
biBpbnRvIHNtYWxsZXIgcGllY2VzLgogdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4
dCgpCiB7Ci0gICAgaWYgKHNlY3VyaXR5T3JpZ2luKCkgJiYgIXNlY3VyaXR5T3JpZ2luKCktPmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOyAvLyBtX3NlY3VyaXR5T3JpZ2luIGhhcyBhbHJlYWR5
IGJlZW4gaW5pdGlhbGl6ZWQuCisgICAgaWYgKGhhdmVJbml0aWFsaXplZFNlY3VyaXR5T3JpZ2lu
KCkpIHsKKyAgICAgICAgQVNTRVJUKHNlY3VyaXR5T3JpZ2luKCkpOworICAgICAgICByZXR1cm47
CisgICAgfQogCiAgICAgaWYgKCFtX2ZyYW1lKSB7CiAgICAgICAgIC8vIE5vIHNvdXJjZSBmb3Ig
YSBzZWN1cml0eSBjb250ZXh0LgpAQCAtNDQwOCw3ICs0NDExLDcgQEAgdm9pZCBEb2N1bWVudDo6
aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgLy8gbG9hZGluZyBVUkwgd2l0aCBhIGZyZXNoIGNv
bnRlbnQgc2VjdXJpdHkgcG9saWN5LgogICAgIG1fY29va2llVVJMID0gbV91cmw7CiAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6ZW5mb3JjZVNhbmRib3hGbGFncyhtX2ZyYW1lLT5sb2FkZXIo
KS0+ZWZmZWN0aXZlU2FuZGJveEZsYWdzKCkpOwotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OnNldFNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwsIGlzU2FuZGJv
eGVkKFNhbmRib3hPcmlnaW4pKSk7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0U2Vj
dXJpdHlPcmlnaW4oaXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikgPyBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlVW5pcXVlKCkgOiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKSk7CiAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0Q29udGVudFNlY3VyaXR5UG9saWN5KENvbnRlbnRTZWN1
cml0eVBvbGljeTo6Y3JlYXRlKHRoaXMpKTsKIAogICAgIGlmIChTZWN1cml0eVBvbGljeTo6YWxs
b3dTdWJzdGl0dXRlRGF0YUFjY2Vzc1RvTG9jYWwoKSkgewpAQCAtNDQxNiw3ICs0NDE5LDcgQEAg
dm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgICAgIC8vIGxvYWQgbG9j
YWwgcmVzb3VyY2VzLiAgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjc1NgogICAgICAgICAvLyBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NzYwIGZvciBmdXJ0aGVyCiAgICAgICAgIC8vIGRpc2N1c3Npb24uCi0gICAgICAg
IAorCiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGxvYWRlcigpOwog
ICAgICAgICBpZiAoZG9jdW1lbnRMb2FkZXIgJiYgZG9jdW1lbnRMb2FkZXItPnN1YnN0aXR1dGVE
YXRhKCkuaXNWYWxpZCgpKQogICAgICAgICAgICAgc2VjdXJpdHlPcmlnaW4oKS0+Z3JhbnRMb2Fk
TG9jYWxSZXNvdXJjZXMoKTsKQEAgLTQ0NDAsOSArNDQ0MywxMiBAQCB2b2lkIERvY3VtZW50Ojpp
bml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghc2VjdXJp
dHlPcmlnaW4oKS0+aXNFbXB0eSgpKQorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGluaGVy
aXQgb3VyIHNlY3VyaXR5IG9yaWdpbiBpZiB3ZSdyZSBzYW5kYm94ZWQuCisgICAgaWYgKG1fdXJs
LmlzVmFsaWQoKSAmJiAhbV91cmwucHJvdG9jb2xJcygiYWJvdXQiKSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgQVNTRVJUKHNlY3VyaXR5T3JpZ2luKCktPmlzVW5pcXVlKCkpOworCiAgICAgLy8g
SWYgd2UgZG8gbm90IG9idGFpbiBhIG1lYW5pbmdmdWwgb3JpZ2luIGZyb20gdGhlIFVSTCwgdGhl
biB3ZSB0cnkgdG8KICAgICAvLyBmaW5kIG9uZSB2aWEgdGhlIGZyYW1lIGhpZXJhcmNoeS4KIApA
QCAtNDQ1MCwxNCArNDQ1NiwxNiBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0
KCkKICAgICBpZiAoIW93bmVyRnJhbWUpCiAgICAgICAgIG93bmVyRnJhbWUgPSBtX2ZyYW1lLT5s
b2FkZXIoKS0+b3BlbmVyKCk7CiAKLSAgICBpZiAob3duZXJGcmFtZSkgewotICAgICAgICBtX2Nv
b2tpZVVSTCA9IG93bmVyRnJhbWUtPmRvY3VtZW50KCktPmNvb2tpZVVSTCgpOwotICAgICAgICAv
LyBXZSBhbGlhcyB0aGUgU2VjdXJpdHlPcmlnaW5zIHRvIG1hdGNoIEZpcmVmb3gsIHNlZSBCdWcg
MTUzMTMKLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MzEzCi0gICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNldFNlY3VyaXR5T3JpZ2lu
KG93bmVyRnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpOwotICAgICAgICAvLyBG
SVhNRTogQ29uc2lkZXIgbW92aW5nIG1fY29udGVudFNlY3VyaXR5UG9saWN5IGludG8gU2VjdXJp
dHlPcmlnaW4uCi0gICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNldENvbnRlbnRTZWN1
cml0eVBvbGljeShvd25lckZyYW1lLT5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3ko
KSk7CisgICAgaWYgKCFvd25lckZyYW1lKSB7CisgICAgICAgIGRpZEZhaWxUb0luaXRpYWxpemVT
ZWN1cml0eU9yaWdpbigpOworICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgbV9jb29raWVV
UkwgPSBvd25lckZyYW1lLT5kb2N1bWVudCgpLT5jb29raWVVUkwoKTsKKyAgICAvLyBXZSBhbGlh
cyB0aGUgU2VjdXJpdHlPcmlnaW5zIHRvIG1hdGNoIEZpcmVmb3ggKHNlZSBidWcgMTUzMTMpLgor
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMxMworICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNldFNlY3VyaXR5T3JpZ2luKG93bmVyRnJhbWUtPmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OnNldENvbnRlbnRTZWN1cml0eVBvbGljeShvd25lckZyYW1lLT5kb2N1bWVudCgpLT5jb250ZW50
U2VjdXJpdHlQb2xpY3koKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNldFNlY3VyaXR5T3JpZ2lu
KFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9TZWN1cml0eUNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9T
ZWN1cml0eUNvbnRleHQuY3BwCShyZXZpc2lvbiA5OTcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9TZWN1cml0eUNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw4IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNlY3VyaXR5Q29udGV4dDo6U2VjdXJpdHlDb250ZXh0KCkK
LSAgICA6IG1fc2FuZGJveEZsYWdzKFNhbmRib3hOb25lKQorICAgIDogbV9oYXZlSW5pdGlhbGl6
ZWRTZWN1cml0eU9yaWdpbihmYWxzZSkKKyAgICAsIG1fc2FuZGJveEZsYWdzKFNhbmRib3hOb25l
KQogewogfQogCkBAIC00NSw2ICs0Niw3IEBAIFNlY3VyaXR5Q29udGV4dDo6flNlY3VyaXR5Q29u
dGV4dCgpCiB2b2lkIFNlY3VyaXR5Q29udGV4dDo6c2V0U2VjdXJpdHlPcmlnaW4oUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgbV9zZWN1cml0eU9yaWdp
biA9IHNlY3VyaXR5T3JpZ2luOworICAgIG1faGF2ZUluaXRpYWxpemVkU2VjdXJpdHlPcmlnaW4g
PSB0cnVlOwogfQogCiB2b2lkIFNlY3VyaXR5Q29udGV4dDo6c2V0Q29udGVudFNlY3VyaXR5UG9s
aWN5KFBhc3NSZWZQdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBjb250ZW50U2VjdXJpdHlQb2xp
Y3kpCkBAIC01Miw2ICs1NCwxNyBAQCB2b2lkIFNlY3VyaXR5Q29udGV4dDo6c2V0Q29udGVudFNl
Y3VyaXR5CiAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3kgPSBjb250ZW50U2VjdXJpdHlQb2xp
Y3k7CiB9CiAKK2Jvb2wgU2VjdXJpdHlDb250ZXh0Ojppc1NlY3VyZVRyYW5zaXRpb25Ubyhjb25z
dCBLVVJMJiB1cmwpIGNvbnN0Cit7CisgICAgLy8gSWYgd2UndmUgZmFpbGVkIHRvIGluaXRpYWxp
emUgdGhlIHNlY3VyaXR5IG9yaWdpbiwgdGhpcyBjb3VsZCBiZSB0aGUKKyAgICAvLyBpbml0aWFs
IERvY3VtZW50IGluIGEgRnJhbWUgY3JlYXRlZCBieSB0aGUgZW1iZWRkZXIuCisgICAgaWYgKCFt
X2hhdmVJbml0aWFsaXplZFNlY3VyaXR5T3JpZ2luKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3RoZXIgPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KHVybCk7CisgICAgcmV0dXJuIHNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2VzcyhvdGhlci5nZXQo
KSk7Cit9CisKIFNhbmRib3hGbGFncyBTZWN1cml0eUNvbnRleHQ6OnBhcnNlU2FuZGJveFBvbGlj
eShjb25zdCBTdHJpbmcmIHBvbGljeSkKIHsKICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9o
dG1sNS90aGUtaWZyYW1lLWVsZW1lbnQuaHRtbCNhdHRyLWlmcmFtZS1zYW5kYm94CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oCShyZXZpc2lvbiA5OTcyOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCAr
MzMsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNlY3VyaXR5T3JpZ2luOwog
Y2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5OworY2xhc3MgS1VSTDsKK2NsYXNzIFNlY3VyaXR5
T3JpZ2luOwogCiBlbnVtIFNhbmRib3hGbGFnIHsKICAgICBTYW5kYm94Tm9uZSA9IDAsCkBAIC01
OSw2ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuZm9yY2VTYW5kYm94RmxhZ3MoU2FuZGJv
eEZsYWdzIG1hc2spIHsgbV9zYW5kYm94RmxhZ3MgfD0gbWFzazsgfQogICAgIGJvb2wgaXNTYW5k
Ym94ZWQoU2FuZGJveEZsYWdzIG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fc2FuZGJveEZsYWdzICYg
bWFzazsgfQogCisgICAgYm9vbCBpc1NlY3VyZVRyYW5zaXRpb25Ubyhjb25zdCBLVVJMJikgY29u
c3Q7CisKICAgICBzdGF0aWMgU2FuZGJveEZsYWdzIHBhcnNlU2FuZGJveFBvbGljeShjb25zdCBT
dHJpbmcmIHBvbGljeSk7CiAKIHByb3RlY3RlZDoKQEAgLTcxLDcgKzc0LDExIEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIHNldFNlY3VyaXR5T3JpZ2luKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
KTsKICAgICB2b2lkIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShQYXNzUmVmUHRyPENvbnRlbnRT
ZWN1cml0eVBvbGljeT4pOwogCisgICAgdm9pZCBkaWRGYWlsVG9Jbml0aWFsaXplU2VjdXJpdHlP
cmlnaW4oKSB7IG1faGF2ZUluaXRpYWxpemVkU2VjdXJpdHlPcmlnaW4gPSBmYWxzZTsgfQorICAg
IGJvb2wgaGF2ZUluaXRpYWxpemVkU2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX2hh
dmVJbml0aWFsaXplZFNlY3VyaXR5T3JpZ2luOyB9CisKIHByaXZhdGU6CisgICAgYm9vbCBtX2hh
dmVJbml0aWFsaXplZFNlY3VyaXR5T3JpZ2luOwogICAgIFNhbmRib3hGbGFncyBtX3NhbmRib3hG
bGFnczsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CiAgICAg
UmVmUHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAJKHJldmlzaW9uIDk5
NzI4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6OmJlZ2luKGNv
bnN0IEtVUkwmIHUKIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGNvbnN1bHQgdGhlIGNv
bnRlbnQgc2VjdXJpdHkgcG9saWN5IGhlcmUgYWJvdXQgYmxvY2tlZCBwbHVnLWlucz8KIAotICAg
IGJvb2wgcmVzZXRTY3JpcHRpbmcgPSAhKG1fZnJhbWUtPmxvYWRlcigpLT5zdGF0ZU1hY2hpbmUo
KS0+aXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSAmJiBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpLT5pc1NlY3VyZVRyYW5zaXRpb25Ubyh1cmwpKTsKKyAgICBi
b29sIHJlc2V0U2NyaXB0aW5nID0gIShtX2ZyYW1lLT5sb2FkZXIoKS0+c3RhdGVNYWNoaW5lKCkt
PmlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkgJiYgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+aXNTZWN1cmVUcmFuc2l0aW9uVG8odXJsKSk7CiAgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNs
ZWFyKHJlc2V0U2NyaXB0aW5nLCByZXNldFNjcmlwdGluZyk7CiAgICAgY2xlYXIoKTsKICAgICBp
ZiAocmVzZXRTY3JpcHRpbmcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAJKHJldmlzaW9uIDk5NzI4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk0LDcgKzM5NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OnN0b3BMb2FkaW5nKFVubG9hZEV2ZW4KICAgICAgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCkg
JiYgIW1fZnJhbWUtPmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpIHsKICAgICAgICAgICAgIC8v
IERvbid0IHJlbW92ZSBldmVudCBsaXN0ZW5lcnMgZnJvbSBhIHRyYW5zaXRpb25hbCBlbXB0eSBk
b2N1bWVudCAoc2VlIGJ1ZyAyODcxNiBmb3IgbW9yZSBpbmZvcm1hdGlvbikuCiAgICAgICAgICAg
ICBib29sIGtlZXBFdmVudExpc3RlbmVycyA9IG1fc3RhdGVNYWNoaW5lLmlzRGlzcGxheWluZ0lu
aXRpYWxFbXB0eURvY3VtZW50KCkgJiYgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyCi0gICAg
ICAgICAgICAgICAgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+aXNT
ZWN1cmVUcmFuc2l0aW9uVG8obV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT51cmwoKSk7Cisg
ICAgICAgICAgICAgICAgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aXNTZWN1cmVUcmFuc2l0aW9u
VG8obV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT51cmwoKSk7CiAKICAgICAgICAgICAgIGlm
ICgha2VlcEV2ZW50TGlzdGVuZXJzKQogICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCShyZXZpc2lvbiA5OTcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODc4LDcgKzg3OCw3IEBAIHZvaWQgRE9NV2luZG93Ojpw
b3N0TWVzc2FnZShQYXNzUmVmUHRyPFMKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRhcmdl
dDsKICAgICBpZiAodGFyZ2V0T3JpZ2luICE9ICIqIikgewogICAgICAgICB0YXJnZXQgPSBTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh0YXJnZXRPcmlnaW4pOwotICAgICAgICBpZiAo
dGFyZ2V0LT5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKHRhcmdldC0+aXNVbmlxdWUoKSkgewog
ICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAkocmV2aXNpb24g
OTk3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsODEgKzQyLDEwMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25z
dCBpbnQgTWF4QWxsb3dlZFBvcnQgPSA2NTUzNTsKK2NvbnN0IGludCBJbnZhbGlkUG9ydCA9IDA7
CiAKLXN0YXRpYyBib29sIHNjaGVtZVJlcXVpcmVzQXV0aG9yaXR5KGNvbnN0IFN0cmluZyYgc2No
ZW1lKQorc3RhdGljIGJvb2wgc2NoZW1lUmVxdWlyZXNBdXRob3JpdHkoY29uc3QgS1VSTCYgdXJs
KQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoVVJMU2NoZW1lc01hcCwgc2NoZW1lcywgKCkp
OworICAgIHJldHVybiB1cmwucHJvdG9jb2xJcygiaHR0cCIpIHx8IHVybC5wcm90b2NvbElzKCJo
dHRwcyIpIHx8IHVybC5wcm90b2NvbElzKCJmdHAiKTsKK30KKworc3RhdGljIGJvb2wgc2hvdWxk
VXNlSW5uZXJVUkwoY29uc3QgS1VSTCYgdXJsKQoreworICAgIC8vIEZJWE1FOiBVc2UgdGhlIGlu
bmVyIFVSTCBldmVuIHdoZW4gQkxPQiBhbmQgRklMRV9TWVNURU0gYXJlIGRpc2FibGVkLgorI2lm
IEVOQUJMRShCTE9CKQorICAgIGlmICh1cmwucHJvdG9jb2xJcygiYmxvYiIpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICBpZiAodXJs
LnByb3RvY29sSXMoImZpbGVzeXN0ZW0iKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBLVVJMIGV4dHJhY3RJbm5lclVSTChjb25z
dCBLVVJMJiB1cmwpCit7CisgICAgcmV0dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBkZWNvZGVV
UkxFc2NhcGVTZXF1ZW5jZXModXJsLnBhdGgoKSkpOworfQorCitzdGF0aWMgYm9vbCBpc0RpcmVj
dG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJuIHBhdGguZW5kc1dpdGgoIi8i
KTsKK30KKworc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRBc1VuaXF1ZU9yaWdpbihjb25zdCBLVVJM
JiB1cmwpCit7CisgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIHVud3JhcCB0aGUgVVJMIGZ1cnRoZXI/Cisg
ICAgS1VSTCBlZmZlY3RpdmVVUkwgPSBzaG91bGRVc2VJbm5lclVSTCh1cmwpID8gZXh0cmFjdElu
bmVyVVJMKHVybCkgOiB1cmw7CisKKyAgICAvLyBGSVhNRTogQ2hlY2sgd2hldGhlciBlZmZlY3Rp
dmVVUkwgaXMgdmFsaWQuCisKKyAgICAvLyBGb3IgZWRnZSBjYXNlIFVSTHMgdGhhdCB3ZXJlIHBy
b2JhYmx5IG1pc3BhcnNlZCwgbWFrZSBzdXJlIHRoYXQgdGhlIG9yaWdpbiBpcyB1bmlxdWUuCisg
ICAgaWYgKHNjaGVtZVJlcXVpcmVzQXV0aG9yaXR5KGVmZmVjdGl2ZVVSTCkgJiYgZWZmZWN0aXZl
VVJMLmhvc3QoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgU3RyaW5n
IHByb3RvY29sID0gZWZmZWN0aXZlVVJMLnByb3RvY29sKCkubG93ZXIoKTsKKworICAgIGlmIChT
Y2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc05vQWNjZXNzKHByb3RvY29sKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoc2NoZW1lcy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgc2NoZW1lcy5hZGQoImh0dHAiKTsKLSAgICAgICAgc2NoZW1lcy5hZGQoImh0dHBzIik7
Ci0gICAgICAgIHNjaGVtZXMuYWRkKCJmdHAiKTsKKyAgICAvLyBXZSB1c2UgdW5pcXVlIG9yaWdp
bnMgZm9yIGRpcmVjdG9yeSBsaXN0aW5ncyB0byBtYWtlIGl0IGhhcmRlciB0byBjcmF3bCBhIGxv
Y2FsIGZpbGVzeXN0ZW0uCisgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNj
aGVtZUFzTG9jYWwocHJvdG9jb2wpCisgICAgICAgICYmICFzaG91bGRVc2VJbm5lclVSTCh1cmwp
IC8vIE5vdGUgdGhlIHVzZSBvZiB1cmwgcmF0aGVyIHRoYW4gZWZmZWN0aXZlVVJMLgorICAgICAg
ICAmJiAoIWVmZmVjdGl2ZVVSTC5oYXNQYXRoKCkgfHwgaXNEaXJlY3RvcnkoZWZmZWN0aXZlVVJM
LnBhdGgoKSkpKSB7CisgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYmUgdXNpbmcgc2hvdWxk
VXNlSW5uZXJVUkwgaGVyZT8KKyAgICAgICAgLy8gV2Ugb3JpZ2luYWxseSBkaWQgdGhhdCBjaGVj
ayB0byBhdm9pZCB0cmVhdGluZyBibG9iIGFuZCBmaWxlc3lzdGVtCisgICAgICAgIC8vIHVybHMg
YXMgdW5pcXVlIHdoZW4gaXQgaXMgY3JlYXRlZCBmcm9tIGxvY2FsIGZpbGUgdXJscy4KKyAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgcmV0dXJuIHNjaGVtZXMuY29udGFpbnMoc2No
ZW1lKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9y
aWdpbihjb25zdCBLVVJMJiB1cmwsIGJvb2wgZm9yY2VVbmlxdWUpCitTZWN1cml0eU9yaWdpbjo6
U2VjdXJpdHlPcmlnaW4oY29uc3QgS1VSTCYgdXJsKQogICAgIDogbV9wcm90b2NvbCh1cmwucHJv
dG9jb2woKS5pc051bGwoKSA/ICIiIDogdXJsLnByb3RvY29sKCkubG93ZXIoKSkKICAgICAsIG1f
aG9zdCh1cmwuaG9zdCgpLmlzTnVsbCgpID8gIiIgOiB1cmwuaG9zdCgpLmxvd2VyKCkpCiAgICAg
LCBtX3BvcnQodXJsLnBvcnQoKSkKLSAgICAsIG1faXNVbmlxdWUoZm9yY2VVbmlxdWUgfHwgU2No
ZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNOb0FjY2VzcyhtX3Byb3RvY29sKSkK
KyAgICAsIG1faXNVbmlxdWUoZmFsc2UpCiAgICAgLCBtX3VuaXZlcnNhbEFjY2VzcyhmYWxzZSkK
ICAgICAsIG1fZG9tYWluV2FzU2V0SW5ET00oZmFsc2UpCiAgICAgLCBtX2VuZm9yY2VGaWxlUGF0
aFNlcGFyYXRpb24oZmFsc2UpCiB7Ci0gICAgLy8gVGhlc2UgcHJvdG9jb2xzIGRvIG5vdCBjcmVh
dGUgc2VjdXJpdHkgb3JpZ2luczsgdGhlIG93bmVyIGZyYW1lIHByb3ZpZGVzIHRoZSBvcmlnaW4K
LSAgICBpZiAobV9wcm90b2NvbCA9PSAiYWJvdXQiIHx8IG1fcHJvdG9jb2wgPT0gImphdmFzY3Jp
cHQiKQotICAgICAgICBtX3Byb3RvY29sID0gIiI7Ci0KLSNpZiBFTkFCTEUoQkxPQikgfHwgRU5B
QkxFKEZJTEVfU1lTVEVNKQotICAgIGJvb2wgaXNCbG9iT3JGaWxlU3lzdGVtUHJvdG9jb2wgPSBm
YWxzZTsKLSNpZiBFTkFCTEUoQkxPQikKLSAgICBpZiAobV9wcm90b2NvbCA9PSBCbG9iVVJMOjpi
bG9iUHJvdG9jb2woKSkKLSAgICAgICAgaXNCbG9iT3JGaWxlU3lzdGVtUHJvdG9jb2wgPSB0cnVl
OwotI2VuZGlmCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIGlmIChtX3Byb3RvY29sID09
ICJmaWxlc3lzdGVtIikKLSAgICAgICAgaXNCbG9iT3JGaWxlU3lzdGVtUHJvdG9jb2wgPSB0cnVl
OwotI2VuZGlmCi0gICAgaWYgKGlzQmxvYk9yRmlsZVN5c3RlbVByb3RvY29sKSB7Ci0gICAgICAg
IEtVUkwgb3JpZ2luVVJMKFBhcnNlZFVSTFN0cmluZywgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2Vz
KHVybC5wYXRoKCkpKTsKLSAgICAgICAgaWYgKG9yaWdpblVSTC5pc1ZhbGlkKCkpIHsKLSAgICAg
ICAgICAgIG1fcHJvdG9jb2wgPSBvcmlnaW5VUkwucHJvdG9jb2woKS5sb3dlcigpOwotICAgICAg
ICAgICAgbV9ob3N0ID0gb3JpZ2luVVJMLmhvc3QoKS5sb3dlcigpOwotICAgICAgICAgICAgbV9w
b3J0ID0gb3JpZ2luVVJMLnBvcnQoKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX2lz
VW5pcXVlID0gdHJ1ZTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIC8vIEZvciBlZGdlIGNhc2UgVVJM
cyB0aGF0IHdlcmUgcHJvYmFibHkgbWlzcGFyc2VkLCBtYWtlIHN1cmUgdGhhdCB0aGUgb3JpZ2lu
IGlzIHVuaXF1ZS4KLSAgICBpZiAoc2NoZW1lUmVxdWlyZXNBdXRob3JpdHkobV9wcm90b2NvbCkg
JiYgbV9ob3N0LmlzRW1wdHkoKSkKLSAgICAgICAgbV9pc1VuaXF1ZSA9IHRydWU7Ci0gICAgaWYg
KG1fcHJvdG9jb2wuaXNFbXB0eSgpKQotICAgICAgICBtX2lzVW5pcXVlID0gdHJ1ZTsKKyAgICBB
U1NFUlQodXJsLmlzVmFsaWQoKSk7CiAKICAgICAvLyBkb2N1bWVudC5kb21haW4gc3RhcnRzIGFz
IG1faG9zdCwgYnV0IGNhbiBiZSBzZXQgYnkgdGhlIERPTS4KICAgICBtX2RvbWFpbiA9IG1faG9z
dDsKIAorICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0LCBtX3Byb3RvY29s
KSkKKyAgICAgICAgbV9wb3J0ID0gSW52YWxpZFBvcnQ7CisKICAgICAvLyBCeSBkZWZhdWx0LCBv
bmx5IGxvY2FsIFNlY3VyaXR5T3JpZ2lucyBjYW4gbG9hZCBsb2NhbCByZXNvdXJjZXMuCiAgICAg
bV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXMgPSBpc0xvY2FsKCk7Ci0gICAgaWYgKG1fY2FuTG9hZExv
Y2FsUmVzb3VyY2VzKSB7Ci0gICAgICAgIC8vIERpcmVjdG9yaWVzIHNob3VsZCBuZXZlciBiZSBy
ZWFkYWJsZS4KLSAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGRvIG5vdCBkbyB0aGlzIGNoZWNrIGZv
ciBibG9iIG9yIGZpbGVzeXN0ZW0gdXJsIGJlY2F1c2UgaXRzIG9yaWdpbiBpcyBmaWxlOi8vLyB3
aGVuIGl0IGlzIGNyZWF0ZWQgZnJvbSBsb2NhbCBmaWxlIHVybHMuCi0jaWYgRU5BQkxFKEJMT0Ip
IHx8IEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICAgICAgYm9vbCBkb0RpcmVjdG9yeUNoZWNrID0g
IWlzQmxvYk9yRmlsZVN5c3RlbVByb3RvY29sOwotI2Vsc2UKLSAgICAgICAgYm9vbCBkb0RpcmVj
dG9yeUNoZWNrID0gdHJ1ZTsKLSNlbmRpZgotICAgICAgICBpZiAoZG9EaXJlY3RvcnlDaGVjayAm
JiAoIXVybC5oYXNQYXRoKCkgfHwgdXJsLnBhdGgoKS5lbmRzV2l0aCgiLyIpKSkKLSAgICAgICAg
ICAgIG1faXNVbmlxdWUgPSB0cnVlOwotICAgICAgICAvLyBTdG9yZSB0aGUgcGF0aCBpbiBjYXNl
IHdlIGFyZSBkb2luZyBwZXItZmlsZSBvcmlnaW4gY2hlY2tpbmcuCi0gICAgICAgIG1fZmlsZVBh
dGggPSB1cmwucGF0aCgpOwotICAgIH0KIAotICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9j
b2wobV9wb3J0LCBtX3Byb3RvY29sKSkKLSAgICAgICAgbV9wb3J0ID0gMDsKKyAgICBpZiAobV9j
YW5Mb2FkTG9jYWxSZXNvdXJjZXMpCisgICAgICAgIG1fZmlsZVBhdGggPSB1cmwucGF0aCgpOyAv
LyBJbiBjYXNlIGVuZm9yY2VGaWxlUGF0aFNlcGFyYXRpb24oKSBpcyBjYWxsZWQuCit9CisKK1Nl
Y3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihVbmlxdWVPcmlnaW5UYWcpCisgICAgOiBtX3Bv
cnQoSW52YWxpZFBvcnQpCisgICAgLCBtX2lzVW5pcXVlKHRydWUpCisgICAgLCBtX3VuaXZlcnNh
bEFjY2VzcyhmYWxzZSkKKyAgICAsIG1fZG9tYWluV2FzU2V0SW5ET00oZmFsc2UpCisgICAgLCBt
X2NhbkxvYWRMb2NhbFJlc291cmNlcyhmYWxzZSkKKyAgICAsIG1fZW5mb3JjZUZpbGVQYXRoU2Vw
YXJhdGlvbihmYWxzZSkKK3sKIH0KIAogU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNv
bnN0IFNlY3VyaXR5T3JpZ2luKiBvdGhlcikKQEAgLTEzNCwxNyArMTU0LDE4IEBAIFNlY3VyaXR5
T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBTZWMKIHsKIH0KIAotYm9vbCBTZWN1cml0eU9y
aWdpbjo6aXNFbXB0eSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFtX3Byb3RvY29sLmlzRW1wdHko
KSB8fCBtX2lzVW5pcXVlKTsKLSAgICByZXR1cm4gbV9wcm90b2NvbC5pc0VtcHR5KCk7Ci19Ci0K
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29uc3Qg
S1VSTCYgdXJsLCBib29sIGZvcmNlVW5pcXVlKQogewotICAgIGlmICghdXJsLmlzVmFsaWQoKSkK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWN1cml0eU9yaWdpbihibGFua1VSTCgpLCBm
b3JjZVVuaXF1ZSkpOwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VjdXJpdHlPcmlnaW4odXJs
LCBmb3JjZVVuaXF1ZSkpOworICAgIC8vIEZJWE1FOiBSZW1vdmUgZm9yY2VVbmlxdWUgcGFyYW1l
dGVyLgorICAgIEFTU0VSVF9VTlVTRUQoZm9yY2VVbmlxdWUsICFmb3JjZVVuaXF1ZSk7CisKKyAg
ICBpZiAoc2hvdWxkVHJlYXRBc1VuaXF1ZU9yaWdpbih1cmwpKQorICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFNlY3VyaXR5T3JpZ2luKFVuaXF1ZU9yaWdpbikpOworCisgICAgaWYgKHNob3Vs
ZFVzZUlubmVyVVJMKHVybCkpCisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VjdXJpdHlP
cmlnaW4oZXh0cmFjdElubmVyVVJMKHVybCkpKTsKKworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U2VjdXJpdHlPcmlnaW4odXJsKSk7CiB9CiAKIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKQpAQCAtMzQ1LDE2ICszNjYsNiBAQCBib29sIFNl
Y3VyaXR5T3JpZ2luOjppc0xvY2FsKCkgY29uc3QKICAgICByZXR1cm4gU2NoZW1lUmVnaXN0cnk6
OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChtX3Byb3RvY29sKTsKIH0KIAotYm9vbCBTZWN1
cml0eU9yaWdpbjo6aXNTZWN1cmVUcmFuc2l0aW9uVG8oY29uc3QgS1VSTCYgdXJsKSBjb25zdAot
ewotICAgIC8vIFRoaXMgb3JpZ2luIHJlcHJlc2VudHMgYSBuZXcgd2luZG93IGNyZWF0ZWQgYnkg
dGhlIGFwcGxpY2F0aW9uLgotICAgIGlmIChpc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvdGhlciA9IFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUodXJsKTsKLSAgICByZXR1cm4gY2FuQWNjZXNzKG90aGVyLmdldCgpKTsKLX0KLQogU3Ry
aW5nIFNlY3VyaXR5T3JpZ2luOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKGlzVW5pcXVl
KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCShyZXZpc2lvbiA5OTcy
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAkod29ya2luZyBjb3B5
KQpAQCAtMTIxLDggKzEyMSw2IEBAIHB1YmxpYzoKICAgICAvLyBvcmlnaW5zLgogICAgIGJvb2wg
Y2FuQWNjZXNzU2Vzc2lvblN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiAhaXNVbmlxdWUoKTsgfQog
Ci0gICAgYm9vbCBpc1NlY3VyZVRyYW5zaXRpb25Ubyhjb25zdCBLVVJMJikgY29uc3Q7Ci0KICAg
ICAvLyBUaGUgbG9jYWwgU2VjdXJpdHlPcmlnaW4gaXMgdGhlIG1vc3QgcHJpdmlsZWdlZCBTZWN1
cml0eU9yaWdpbi4KICAgICAvLyBUaGUgbG9jYWwgU2VjdXJpdHlPcmlnaW4gY2FuIHNjcmlwdCBh
bnkgZG9jdW1lbnQsIG5hdmlnYXRlIHRvIGxvY2FsCiAgICAgLy8gcmVzb3VyY2VzLCBhbmQgY2Fu
IHNldCBhcmJpdHJhcnkgaGVhZGVycyBvbiBYTUxIdHRwUmVxdWVzdHMuCkBAIC0xMzYsMTMgKzEz
NCw2IEBAIHB1YmxpYzoKICAgICAvLyBhZGRpdGlvbiwgdGhlIFNhbmRib3hPcmlnaW4gZmxhZyBp
cyBpbmhlcml0ZWQgYnkgaWZyYW1lcy4KICAgICBib29sIGlzVW5pcXVlKCkgY29uc3QgeyByZXR1
cm4gbV9pc1VuaXF1ZTsgfQogCi0gICAgLy8gVGhlIGVtcHR5IFNlY3VyaXR5T3JpZ2luIGlzIGEg
dW5pcXVlIHNlY3VyaXR5IG9yaWduIChpbiB0aGUgc2Vuc2Ugb2YKLSAgICAvLyBpc1VuaXF1ZSBh
Ym92ZSkgdGhhdCB3YXMgY3JlYXRlZCBmb3IgYSAiYmxhbmsiIGRvY3VtZW50LCBzdWNoIGFib3V0
Ci0gICAgLy8gYWJvdXQ6YmxhbmsuIEVtcHR5IG9yaWdpbnMgZGlmZmVyIGZyb20gdW5pcXVlIG9y
aWdpbnMgaW4gdGhhdCB0aGV5IGNhbgotICAgIC8vIHNvbWV0aW1lcyBiZSByZXBsYWNlZCBieSBu
b24tZW1wdHkgb3JpZ2lucywgZm9yIGV4YW1wbGUgd2hlbiBhbgotICAgIC8vIGFib3V0OmJsYW5r
IGlmcmFtZSBpbmhlcml0cyBpdHMgc2VjdXJpdHkgb3JpZ2luIGZyb20gaXRzIHBhcmVudCBmcmFt
ZS4KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKLQogICAgIC8vIE1hcmtzIGEgZmlsZTovLyBv
cmlnaW4gYXMgYmVpbmcgaW4gYSBkb21haW4gZGVmaW5lZCBieSBpdHMgcGF0aC4KICAgICB2b2lk
IGVuZm9yY2VGaWxlUGF0aFNlcGFyYXRpb24oKTsKIApAQCAtMTc0LDcgKzE2NSwxMyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc1NhbWVTY2hlbWVIb3N0UG9ydChjb25zdCBTZWN1cml0eU9yaWdpbiop
IGNvbnN0OwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFNlY3VyaXR5T3JpZ2luKGNvbnN0IEtV
UkwmLCBib29sIGZvcmNlVW5pcXVlKTsKKyAgICBlbnVtIFVuaXF1ZU9yaWdpblRhZyB7CisgICAg
ICAgIFVuaXF1ZU9yaWdpbiwKKyAgICB9OworCisgICAgZXhwbGljaXQgU2VjdXJpdHlPcmlnaW4o
Y29uc3QgS1VSTCYpOworICAgIGV4cGxpY2l0IFNlY3VyaXR5T3JpZ2luKFVuaXF1ZU9yaWdpblRh
Zyk7CisKICAgICBleHBsaWNpdCBTZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiop
OwogCiAgICAgLy8gRklYTUU6IFJlbmFtZSB0aGlzIGZ1bmN0aW9uIHRvIHNvbWV0aGluZyBtb3Jl
IHNlbWFudGljLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAJKHJl
dmlzaW9uIDk5NzI4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTk5LDggKzk5LDggQEAgYm9vbCBTZWN1cml0eVBvbGljeTo6aXNB
Y2Nlc3NUb1VSTFdoaXRlTAogdm9pZCBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uRG9tYWlu
LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0gICAgQVNTRVJUKCFzb3VyY2VPcmlnaW4uaXNFbXB0eSgpKTsKLSAgICBpZiAo
c291cmNlT3JpZ2luLmlzRW1wdHkoKSkKKyAgICBBU1NFUlQoIXNvdXJjZU9yaWdpbi5pc1VuaXF1
ZSgpKTsKKyAgICBpZiAoc291cmNlT3JpZ2luLmlzVW5pcXVlKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIFN0cmluZyBzb3VyY2VTdHJpbmcgPSBzb3VyY2VPcmlnaW4udG9TdHJpbmcoKTsKQEAg
LTExNSw4ICsxMTUsOCBAQCB2b2lkIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0
CiB2b2lkIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShj
b25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Eb21haW4sIGJvb2wgYWxsb3dE
ZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAg
ICBBU1NFUlQoIXNvdXJjZU9yaWdpbi5pc0VtcHR5KCkpOwotICAgIGlmIChzb3VyY2VPcmlnaW4u
aXNFbXB0eSgpKQorICAgIEFTU0VSVCghc291cmNlT3JpZ2luLmlzVW5pcXVlKCkpOworICAgIGlm
IChzb3VyY2VPcmlnaW4uaXNVbmlxdWUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5n
IHNvdXJjZVN0cmluZyA9IHNvdXJjZU9yaWdpbi50b1N0cmluZygpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAkocmV2aXNpb24gOTk3MjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY4LDEwICs2OCwxMyBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc1dpdGhVbmlx
dWVPCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChVUkxTY2hlbWVzTWFwLCBzY2hlbWVzV2l0
aFVuaXF1ZU9yaWdpbnMsICgpKTsKIAotICAgIC8vIFRoaXMgaXMgYSB3aWxsZnVsIHZpb2xhdGlv
biBvZiBIVE1MNS4KLSAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExODg1Ci0gICAgaWYgKHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucy5pc0VtcHR5KCkp
CisgICAgaWYgKHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
c2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmFkZCgiYWJvdXQiKTsKKyAgICAgICAgc2NoZW1lc1dp
dGhVbmlxdWVPcmlnaW5zLmFkZCgiamF2YXNjcmlwdCIpOworICAgICAgICAvLyBUaGlzIGlzIGEg
d2lsbGZ1bCB2aW9sYXRpb24gb2YgSFRNTDUuCisgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4ODUKICAgICAgICAgc2NoZW1lc1dpdGhVbmlx
dWVPcmlnaW5zLmFkZCgiZGF0YSIpOworICAgIH0KIAogICAgIHJldHVybiBzY2hlbWVzV2l0aFVu
aXF1ZU9yaWdpbnM7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24g
OTk4MTIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTExLTA5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5pcXVlIFNlY3VyaXR5T3JpZ2lucyBzaG91bGRuJ3QgcmVtZW1i
ZXIgdGhlaXIgb2xkIHNjaGVtZXMgYW5kIGhvc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTc0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjb25jZXB0IG9mIGFuIGVtcHR5IG9yaWdpbiBubyBs
b25nZXIgZXhpc3RzLiAgSW4gYSBmb2xsb3ctdXAgcGF0Y2gsCisgICAgICAgIEknbGwgcmVuYW1l
IHRoaXMgQVBJIHRvIGlzVW5pcXVlLgorCisgICAgICAgICogc3JjL1dlYlNlY3VyaXR5T3JpZ2lu
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VjdXJpdHlPcmlnaW46OmlzRW1wdHkpOgorCiAy
MDExLTExLTA5ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAg
ICAgIFtjaHJvbWl1bV0gTWVkaWFTdHJlYW0gQVBJOiBBZGQgV2ViTWVkaWFTdHJlYW1SZWdpc3Ry
eQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VjdXJpdHlPcmlnaW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlY3VyaXR5T3Jp
Z2luLmNwcAkocmV2aXNpb24gOTk3MjgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDEwICs5MCwxMSBAQCB1
bnNpZ25lZCBzaG9ydCBXZWJTZWN1cml0eU9yaWdpbjo6cG9ydCgpCiAgICAgcmV0dXJuIG1fcHJp
dmF0ZS0+cG9ydCgpOwogfQogCisvLyBGSVhNRTogUmVuYW1lZCB0aGlzIEFQSSB0byBpc1VuaXF1
ZSgpLgogYm9vbCBXZWJTZWN1cml0eU9yaWdpbjo6aXNFbXB0eSgpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKG1fcHJpdmF0ZSk7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+aXNFbXB0eSgpOworICAgIHJl
dHVybiBtX3ByaXZhdGUtPmlzVW5pcXVlKCk7CiB9CiAKIGJvb2wgV2ViU2VjdXJpdHlPcmlnaW46
OmNhbkFjY2Vzcyhjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3RoZXIpIGNvbnN0CkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA5OTgxMikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDMwIEBACisyMDExLTExLTA5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5pcXVlIFNlY3VyaXR5T3JpZ2lucyBzaG91bGRuJ3QgcmVtZW1i
ZXIgdGhlaXIgb2xkIHNjaGVtZXMgYW5kIGhvc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTc0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL2FzeW5jLW9wZXJhdGlvbnMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9ub3QtZW5vdWdoLWFyZ3Vt
ZW50cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3JlYWQtZGlyZWN0
b3J5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXBlcnNp
c3RlbnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVh
ZG9ubHktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9zaW1wbGUtdGVt
cG9yYXJ5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgICAgIC0gVXBkYXRlIHRlc3QgcmVzdWx0cyB0
byBzaG93IHRoYXQgd2Ugbm8gbG9uZ2VyIGxlYWsgdGhlIHNjaGVtZSBpbgorICAgICAgICAgICAg
ICBzdG9yYWdlIGlkZW50aWZpZXJzLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1p
ZnJhbWUtYXR0cmlidXRlLXBhcnNpbmcuaHRtbDoKKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5k
Ym94ZWQtaWZyYW1lLWZvcm1zLWR5bmFtaWMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9z
YW5kYm94ZWQtaWZyYW1lLWZvcm1zLmh0bWw6CisgICAgICAgICAgICAtIFByZXZpb3VzbHkgc2Fu
ZGJveGVkIGxvY2FsIGlmcmFtZXMgc3RpbGwgZ290IHVuaXZlcnNhbCBhY2Nlc3MKKyAgICAgICAg
ICAgICAgd2hlbiB3ZSdyZSBydW5uaW5nIHdpdGggdW5pdmVyc2FsIGFjY2VzcyBmb3IgZmlsZSBV
UkxzISAgTm93IHRoYXQKKyAgICAgICAgICAgICAgdGhleSBjb3JyZWN0bHkgZ2V0IHVuaXF1ZSBv
cmlnaW5zLCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGVzZSB0ZXN0cworICAgICAgICAgICAgICB0byBh
bGxvdy1zYW1lLW9yaWdpbiBhY2Nlc3MgaW4gb3JkZXIgZm9yIHRoZW0gdG8gZnVuY3Rpb24KKyAg
ICAgICAgICAgICAgcHJvcGVybHkuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlm
cmFtZS1zdG9yYWdlLmh0bWw6CisgICAgICAgICAgICAtIElubGluZSBzY3JpcHQgYmVjYXVzZSB0
aGUgc2FuZGJveCBpZnJhbWUgaXNuJ3QgYWxsb3dlZCB0byBsb2FkCisgICAgICAgICAgICAgIGxv
Y2FsIHJlc291cmNlcy4KKwogMjAxMS0xMS0wOSAgQW5kcmV3IFNjaGVya3VzICA8c2NoZXJrdXNA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1vcmUgbWVkaWEgcmViYXNlbGluZXMgZHVlIHRvIHI5
ODU5Ni4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9hc3luYy1vcGVyYXRpb25z
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
YXN5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDk5NzI4KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL2FzeW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBCiAKIAogcmVxdWVzdGVkIEZpbGVTeXN0ZW0uCi1Hb3QgRmlsZVN5c3RlbTpmaWxl
X18wOlRlbXBvcmFyeQorR290IEZpbGVTeXN0ZW06X18wOlRlbXBvcmFyeQogU3RhcnRpbmcgYXN5
bmMgdGVzdCBzdGFnZSAxLgogU3RhcnRpbmcgYXN5bmMgdGVzdCBzdGFnZSAyLgogVmVyaWZ5aW5n
IHRoZSBGaWxlU3lzdGVtIHN0YXR1cy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9ub3QtZW5vdWdoLWFyZ3VtZW50cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL25vdC1lbm91Z2gtYXJndW1lbnRzLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gOTk3MjgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vbm90LWVub3Vn
aC1hcmd1bWVudHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQCBU
aGlzIHRlc3QgdHJpZXMgY2FsbGluZyB2YXJpb3VzIGZpbGVzeXN0CiBPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCiAKIAotU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFBlcnNpc3RlbnQgRmlsZVN5c3Rl
bTpmaWxlX18wOlRlbXBvcmFyeQorU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFBlcnNpc3RlbnQgRmls
ZVN5c3RlbTpfXzA6VGVtcG9yYXJ5CiBQQVNTIGZpbGVTeXN0ZW0ucm9vdC5tb3ZlVG8oKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KIFBBU1MgZmlsZVN5
c3RlbS5yb290LmNvcHlUbygpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2gg
YXJndW1lbnRzLgogUEFTUyByZWFkZXIucmVhZEVudHJpZXMoKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZWFkLWRpcmVjdG9yeS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3JlYWQtZGlyZWN0b3J5LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gOTk3MjgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVhZC1kaXJlY3Rvcnkt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQCBEaXJlY3RvcnlSZWFk
ZXIucmVhZEVudHJpZXMoKSB0ZXN0LgogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVN1
Y2Nlc3NmdWxseSBvYnRhaW5lZCBQZXJzaXN0ZW50IEZpbGVTeXN0ZW06ZmlsZV9fMDpUZW1wb3Jh
cnkKK1N1Y2Nlc3NmdWxseSBvYnRhaW5lZCBQZXJzaXN0ZW50IEZpbGVTeXN0ZW06X18wOlRlbXBv
cmFyeQogUEFTUyByZWFkRW50cmllc0NvdW50IGlzIGVudHJpZXNDYWxsYmFja0NvdW50CiBQQVNT
IHJlc3VsdEVudHJpZXMubGVuZ3RoIGlzIHRlc3RFbnRyaWVzQ291bnQKIEVudHJ5Oi9hIGlzRGly
ZWN0b3J5OnRydWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcGVy
c2lzdGVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL3NpbXBsZS1wZXJzaXN0ZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTk3MjgpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXBlcnNpc3RlbnQtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQCByZXF1ZXN0RmlsZVN5c3RlbSBQRVJT
SVNURU5UIHRlc3QuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotU3VjY2Vzc2Z1bGx5
IG9idGFpbmVkIFBFUlNJU1RFTlQgRmlsZVN5c3RlbTpmaWxlX18wOlBlcnNpc3RlbnQKK1N1Y2Nl
c3NmdWxseSBvYnRhaW5lZCBQRVJTSVNURU5UIEZpbGVTeXN0ZW06X18wOlBlcnNpc3RlbnQKIFBB
U1MgZmlsZVN5c3RlbS5uYW1lLmxlbmd0aCA+IDAgaXMgdHJ1ZQogUEFTUyBmaWxlU3lzdGVtLnJv
b3QuZnVsbFBhdGggaXMgIi8iCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXJlYWRvbmx5LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXJlYWRv
bmx5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTk3MjgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vc2ltcGxlLXJlYWRvbmx5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
Niw3ICs2LDcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogd2Vi
a2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAxMDAsIHN1Y2Nlc3NDYWxsYmFjaywgZXJy
b3JDYWxsYmFjaykKIHRyeWluZyB0byBzZXQgcmVhZG9ubHkgcHJvcGVydHkgZmlsZVN5c3RlbS5u
YW1lCiBmaWxlU3lzdGVtLm5hbWUgPSAnYmFyJwotUEFTUyBmaWxlU3lzdGVtLm5hbWUgaXMgc3Rp
bGwgZmlsZV9fMDpUZW1wb3JhcnkKK1BBU1MgZmlsZVN5c3RlbS5uYW1lIGlzIHN0aWxsIF9fMDpU
ZW1wb3JhcnkKIHJvb3QgPSBmaWxlU3lzdGVtLnJvb3QKIHJvb3QuZ2V0RmlsZSgnZm9vJywge2Ny
ZWF0ZTp0cnVlfSwgZ2V0RmlsZUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKQogdHJ5aW5nIHRvIHNl
dCByZWFkb25seSBwcm9wZXJ0eSBmaWxlRW50cnkuaXNGaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXRlbXBvcmFyeS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS10ZW1wb3JhcnktZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA5OTcyOCkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1w
bGUtdGVtcG9yYXJ5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAg
cmVxdWVzdEZpbGVTeXN0ZW0gVEVNUE9SQVJZIHRlc3QuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCiAKIAotU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVtOmZpbGVf
XzA6VGVtcG9yYXJ5CitTdWNjZXNzZnVsbHkgb2J0YWluZWQgVEVNUE9SQVJZIEZpbGVTeXN0ZW06
X18wOlRlbXBvcmFyeQogUEFTUyBmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCiBQ
QVNTIGZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCBpcyAiLyIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJh
bWUtYXR0cmlidXRlLXBhcnNpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLmh0bWwJKHJldmlzaW9u
IDk5NzI4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRy
aWJ1dGUtcGFyc2luZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHdpbmRv
dy5vbmxvYWQgPSBmdW5jdGlvbigpCiAgICAgPCEtLSBpZnJhbWVzIHdoZXJlIHNjcmlwdCBleGVj
dXRpb24gaXMgYWxsb3dlZCwgYnV0IG9yaWdpbiBpcyBub3Qgc2hhcmVkIC0tPgogCiAgICAgPCEt
LSBwbGFpbiwgcHJvcGVyIGF0dHJpYnV0ZSB2YWx1ZSAtLT4KLSAgICA8aWZyYW1lIHNhbmRib3g9
ImFsbG93LXNjcmlwdHMiCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93
LXNhbWUtb3JpZ2luIgogICAgICAgICAgICAgbmFtZT0iZjEiCiAgICAgICAgICAgICBzcmM9InJl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbCI+
CiAgICAgPC9pZnJhbWU+CkBAIC02Niw3ICs2Niw3IEBAIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlv
bigpCiAKIGFsbG93LXNjcmlwdHMKIAotIgorYWxsb3ctc2FtZS1vcmlnaW4iCiAgICAgICAgICAg
ICBuYW1lPSJmMiIKICAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
YXR0cmlidXRlLXBhcnNpbmctYWxsb3dlZC5odG1sIj4KICAgICA8L2lmcmFtZT4KQEAgLTEwMyw3
ICsxMDMsNyBAQCBhbGxvdy1zY3JpcHRzCiAgICAgICAgIAogICAgICAgICAnS3lzc2FybmEnICgn
VGhlIGtpc3NlcycpLCBFc2FpYXMgVGVnbsOpciwgMTc4Mi0xODQ2CiAKLSAgICBhbGxvdy1zY3Jp
cHRzCisgICAgYWxsb3ctc2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbgogICAgIAogICAgICAgICBp
bnQgbWFpbih2b2lkKQogICAgICAgICB7CkBAIC0xMTQsNDQgKzExNCw0NCBAQCBhbGxvdy1zY3Jp
cHRzCiAgICAgPC9pZnJhbWU+CiAKICAgICA8IS0tIHRhYiBjaGFyYWN0ZXJzIGJlZm9yZSBhbmQg
YWZ0ZXIgYXR0cmlidXRlIHZhbHVlIC0tPgotICAgIDxpZnJhbWUgc2FuZGJveD0iCQlhbGxvdy1z
Y3JpcHRzCQkiCisgICAgPGlmcmFtZSBzYW5kYm94PSIJCWFsbG93LXNjcmlwdHMJCWFsbG93LXNh
bWUtb3JpZ2luIgogICAgICAgICAgICAgbmFtZT0iZjQiCiAgICAgICAgICAgICBzcmM9InJlc291
cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbCI+CiAg
ICAgPC9pZnJhbWU+CiAKICAgICA8IS0tIG1peGVkIGNhc2UgLS0+Ci0gICAgPGlmcmFtZSBzYW5k
Ym94PSJBbExvVy1zQ3JJcFRzIgorICAgIDxpZnJhbWUgc2FuZGJveD0iQWxMb1ctc0NySXBUcyBh
bGxvdy1zYW1lLW9yaWdpbiIKICAgICAgICAgICAgIG5hbWU9ImY1IgogICAgICAgICAgICAgc3Jj
PSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1hbGxvd2VkLmh0
bWwiPgogICAgIDwvaWZyYW1lPgogCiAgICAgPCEtLSBpZnJhbWVzIHdoZXJlIHNjcmlwdCBleGVj
dXRpb24gaXMgZGlzYWxsb3dlZCAtLT4KIAotICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3dzY3Jp
cHRzIgorICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3dzY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2lu
IgogICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUt
cGFyc2luZy1kaXNhbGxvd2VkLmh0bWwiPgogICAgIDwvaWZyYW1lPgogCi0gICAgPGlmcmFtZSBz
YW5kYm94PSJhbGxvd3MtY3JpcHRzIgorICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3dzLWNyaXB0
cyBhbGxvdy1zYW1lLW9yaWdpbiIKICAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctZGlzYWxsb3dlZC5odG1sIj4KICAgICA8L2lmcmFt
ZT4KIAotICAgIDxpZnJhbWUgc2FuZGJveD0iLWFsbG93LXNjcmlwdHMiCisgICAgPGlmcmFtZSBz
YW5kYm94PSItYWxsb3ctc2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbiIKICAgICAgICAgICAgIHNy
Yz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctZGlzYWxsb3dl
ZC5odG1sIj4KICAgICA8L2lmcmFtZT4KIAotICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3dfc2Ny
aXB0cyIKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93X3NjcmlwdHMgYWxsb3ctc2FtZS1vcmln
aW4iCiAgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0
ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRtbCI+CiAgICAgPC9pZnJhbWU+CiAKLSAgICA8aWZyYW1l
IHNhbmRib3g9ImFsbG93U2NyaXB0cyIKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93U2NyaXB0
cyBhbGxvdy1zYW1lLW9yaWdpbiIKICAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctZGlzYWxsb3dlZC5odG1sIj4KICAgICA8L2lmcmFt
ZT4KIAotICAgIDxpZnJhbWUgc2FuZGJveD0iYWFsbG93LXNjcmlwdHMiCisgICAgPGlmcmFtZSBz
YW5kYm94PSJhYWxsb3ctc2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbiIKICAgICAgICAgICAgIHNy
Yz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctZGlzYWxsb3dl
ZC5odG1sIj4KICAgICA8L2lmcmFtZT4KIAotICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2Ny
aXB0c3MiCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzcyBhbGxvdy1zYW1lLW9y
aWdpbiIKICAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmli
dXRlLXBhcnNpbmctZGlzYWxsb3dlZC5odG1sIj4KICAgICA8L2lmcmFtZT4KIApJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy1keW5hbWljLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1m
b3Jtcy1keW5hbWljLmh0bWwJKHJldmlzaW9uIDk5NzI4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy1keW5hbWljLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDkgKzMwLDkgQEAgZnVuY3Rpb24gZGlzYWxsb3dlZEZvcm1TdWJtaXR0ZWQoKQogd2lu
ZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgIGZyYW1lRWxlbWVudHMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIik7CiAKLSAgICBmcmFtZUVsZW1lbnRzWzBdLnNh
bmRib3ggPSAiYWxsb3ctc2NyaXB0cyI7Ci0gICAgZnJhbWVFbGVtZW50c1sxXS5zYW5kYm94ID0g
ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiOwotICAgIGZyYW1lRWxlbWVudHNbMl0uc2FuZGJv
eCA9ICJhbGxvdy1zY3JpcHRzIjsKKyAgICBmcmFtZUVsZW1lbnRzWzBdLnNhbmRib3ggPSAiYWxs
b3ctc2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbiI7CisgICAgZnJhbWVFbGVtZW50c1sxXS5zYW5k
Ym94ID0gImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMgYWxsb3ctc2FtZS1vcmlnaW4iOworICAg
IGZyYW1lRWxlbWVudHNbMl0uc2FuZGJveCA9ICJhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3Jp
Z2luIjsKIAogICAgIGZyYW1lc1swXS5wb3N0TWVzc2FnZSgiZ28iLCAiKiIpOwogICAgIGZyYW1l
c1sxXS5wb3N0TWVzc2FnZSgiZ28iLCAiKiIpOwpAQCAtNDUsMTUgKzQ1LDE1IEBAIHdpbmRvdy5v
bmxvYWQgPSBmdW5jdGlvbigpIHsKIDxib2R5PgogCiAgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6
IDYwcHg7IGhlaWdodDogNjBweDsiCi0gICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxs
b3ctZm9ybXMiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMgYWxs
b3ctc2FtZS1vcmlnaW4iCiAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
Zm9ybS1keW5hbWljLWFsbG93ZWQuaHRtbCI+CiAgICAgPC9pZnJhbWU+CiAgICAgPGlmcmFtZSBz
dHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCi0gICAgICAgIHNhbmRib3g9ImFsbG93
LXNjcmlwdHMiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmln
aW4iCiAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1keW5hbWlj
LWRpc2FsbG93ZWQuaHRtbCI+CiAgICAgPC9pZnJhbWU+CiAgICAgPGlmcmFtZSBzdHlsZT0id2lk
dGg6IDYwcHg7IGhlaWdodDogNjBweDsiCi0gICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMg
YWxsb3ctZm9ybXMiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMg
YWxsb3ctc2FtZS1vcmlnaW4iCiAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtZm9ybS1keW5hbWljLWFsbG93ZWQuaHRtbCI+CiAgICAgPC9pZnJhbWU+CiAKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtZm9ybXMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm1zLmh0
bWwJKHJldmlzaW9uIDk5NzI4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVk
LWlmcmFtZS1mb3Jtcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00MSw1MyArNDEsNTMgQEAgZnVu
Y3Rpb24gZGlzYWxsb3dlZEZvcm1TdWJtaXR0ZWQoKQogICAgIDwhLS0gZml2ZSBJRnJhbWVzIHdp
dGggZm9ybXMgYWxsb3dlZCAtLT4KIAogICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBo
ZWlnaHQ6IDYwcHg7IgotICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1z
IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIGFsbG93LXNhbWUt
b3JpZ2luIgogICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxs
b3dlZC5odG1sIj4KICAgICA8L2lmcmFtZT4KICAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBw
eDsgaGVpZ2h0OiA2MHB4OyIKLSAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1m
b3JtcyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyBhbGxvdy1z
YW1lLW9yaWdpbiIKICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jt
LWFsbG93ZWQuaHRtbCI+CiAgICAgPC9pZnJhbWU+CiAgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6
IDYwcHg7IGhlaWdodDogNjBweDsiCi0gICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxs
b3ctZm9ybXMiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMgYWxs
b3ctc2FtZS1vcmlnaW4iCiAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
Zm9ybS1hbGxvd2VkLmh0bWwiPgogICAgIDwvaWZyYW1lPgogICAgIDxpZnJhbWUgc3R5bGU9Indp
ZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgotICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRz
IGFsbG93LWZvcm1zIgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1z
IGFsbG93LXNhbWUtb3JpZ2luIgogICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLWZvcm0tYWxsb3dlZC5odG1sIj4KICAgICA8L2lmcmFtZT4KICAgICA8aWZyYW1lIHN0eWxl
PSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyIKLSAgICAgICAgc2FuZGJveD0iYWxsb3ctc2Ny
aXB0cyBhbGxvdy1mb3JtcyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1m
b3JtcyBhbGxvdy1zYW1lLW9yaWdpbiIKICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+CiAgICAgPC9pZnJhbWU+CiAKICAgICA8IS0tIG9u
ZSBJRnJhbWUgd2l0aCBmb3JtcyBkaXNhbGxvd2VkIC0tPgogCiAgICAgPGlmcmFtZSBzdHlsZT0i
d2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCi0gICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlw
dHMiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4iCiAg
ICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1kaXNhbGxvd2VkLmh0
bWwiPgogICAgIDwvaWZyYW1lPgogCiAgICAgPCEtLSBmaXZlIG1vcmUgSUZyYW1lcyB3aXRoIGZv
cm1zIGFsbG93ZWQgLS0+CiAKICAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0
OiA2MHB4OyIKLSAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAg
ICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyBhbGxvdy1zYW1lLW9yaWdp
biIKICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQu
aHRtbCI+CiAgICAgPC9pZnJhbWU+CiAgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhl
aWdodDogNjBweDsiCi0gICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMi
CisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMgYWxsb3ctc2FtZS1v
cmlnaW4iCiAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxv
d2VkLmh0bWwiPgogICAgIDwvaWZyYW1lPgogICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4
OyBoZWlnaHQ6IDYwcHg7IgotICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZv
cm1zIgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIGFsbG93LXNh
bWUtb3JpZ2luIgogICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0t
YWxsb3dlZC5odG1sIj4KICAgICA8L2lmcmFtZT4KICAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDog
NjBweDsgaGVpZ2h0OiA2MHB4OyIKLSAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxv
dy1mb3JtcyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyBhbGxv
dy1zYW1lLW9yaWdpbiIKICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1m
b3JtLWFsbG93ZWQuaHRtbCI+CiAgICAgPC9pZnJhbWU+CiAgICAgPGlmcmFtZSBzdHlsZT0id2lk
dGg6IDYwcHg7IGhlaWdodDogNjBweDsiCi0gICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMg
YWxsb3ctZm9ybXMiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMg
YWxsb3ctc2FtZS1vcmlnaW4iCiAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtZm9ybS1hbGxvd2VkLmh0bWwiPgogICAgIDwvaWZyYW1lPgogICAgIApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRvcC1ieS1jb25z
dGFudC1uYW1lMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Nh
bmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10b3AtYnktY29uc3RhbnQtbmFtZTIuaHRtbAkocmV2
aXNpb24gOTk3MjgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24tdG9wLWJ5LWNvbnN0YW50LW5hbWUyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTksNyArOSw3IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKIDwvaGVhZD4K
IDxib2R5PgogPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIGNh
biBuYXZpZ2F0ZSB0aGUgdG9wLWxldmVsIGZyYW1lIHdpdGggYWxsb3ctdG9wLW5hdmlnYXRpb24u
PC9wPgotPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LXRvcC1uYXZpZ2F0aW9u
IgorPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LXRvcC1uYXZpZ2F0aW9uIGFs
bG93LXNhbWUtb3JpZ2luIgogICAgICAgICBzcmM9InJlc291cmNlcy9uYXZpZ2F0ZS10b3AtYnkt
Y29uc3RhbnQtbmFtZTItdG8tcGFzcy5odG1sIj4KIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10b3AtYnkt
Y29uc3RhbnQtbmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10b3AtYnktY29uc3RhbnQtbmFtZS5odG1sCShy
ZXZpc2lvbiA5OTcyOCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJh
bWUtbmF2aWdhdGlvbi10b3AtYnktY29uc3RhbnQtbmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC05LDcgKzksNyBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiA8L2hlYWQ+
CiA8Ym9keT4KIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVkIElGcmFtZSBj
YW4gbmF2aWdhdGUgdGhlIHRvcC1sZXZlbCBmcmFtZSB3aXRoIGFsbG93LXRvcC1uYXZpZ2F0aW9u
LjwvcD4KLTxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy10b3AtbmF2aWdhdGlv
biIKKzxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy10b3AtbmF2aWdhdGlvbiBh
bGxvdy1zYW1lLW9yaWdpbiIKICAgICAgICAgc3JjPSJyZXNvdXJjZXMvbmF2aWdhdGUtdG9wLWJ5
LWNvbnN0YW50LW5hbWUtdG8tcGFzcy5odG1sIj4KIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10b3AtYnkt
bmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hl
ZC1pZnJhbWUtbmF2aWdhdGlvbi10b3AtYnktbmFtZS5odG1sCShyZXZpc2lvbiA5OTcyOCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10b3At
YnktbmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw3ICsxMCw3IEBAIHdpbmRvdy5uYW1l
ID0gInRhcmdldCI7CiA8L2hlYWQ+CiA8Ym9keT4KIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0
IGEgc2FuZGJveGVkIElGcmFtZSBjYW4gbmF2aWdhdGUgdGhlIHRvcC1sZXZlbCBmcmFtZSB3aXRo
IGFsbG93LXRvcC1uYXZpZ2F0aW9uLjwvcD4KLTxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0
cyBhbGxvdy10b3AtbmF2aWdhdGlvbiIKKzxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBh
bGxvdy10b3AtbmF2aWdhdGlvbiBhbGxvdy1zYW1lLW9yaWdpbiIKICAgICAgICAgc3JjPSJyZXNv
dXJjZXMvbmF2aWdhdGUtdG9wLWJ5LW5hbWUtdG8tcGFzcy5odG1sIj4KIDwvYm9keT4KIDwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdh
dGlvbi10b3AuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5k
Ym94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdG9wLmh0bWwJKHJldmlzaW9uIDk5NzI4KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRvcC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC05LDcgKzksNyBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CiA8L2hlYWQ+CiA8Ym9keT4KIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEg
c2FuZGJveGVkIElGcmFtZSBjYW4gbmF2aWdhdGUgdGhlIHRvcC1sZXZlbCBmcmFtZSB3aXRoIGFs
bG93LXRvcC1uYXZpZ2F0aW9uLjwvcD4KLTxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBh
bGxvdy10b3AtbmF2aWdhdGlvbiIKKzxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxv
dy10b3AtbmF2aWdhdGlvbiBhbGxvdy1zYW1lLW9yaWdpbiIKICAgICAgICAgc3JjPSJyZXNvdXJj
ZXMvbmF2aWdhdGUtdG9wLXRvLXBhc3MuaHRtbCI+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdl
LWRpc2FsbG93ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9y
ZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLWRpc2FsbG93ZWQuaHRtbAkocmV2aXNp
b24gOTk3MjgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1zdG9yYWdlLWRpc2FsbG93ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDU2IEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK2Z1
bmN0aW9uIGRlYnVnKG1zZykKK3sKKyAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInNwYW4iKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVu
ZENoaWxkKHNwYW4pOworICAgIHNwYW4uaW5uZXJIVE1MID0gbXNnICsgJzxiciAvPic7Cit9CisK
K2Z1bmN0aW9uIGVzY2FwZUhUTUwodGV4dCkKK3sKKyAgICByZXR1cm4gdGV4dC5yZXBsYWNlKC8m
L2csICImYW1wOyIpLnJlcGxhY2UoLzwvZywgIiZsdDsiKS5yZXBsYWNlKC9cMC9nLCAiXFwwIik7
Cit9CisKK2Z1bmN0aW9uIHRlc3RQYXNzZWQobXNnKQoreworICAgIGRlYnVnKCc8c3Bhbj48c3Bh
biBjbGFzcz0icGFzcyI+UEFTUzwvc3Bhbj4gJyArIGVzY2FwZUhUTUwobXNnKSArICc8L3NwYW4+
Jyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RGYWlsZWQobXNnKQoreworICAgIGRlYnVnKCc8c3Bhbj48
c3BhbiBjbGFzcz0iZmFpbCI+RkFJTDwvc3Bhbj4gJyArIGVzY2FwZUhUTUwobXNnKSArICc8L3Nw
YW4+Jyk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KF9hLCBfZSkKK3sKKyAgdmFyIGV4Y2Vw
dGlvbjsKKyAgdmFyIF9hdjsKKyAgdHJ5IHsKKyAgICAgX2F2ID0gZXZhbChfYSk7CisgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgZXhjZXB0aW9uID0gZTsKKyAgfQorCisgIHZhciBfZXY7CisgIGlmIChf
ZSkKKyAgICAgIF9ldiA9ICBldmFsKF9lKTsKKworICBpZiAoZXhjZXB0aW9uKSB7CisgICAgaWYg
KHR5cGVvZiBfZSA9PSAidW5kZWZpbmVkIiB8fCBleGNlcHRpb24gPT0gX2V2KQorICAgICAgdGVz
dFBhc3NlZChfYSArICIgdGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24gKyAiLiIpOworICAg
IGVsc2UKKyAgICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCB0aHJvdyAiICsgKHR5cGVvZiBf
ZSA9PSAidW5kZWZpbmVkIiA/ICJhbiBleGNlcHRpb24iIDogX2V2KSArICIuIFRocmV3IGV4Y2Vw
dGlvbiAiICsgZXhjZXB0aW9uICsgIi4iKTsKKyAgfSBlbHNlIGlmICh0eXBlb2YgX2F2ID09ICJ1
bmRlZmluZWQiKQorICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCB0aHJvdyAiICsgKHR5cGVv
ZiBfZSA9PSAidW5kZWZpbmVkIiA/ICJhbiBleGNlcHRpb24iIDogX2V2KSArICIuIFdhcyB1bmRl
ZmluZWQuIik7CisgIGVsc2UKKyAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgdGhyb3cgIiAr
ICh0eXBlb2YgX2UgPT0gInVuZGVmaW5lZCIgPyAiYW4gZXhjZXB0aW9uIiA6IF9ldikgKyAiLiBX
YXMgIiArIF9hdiArICIuIik7Cit9Cis8L3NjcmlwdD4KIDxzY3JpcHQ+CiAKIHdpbmRvdy5vbmxv
YWQgPSBmdW5jdGlvbigpIHsKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xz
LW5vLXNjcmlwdGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LWNvbnRyb2xzLW5vLXNjcmlwdGluZy5odG1sCShyZXZpc2lvbiA5OTcyOCkKKysrIExheW91dFRl
c3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLW5vLXNjcmlwdGluZy5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw3ICsyNyw3IEBACiAKICAgICA8Ym9keT4KIAotICAgICAgICA8aWZyYW1lIHNhbmRi
b3ggc3JjPSJyZXNvdXJjZXMvdmlkZW8tY29udHJvbHMtbm8tc2NyaXB0aW5nLWlmcmFtZS5odG1s
IiBpZD0iZnIiIHN0eWxlPSJ3aWR0aDogNDAwcHg7IGhlaWdodDogMzIwcHg7IGJvcmRlcjogMXB4
IHNvbGlkIGJsYWNrOyI+PC9pZnJhbWU+CisgICAgICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ct
c2FtZS1vcmlnaW4iIHNyYz0icmVzb3VyY2VzL3ZpZGVvLWNvbnRyb2xzLW5vLXNjcmlwdGluZy1p
ZnJhbWUuaHRtbCIgaWQ9ImZyIiBzdHlsZT0id2lkdGg6IDQwMHB4OyBoZWlnaHQ6IDMyMHB4OyBi
b3JkZXI6IDFweCBzb2xpZCBibGFjazsiPjwvaWZyYW1lPgogCiAgICAgICAgIDxwPlRlc3RzIHRo
YXQgdGhlIGJ1aWx0LWluIGNvbnRyb2xzIGFyZSBhbHdheXMgZW5hYmxlZCB3aGVuIEphdmFTY3Jp
cHQgaXMgZGlzYWJsZWQuPC9wPgogICAgICAgICA8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1kcm9w
LWRlYWQtZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1kcm9wLWRlYWQtZnJhbWUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA5OTcyOCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L3Bhc3RlYm9hcmQvZHJhZy1kcm9wLWRlYWQtZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDkgKzEsNCBAQAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERF
TEVHQVRFOiBzaG91bGRJbnNlcnROb2RlOiNkb2N1bWVudC1mcmFnbWVudCByZXBsYWNpbmdET01S
YW5nZTpyYW5nZSBmcm9tIDAgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCBnaXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uRHJvcHBl
ZAotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFu
Z2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCB0byAwIG9mIEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAw
IG9mICN0ZXh0ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4dCA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFt
IHN0aWxsU2VsZWN0aW5nOkZBTFNFCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgog
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCiBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1kcm9wLWRlYWQtZnJhbWUtZXhwZWN0
ZWQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5
IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKCmlWQk9SdzBLR2dvQUFBQU5TVWhFVWdB
QUF5QUFBQUpZQ0FZQUFBQ2Fkb0p3QUFBQUtYUkZXSFJqYUdWamEzTjFiUUF4TURjMU9EY3gKWldR
MVlUTXpNRFEwTkRkbU9UVTNNR0l4TkRWa1lqWTBPSmY1c1VNQUFDQUFTVVJCVkhpYzdkMTVmQlgx
dmZqL043dW9XQ3dpbTRxbwpLT0tHZ3Z0RjYwWmRjS1d1dmFYaVVpMVNxOVo2WFdwRnF5alc2M3Bk
Vzl0YWw0dG82MVl0S2tKUktxSUlLbDVSRk5GaWxWVVFrUUFoCitmeis0TWY1SnBEa0pDRjh4UGI1
ZkR4NFBEaExadWJNZkdhU1Y4NmNTYU9VVWdvQUFJQU1Hbi9kQ3dBQUFQejdFQ0FBQUVBMkFnUUEK
QU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5cVZlQWZQYlpa
L0haWjU4VmJuLysrZWVGL3k5YQp0Q2htekppeDVrdTJpcEtTa3Zqb280OGFmTHByUzFsWldiejc3
cnNOTnIxUFB2bWt3YWJWRU5iV2RzNDEvWDkzOCtiTmkvZmZmLy9yClhvd0czMC8rRmN5ZVBUdEdq
UnBWNmJpNkxtaW9NVk9YYmI1MDZkSjQrZVdYMTNpZXhlUWFoMnRyUGpObnpxdzBYbGE5M1pBV0xW
b1UKLy96blA2dDlQTWMycStuMWZmenh4NnZkTjMvKy9GaStmSG5SNlZiM2ZmYVRUejZKa3BLU2Fy
OXUwYUpGc1dqUm9ucFBmKzdjdWV2YwovZzVyVzYwRFpQNzgrVEZnd0lEWWI3Lzk0cnJycm90YmJy
a2xEajc0NERqd3dBUGp1T09PaTRpSWh4NTZLTnExYXhmMzMzOS9neTdrCnd3OC9IQjA3ZG93YmI3
eXhRYWU3dHJ6MjJtdlJvMGVQK05HUGZ0UWcwNXN5WlVyc3VPT09EVEt0aHJDMnRuT3U2UlB4eTEv
K01vNDUKNXBpdmRSa2Flai81VjNEUFBmZkVzR0hEWXN5WU1iSEREanZFMHFWTHYrNUZLbWlJTVZP
WGJUNSsvUGpvMWF0WDRmdkwycEpySEs3TgorVngwMFVVeGI5NjhhbTgzbEx2dnZqdmF0R2tUanp6
eVNKV1A1OXBtRlYvZjBLRkRvMUdqUm9WLy8vVmYvMVY0M3Z2dnZ4OG5uSEJDClBQcm9vL0dMWC93
aXJyamlpbXFuK2Z6eno4ZHV1KzFXNmI0SkV5YkVRUWNkRkgvOTYxOWo4T0RCY2VxcHAwWnBhV25o
OFlrVEo4WmwKbDEwV1R6LzlkTng4ODgxeDZxbW5WaHNTMVUzL2tFTU9pZmJ0MjBlYk5tM2l4Qk5Q
akNWTGx0UjVmY0EzVXFxRmQ5NTVKM1hxMUNuMQo3OTgvTFYyNnRIQi9lWGw1dXZqaWk5TzIyMjVi
dUcvNzdiZFAxMXh6VFcwbVd5Zjc3cnR2K3NsUGZ0TGcwMTFiQmcwYWxBNDg4TUFHCm1kYk1tVFBU
bGx0dVdiaTlaTW1TTkdyVXFBYVpkbjJ0cmUyY2Evci83dWJPblp1bVRwMzZkUzlHZys0bnRmRjE3
anZGNXIxbzBhSzAKd1FZYnBMS3lzcFJTU24vLys5OXpMVnF0Tk5TWXFjczJ2K0dHRzFLN2R1MXE5
ZHcxMmJhNXh1SGFtRTlwYVduYWQ5OTlxNzNkME5xMQphNWR1dXVtbWFoK3Z5emFyajRxdmIvSGl4
YWxmdjM3cGhSZGVTQys4OEVJYU5XcFVtalZyVmtvcHBZVUxGNmJ0dHRzdVBmNzQ0NFd2CjNXZWZm
ZExkZDkrOTJqUS8vL3p6MUt0WHI5U21UWnZDZlFzV0xFanQyclZMenp6elRPRyt3dzgvUEEwY09M
Qnd1MHVYTHVuNTU1OHYKM0w3Z2dndlM1WmRmWHF2cEwxeTRNQjE2NktIcGlTZWVTSjk5OWxtNjlO
SkxVMFNrd1lNSDEyZTF3RGRPMFhkQXlzcktvbi8vL3RHNApjZU80Kys2N28zbno1b1hIR2pWcUZO
ZGNjMDFzdSsyMmhmdWFOV3NXalJvMWF2QlFhdEdpeFZxWmJrTXJMeStQaUlpbVRadEc0OFlOCjh4
R2JkdTNhUmJkdTNTSWlvclMwTkg3d2d4L0VTeSs5MUNEVHJxaW10NmhUU3BWdXI2M3RuR3Y2NjdK
VjEvWGEwS1pObStqYXRXdUQKVDdlMnkxNmYvYVF1NDdNcU5lMDd0VGs5bzY3enErMjhWNW84ZVhJ
c1c3YXNzRDcyMldlZkdxZFoxMlZlVTlXTm1iVzV6WnMzYjE2cgo0MEI5ajR0cmVyeWVNR0ZDREI4
K2ZJM25zeWJiOHFXWFhvcmV2WHRYZTN1bGhqcXVGRHMyMTNhYjFWZkYxL2ViMy93bVdyWnNHU1Vs
CkpiSG5ubnZHQVFjY0VKdHV1bWxFUkR6NDRJTXhkKzdjT1BMSUl3dGZPMkRBZ0xqcXFxdWlyS3lz
MGpTSERCa1NaNTU1WnFYbGZ1S0oKSjJMT25EbVYxdVgrKys4Zjk5eHpUOHljT1RQS3lzcGk0Y0tG
OGRwcnJ4VWVYN1pzV1pXdnZhcnBqeHMzTHU2OTk5NDQ2cWlqb24zNwo5bkgxMVZkSDE2NWRDNmV2
RFIwNk5QN3hqMytzeWFxQ2RWclJJKzV6enowWEV5Wk1pTk5PT3kzV1cyKzkxU2ZRdUhIODhZOS9y
SFJmCmVYbDUvUEtYdjR3dHR0Z2lkdHh4eDVnK2ZYcmhzVm16WnNVRkYxd1ErKysvZi9UczJUTmVl
ZVdWd21NbEpTVngyV1dYeGRDaFErUEUKRTArTUcyNjRvY3BsbWpScFV1eSsrKzd4czUvOUxONTQ0
NDNWSG4vb29ZZGloeDEyaUNPT09LSnd2dTNreVpOajc3MzNqdEdqUjBmRQppbk0yQncwYUZELzcy
Yy9pbUdPT2lYUFBQYmR3anVmRER6OGNuVHAxaXR0dXV5MGlJb1lOR3hiYmJiZGRuSDMyMmRXdXA4
V0xGOGZBCmdRUGo2cXV2anJQUFBqc21USmhRNmZHYTVqZDY5T2c0NmFTVDRzSUxMNHg3NzcwM3R0
NTY2K2pXclZ1bDliYi8vdnRIUk1UTk45OGMKVHo3NVpEeisrT1B4d3gvK01MNzY2cXZWbHFXNjlU
aHg0c1E0NjZ5ejRoZS8rRVZjYzgwMTBiWnQyM2oxMVZmamhSZGVpS0ZEaDhhTgpOOTRZKys2N2I3
ejk5dHVGYVQzODhNTng1NTEzeHZYWFg3L2FEMFExYmVlSy92em5QMGZidG0zajJHT1BqUVVMRnNR
Zi92Q0hhTnUyCmJSeHl5Q0h4d1FjZlJFVEVqVGZlR0wxNzk2NzA5bk45eGxGdDFtVkZhM3VzVkxm
T0t4bzVjbVNjZlBMSmNmbmxsOGZGRjE4Y0hUcDAKaUMyMjJDSkdqaHhaNHpTcVd3ZC8rY3Rmb24z
NzlySDc3cnNYMXUrcnI3NGFuVHQzanVlZWV5NCsrK3l6dVA3NjYyUHZ2ZmN1TE1PYQo3ZzgxalpP
S2F0cFA2ak0rRnk5ZUhJTUdEWXBmL2VwWDBhZFBuempwcEpOaTZOQ2hWZjRnV3RXK1U5MjBxMXVX
WXZPcmJwc1UyMjkvCis5dmZ4dURCZzJQNTh1Vnh6am5ueElVWFhsam45ZkhCQngvRVJSZGRGQmRj
Y0VFODlkUlRzZXV1dTBhdlhyMWkzTGh4TVhueTVQamUKOTc0WEhUcDBpQ0ZEaGhUbVc5UHh1S0tx
eGt4RGJQTzZMRU5kMTI5TjB5MjJUTVZNbmp3NWpqMzIyT2pYcjE5c3ZQSEdOWTZYbXVaVAoxL0gz
cTEvOUtuYmZmZmRLMDNqaWlTZmk2S09QWHUxMmZZOHJOUjBMS3E2L0N5KzhNTnExYXhjOWUvYU1L
Vk9tMUhtYjFXZThydnA2Cmh3MGJGZzg4OEVEMDdkczN1bmZ2SHM4ODgwemhlWC85NjEramE5ZXVs
WUt2YTlldThjOS8vak1tVFpwVXVHL1lzR0hScDArZjJIamoKalN2TlovYnMyVkZlWGg2TEZ5OHUz
TGZubm52Rzh1WEw0ODAzMzR3bVRackVEMzd3Z3hnOGVIQU1HellzSms2Y0dCTW1USWp6enorLwow
blNxbTM2ZlBuMmlZOGVPaGR1TkdqV0s3dDI3UjVjdVhTSmlSVER1dHR0dWNmcnBwNjhUbjllREJs
ZnNMWkpmLy9yWEtTTFNmZmZkClY2dTNWSGJlZWVlMHl5NjdwSkVqUjZZWk0yYWtidDI2cFRQT09D
T2xsTkx5NWN2VFlZY2RsaFl1WEpqS3lzclNXV2VkbGRxMmJadm0KejUrZlVrcnAwRU1QVGVQR2pV
c3BwVFJod29RVUVlbjExMTlQS2FWMDRJRUhwblBQUFRlbGxOSmRkOTFWZEhuMjIyKy9kUERCQnhk
dQpMMSsrUFBYcjE2L1M0My84NHg5VFNpa3RXN1lzN2JISEhxbHYzNzZGeHp0MTZsVHBGS0ErZmZx
azQ0OC92dHI1SFhIRUVXbllzR0VwCnBaVEt5c3BTeDQ0ZDB5R0hIRktyK2MyY09UTnR1KzIycVZ1
M2J1bXBwNTVLSDMzMFVkcHV1KzNTbVdlZVdmajZPWFBtRlA2LzVaWmIKcGlGRGhsUzdMTld0eDNI
anhxV05OOTQ0OWVqUkl6MzY2S1BwckxQT1NtKy8vWGJxMUtsVDRkU0Z3WU1IRjlaVGFXbHA2dFdy
VjJHNgo1NTkvZnVIMGtKcTJjMVYyMjIyM2ROcHBweFZ1ZitjNzMwa0RCZ3dvM0g3NjZhZlQ3My8v
KzhMdCtvNmoycXpMVmEzTnNWTFZPbC8xCk5KYnAwNmVuVFRmZE5IWHAwaVc5OU5KTGFjeVlNV21Y
WFhaSm0yKytlYlhUbURKbFNvMzcwaGxubkpHNmR1MWFtRWRwYVdrNitlU1QKVTBvcHpaNDlPNTE5
OXRscGswMDJhWkRYV05NNFdWVk4rMGxkeDJkS0tkMTIyMjNwWnovN1dVb3BwY21USjZlSVNFT0hE
azBmZmZSUgpsZk92dU84c1hicTAybWxYdDkxcW1sK3g0MXV4L1hiNDhPR3BjZVBHaGR0MVhSOGZm
UEJCMm5YWFhWT1hMbDNTbzQ4K21oWXZYcHlPClAvNzR0TTAyMjZRaFE0YWt1WFBucGl1dXVDSTFh
dFFvZmY3NTUwV1h0NkpWeDB4RGJmTml5M0RycmJlbTl1M2IxK3E1RmRkdnNlY1cKTzE1WForclVx
ZW5razA5T3JWdTNUa09HREVrbEpTWFZicXVwVTZmV09KLzZqTC9iYjc4OUhYMzAwWldXYWErOTlr
cmw1ZVdyM2E3UApjV1hxMUtsRmp3V2JiYlpaMm1HSEhkS1RUejZaUm8wYWxiYmNjc3UwMVZaYnBk
TFMwanB0czdxTzErcGU3N1JwMDlMTk45K2NXclpzCm1abzNiNTdlZmZmZGxGSkt1KysrZS9ydWQ3
OWJhVjI5L3ZycktTTFNZNDg5bGxKS2FjYU1HZWtYdi9oRlNtbkYvbGZ4bURocDBxUVUKRVduRWlC
R0YrMTU5OWRVVUVlbXBwNTVLS2FWVVVsS1NEampnZ05Tb1VhTzAyMjY3cFVXTEZsV2FYMDNUWDFW
NWVYbnEzTGx6NFdlZQpsRkthTjI5ZXV1eXl5MUxyMXEzVGlTZWVtTjU4ODgxcXZ4NithWXErQTdM
eWFoZWJiTEpKcmFPbWI5KytjZEJCQjhWbW0yMFdCeHh3ClFPRTN5OE9IRDQrVVVyejAwa3N4WXNT
STZOQ2hROHlaTXlkZWZQSEZHRFZxVkV5YU5DbjIzSFBQaUlqbzJiTm4zSFhYWGRHNWMrZEsKMDc3
cnJydWlUWnMyMGI5Ly94cVg0Znp6ejQ4WFhuaWg4SnZ2c1dQSHhtR0hIUllSRVNOR2pJaXhZOGZH
U1NlZEZCRXIzbEkrN2JUVAo0aTkvK1V1TUd6Y3VJaUphdG14WjZlM1M5ZGRmdjlxM2xWOTU1WlY0
NXBsbjRydmYvVzVFckhoWDZQREREeTg4WG14KzdkcTFpNjIzCjNqcDIybW1uNk51M2IzVHUzRGtP
UFBEQWVPKzk5d3JUV0hYOVY3Y3NOYTNIdmZiYUs3cDE2eGJiYjc5OTlPdlhMKzY2NjY3bzNyMTcK
SEhmY2NiSExMcnRFeElyVExGYitObXZCZ2dYeHhodHZGSDZyZE9hWloxWjZHNys2N1Z5VkFRTUd4
TFBQUGxzNEZlSGdndytPcDU1NgpxbkRxd2NpUkkrUDQ0NCt2OURYMUdVZTFXWmVyV3B0anBhcDF2
dXBwTEZ0dXVXVnN2dm5tY2RSUlI4Vi8vTWQveEg3NzdSZkRoZzJMCkdUTm14SlFwVTZxY3hxUkpr
NnBkQnhFUmd3WU5pdmZmZjc5d2VrREY5ZHUyYmR2WWFhZWRDdHR5VFY5anNYR3lVckg5cEs3ak15
TGkKL3Z2dmp6WnQya1JFeEk0NzdoaHQyN2FOaUZqdHVGSFJ5dVZ1MXF4WnRkT3VicnZWTkwrYXh1
V3E4NjZOdXE2UHJiZmVPbnIwNkJFNwo3TEJEOU92WEwxcTJiQm5ISEhOTWZQenh4M0hKSlpkRW16
WnQ0cnp6em91VVVuejg4Y2UxV3Q2VlZoMHpEYlhONjdJTWRWbS9OVDIzCjJESlY1ZU9QUDQ3VFR6
ODlkdDU1NTJqZHVuVk1uVG8xTHJua2tzSlpBVlZ0cTNuejV0VTRuL3FNdjRFREI4YmpqejllbU1h
YmI3NFoKTysyMFUrRjFWN3hkbitQS3RHblRpaDRMSWlMNjkrOGZSeDU1WkJ4d3dBRngzWFhYeFlj
ZmZsaDRaNlcyMjZ5dTQ3V3ExeHNSc2RWVwpXOFZQZi9yVEdEdDJiTFJxMVNxdXYvNzZpRmh4SmtD
elpzMHFMYy9LVThoTFMwc2pwUlJEaGd5SlN5NjVwTXB0M3FOSGoramN1WFBjCmNjY2RVVlpXRnFX
bHBZWFQ3YnAzN3g0UkVldXR0MTRjZDl4eDBiVnIxNWc0Y1dKaDNoRlJkUHFyK3RPZi9oU0hIMzU0
cFErcWYvdmIKMzQ2cnI3NDZwazJiRmx0dHRWWDA3dDA3ampycXFCZy9mbnl0cGducnNxSUJzdVdX
VzBaRTFIalp2VlZWUERoc3ZQSEdoY3ZUalJzMwpMdHEwYVJQTm16ZVA1czJieDc3NzdodlBQLzk4
OU96Wk0xNTg4Y1hZWjU5OUtuM3RXV2VkVmZobUh4SHh6RFBQeERYWFhGTTRvTmZrCnlDT1BqTTAz
M3p6dXVlZWVpRmh4V2txL2Z2MGlZc1hwS0czYnRxMTBjTnBqanowaUlpcTlOVnRiZi92YjM2SmJ0
MjdSdW5YcnduMGIKYnJoaDRiWFVabjRycitDeFVxdFdyV3E4R2taMVA4Z1VXNDh0VzdZcy9OQzBj
anEzM25wckxGaXdJSVlPSFJwanhveUpMNy84TWlKVwpSTTl4eHgwWFJ4NTVaSnh6empteDVaWmJS
cE1tVGFwY2hvcmJ1U29ubjN4eXpKa3pwM0NxeXR0dnYxMDRCV2JKa2lWUlhsNGVHMnl3ClFiV3Zz
YmJqYU9YWDFXVmRydTJ4c3VvNnIwcWpSbzBxcmR0dTNickZ4aHR2WFBpbXZ1bzBpcTJEWFhiWkpY
cjI3QmtQUFBCQVJFUTgKKyt5emNjUVJSMVNhWDEzR1owMktqWk9WaXUwblZiM09tc1pueElwdFcv
RUhvL2J0MnhmaXV6b3I1MWRzMmxWdHQ1cm1WMnliVkp4MwpiZFYxZmF3Ni9WYXRXbFc2dmRGR0cw
VkV4Snc1YzJxMXZCVlZIRE1OdGMzcnNneDFXYjgxUGJjMjQ3Q2lCeDU0SUxiZGR0c1lNV0pFClRK
Z3dJZTY0NDQ0cTkrZFZ0MVd4K2RSbi9LM3FpU2VlaUtPT09xcmEyM1U5cnRUMldQQ3RiMzJyOFAr
OTl0b3JJcUxLMDRScWM2eXUKcUtieFd0WHJxMmkzM1hhTGZ2MzZ4WnR2dmhrUksvYk5WYTlJdGZM
VXg2NWR1OGJ0dDk4ZS9mdjNqL1hYWDcvSzZVVkVQUDc0NHpGcgoxcXpZWnB0dDRrYy8rbEY4L3Zu
bnNjRUdHeFIrTHZyZDczNFg0OGFOaTNmZWVTY0dEUm9VVjExMVZkeDExMTBSRWJXYS9rb0xGaXlJ
CjRjT0h4MDAzM1ZUbDQ5Lys5cmRqeUpBaDhlR0hIOGJ5NWN0anI3MzJpbE5PT2FYb2RHRmQxclRZ
RTFhVy9qdnZ2TFBHTTVzN2QyNDAKYmRvMERqNzQ0TlVlbXpWclZxVnp1NnZTdTNmdkdETm1USngz
M25seDc3MzMxdmpjSmsyYXhJOS8vT080K2VhYjQ4b3JyNHlTa3BMQwpONExGaXhmSDNMbHpZOUdp
UmJIaGhodEdSTVJPTyswVVRaczJyZkl6RmNWODhza25NWGZ1M05YdVgzbHdiZWo1MWFRMjYzRlZk
OTk5CmQ0d2RPelorOTd2ZnhXOS8rOXRLbjFGNDZLR0hvbVBIam5ITExiZkV4SWtUNDlsbm55MThV
NmlMTm0zYVJOKytmZVBCQngrTTFxMWIKUjY5ZXZhSng0OFl4Yk5pdytPS0xMK3AwZWMrYXhsRjk1
QndyZGRHNGNlTm8yclRxWGJRMjYrQzAwMDZMSzYrOE1xNisrdXBZYjczMQpLbDFBb3FLR2VJMjFH
U2ZGOXBQcTFEUSt6ei8vL0RqMTFGTmo4dVRKMGFKRmkxaC8vZlVMbjVlcWpacW1YWldhNXRmUTQ3
SWhscmx4CjQ4YVYxbS9GLzYvcDhqYkVOcS9MTWpUVWMrczZEci8zdmUvRjdObXo0OXBycjQxVFRq
a2xyci8rK2xyOUVxdzI4Nm5yK0Z2VnlKRWoKNDZLTExxcjJkbFZxT3E3VTUxalF1WFBuYU5XcTFX
cnhFRkgzTVZiVGVJMG8vdnA2OSs1ZGVLZDhzODAyaTdGangxWjZmT1V2c2JwMgo3Um9EQmd5SVN5
Kzl0UEJZYVdscExGMjZORGJhYUtNWU5HaFFEQmt5SkhyMDZGSHBzME43N0xGSG5IMzIyWVhQbGR4
ODg4MXh4eDEzClJKTW1UZUsyMjI2TFdiTm14ZTkrOTdzNCsreXo0OTU3N3kwNi9aVXV1K3l5dVBI
R0c2TkZpeGJWdnJaWFhua2xycnp5eW5qeHhSZmoKM0hQUExicWRZVjFYOUIyUWd3NDZLSGJaWlpm
NC9lOS9Id3NXTEtqeU9iVzlna2VYTGwzaStlZWZyL1RiNkpSUy9PMXZmNHZPblR2SAorKysvSDlP
bVRhdjBXTVhmdXJScTFTcnV2Ly8rdU8rKysrSlBmL3BUMGZtZGNjWVpzV0RCZ3JqMDBrc3JYY21p
VzdkdVVWWldWdW5xCkZiTm56NDdseTVmSDl0dHZYN2h2NWVsQ3hYVHMyREhtekprVFU2ZE9yZkx4
MnM2dkxxcjdabG1iOVZqUk8rKzhFd01IRG93YmJyaGgKdGJlclo4NmNHYk5uejQ2YmJyb3BSb3dZ
RVpNblQ0NWh3NGJWYTNraklrNDk5ZFI0NUpGSDRqZS8rVTJjY2NZWk1XREFnSGpzc2NkaQo1TWlS
ZGZxaHNhWnhWRis1eGtwdFRaMDZOZWJObTdmYWRlTlhxczA2T09XVVUyTGh3b1h4azUvOEpJNDk5
dGhxNTdXbXI3RzI0NlRZCmZsS1Ztc1puUk1UaGh4OGVaNTU1WnVHMzB5c3ZIRkNUbGZ0T3NXbFhw
YWI1MVdhYnJPblZnZXF6ek5WWmsvMm9vYlo1WFphaEx1dTMKcHVmV2RSeXV0OTU2Y2NFRkY4U0hI
MzRZMy92ZTkrS0VFMDZJUXc0NXBNb0xvRlJVYkQ1cnVpMW56SmdSYmR1Mkxad0d0dXJ0cWhRNwpy
dFRuZTlXbm4zNGFYMzc1WmV5NjY2NnJQZGFReCtyYXZMNDMzbmlqOEk3Tk1jY2NVN2hhMVVydnZm
ZGU3TGpqanJIQkJodkUvZmZmCkh5TkhqaXo4R3p4NGNHeTAwVVl4Y3VUSUtpODQ4OGMvL2pIZWUr
Kzl3aWxWYytiTWljbVRKMWM2UGZxSFAveGhUSnc0TVpZdlgxN3IKNmQ5d3d3MXgrdW1ueDJhYmJW
YTRiOWFzV1lYL3Yvenl5M0hvb1lkR256NTlZdWVkZDQ3cDA2ZkhMYmZjRXAwNmRhcnpPb1IxU2RF
QQphZHk0Y2R4NjY2MVJXbG9hcDUxMldxVzNpQ01pcGsrZkhqLy8rYzhMRWJKNDhlSktWNDBvS1Nr
cFhFSGorOS8vZnN5YU5Tdk9PdXVzCm1EOS9mc3llUFR1dXV1cXE2TnExYTV4NDRvbXgzbnJyeFlB
QkEyTEtsQ2t4WmNxVXVPaWlpMkx6elRlUGlCV1JrMUtLZmZiWkp5NisKK09JNC9mVFRpLzVGMlUw
MjJTUk9PdW1rdU9lZWV5cGRpdS80NDQrUHpUYmJMSjUvL3ZuQ2ZSTW1USWh1M2JyRm9ZY2VHaEVy
ZnVzegpmdno0V0xac1dYejY2YWN4YmRxMGF2K3cwNGtubmhoTm16WXR2UFVhRWZIdXUrL0czTGx6
bzZ5c3JGYnpXN1pzV2FVZjhCWXZYcnphCnBRSlhhdDI2ZGVFdnFzNmZQMysxWlNtMkhpdGUwV1RL
bENsUlhsNGU3N3p6VHBTVmxjV1lNV05peVpJbGtWS0t1WFBueHNNUFB4d1IKSzY3WWNmVFJSeGQr
SzFiVGRxN09ZWWNkRmkxYXRJZ21UWnJFdDc3MXJUand3QU5qbzQwMmlnNGRPcXoyZzFsOXgxRmQx
K1ZLYTNPcwpyTHJPcTFQeGEwYVBIaDI5ZS9jdW5ONno2alNLcllPSUZlUGt1T09PaS9Ianh4ZStL
VmRjSnlVbEpaRlNXdVBYT0cvZXZHckhTVVhGCjlwT3FYbWRONHpPbEZGZGVlV1ZzdSsyMmNlNjU1
OFlwcDV3U0xWdTJySEVkVjl4M1hudnR0UnFuWGRWMnEybCt4YlpKVGZ0dFJNVEMKaFF0WHUrcE9Y
ZGRIYVdscHBiRytkT25Td3Zucks2Y1hzU0ltYXpPR0txbzRaaHBxbTlkbVgxNjU3SFZadjMzNzlx
M3hlMDJ4Y1ZpVgpWcTFheGVXWFh4N1RwMCtQM1hiYkxYcjM3aDM5Ky9lUEdUTm1WTG10aXMybjJM
YXNhdnk5OU5KTGhkTjBpcDErdFZKZGppdTFPUlpFClJLWDFOR3JVcURqbW1HTUtuMldweXphcnkz
aGQ5ZlY5OHNrbk1XTEVpTUt4dnFTa0pNYU5HMWNJaEw1OSs4YW1tMjVhNlRMSm8wZVAKamx0dXVT
VWlWbnlHYTQ4OTlpajgyM2JiYmFOWnMyYXh4eDU3eEJaYmJGRnBIVTZkT2pXdXVlYWFlUERCQnd1
bk0yK3l5U2JSc1dQSApHREZpUk9GNUN4WXNpRjEzM1RXYU5tMWFxK25mZDk5OU1YLysvRmkyYkZt
ODhzb3I4ZkxMTDhmdHQ5OGVFeWRPakpkZmZqbjY5T2tUCmZmdjJqVDMzM0RNKyt1aWpHRHAwYU9F
eXcvQ05WOXRQcTArZE9qWHR2Ly8rYWF1dHRrcG5uSEZHdXZEQ0M5T0JCeDZZTHJua2tyUmsKeVpL
VVVrcVBQdnBvYXR5NGNlcmV2WHVhTkdsU21qaHhZdHArKysxVDA2Wk4wNU5QUHBsU1N1bk9PKzlN
TFZxMFNJMGFOVXB0MjdZdApYSTBpcFpRZWUreXgxTFp0MnhRUnFYUG56bW5zMkxFcHBaUWVlZVNS
dE9HR0c2YXR0OTQ2dmZ6eXkybmF0R2xwL2ZYWFR4MDZkRWovCjh6Ly9VK055anhrekpwMXl5aW1y
M1Q5eDRzVFV2WHYzOU90Zi96bzk4OHd6NmFTVFRrcFRwa3dwUFA3Q0N5K2tObTNhcEsyMjJpcjkK
L09jL1QyZWZmWFk2NktDRHF2MURWdzgrK0dCcTFhcFYybjc3N2RNSko1eVFqanp5eUxUUFB2dWtC
eDk4c09qOHhvd1prMXEzYnAwNgpkdXlZeG8wYmw5NTQ0NDIwelRiYnBCWXRXcVRubm50dXRYbGRl
dW1scVZHalJ1bTAwMDRyL05HbGlxcGJqdzgrK0dEYVlJTU5Vb2NPCkhkTEREeitjVWtycHE2KytT
ajE2OUVnYmJyaGhHakJnUUhyNjZhZlQrdXV2bi83elAvOHpUWm8wS1cyOTlkYnA3cnZ2VGs4ODhV
UWEKT0hCZ0tpMHRyZFYycnM2RkYxNllQdmpnZzhMdHl5Ky92Tkx0bE5ac0hOVjFYVmEwTnNaS1Zl
dThLcjE2OVVvOWV2UklsMTkrZWJyeQp5aXRUbno1OTBzeVpNMU5LVlcrM210WkJSUys4OEVLNjl0
cHJLOTAzZnZ6NHRQZmVlNmVJU0RmZGRGTmF1blRwR3IzR3Q5OSt1OHB4ClVwV2E5cE82anMrbFM1
ZW04ODQ3TDBWRWlvalVwRW1UMUs1ZHV6Unc0TUJLZnpDMW9vcjd6dlRwMDZ1ZDluMzMzVmZsT2k4
MnY1cTIKU1UzNzdTdXZ2Sko2OSs2ZElpSmRlT0dGYWRxMGFYVmVIeSsrK0dMcTJMRmphdGV1WFJv
OWVuU2FQbjE2NnR1M2I0cUlkTVVWVjZRRgpDeGFrcTYrK09rVkVPdUdFRTlJbm4zeFNxekZVMVpp
cDd0aFExMjFlMHpvYlAzNTg2dG16WjRxSWRNY2RkNlNsUzVmV2FmM1c5TnhpCnkxUWJuMzc2YVRy
bm5IUFN4UmRmWE8wK1d0TjhhdHFXMVkyL2M4ODlON1Z2M3o0dFg3NDhIWHJvb1dudTNMbUZ4MWE5
blZMOWppdkYKamdWWFhIRkYybW1ubmRKMTExMlhycjMyMnZUVG4vNDBMVnk0c003YmJOeTRjWFVh
cjkvNXpuY3F2YjdYWG5zdHJiLysrcWxyMTY3cApra3N1U2FlZmZucWFObTFhcGRmLzRZY2ZwaU9P
T0NMZGVPT042YzQ3NzB5Ly92V3ZxOTJlZi83em4xZTdTdFhISDMrY3Jyenl5blQ2CjZhZXZ0bTVU
V25GVnJQNzkrNmNoUTRhazMvem1OK25TU3k4dFhJV3IyUFJIang2ZG1qVnJWamllclB6WHNXUEh0
SHo1OHJUMzNudW4KSVVPR3BDKysrS0xhWlladnNsb0h5RW9sSlNWcDRzU0o2YTIzM2lwY2dyQ3Vs
aTVkbWo3NDRJTXF2MkdWbDVjWERwQU40ZTY3NzA3UApQdnRzbFkrVmw1ZW5xVk9ucnZZRGNNWGxY
THg0Y1VwcHhlVUlpMW0rZkhuaGNybFZyWnRpODZ1TGlwZmxyVXBkMStQSzE1blMvM3V0Ckt5K3JP
WC8rL05VdUwxaGZLMk8xdXR0MVVkTTRxbytjWTJWVnZYcjFTaGRjY0VGYXRHaFJtajE3ZHEyL3Jq
YnJvTGJydUw2dnNhN2oKcE5oK1VwV3F4bWRLS1EwWk1pUk5uVG8xdmZYV1crbnZmLzk3ZXZycHA5
TVBmL2pEU24rZGVGV3I3anZWVGJzcXRabGZUZHVrMkg1YgpXM1ZaNW1McXN4ODE5RGF2eXpMVVpm
M1c5Tno2ak1PcUZGdm1Zdk9weTdZc0x5OHZQSC84K1BHVkhsdjFka3IxUDY3VTVudlZaNTk5ClZ1
c3gweERINnFwZTM1ZGZmcG1tVFp0VzdTOGNWcG8zYjE2bFMvZld4dEtsUzlPb1VhUFNsMTkrV2ZT
NUN4Y3VYS014VkpXRytyNEcKNjZwR0tXWDRzOHRmZ3krLy9ESmF0R2dSMy8vKzkyUDQ4T0gvdG45
Vm0rTFdoYkd5Kys2N3gzNzc3UmYvL2QvL25YM2UzMVQzM0hOUApEQjgrZkxYTGZ6Nzc3TE94OWRa
Ynh6YmJiUE9Obmgrc0tjY1ZZRjFWOUNwWTMwUjMzSEZIREJvMEtEcDE2aFQzM251ditLQmE2OEpZ
CktTOHZMM3l1Z3RyYmUrKzk0OXh6ejQzamp6OCtldmJzR1NVbEpURnIxcXpvMjdmdldvbUIzUE9E
TmVHNEFxekwvaVhmQWZuODg4L2oKNFljZmpxT1BQam82ZHV6NGRTOE82N0IxWWF6Y2Q5OTloUS9Q
YnJYVlZuSHl5U2QvTGN2eFRmVEZGMS9FaXkrK0dETm56b3dERGpoZwpyWWRBN3ZsQmZUbXVBT3V5
ZjhrQUFRQUExazFGTDhNTEFBRFFVQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFB
TmtJCkVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdn
QUFBQU5rSUVBQUFJSnVteFo3dzlEc3AKeDNKVTZZanVqYjYyZVFNQUFBM1BPeUFBQUVBMnRRcVFr
cThXeFp6UFp0UnJCcVhMbHNhVVNTOVhleHNBQVBqM1VUUkEvdmFYaCtJLwo5MnNYbzU2NnY4NFRm
Kyt0OFhIZThiM2ltcDhlVitWdEFBRGczMHZSQVBsTzMxT2liY2ZPOVpyNGRqdnZHUWNkYzJxMXR3
RUFnSDh2CnRUb0ZxMm5UWnRFbzZ2ZUI4R2JObWtjMGFsVHRiUUFBNE45SDBhdGdyWlJTZVR4dzJ5
OWo1T04vaVBVMzJDaCtlY2RUMFg2ekxoRVIKTVgvdXJIajAzcUh4d2YrOUhrc1dMNG9mWDM1N1Qv
Z1pHUUFBRHNWSlJFRlVkTnRscjFwTnQrU3JSZkdIbXk2T1pzMWJ4R2YvbUJadApPMjRSQXk0WUdp
M1dhMW0vVndRQUFLeXphbjBWckxIUFBoSTc3cjUvM1BEZ3kxRmVYaGJEN3hrU0VSRmxaV1Z4ODJV
RDR2dURyb3hyCi96QTZ1dTYwZTF4MXpsR3hhT0dDV2sxMzhJK1BpTzEyM2pQT3VPaS80NUtiSG9t
cGI0MlA2eTQ0b1g2dkJnQUFXS2ZWT2tCMjM3OXYKOU5qcm9OaWsvV2F4OHg0SHhDZlQzNDJJaUxF
amhrZUtGUC8zK2t2eCt0Z1I4ZTFOT3NUQytYUGo3UWt2RnAzbTZ5K05pSGNtam8zOQpEanNwSWlL
YU5tc1doeHg3V3J3MjV1bVk4c2E0ZXI0a0FBQmdYVlhyQUdsVTRYTWJHMjYwY1pRc1hoUVJFVlBl
SEJjYnRXNFR6Wm8xCmoyYk5ta2YzM2ZhTnEzLzdYR3l6UTgraTA1dzYrZFg0MXJmYlJ0Tm16UXIz
YmJ2ekhoRVI4ZUdVU2JWK0VRQUF3RGREclQ4RFVwMkYKOCtkR2t5Wk5vOGZlQjlmNWE1Y3VXUndM
NTgrTmtxOFdSY3NOTm95SWlDMjc3aFNObXpTSkpTVmZyZW1pQVFBQTY1ZzEva3ZvN1R0MQppVW5q
bm85bFM1Y1U3a3NweFZ1di9xM28xMjdXcFZ1VWw1ZkgrMisvVnJodndlZXpvN3lzTERiZmF2czFY
VFFBQUdBZFU2c0FXYnBrCmNTeGRzdmovM1Y1YUVzdVdsRVJFeEhmNmZqOFd6SjBWL3pQNHJGajB4
ZnhZTUc5Mi9POGRWMFhIemwwaklxSzBkRm1VbFpZV3ZyYmkKN2YvNDd2SFJwbDJubURUdStjTGo3
Nzg5SVRicnNsMzAvSTlEMS96VkFRQUE2NVNpQWZMMzUvNFVNMmQ4R0srUEhSRWZUbmtqcGsyWgpG
SytQSFJHZnpaZ1c0MGMvRlZ0czB6MEcvdktPZVBHdkQ4ZEorN1NKZ1VmdkdGMjY3UktidE9zVTc3
MzFhcno0elAvR2wxOThIazhQCnV6UCtiK0xmSzkxdTByUlovUEwySitPVlVVL0VuMzkvUTB4NDZh
L3g0alAvRzVmZCtsZzBhYnJHWjRjQkFBRHJtRVlwcFZUVEU1NSsKcDhhSEMwcVhMWXU1TTJmRXBo
MDcxemtlVWtyeDZUOCtpTWFOR2tlSExiWXUzSDlFZDMrd0VBQUEvcFUwMk5zTXpabzNyeFFQZGRH
bwpVYVBvOVArZnNnVUFBUHpyV3VNUG9RTUFBTlNXQUFFQUFMSXAraGtRQUFDQWh1SWRFQUFBSUJz
QkFnQUFaQ05BQUFDQWJBUUlBQUNRCmpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFB
QUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTIKQWdRQUFNaEdnQUFBQU5r
SUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFB
QU5rSQpFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhH
Z0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BCkFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FB
QU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUIKQUFDeUVTQUFBRUEy
QWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFB
RUEyQWdRQQpBTWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lF
U0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBCklCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJB
QUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0EKYkFRSUFBQ1Fq
UUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFB
Q1FqUUFCQUFDeQpFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFDQWJB
UUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHCmdBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFB
Q0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0IKQWdBQVpD
TkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdB
QVpDTkFBQUNBYkFRSQpBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJz
QkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBCkFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFB
QUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUEKQU5r
SUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFB
QU5rSUVBQUFJQnNCQWdBQQpaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhH
Z0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRCmpRQUJBQUN5RVNBQUFFQTJBZ1FB
QU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTIK
QWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFB
RUEyQWdRQUFNaEdnQUFBQU5rSQpFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lF
U0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BCkFBQ0FiQVFJQUFDUWpRQUJB
QUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpR
QUIKQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFB
Q1FqUUFCQUFDeUVTQUFBRUEyQWdRQQpBTWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFDQWJB
UUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBCklCc0JBZ0FBWkNOQUFB
Q0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNO
QUFBQ0EKYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdB
QVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeQpFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJz
QkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHCmdBQUFBTmtJRUFB
QUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJ
RUFBQUlCc0IKQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFB
QU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSQpBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhH
Z0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBCkFFQTJBZ1FB
QU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJB
Z1FBQU1oR2dBQUEKQU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFB
RUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQQpaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lF
U0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRCmpRQUJB
QUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpR
QUJBQUN5RVNBQUFFQTIKQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFB
Q1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSQpFQUFBSUJzQkFnQUFaQ05BQUFDQWJB
UUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BCkFB
Q0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNO
QUFBQ0FiQVFJQUFDUWpRQUIKQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdB
QVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQQpBTWhHZ0FBQUFOa0lFQUFBSUJz
QkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFB
CklCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJ
RUFBQUlCc0JBZ0FBWkNOQUFBQ0EKYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFB
QU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeQpFU0FBQUVBMkFnUUFBTWhH
Z0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFB
TWhHCmdBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJB
Z1FBQU1oR2dBQUFBTmtJRUFBQUlCc0IKQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFB
RUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSQpBQUNRalFBQkFBQ3lF
U0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFB
Q3lFU0FBCkFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpR
QUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUEKQU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFB
Q1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQQpaQ05BQUFDQWJB
UUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFD
QWJBUUlBQUNRCmpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNO
QUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTIKQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdB
QVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSQpFQUFBSUJz
QkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFB
SUJzQkFnQUFaQ05BCkFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJ
RUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUIKQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFB
QU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQQpBTWhH
Z0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFB
TWhHZ0FBQUFOa0lFQUFBCklCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJB
Z1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0EKYkFRSUFBQ1FqUUFCQUFDeUVTQUFB
RUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYlA0L25ieUQyVTRIVlFFQQpB
QUFBU1VWT1JLNUNZSUk9Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114523</attachid>
            <date>2011-11-10 09:57:20 -0800</date>
            <delta_ts>2011-11-17 16:52:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71745-20111110095719.patch</filename>
            <type>text/plain</type>
            <size>67607</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5ODEyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTI4IEBACisyMDExLTExLTA5ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5pcXVlIFNlY3VyaXR5T3JpZ2lu
cyBzaG91bGRuJ3QgcmVtZW1iZXIgdGhlaXIgb2xkIHNjaGVtZXMgYW5kIGhvc3RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTc0NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaXMgc29t
ZXdoYXQgc3VidGxlLiAgVGhpcyBwYXRjaCBoYXMgdGhyZWUgbWFpbiBnb2FsczoKKworICAgICAg
ICAxKSBSZW1vdmUgdGhlIGNvbmNlcHQgb2YgYW4gZW1wdHkgb3JpZ2luLiAgVGhpcyBjb25jZXB0
IHVzZWQgdG8KKyAgICAgICAgICAgcmVwcmVzZW50IGEgZG9jdW1lbnQgdGhhdCBoYWRuJ3QgeWV0
IGZpZ3VyZWQgb3V0IGl0J3Mgb3JpZ2luLCBidXQgaXQKKyAgICAgICAgICAgd2FzIHN1cGVyIHN1
YnRsZSBhbmQgbGVhZCB0byBhIG51bWJlciBvZiBzZWN1cml0eSBidWdzLiAgTm93LCB3ZQorICAg
ICAgICAgICByZXByZXNlbnQgdGhhdCBzdGF0ZSBieSB1c2luZyBhIHVuaXF1ZSBvcmlnaW4gYW5k
IGEKKyAgICAgICAgICAgImZhaWxlZFRvSW5oZXJpdFNlY3VyaXR5T3JpZ2luIiBvbiBTZWN1cml0
eUNvbnRleHQuICBUaGlzIHNob3VsZAorICAgICAgICAgICBoZWxwIHVzIGF2b2lkIHNlY3VyaXR5
IGJ1Z3MgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICAyKSBSZW1vdmUgc2NoZW1lcywgaG9zdHMs
IGFuZCBwb3J0cyBmcm9tIHVuaXF1ZSBvcmlnaW5zLiAgVW5pcXVlCisgICAgICAgICAgIG9yaWdp
bnMgYXJlbid0IHJlbGF0ZWQgdG8gc2NoZW1lL2hvc3QvcG9ydCBvcmlnaW5zLiAgUHJldmlvdXNs
eSwgd2UKKyAgICAgICAgICAgc3RvcmVkIHRoZSBzY2hlbWUsIGhvc3QsIGFuZCBwb3J0IG9uIFNl
Y3VyaXR5T3JpZ2luIG9iamVjdHMgdGhhdCBoYWQKKyAgICAgICAgICAgdGhlIGlzVW5pcXVlIGJp
dCBzZXQgZXZlbiB0aG91Z2ggd2Ugd2VyZSBzdXBwb3NlZCB0byBpZ25vcmUgdGhlbSwKKyAgICAg
ICAgICAgd2hpY2ggc2VlbXMgZXJyb3IgcHJvbmUuCisKKyAgICAgICAgMykgU2ltcGxpZnkgdGhl
IFNlY3VyaXR5T3JpZ2luIGNvbnN0cnVjdG9yLiAgT3ZlciB0aW1lLCB0aGUKKyAgICAgICAgICAg
U2VjdXJpdHlPcmlnaW4gY29uc3RydWN0b3IgaGFzIGdyb3duIGEgYnVuY2ggb2YgaWZkZWZzIGFu
ZAorICAgICAgICAgICBjb21wbGV4aXR5LiAgVGhpcyBwYXRjaCBmYWN0b3JzIGEgYnVuY2ggb2Yg
dGhhdCBjb21wbGV4aXR5IG91dCBpbnRvCisgICAgICAgICAgIGZyZWUgZnVuY3Rpb25zIGFuZCBz
aW1wbGlmaWVzIHRoZSBjb25zdHJ1Y3RvciB0byBqdXN0IGluaXRpYWxpemluZworICAgICAgICAg
ICB0aGUgZXNzZW50aWFsIGRhdGEgZmllbGRzLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHksIHRo
ZXNlIHRocmVlIGNoYW5nZXMgYXJlIGZhaXJseSB0aWdodGx5IGxpbmtlZCBiZWNhdXNlIHdlCisg
ICAgICAgIHdlcmUgdXNpbmcgdGhlIHByb3RvY29sIG1lbWJlciB2YXJpYWJsZSBvZiBTZWN1cml0
eU9yaWdpbiBvbiB1bmlxdWUKKyAgICAgICAgb3JpZ2lucyB0byByZXByZXNlbnQgZW1wdHkgb3Jp
Z2lucy4KKworICAgICAgICBDbGVhbmluZyB1cCB0aGVzZSBzdGF0ZSByZXByZXNlbnRhdGlvbnMg
Zml4ZWQgdHdvIG1pbm9yIGJ1Z3MsIGFzCisgICAgICAgIHJlZmxlY3RlZCBpbiB0aGUgdXBkYXRl
ZCB0ZXN0IHJlc3VsdHM6CisKKyAgICAgICAgQSkgU3RvcmFnZSBpZGVudGlmaWVycyBmb3IgdW5p
cXVlIG9yaWdpbnMgd2hlcmUgbGVha2luZyB0aGUgb3JpZ2luCisgICAgICAgICAgIHNjaGVtZS4g
IE5vdywgd2UganVzdCB1c2UgdGhlIGVtcHR5IHN0cmluZy4KKworICAgICAgICBCKSBTYW5kYm94
ZWQgaWZyYW1lcyBpbiBmcm9tIGxvY2FsIFVSTHMgd2hlcmUgZ2FpbmluZyAibG9jYWwiCisgICAg
ICAgICAgIHByaXZpbGVnZXMgZnJvbSB0aGVpciBzY2hlbWUuICBOb3cgdGhhdCB0aGV5IGhhdmUg
ZW1wdHkgc2NoZW1lcywKKyAgICAgICAgICAgdGhleSBubyBsb25nZXIgZ2FpbiB0aG9zZSBwcml2
aWxlZ2VzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyByZXZlYWxlZCBhIGhhbmRmdWwgb2Yg
c3VidGxlIGJ1Z3Mgd2l0aCB0aGUgb2xkIGNvZGUuCisgICAgICAgIEkndmUgYXR0ZW1wdGVkIHRv
IHByZXNlcnZlIHRob3NlIGJ1Z3MgKG5vdGVkIHdpdGggRklYTUUgY29tbWVudHMpIGluIGFuCisg
ICAgICAgIGVmZm9ydCB0byBjb250YWluIHRoZSBzY29wZSBvZiB0aGlzIHBhdGNoLiAgSSdsbCBs
aWtlbHkgZml4IHRob3NlIGJ1Z3MKKyAgICAgICAgaW4gYSBmb2xsb3ctdXAgcGF0Y2guCisKKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNl
dElzVmlld1NvdXJjZSk6CisgICAgICAgICAgICAtIFRoaXMgbm93IHVzZXMgYSBuZXctc3R5bGUg
dW5pcXVlIG9yaWdpbi4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojppbml0U2VjdXJpdHlD
b250ZXh0KToKKyAgICAgICAgICAgIC0gV2hlbiBzYW5kYm94ZWQsIHdlIG5vdyB1c2UgYSBuZXct
c3R5bGUgdW5pcXVlIG9yaWdpbiByYXRoZXIgdGhhbgorICAgICAgICAgICAgICBqdXN0IHNldHRp
bmcgdGhlIGlzVW5pcXVlIGJpdC4gIFRoaXMgcmVxdWlyZWQgc29tZSBjaGFuZ2VzIHRvIGhvdwor
ICAgICAgICAgICAgICB3ZSBpbmhlcml0IHNlY3VyaXR5IG9yaWdpbnMgaW4gdGhlIGFib3V0OmJs
YW5rIGNhc2UuICBUaGUgbm90aW9uCisgICAgICAgICAgICAgIG9mIGZhaWxlZFRvSW5oZXJpdFNl
Y3VyaXR5T3JpZ2luKCkgcmVwbGFjZXMgdGhlIG5vdGlvbiBvZiBhbgorICAgICAgICAgICAgICBl
bXB0eSBTZWN1cml0eU9yaWdpbi4KKyAgICAgICAgICAgIC0gT24gbGluZSA0NDQzLCB3ZSBhcmUg
bm93IG1vcmUgZXhwbGljaXQgYWJvdXQgdGhlIGNhc2VzIHdoZXJlIHdlCisgICAgICAgICAgICAg
IGluaGVyaXQgdGhlIFNlY3VyaXR5T3JpZ2luLiAgUmF0aGVyIHRoYW4gZG9pbmcgc28gZm9yIGFs
bCAiZW1wdHkiCisgICAgICAgICAgICAgIG9yaWdpbnMsIHdlIGluaGVyaXQgb25seSB3aGVuIHRo
ZSBVUkwgaXMgaW4gdGhlIGFib3V0IHNjaGVtZQorICAgICAgICAgICAgICAoZS5nLiwgYWJvdXQ6
YmxhbmspIG9yIHdoZW4gdGhlIFVSTCBpcyBpbnZhbGlkLgorICAgICAgICAqIGRvbS9TZWN1cml0
eUNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlDb250ZXh0OjpTZWN1cml0
eUNvbnRleHQpOgorICAgICAgICAgICAgLSBJbml0aWFsaXplIG1fZmFpbGVkVG9Jbmhlcml0U2Vj
dXJpdHlPcmlnaW4gdG8gZmFsc2UuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eUNvbnRleHQ6
OnNldFNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgICAgIC0gV2hlbmV2ZXIgd2Ugc2V0IGEgU2Vj
dXJpdHlPcmlnaW4gZXhwbGljaXRseSwgd2UgaGF2ZSBubyBsb25nZXIKKyAgICAgICAgICAgICAg
ZmFpbGVkIHRvIGluaGVyaXQgYSBzZWN1cml0eSBvcmlnaW4uICBJbiBjb21iaW5hdGlvbiB3aXRo
IHRoZQorICAgICAgICAgICAgICBndWFyZCBhdCB0aGUgdG9wIG9mIGluaXRTZWN1aXR5T3JpZ2lu
LCB0aGlzIGFzc2lnbm1lbnQgc3RvcHMgdXMKKyAgICAgICAgICAgICAgZnJvbSBpbmhlcml0aW5n
IHRoZSBzZWN1cml0eSBvcmlnaW4gbW9yZSB0aGFuIG9uY2UuCisgICAgICAgIChXZWJDb3JlOjpT
ZWN1cml0eUNvbnRleHQ6OmlzU2VjdXJlVHJhbnNpdGlvblRvKToKKyAgICAgICAgICAgIC0gVGhp
cyBwYXRjaCBtb3ZlcyBpc1NlY3VyZVRyYW5zaXRpb25UbyBmcm9tIFNlY3VyaXR5T3JpZ2luIHRv
CisgICAgICAgICAgICAgIFNlY3VyaXR5Q29udGV4dCBzbyB0aGF0IGl0IGNhbiByZWFkIHRoZQor
ICAgICAgICAgICAgICBmYWlsZWRUb0luaGVyaXRTZWN1cml0eU9yaWdpbiBzdGF0ZSwgd2hpY2gg
aXMgcmVhbGx5IHBlci1Eb2N1bWVudAorICAgICAgICAgICAgICAoYW5kIGhlbmNlIGNhbid0IGJl
IG9uIFNlY3VyaXR5T3JpZ2luLCB3aGljaCBtaWdodCBiZSBzaGFyZWQKKyAgICAgICAgICAgICAg
YmV0d2VlbiBkb2N1bWVudHMgaW4gdGhlIGluaGVyaXRlbmNlIGNhc2UpLgorICAgICAgICAqIGRv
bS9TZWN1cml0eUNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5Q29udGV4dDo6
ZGlkRmFpbFRvSW5oZXJpdFNlY3VyaXR5T3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNlY3Vy
aXR5Q29udGV4dDo6ZmFpbGVkVG9Jbmhlcml0U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIGxv
YWRlci9Eb2N1bWVudFdyaXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRl
cjo6YmVnaW4pOgorICAgICAgICAgICAgLSBVcGRhdGUgY2FsbHNpdGUgZm9yIGlzU2VjdXJlVHJh
bnNpdGlvblRvIHRvIGl0cyBuZXcgbG9jYXRpb24uCisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyk6Cisg
ICAgICAgICAgICAtIFVwZGF0ZSBjYWxsc2l0ZSBmb3IgaXNTZWN1cmVUcmFuc2l0aW9uVG8gdG8g
aXRzIG5ldyBsb2NhdGlvbi4KKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpET01XaW5kb3c6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgICAgIC0gTm93IHdo
ZW4gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcgZmFpbCwgaXQgcmV0dXJucyBhCisg
ICAgICAgICAgICAgIHVuaXF1ZSBvcmlnaW4gcmF0aGVyIHRoYW4gYW4gZW1wdHkgb3JpZ2luLiAg
VGhpcyBzaG91bGQgYmUKKyAgICAgICAgICAgICAgZnVuY3Rpb25hbGx5IGlkZW50aWNhbC4KKyAg
ICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNjaGVt
ZVJlcXVpcmVzQXV0aG9yaXR5KToKKyAgICAgICAgICAgIC0gQ2hhbmdlIHRoaXMgZnVuY3Rpb24g
dG8ganVzdCBkbyBhIGNvdXBsZSBzdHJjbXBzIHJhdGhlciB0aGFuCisgICAgICAgICAgICAgIGhh
dmluZyBhIHN0YXRpYyBVUkxTY2hlbWVzTWFwLiAgV2UgdXNlIFVSTFNjaGVtZXNNYXBzIHdoZW4g
dGhlCisgICAgICAgICAgICAgIHNldCBvZiBzY2hlbWVzIGlzIGV4dGVuc2libGUsIHdoaWNoIHRo
aXMgc2V0IGlzIG5vdC4KKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFVzZUlubmVyVVJMKToKKyAg
ICAgICAgICAgIC0gVGhpcyBmdW5jdGlvbiBhYnN0cmFjdHMgc29tZSB0cmlja3kgbG9naWMgdGhh
dCB1c2VkIHRvIGJlIGluIHRoZQorICAgICAgICAgICAgICBTZWN1cml0eU9yaWdpbiBjb25zdHJ1
Y3Rvci4gIE11Y2ggdG8gbXkgY2hhZ3JpbiwgYmxvYiBhbmQKKyAgICAgICAgICAgICAgZmlsZXN5
c3RlbSBzdG9yZSB0aGVpciBvcmlnaW4gaW4gYSBuZXN0ZWQgaW5uZXIgVVJMLgorICAgICAgICAo
V2ViQ29yZTo6ZXh0cmFjdElubmVyVVJMKToKKyAgICAgICAgICAgIC0gVGhpcyBmdW5jdGlvbiBq
dXN0IGFic3RyYWN0cyB0aGUgb3BlcmF0aW9uIG9mIGV4dHJhY3RpbmcgdGhlCisgICAgICAgICAg
ICAgIGlubmVyIFVSTCB0aGF0J3MgdXNlZCBpbiB0aGUgYmxvYiBhbmQgZmlsZXN5c3RlbSBjYXNl
cy4KKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFRyZWF0QXNVbmlxdWVPcmlnaW4pOgorICAgICAg
ICAgICAgLSBUaGVyZSBhcmUgYSBidW5jaCBvZiBjYXNlcyB3aGVyZSB3ZSB3YW50IHRvIHVzZSBh
IHVuaXF1ZSBvcmlnaW4KKyAgICAgICAgICAgICAgcmF0aGVyIHRoYW4gdGhlIG9yaWdpbiB5b3Ug
bWlnaHQgb3RoZXJ3aXNlIGV4dHJhY3QgZnJvbSBhIFVSTC4KKyAgICAgICAgICAgICAgTW92aW5n
IHRoaXMgbG9naWMgb3V0IG9mIHRoZSBjb25zdHJ1Y3RvciBsZXRzIHVzIGNhbGwgaXQgaW4gdGhl
CisgICAgICAgICAgICAgIGNyZWF0ZSBmdW5jdGlvbiBpbnN0ZWFkLCBzaW1wbGlmeWluZyB0aGUg
Y29uc3RydWN0b3IuCisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U2VjdXJpdHlP
cmlnaW4pOgorICAgICAgICAgICAgLSBUaGUgU2VjdXJpdHlPcmlnaW4gY29uc3RydWN0b3Igbm93
IGp1c3QgaW5pdGlhbGl6ZSBmaWVsZHMgcmF0aGVyCisgICAgICAgICAgICAgIHRoYW4gbWFraW5n
IGNvbXBsZXggc2VjdXJpdHkgZGVjaXNpb25zLgorICAgICAgICAgICAgLSBJJ2xsIHJlbW92ZSB0
aGUgZm9yY2VVbmlxdWUgcGFyYW1ldGVyIGluIGEgZm9sbG93LXVwIHBhdGNoLiAgVGhlCisgICAg
ICAgICAgICAgIEFTU0VSVCBlbnN1cmVzIHRoYXQgd2UncmUgbm90IHVzaW5nIGl0LgorICAgICAg
ICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZSk6CisgICAgICAgICAgICAtIFNvbWUg
b2YgdGhlIGNvbXBsZXhpdHkgZnJvbSB0aGUgY29uc3RydWN0b3IgbW92ZWQgdG8gdGhpcworICAg
ICAgICAgICAgICBmdW5jdGlvbiwgd2hpY2ggbm93IGRlY2lkZXMgd2hldGhlciB0byBjb25zdHJ1
Y3QgYSB1bmlxdWUgb3JpZ2luLAorICAgICAgICAgICAgICBhbiBvcmlnaW4gZnJvbSB0aGUgaW5u
ZXIgVVJMLCBvciB0aGUgcmVndWxhciBvcmlnaW4uCisgICAgICAgICogcGFnZS9TZWN1cml0eU9y
aWdpbi5oOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RFbnRyeSk6CisgICAgICAgICAgICAtIE1vdmUgdGhlc2UgZnVuY3Rpb25zIG92ZXIgdG8gY2Fs
bGluZyBpc1VuaXF1ZSBpbnN0ZWFkIG9mIGlzRW1wdHkuCisgICAgICAgICogcGxhdGZvcm0vU2No
ZW1lUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2NoZW1lc1dpdGhVbmlxdWVPcmln
aW5zKToKKyAgICAgICAgICAgIC0gUmF0aGVyIHRoYW4gc3BlY2lhbC1jYXNpbmcgdGhlIGFib3V0
IGFuZCBqYXZhc2NyaXB0IHNjaGVtZXMsIHRoaXMKKyAgICAgICAgICAgICAgcGF0Y2ggbW92ZXMg
dGhlbSBpbnRvIHRoZSBnZW5lcmFsIGNhc2Ugb2Ygc2NoZW1lcyB3aXRoIHVuaXF1ZQorICAgICAg
ICAgICAgICBvcmlnaW5zLgorCiAyMDExLTExLTA5ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0
aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIFt3eF0gVW5yZXZpZXdlZCBidWlsZCBmaXguIEFk
ZCBzdHViIGZvciBuZXcgbWV0aG9kLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZp
c2lvbiA5OTcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE3MjksNyArMTcyOSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldElzVmlld1NvdXJj
ZShib29sIGlzVmkKICAgICBpZiAoIW1faXNWaWV3U291cmNlKQogICAgICAgICByZXR1cm47CiAK
LSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzZXRTZWN1cml0eU9yaWdpbihTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKHVybCgpLCB0cnVlKSk7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6
c2V0U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKTsKIH0KIAog
dm9pZCBEb2N1bWVudDo6Y3JlYXRlU3R5bGVTZWxlY3RvcigpCkBAIC00MzkwLDEwICs0MzkwLDEz
IEBAIGJvb2wgRG9jdW1lbnQ6OnVzZVNlY3VyZUtleWJvYXJkRW50cnlXaGUKICAgICByZXR1cm4g
bV91c2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZTsKIH0KIAorLy8gRklYTUU6IFRoaXMg
ZnVuY3Rpb24gc2hvdWxkIG1vdmUgdG8gU2VjdXJpdHlDb250ZXh0IGFuZCBiZSBicm9rZW4gZG93
biBpbnRvIHNtYWxsZXIgcGllY2VzLgogdm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4
dCgpCiB7Ci0gICAgaWYgKHNlY3VyaXR5T3JpZ2luKCkgJiYgIXNlY3VyaXR5T3JpZ2luKCktPmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOyAvLyBtX3NlY3VyaXR5T3JpZ2luIGhhcyBhbHJlYWR5
IGJlZW4gaW5pdGlhbGl6ZWQuCisgICAgaWYgKGhhdmVJbml0aWFsaXplZFNlY3VyaXR5T3JpZ2lu
KCkpIHsKKyAgICAgICAgQVNTRVJUKHNlY3VyaXR5T3JpZ2luKCkpOworICAgICAgICByZXR1cm47
CisgICAgfQogCiAgICAgaWYgKCFtX2ZyYW1lKSB7CiAgICAgICAgIC8vIE5vIHNvdXJjZSBmb3Ig
YSBzZWN1cml0eSBjb250ZXh0LgpAQCAtNDQwOCw3ICs0NDExLDcgQEAgdm9pZCBEb2N1bWVudDo6
aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgLy8gbG9hZGluZyBVUkwgd2l0aCBhIGZyZXNoIGNv
bnRlbnQgc2VjdXJpdHkgcG9saWN5LgogICAgIG1fY29va2llVVJMID0gbV91cmw7CiAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6ZW5mb3JjZVNhbmRib3hGbGFncyhtX2ZyYW1lLT5sb2FkZXIo
KS0+ZWZmZWN0aXZlU2FuZGJveEZsYWdzKCkpOwotICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OnNldFNlY3VyaXR5T3JpZ2luKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwsIGlzU2FuZGJv
eGVkKFNhbmRib3hPcmlnaW4pKSk7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0U2Vj
dXJpdHlPcmlnaW4oaXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikgPyBTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlVW5pcXVlKCkgOiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsKSk7CiAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDo6c2V0Q29udGVudFNlY3VyaXR5UG9saWN5KENvbnRlbnRTZWN1
cml0eVBvbGljeTo6Y3JlYXRlKHRoaXMpKTsKIAogICAgIGlmIChTZWN1cml0eVBvbGljeTo6YWxs
b3dTdWJzdGl0dXRlRGF0YUFjY2Vzc1RvTG9jYWwoKSkgewpAQCAtNDQxNiw3ICs0NDE5LDcgQEAg
dm9pZCBEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCgpCiAgICAgICAgIC8vIGxvYWQgbG9j
YWwgcmVzb3VyY2VzLiAgU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjc1NgogICAgICAgICAvLyBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NzYwIGZvciBmdXJ0aGVyCiAgICAgICAgIC8vIGRpc2N1c3Npb24uCi0gICAgICAg
IAorCiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGxvYWRlcigpOwog
ICAgICAgICBpZiAoZG9jdW1lbnRMb2FkZXIgJiYgZG9jdW1lbnRMb2FkZXItPnN1YnN0aXR1dGVE
YXRhKCkuaXNWYWxpZCgpKQogICAgICAgICAgICAgc2VjdXJpdHlPcmlnaW4oKS0+Z3JhbnRMb2Fk
TG9jYWxSZXNvdXJjZXMoKTsKQEAgLTQ0NDAsOSArNDQ0MywxMiBAQCB2b2lkIERvY3VtZW50Ojpp
bml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICghc2VjdXJp
dHlPcmlnaW4oKS0+aXNFbXB0eSgpKQorICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGluaGVy
aXQgb3VyIHNlY3VyaXR5IG9yaWdpbiBpZiB3ZSdyZSBzYW5kYm94ZWQuCisgICAgaWYgKG1fdXJs
LmlzVmFsaWQoKSAmJiAhbV91cmwucHJvdG9jb2xJcygiYWJvdXQiKSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgQVNTRVJUKHNlY3VyaXR5T3JpZ2luKCktPmlzVW5pcXVlKCkpOworCiAgICAgLy8g
SWYgd2UgZG8gbm90IG9idGFpbiBhIG1lYW5pbmdmdWwgb3JpZ2luIGZyb20gdGhlIFVSTCwgdGhl
biB3ZSB0cnkgdG8KICAgICAvLyBmaW5kIG9uZSB2aWEgdGhlIGZyYW1lIGhpZXJhcmNoeS4KIApA
QCAtNDQ1MCwxNCArNDQ1NiwxNiBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0
KCkKICAgICBpZiAoIW93bmVyRnJhbWUpCiAgICAgICAgIG93bmVyRnJhbWUgPSBtX2ZyYW1lLT5s
b2FkZXIoKS0+b3BlbmVyKCk7CiAKLSAgICBpZiAob3duZXJGcmFtZSkgewotICAgICAgICBtX2Nv
b2tpZVVSTCA9IG93bmVyRnJhbWUtPmRvY3VtZW50KCktPmNvb2tpZVVSTCgpOwotICAgICAgICAv
LyBXZSBhbGlhcyB0aGUgU2VjdXJpdHlPcmlnaW5zIHRvIG1hdGNoIEZpcmVmb3gsIHNlZSBCdWcg
MTUzMTMKLSAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MzEzCi0gICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNldFNlY3VyaXR5T3JpZ2lu
KG93bmVyRnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpOwotICAgICAgICAvLyBG
SVhNRTogQ29uc2lkZXIgbW92aW5nIG1fY29udGVudFNlY3VyaXR5UG9saWN5IGludG8gU2VjdXJp
dHlPcmlnaW4uCi0gICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNldENvbnRlbnRTZWN1
cml0eVBvbGljeShvd25lckZyYW1lLT5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3ko
KSk7CisgICAgaWYgKCFvd25lckZyYW1lKSB7CisgICAgICAgIGRpZEZhaWxUb0luaXRpYWxpemVT
ZWN1cml0eU9yaWdpbigpOworICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgbV9jb29raWVV
UkwgPSBvd25lckZyYW1lLT5kb2N1bWVudCgpLT5jb29raWVVUkwoKTsKKyAgICAvLyBXZSBhbGlh
cyB0aGUgU2VjdXJpdHlPcmlnaW5zIHRvIG1hdGNoIEZpcmVmb3ggKHNlZSBidWcgMTUzMTMpLgor
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTMxMworICAg
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNldFNlY3VyaXR5T3JpZ2luKG93bmVyRnJhbWUtPmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OnNldENvbnRlbnRTZWN1cml0eVBvbGljeShvd25lckZyYW1lLT5kb2N1bWVudCgpLT5jb250ZW50
U2VjdXJpdHlQb2xpY3koKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNldFNlY3VyaXR5T3JpZ2lu
KFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Rv
bS9TZWN1cml0eUNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9T
ZWN1cml0eUNvbnRleHQuY3BwCShyZXZpc2lvbiA5OTcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9TZWN1cml0eUNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw4IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNlY3VyaXR5Q29udGV4dDo6U2VjdXJpdHlDb250ZXh0KCkK
LSAgICA6IG1fc2FuZGJveEZsYWdzKFNhbmRib3hOb25lKQorICAgIDogbV9oYXZlSW5pdGlhbGl6
ZWRTZWN1cml0eU9yaWdpbihmYWxzZSkKKyAgICAsIG1fc2FuZGJveEZsYWdzKFNhbmRib3hOb25l
KQogewogfQogCkBAIC00NSw2ICs0Niw3IEBAIFNlY3VyaXR5Q29udGV4dDo6flNlY3VyaXR5Q29u
dGV4dCgpCiB2b2lkIFNlY3VyaXR5Q29udGV4dDo6c2V0U2VjdXJpdHlPcmlnaW4oUGFzc1JlZlB0
cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4pCiB7CiAgICAgbV9zZWN1cml0eU9yaWdp
biA9IHNlY3VyaXR5T3JpZ2luOworICAgIG1faGF2ZUluaXRpYWxpemVkU2VjdXJpdHlPcmlnaW4g
PSB0cnVlOwogfQogCiB2b2lkIFNlY3VyaXR5Q29udGV4dDo6c2V0Q29udGVudFNlY3VyaXR5UG9s
aWN5KFBhc3NSZWZQdHI8Q29udGVudFNlY3VyaXR5UG9saWN5PiBjb250ZW50U2VjdXJpdHlQb2xp
Y3kpCkBAIC01Miw2ICs1NCwxNyBAQCB2b2lkIFNlY3VyaXR5Q29udGV4dDo6c2V0Q29udGVudFNl
Y3VyaXR5CiAgICAgbV9jb250ZW50U2VjdXJpdHlQb2xpY3kgPSBjb250ZW50U2VjdXJpdHlQb2xp
Y3k7CiB9CiAKK2Jvb2wgU2VjdXJpdHlDb250ZXh0Ojppc1NlY3VyZVRyYW5zaXRpb25Ubyhjb25z
dCBLVVJMJiB1cmwpIGNvbnN0Cit7CisgICAgLy8gSWYgd2UndmUgZmFpbGVkIHRvIGluaXRpYWxp
emUgdGhlIHNlY3VyaXR5IG9yaWdpbiwgdGhpcyBjb3VsZCBiZSB0aGUKKyAgICAvLyBpbml0aWFs
IERvY3VtZW50IGluIGEgRnJhbWUgY3JlYXRlZCBieSB0aGUgZW1iZWRkZXIuCisgICAgaWYgKCFt
X2hhdmVJbml0aWFsaXplZFNlY3VyaXR5T3JpZ2luKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3RoZXIgPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KHVybCk7CisgICAgcmV0dXJuIHNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2VzcyhvdGhlci5nZXQo
KSk7Cit9CisKIFNhbmRib3hGbGFncyBTZWN1cml0eUNvbnRleHQ6OnBhcnNlU2FuZGJveFBvbGlj
eShjb25zdCBTdHJpbmcmIHBvbGljeSkKIHsKICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9o
dG1sNS90aGUtaWZyYW1lLWVsZW1lbnQuaHRtbCNhdHRyLWlmcmFtZS1zYW5kYm94CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vU2VjdXJpdHlDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL1NlY3VyaXR5Q29udGV4dC5oCShyZXZpc2lvbiA5OTcyOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCAr
MzMsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFNlY3VyaXR5T3JpZ2luOwog
Y2xhc3MgQ29udGVudFNlY3VyaXR5UG9saWN5OworY2xhc3MgS1VSTDsKK2NsYXNzIFNlY3VyaXR5
T3JpZ2luOwogCiBlbnVtIFNhbmRib3hGbGFnIHsKICAgICBTYW5kYm94Tm9uZSA9IDAsCkBAIC01
OSw2ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuZm9yY2VTYW5kYm94RmxhZ3MoU2FuZGJv
eEZsYWdzIG1hc2spIHsgbV9zYW5kYm94RmxhZ3MgfD0gbWFzazsgfQogICAgIGJvb2wgaXNTYW5k
Ym94ZWQoU2FuZGJveEZsYWdzIG1hc2spIGNvbnN0IHsgcmV0dXJuIG1fc2FuZGJveEZsYWdzICYg
bWFzazsgfQogCisgICAgYm9vbCBpc1NlY3VyZVRyYW5zaXRpb25Ubyhjb25zdCBLVVJMJikgY29u
c3Q7CisKICAgICBzdGF0aWMgU2FuZGJveEZsYWdzIHBhcnNlU2FuZGJveFBvbGljeShjb25zdCBT
dHJpbmcmIHBvbGljeSk7CiAKIHByb3RlY3RlZDoKQEAgLTcxLDcgKzc0LDExIEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIHNldFNlY3VyaXR5T3JpZ2luKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+
KTsKICAgICB2b2lkIHNldENvbnRlbnRTZWN1cml0eVBvbGljeShQYXNzUmVmUHRyPENvbnRlbnRT
ZWN1cml0eVBvbGljeT4pOwogCisgICAgdm9pZCBkaWRGYWlsVG9Jbml0aWFsaXplU2VjdXJpdHlP
cmlnaW4oKSB7IG1faGF2ZUluaXRpYWxpemVkU2VjdXJpdHlPcmlnaW4gPSBmYWxzZTsgfQorICAg
IGJvb2wgaGF2ZUluaXRpYWxpemVkU2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX2hh
dmVJbml0aWFsaXplZFNlY3VyaXR5T3JpZ2luOyB9CisKIHByaXZhdGU6CisgICAgYm9vbCBtX2hh
dmVJbml0aWFsaXplZFNlY3VyaXR5T3JpZ2luOwogICAgIFNhbmRib3hGbGFncyBtX3NhbmRib3hG
bGFnczsKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG1fc2VjdXJpdHlPcmlnaW47CiAgICAg
UmVmUHRyPENvbnRlbnRTZWN1cml0eVBvbGljeT4gbV9jb250ZW50U2VjdXJpdHlQb2xpY3k7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5jcHAJKHJldmlzaW9uIDk5
NzI4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6OmJlZ2luKGNv
bnN0IEtVUkwmIHUKIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIGNvbnN1bHQgdGhlIGNv
bnRlbnQgc2VjdXJpdHkgcG9saWN5IGhlcmUgYWJvdXQgYmxvY2tlZCBwbHVnLWlucz8KIAotICAg
IGJvb2wgcmVzZXRTY3JpcHRpbmcgPSAhKG1fZnJhbWUtPmxvYWRlcigpLT5zdGF0ZU1hY2hpbmUo
KS0+aXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSAmJiBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpLT5pc1NlY3VyZVRyYW5zaXRpb25Ubyh1cmwpKTsKKyAgICBi
b29sIHJlc2V0U2NyaXB0aW5nID0gIShtX2ZyYW1lLT5sb2FkZXIoKS0+c3RhdGVNYWNoaW5lKCkt
PmlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkgJiYgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+aXNTZWN1cmVUcmFuc2l0aW9uVG8odXJsKSk7CiAgICAgbV9mcmFtZS0+bG9hZGVyKCktPmNs
ZWFyKHJlc2V0U2NyaXB0aW5nLCByZXNldFNjcmlwdGluZyk7CiAgICAgY2xlYXIoKTsKICAgICBp
ZiAocmVzZXRTY3JpcHRpbmcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAJKHJldmlzaW9uIDk5NzI4KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk0LDcgKzM5NCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OnN0b3BMb2FkaW5nKFVubG9hZEV2ZW4KICAgICAgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCkg
JiYgIW1fZnJhbWUtPmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpIHsKICAgICAgICAgICAgIC8v
IERvbid0IHJlbW92ZSBldmVudCBsaXN0ZW5lcnMgZnJvbSBhIHRyYW5zaXRpb25hbCBlbXB0eSBk
b2N1bWVudCAoc2VlIGJ1ZyAyODcxNiBmb3IgbW9yZSBpbmZvcm1hdGlvbikuCiAgICAgICAgICAg
ICBib29sIGtlZXBFdmVudExpc3RlbmVycyA9IG1fc3RhdGVNYWNoaW5lLmlzRGlzcGxheWluZ0lu
aXRpYWxFbXB0eURvY3VtZW50KCkgJiYgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyCi0gICAg
ICAgICAgICAgICAgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+aXNT
ZWN1cmVUcmFuc2l0aW9uVG8obV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT51cmwoKSk7Cisg
ICAgICAgICAgICAgICAgJiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aXNTZWN1cmVUcmFuc2l0aW9u
VG8obV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT51cmwoKSk7CiAKICAgICAgICAgICAgIGlm
ICgha2VlcEV2ZW50TGlzdGVuZXJzKQogICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCShyZXZpc2lvbiA5OTcyOCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODc4LDcgKzg3OCw3IEBAIHZvaWQgRE9NV2luZG93Ojpw
b3N0TWVzc2FnZShQYXNzUmVmUHRyPFMKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHRhcmdl
dDsKICAgICBpZiAodGFyZ2V0T3JpZ2luICE9ICIqIikgewogICAgICAgICB0YXJnZXQgPSBTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh0YXJnZXRPcmlnaW4pOwotICAgICAgICBpZiAo
dGFyZ2V0LT5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKHRhcmdldC0+aXNVbmlxdWUoKSkgewog
ICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAkocmV2aXNpb24g
OTk3MjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsODEgKzQyLDEwMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25z
dCBpbnQgTWF4QWxsb3dlZFBvcnQgPSA2NTUzNTsKK2NvbnN0IGludCBJbnZhbGlkUG9ydCA9IDA7
CiAKLXN0YXRpYyBib29sIHNjaGVtZVJlcXVpcmVzQXV0aG9yaXR5KGNvbnN0IFN0cmluZyYgc2No
ZW1lKQorc3RhdGljIGJvb2wgc2NoZW1lUmVxdWlyZXNBdXRob3JpdHkoY29uc3QgS1VSTCYgdXJs
KQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoVVJMU2NoZW1lc01hcCwgc2NoZW1lcywgKCkp
OworICAgIHJldHVybiB1cmwucHJvdG9jb2xJcygiaHR0cCIpIHx8IHVybC5wcm90b2NvbElzKCJo
dHRwcyIpIHx8IHVybC5wcm90b2NvbElzKCJmdHAiKTsKK30KKworc3RhdGljIGJvb2wgc2hvdWxk
VXNlSW5uZXJVUkwoY29uc3QgS1VSTCYgdXJsKQoreworICAgIC8vIEZJWE1FOiBVc2UgdGhlIGlu
bmVyIFVSTCBldmVuIHdoZW4gQkxPQiBhbmQgRklMRV9TWVNURU0gYXJlIGRpc2FibGVkLgorI2lm
IEVOQUJMRShCTE9CKQorICAgIGlmICh1cmwucHJvdG9jb2xJcygiYmxvYiIpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyNlbmRpZgorI2lmIEVOQUJMRShGSUxFX1NZU1RFTSkKKyAgICBpZiAodXJs
LnByb3RvY29sSXMoImZpbGVzeXN0ZW0iKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBLVVJMIGV4dHJhY3RJbm5lclVSTChjb25z
dCBLVVJMJiB1cmwpCit7CisgICAgcmV0dXJuIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBkZWNvZGVV
UkxFc2NhcGVTZXF1ZW5jZXModXJsLnBhdGgoKSkpOworfQorCitzdGF0aWMgYm9vbCBpc0RpcmVj
dG9yeShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJuIHBhdGguZW5kc1dpdGgoIi8i
KTsKK30KKworc3RhdGljIGJvb2wgc2hvdWxkVHJlYXRBc1VuaXF1ZU9yaWdpbihjb25zdCBLVVJM
JiB1cmwpCit7CisgICAgaWYgKCF1cmwuaXNWYWxpZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRvIHVud3JhcCB0aGUgVVJMIGZ1cnRoZXI/Cisg
ICAgS1VSTCBlZmZlY3RpdmVVUkwgPSBzaG91bGRVc2VJbm5lclVSTCh1cmwpID8gZXh0cmFjdElu
bmVyVVJMKHVybCkgOiB1cmw7CisKKyAgICAvLyBGSVhNRTogQ2hlY2sgd2hldGhlciBlZmZlY3Rp
dmVVUkwgaXMgdmFsaWQuCisKKyAgICAvLyBGb3IgZWRnZSBjYXNlIFVSTHMgdGhhdCB3ZXJlIHBy
b2JhYmx5IG1pc3BhcnNlZCwgbWFrZSBzdXJlIHRoYXQgdGhlIG9yaWdpbiBpcyB1bmlxdWUuCisg
ICAgaWYgKHNjaGVtZVJlcXVpcmVzQXV0aG9yaXR5KGVmZmVjdGl2ZVVSTCkgJiYgZWZmZWN0aXZl
VVJMLmhvc3QoKS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgU3RyaW5n
IHByb3RvY29sID0gZWZmZWN0aXZlVVJMLnByb3RvY29sKCkubG93ZXIoKTsKKworICAgIGlmIChT
Y2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc05vQWNjZXNzKHByb3RvY29sKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoc2NoZW1lcy5pc0VtcHR5KCkpIHsKLSAg
ICAgICAgc2NoZW1lcy5hZGQoImh0dHAiKTsKLSAgICAgICAgc2NoZW1lcy5hZGQoImh0dHBzIik7
Ci0gICAgICAgIHNjaGVtZXMuYWRkKCJmdHAiKTsKKyAgICAvLyBXZSB1c2UgdW5pcXVlIG9yaWdp
bnMgZm9yIGRpcmVjdG9yeSBsaXN0aW5ncyB0byBtYWtlIGl0IGhhcmRlciB0byBjcmF3bCBhIGxv
Y2FsIGZpbGVzeXN0ZW0uCisgICAgaWYgKFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNj
aGVtZUFzTG9jYWwocHJvdG9jb2wpCisgICAgICAgICYmICFzaG91bGRVc2VJbm5lclVSTCh1cmwp
IC8vIE5vdGUgdGhlIHVzZSBvZiB1cmwgcmF0aGVyIHRoYW4gZWZmZWN0aXZlVVJMLgorICAgICAg
ICAmJiAoIWVmZmVjdGl2ZVVSTC5oYXNQYXRoKCkgfHwgaXNEaXJlY3RvcnkoZWZmZWN0aXZlVVJM
LnBhdGgoKSkpKSB7CisgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYmUgdXNpbmcgc2hvdWxk
VXNlSW5uZXJVUkwgaGVyZT8KKyAgICAgICAgLy8gV2Ugb3JpZ2luYWxseSBkaWQgdGhhdCBjaGVj
ayB0byBhdm9pZCB0cmVhdGluZyBibG9iIGFuZCBmaWxlc3lzdGVtCisgICAgICAgIC8vIHVybHMg
YXMgdW5pcXVlIHdoZW4gaXQgaXMgY3JlYXRlZCBmcm9tIGxvY2FsIGZpbGUgdXJscy4KKyAgICAg
ICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgcmV0dXJuIHNjaGVtZXMuY29udGFpbnMoc2No
ZW1lKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVNlY3VyaXR5T3JpZ2luOjpTZWN1cml0eU9y
aWdpbihjb25zdCBLVVJMJiB1cmwsIGJvb2wgZm9yY2VVbmlxdWUpCitTZWN1cml0eU9yaWdpbjo6
U2VjdXJpdHlPcmlnaW4oY29uc3QgS1VSTCYgdXJsKQogICAgIDogbV9wcm90b2NvbCh1cmwucHJv
dG9jb2woKS5pc051bGwoKSA/ICIiIDogdXJsLnByb3RvY29sKCkubG93ZXIoKSkKICAgICAsIG1f
aG9zdCh1cmwuaG9zdCgpLmlzTnVsbCgpID8gIiIgOiB1cmwuaG9zdCgpLmxvd2VyKCkpCiAgICAg
LCBtX3BvcnQodXJsLnBvcnQoKSkKLSAgICAsIG1faXNVbmlxdWUoZm9yY2VVbmlxdWUgfHwgU2No
ZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNOb0FjY2VzcyhtX3Byb3RvY29sKSkK
KyAgICAsIG1faXNVbmlxdWUoZmFsc2UpCiAgICAgLCBtX3VuaXZlcnNhbEFjY2VzcyhmYWxzZSkK
ICAgICAsIG1fZG9tYWluV2FzU2V0SW5ET00oZmFsc2UpCiAgICAgLCBtX2VuZm9yY2VGaWxlUGF0
aFNlcGFyYXRpb24oZmFsc2UpCiB7Ci0gICAgLy8gVGhlc2UgcHJvdG9jb2xzIGRvIG5vdCBjcmVh
dGUgc2VjdXJpdHkgb3JpZ2luczsgdGhlIG93bmVyIGZyYW1lIHByb3ZpZGVzIHRoZSBvcmlnaW4K
LSAgICBpZiAobV9wcm90b2NvbCA9PSAiYWJvdXQiIHx8IG1fcHJvdG9jb2wgPT0gImphdmFzY3Jp
cHQiKQotICAgICAgICBtX3Byb3RvY29sID0gIiI7Ci0KLSNpZiBFTkFCTEUoQkxPQikgfHwgRU5B
QkxFKEZJTEVfU1lTVEVNKQotICAgIGJvb2wgaXNCbG9iT3JGaWxlU3lzdGVtUHJvdG9jb2wgPSBm
YWxzZTsKLSNpZiBFTkFCTEUoQkxPQikKLSAgICBpZiAobV9wcm90b2NvbCA9PSBCbG9iVVJMOjpi
bG9iUHJvdG9jb2woKSkKLSAgICAgICAgaXNCbG9iT3JGaWxlU3lzdGVtUHJvdG9jb2wgPSB0cnVl
OwotI2VuZGlmCi0jaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQotICAgIGlmIChtX3Byb3RvY29sID09
ICJmaWxlc3lzdGVtIikKLSAgICAgICAgaXNCbG9iT3JGaWxlU3lzdGVtUHJvdG9jb2wgPSB0cnVl
OwotI2VuZGlmCi0gICAgaWYgKGlzQmxvYk9yRmlsZVN5c3RlbVByb3RvY29sKSB7Ci0gICAgICAg
IEtVUkwgb3JpZ2luVVJMKFBhcnNlZFVSTFN0cmluZywgZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2Vz
KHVybC5wYXRoKCkpKTsKLSAgICAgICAgaWYgKG9yaWdpblVSTC5pc1ZhbGlkKCkpIHsKLSAgICAg
ICAgICAgIG1fcHJvdG9jb2wgPSBvcmlnaW5VUkwucHJvdG9jb2woKS5sb3dlcigpOwotICAgICAg
ICAgICAgbV9ob3N0ID0gb3JpZ2luVVJMLmhvc3QoKS5sb3dlcigpOwotICAgICAgICAgICAgbV9w
b3J0ID0gb3JpZ2luVVJMLnBvcnQoKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX2lz
VW5pcXVlID0gdHJ1ZTsKLSAgICB9Ci0jZW5kaWYKLQotICAgIC8vIEZvciBlZGdlIGNhc2UgVVJM
cyB0aGF0IHdlcmUgcHJvYmFibHkgbWlzcGFyc2VkLCBtYWtlIHN1cmUgdGhhdCB0aGUgb3JpZ2lu
IGlzIHVuaXF1ZS4KLSAgICBpZiAoc2NoZW1lUmVxdWlyZXNBdXRob3JpdHkobV9wcm90b2NvbCkg
JiYgbV9ob3N0LmlzRW1wdHkoKSkKLSAgICAgICAgbV9pc1VuaXF1ZSA9IHRydWU7Ci0gICAgaWYg
KG1fcHJvdG9jb2wuaXNFbXB0eSgpKQotICAgICAgICBtX2lzVW5pcXVlID0gdHJ1ZTsKKyAgICBB
U1NFUlQodXJsLmlzVmFsaWQoKSk7CiAKICAgICAvLyBkb2N1bWVudC5kb21haW4gc3RhcnRzIGFz
IG1faG9zdCwgYnV0IGNhbiBiZSBzZXQgYnkgdGhlIERPTS4KICAgICBtX2RvbWFpbiA9IG1faG9z
dDsKIAorICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wobV9wb3J0LCBtX3Byb3RvY29s
KSkKKyAgICAgICAgbV9wb3J0ID0gSW52YWxpZFBvcnQ7CisKICAgICAvLyBCeSBkZWZhdWx0LCBv
bmx5IGxvY2FsIFNlY3VyaXR5T3JpZ2lucyBjYW4gbG9hZCBsb2NhbCByZXNvdXJjZXMuCiAgICAg
bV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXMgPSBpc0xvY2FsKCk7Ci0gICAgaWYgKG1fY2FuTG9hZExv
Y2FsUmVzb3VyY2VzKSB7Ci0gICAgICAgIC8vIERpcmVjdG9yaWVzIHNob3VsZCBuZXZlciBiZSBy
ZWFkYWJsZS4KLSAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGRvIG5vdCBkbyB0aGlzIGNoZWNrIGZv
ciBibG9iIG9yIGZpbGVzeXN0ZW0gdXJsIGJlY2F1c2UgaXRzIG9yaWdpbiBpcyBmaWxlOi8vLyB3
aGVuIGl0IGlzIGNyZWF0ZWQgZnJvbSBsb2NhbCBmaWxlIHVybHMuCi0jaWYgRU5BQkxFKEJMT0Ip
IHx8IEVOQUJMRShGSUxFX1NZU1RFTSkKLSAgICAgICAgYm9vbCBkb0RpcmVjdG9yeUNoZWNrID0g
IWlzQmxvYk9yRmlsZVN5c3RlbVByb3RvY29sOwotI2Vsc2UKLSAgICAgICAgYm9vbCBkb0RpcmVj
dG9yeUNoZWNrID0gdHJ1ZTsKLSNlbmRpZgotICAgICAgICBpZiAoZG9EaXJlY3RvcnlDaGVjayAm
JiAoIXVybC5oYXNQYXRoKCkgfHwgdXJsLnBhdGgoKS5lbmRzV2l0aCgiLyIpKSkKLSAgICAgICAg
ICAgIG1faXNVbmlxdWUgPSB0cnVlOwotICAgICAgICAvLyBTdG9yZSB0aGUgcGF0aCBpbiBjYXNl
IHdlIGFyZSBkb2luZyBwZXItZmlsZSBvcmlnaW4gY2hlY2tpbmcuCi0gICAgICAgIG1fZmlsZVBh
dGggPSB1cmwucGF0aCgpOwotICAgIH0KIAotICAgIGlmIChpc0RlZmF1bHRQb3J0Rm9yUHJvdG9j
b2wobV9wb3J0LCBtX3Byb3RvY29sKSkKLSAgICAgICAgbV9wb3J0ID0gMDsKKyAgICBpZiAobV9j
YW5Mb2FkTG9jYWxSZXNvdXJjZXMpCisgICAgICAgIG1fZmlsZVBhdGggPSB1cmwucGF0aCgpOyAv
LyBJbiBjYXNlIGVuZm9yY2VGaWxlUGF0aFNlcGFyYXRpb24oKSBpcyBjYWxsZWQuCit9CisKK1Nl
Y3VyaXR5T3JpZ2luOjpTZWN1cml0eU9yaWdpbihVbmlxdWVPcmlnaW5UYWcpCisgICAgOiBtX3Bv
cnQoSW52YWxpZFBvcnQpCisgICAgLCBtX2lzVW5pcXVlKHRydWUpCisgICAgLCBtX3VuaXZlcnNh
bEFjY2VzcyhmYWxzZSkKKyAgICAsIG1fZG9tYWluV2FzU2V0SW5ET00oZmFsc2UpCisgICAgLCBt
X2NhbkxvYWRMb2NhbFJlc291cmNlcyhmYWxzZSkKKyAgICAsIG1fZW5mb3JjZUZpbGVQYXRoU2Vw
YXJhdGlvbihmYWxzZSkKK3sKIH0KIAogU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2luKGNv
bnN0IFNlY3VyaXR5T3JpZ2luKiBvdGhlcikKQEAgLTEzNCwxNyArMTU0LDE4IEBAIFNlY3VyaXR5
T3JpZ2luOjpTZWN1cml0eU9yaWdpbihjb25zdCBTZWMKIHsKIH0KIAotYm9vbCBTZWN1cml0eU9y
aWdpbjo6aXNFbXB0eSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKCFtX3Byb3RvY29sLmlzRW1wdHko
KSB8fCBtX2lzVW5pcXVlKTsKLSAgICByZXR1cm4gbV9wcm90b2NvbC5pc0VtcHR5KCk7Ci19Ci0K
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29uc3Qg
S1VSTCYgdXJsLCBib29sIGZvcmNlVW5pcXVlKQogewotICAgIGlmICghdXJsLmlzVmFsaWQoKSkK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWN1cml0eU9yaWdpbihibGFua1VSTCgpLCBm
b3JjZVVuaXF1ZSkpOwotICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VjdXJpdHlPcmlnaW4odXJs
LCBmb3JjZVVuaXF1ZSkpOworICAgIC8vIEZJWE1FOiBSZW1vdmUgZm9yY2VVbmlxdWUgcGFyYW1l
dGVyLgorICAgIEFTU0VSVF9VTlVTRUQoZm9yY2VVbmlxdWUsICFmb3JjZVVuaXF1ZSk7CisKKyAg
ICBpZiAoc2hvdWxkVHJlYXRBc1VuaXF1ZU9yaWdpbih1cmwpKQorICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFNlY3VyaXR5T3JpZ2luKFVuaXF1ZU9yaWdpbikpOworCisgICAgaWYgKHNob3Vs
ZFVzZUlubmVyVVJMKHVybCkpCisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU2VjdXJpdHlP
cmlnaW4oZXh0cmFjdElubmVyVVJMKHVybCkpKTsKKworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U2VjdXJpdHlPcmlnaW4odXJsKSk7CiB9CiAKIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGVVbmlxdWUoKQpAQCAtMzQ1LDE2ICszNjYsNiBAQCBib29sIFNl
Y3VyaXR5T3JpZ2luOjppc0xvY2FsKCkgY29uc3QKICAgICByZXR1cm4gU2NoZW1lUmVnaXN0cnk6
OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChtX3Byb3RvY29sKTsKIH0KIAotYm9vbCBTZWN1
cml0eU9yaWdpbjo6aXNTZWN1cmVUcmFuc2l0aW9uVG8oY29uc3QgS1VSTCYgdXJsKSBjb25zdAot
ewotICAgIC8vIFRoaXMgb3JpZ2luIHJlcHJlc2VudHMgYSBuZXcgd2luZG93IGNyZWF0ZWQgYnkg
dGhlIGFwcGxpY2F0aW9uLgotICAgIGlmIChpc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVl
OwotCi0gICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvdGhlciA9IFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUodXJsKTsKLSAgICByZXR1cm4gY2FuQWNjZXNzKG90aGVyLmdldCgpKTsKLX0KLQogU3Ry
aW5nIFNlY3VyaXR5T3JpZ2luOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKGlzVW5pcXVl
KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCShyZXZpc2lvbiA5OTcy
OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAkod29ya2luZyBjb3B5
KQpAQCAtMTIxLDggKzEyMSw2IEBAIHB1YmxpYzoKICAgICAvLyBvcmlnaW5zLgogICAgIGJvb2wg
Y2FuQWNjZXNzU2Vzc2lvblN0b3JhZ2UoKSBjb25zdCB7IHJldHVybiAhaXNVbmlxdWUoKTsgfQog
Ci0gICAgYm9vbCBpc1NlY3VyZVRyYW5zaXRpb25Ubyhjb25zdCBLVVJMJikgY29uc3Q7Ci0KICAg
ICAvLyBUaGUgbG9jYWwgU2VjdXJpdHlPcmlnaW4gaXMgdGhlIG1vc3QgcHJpdmlsZWdlZCBTZWN1
cml0eU9yaWdpbi4KICAgICAvLyBUaGUgbG9jYWwgU2VjdXJpdHlPcmlnaW4gY2FuIHNjcmlwdCBh
bnkgZG9jdW1lbnQsIG5hdmlnYXRlIHRvIGxvY2FsCiAgICAgLy8gcmVzb3VyY2VzLCBhbmQgY2Fu
IHNldCBhcmJpdHJhcnkgaGVhZGVycyBvbiBYTUxIdHRwUmVxdWVzdHMuCkBAIC0xMzYsMTMgKzEz
NCw2IEBAIHB1YmxpYzoKICAgICAvLyBhZGRpdGlvbiwgdGhlIFNhbmRib3hPcmlnaW4gZmxhZyBp
cyBpbmhlcml0ZWQgYnkgaWZyYW1lcy4KICAgICBib29sIGlzVW5pcXVlKCkgY29uc3QgeyByZXR1
cm4gbV9pc1VuaXF1ZTsgfQogCi0gICAgLy8gVGhlIGVtcHR5IFNlY3VyaXR5T3JpZ2luIGlzIGEg
dW5pcXVlIHNlY3VyaXR5IG9yaWduIChpbiB0aGUgc2Vuc2Ugb2YKLSAgICAvLyBpc1VuaXF1ZSBh
Ym92ZSkgdGhhdCB3YXMgY3JlYXRlZCBmb3IgYSAiYmxhbmsiIGRvY3VtZW50LCBzdWNoIGFib3V0
Ci0gICAgLy8gYWJvdXQ6YmxhbmsuIEVtcHR5IG9yaWdpbnMgZGlmZmVyIGZyb20gdW5pcXVlIG9y
aWdpbnMgaW4gdGhhdCB0aGV5IGNhbgotICAgIC8vIHNvbWV0aW1lcyBiZSByZXBsYWNlZCBieSBu
b24tZW1wdHkgb3JpZ2lucywgZm9yIGV4YW1wbGUgd2hlbiBhbgotICAgIC8vIGFib3V0OmJsYW5r
IGlmcmFtZSBpbmhlcml0cyBpdHMgc2VjdXJpdHkgb3JpZ2luIGZyb20gaXRzIHBhcmVudCBmcmFt
ZS4KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdDsKLQogICAgIC8vIE1hcmtzIGEgZmlsZTovLyBv
cmlnaW4gYXMgYmVpbmcgaW4gYSBkb21haW4gZGVmaW5lZCBieSBpdHMgcGF0aC4KICAgICB2b2lk
IGVuZm9yY2VGaWxlUGF0aFNlcGFyYXRpb24oKTsKIApAQCAtMTc0LDcgKzE2NSwxMyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBpc1NhbWVTY2hlbWVIb3N0UG9ydChjb25zdCBTZWN1cml0eU9yaWdpbiop
IGNvbnN0OwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFNlY3VyaXR5T3JpZ2luKGNvbnN0IEtV
UkwmLCBib29sIGZvcmNlVW5pcXVlKTsKKyAgICBlbnVtIFVuaXF1ZU9yaWdpblRhZyB7CisgICAg
ICAgIFVuaXF1ZU9yaWdpbiwKKyAgICB9OworCisgICAgZXhwbGljaXQgU2VjdXJpdHlPcmlnaW4o
Y29uc3QgS1VSTCYpOworICAgIGV4cGxpY2l0IFNlY3VyaXR5T3JpZ2luKFVuaXF1ZU9yaWdpblRh
Zyk7CisKICAgICBleHBsaWNpdCBTZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdpbiop
OwogCiAgICAgLy8gRklYTUU6IFJlbmFtZSB0aGlzIGZ1bmN0aW9uIHRvIHNvbWV0aGluZyBtb3Jl
IHNlbWFudGljLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAJKHJl
dmlzaW9uIDk5NzI4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTk5LDggKzk5LDggQEAgYm9vbCBTZWN1cml0eVBvbGljeTo6aXNB
Y2Nlc3NUb1VSTFdoaXRlTAogdm9pZCBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uRG9tYWlu
LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQogewogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7Ci0gICAgQVNTRVJUKCFzb3VyY2VPcmlnaW4uaXNFbXB0eSgpKTsKLSAgICBpZiAo
c291cmNlT3JpZ2luLmlzRW1wdHkoKSkKKyAgICBBU1NFUlQoIXNvdXJjZU9yaWdpbi5pc1VuaXF1
ZSgpKTsKKyAgICBpZiAoc291cmNlT3JpZ2luLmlzVW5pcXVlKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIFN0cmluZyBzb3VyY2VTdHJpbmcgPSBzb3VyY2VPcmlnaW4udG9TdHJpbmcoKTsKQEAg
LTExNSw4ICsxMTUsOCBAQCB2b2lkIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0
CiB2b2lkIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShj
b25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Eb21haW4sIGJvb2wgYWxsb3dE
ZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAg
ICBBU1NFUlQoIXNvdXJjZU9yaWdpbi5pc0VtcHR5KCkpOwotICAgIGlmIChzb3VyY2VPcmlnaW4u
aXNFbXB0eSgpKQorICAgIEFTU0VSVCghc291cmNlT3JpZ2luLmlzVW5pcXVlKCkpOworICAgIGlm
IChzb3VyY2VPcmlnaW4uaXNVbmlxdWUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5n
IHNvdXJjZVN0cmluZyA9IHNvdXJjZU9yaWdpbi50b1N0cmluZygpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNwcAkocmV2aXNpb24gOTk3MjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY4LDEwICs2OCwxMyBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc1dpdGhVbmlx
dWVPCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChVUkxTY2hlbWVzTWFwLCBzY2hlbWVzV2l0
aFVuaXF1ZU9yaWdpbnMsICgpKTsKIAotICAgIC8vIFRoaXMgaXMgYSB3aWxsZnVsIHZpb2xhdGlv
biBvZiBIVE1MNS4KLSAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExODg1Ci0gICAgaWYgKHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucy5pc0VtcHR5KCkp
CisgICAgaWYgKHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
c2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zLmFkZCgiYWJvdXQiKTsKKyAgICAgICAgc2NoZW1lc1dp
dGhVbmlxdWVPcmlnaW5zLmFkZCgiamF2YXNjcmlwdCIpOworICAgICAgICAvLyBUaGlzIGlzIGEg
d2lsbGZ1bCB2aW9sYXRpb24gb2YgSFRNTDUuCisgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE4ODUKICAgICAgICAgc2NoZW1lc1dpdGhVbmlx
dWVPcmlnaW5zLmFkZCgiZGF0YSIpOworICAgIH0KIAogICAgIHJldHVybiBzY2hlbWVzV2l0aFVu
aXF1ZU9yaWdpbnM7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24g
OTk4MTIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE2IEBACisyMDExLTExLTA5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5pcXVlIFNlY3VyaXR5T3JpZ2lucyBzaG91bGRuJ3QgcmVtZW1i
ZXIgdGhlaXIgb2xkIHNjaGVtZXMgYW5kIGhvc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTc0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjb25jZXB0IG9mIGFuIGVtcHR5IG9yaWdpbiBubyBs
b25nZXIgZXhpc3RzLiAgSW4gYSBmb2xsb3ctdXAgcGF0Y2gsCisgICAgICAgIEknbGwgcmVuYW1l
IHRoaXMgQVBJIHRvIGlzVW5pcXVlLgorCisgICAgICAgICogc3JjL1dlYlNlY3VyaXR5T3JpZ2lu
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VjdXJpdHlPcmlnaW46OmlzRW1wdHkpOgorCiAy
MDExLTExLTA5ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgogCiAgICAg
ICAgIFtjaHJvbWl1bV0gTWVkaWFTdHJlYW0gQVBJOiBBZGQgV2ViTWVkaWFTdHJlYW1SZWdpc3Ry
eQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VjdXJpdHlPcmlnaW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlY3VyaXR5T3Jp
Z2luLmNwcAkocmV2aXNpb24gOTk3MjgpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZWN1cml0eU9yaWdpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDEwICs5MCwxMSBAQCB1
bnNpZ25lZCBzaG9ydCBXZWJTZWN1cml0eU9yaWdpbjo6cG9ydCgpCiAgICAgcmV0dXJuIG1fcHJp
dmF0ZS0+cG9ydCgpOwogfQogCisvLyBGSVhNRTogUmVuYW1lZCB0aGlzIEFQSSB0byBpc1VuaXF1
ZSgpLgogYm9vbCBXZWJTZWN1cml0eU9yaWdpbjo6aXNFbXB0eSgpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKG1fcHJpdmF0ZSk7Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+aXNFbXB0eSgpOworICAgIHJl
dHVybiBtX3ByaXZhdGUtPmlzVW5pcXVlKCk7CiB9CiAKIGJvb2wgV2ViU2VjdXJpdHlPcmlnaW46
OmNhbkFjY2Vzcyhjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3RoZXIpIGNvbnN0CkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA5OTgxMikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDMwIEBACisyMDExLTExLTA5ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5pcXVlIFNlY3VyaXR5T3JpZ2lucyBzaG91bGRuJ3QgcmVtZW1i
ZXIgdGhlaXIgb2xkIHNjaGVtZXMgYW5kIGhvc3RzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTc0NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL2FzeW5jLW9wZXJhdGlvbnMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9ub3QtZW5vdWdoLWFyZ3Vt
ZW50cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9maWxlc3lzdGVtL3JlYWQtZGlyZWN0
b3J5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXBlcnNp
c3RlbnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcmVh
ZG9ubHktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZmlsZXN5c3RlbS9zaW1wbGUtdGVt
cG9yYXJ5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgICAgIC0gVXBkYXRlIHRlc3QgcmVzdWx0cyB0
byBzaG93IHRoYXQgd2Ugbm8gbG9uZ2VyIGxlYWsgdGhlIHNjaGVtZSBpbgorICAgICAgICAgICAg
ICBzdG9yYWdlIGlkZW50aWZpZXJzLgorICAgICAgICAqIGZhc3QvZnJhbWVzL3NhbmRib3hlZC1p
ZnJhbWUtYXR0cmlidXRlLXBhcnNpbmcuaHRtbDoKKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9zYW5k
Ym94ZWQtaWZyYW1lLWZvcm1zLWR5bmFtaWMuaHRtbDoKKyAgICAgICAgKiBmYXN0L2ZyYW1lcy9z
YW5kYm94ZWQtaWZyYW1lLWZvcm1zLmh0bWw6CisgICAgICAgICAgICAtIFByZXZpb3VzbHkgc2Fu
ZGJveGVkIGxvY2FsIGlmcmFtZXMgc3RpbGwgZ290IHVuaXZlcnNhbCBhY2Nlc3MKKyAgICAgICAg
ICAgICAgd2hlbiB3ZSdyZSBydW5uaW5nIHdpdGggdW5pdmVyc2FsIGFjY2VzcyBmb3IgZmlsZSBV
UkxzISAgTm93IHRoYXQKKyAgICAgICAgICAgICAgdGhleSBjb3JyZWN0bHkgZ2V0IHVuaXF1ZSBv
cmlnaW5zLCB3ZSBuZWVkIHRvIHVwZGF0ZSB0aGVzZSB0ZXN0cworICAgICAgICAgICAgICB0byBh
bGxvdy1zYW1lLW9yaWdpbiBhY2Nlc3MgaW4gb3JkZXIgZm9yIHRoZW0gdG8gZnVuY3Rpb24KKyAg
ICAgICAgICAgICAgcHJvcGVybHkuCisgICAgICAgICogZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlm
cmFtZS1zdG9yYWdlLmh0bWw6CisgICAgICAgICAgICAtIElubGluZSBzY3JpcHQgYmVjYXVzZSB0
aGUgc2FuZGJveCBpZnJhbWUgaXNuJ3QgYWxsb3dlZCB0byBsb2FkCisgICAgICAgICAgICAgIGxv
Y2FsIHJlc291cmNlcy4KKwogMjAxMS0xMS0wOSAgQW5kcmV3IFNjaGVya3VzICA8c2NoZXJrdXNA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIE1vcmUgbWVkaWEgcmViYXNlbGluZXMgZHVlIHRvIHI5
ODU5Ni4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9hc3luYy1vcGVyYXRpb25z
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0v
YXN5bmMtb3BlcmF0aW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDk5NzI4KQorKysgTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL2FzeW5jLW9wZXJhdGlvbnMtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBCiAKIAogcmVxdWVzdGVkIEZpbGVTeXN0ZW0uCi1Hb3QgRmlsZVN5c3RlbTpmaWxl
X18wOlRlbXBvcmFyeQorR290IEZpbGVTeXN0ZW06X18wOlRlbXBvcmFyeQogU3RhcnRpbmcgYXN5
bmMgdGVzdCBzdGFnZSAxLgogU3RhcnRpbmcgYXN5bmMgdGVzdCBzdGFnZSAyLgogVmVyaWZ5aW5n
IHRoZSBGaWxlU3lzdGVtIHN0YXR1cy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3Rl
bS9ub3QtZW5vdWdoLWFyZ3VtZW50cy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL25vdC1lbm91Z2gtYXJndW1lbnRzLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gOTk3MjgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vbm90LWVub3Vn
aC1hcmd1bWVudHMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQCBU
aGlzIHRlc3QgdHJpZXMgY2FsbGluZyB2YXJpb3VzIGZpbGVzeXN0CiBPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCiAKIAotU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFBlcnNpc3RlbnQgRmlsZVN5c3Rl
bTpmaWxlX18wOlRlbXBvcmFyeQorU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFBlcnNpc3RlbnQgRmls
ZVN5c3RlbTpfXzA6VGVtcG9yYXJ5CiBQQVNTIGZpbGVTeXN0ZW0ucm9vdC5tb3ZlVG8oKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KIFBBU1MgZmlsZVN5
c3RlbS5yb290LmNvcHlUbygpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IE5vdCBlbm91Z2gg
YXJndW1lbnRzLgogUEFTUyByZWFkZXIucmVhZEVudHJpZXMoKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBOb3QgZW5vdWdoIGFyZ3VtZW50cy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmls
ZXN5c3RlbS9yZWFkLWRpcmVjdG9yeS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9maWxlc3lzdGVtL3JlYWQtZGlyZWN0b3J5LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gOTk3MjgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vcmVhZC1kaXJlY3Rvcnkt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQCBEaXJlY3RvcnlSZWFk
ZXIucmVhZEVudHJpZXMoKSB0ZXN0LgogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVN1
Y2Nlc3NmdWxseSBvYnRhaW5lZCBQZXJzaXN0ZW50IEZpbGVTeXN0ZW06ZmlsZV9fMDpUZW1wb3Jh
cnkKK1N1Y2Nlc3NmdWxseSBvYnRhaW5lZCBQZXJzaXN0ZW50IEZpbGVTeXN0ZW06X18wOlRlbXBv
cmFyeQogUEFTUyByZWFkRW50cmllc0NvdW50IGlzIGVudHJpZXNDYWxsYmFja0NvdW50CiBQQVNT
IHJlc3VsdEVudHJpZXMubGVuZ3RoIGlzIHRlc3RFbnRyaWVzQ291bnQKIEVudHJ5Oi9hIGlzRGly
ZWN0b3J5OnRydWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1wbGUtcGVy
c2lzdGVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9maWxl
c3lzdGVtL3NpbXBsZS1wZXJzaXN0ZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTk3MjgpCisr
KyBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXBlcnNpc3RlbnQtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNyBAQCByZXF1ZXN0RmlsZVN5c3RlbSBQRVJT
SVNURU5UIHRlc3QuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotU3VjY2Vzc2Z1bGx5
IG9idGFpbmVkIFBFUlNJU1RFTlQgRmlsZVN5c3RlbTpmaWxlX18wOlBlcnNpc3RlbnQKK1N1Y2Nl
c3NmdWxseSBvYnRhaW5lZCBQRVJTSVNURU5UIEZpbGVTeXN0ZW06X18wOlBlcnNpc3RlbnQKIFBB
U1MgZmlsZVN5c3RlbS5uYW1lLmxlbmd0aCA+IDAgaXMgdHJ1ZQogUEFTUyBmaWxlU3lzdGVtLnJv
b3QuZnVsbFBhdGggaXMgIi8iCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXJlYWRvbmx5LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXJlYWRv
bmx5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTk3MjgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Zp
bGVzeXN0ZW0vc2ltcGxlLXJlYWRvbmx5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
Niw3ICs2LDcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQQogd2Vi
a2l0UmVxdWVzdEZpbGVTeXN0ZW0oVEVNUE9SQVJZLCAxMDAsIHN1Y2Nlc3NDYWxsYmFjaywgZXJy
b3JDYWxsYmFjaykKIHRyeWluZyB0byBzZXQgcmVhZG9ubHkgcHJvcGVydHkgZmlsZVN5c3RlbS5u
YW1lCiBmaWxlU3lzdGVtLm5hbWUgPSAnYmFyJwotUEFTUyBmaWxlU3lzdGVtLm5hbWUgaXMgc3Rp
bGwgZmlsZV9fMDpUZW1wb3JhcnkKK1BBU1MgZmlsZVN5c3RlbS5uYW1lIGlzIHN0aWxsIF9fMDpU
ZW1wb3JhcnkKIHJvb3QgPSBmaWxlU3lzdGVtLnJvb3QKIHJvb3QuZ2V0RmlsZSgnZm9vJywge2Ny
ZWF0ZTp0cnVlfSwgZ2V0RmlsZUNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKQogdHJ5aW5nIHRvIHNl
dCByZWFkb25seSBwcm9wZXJ0eSBmaWxlRW50cnkuaXNGaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2ZpbGVzeXN0ZW0vc2ltcGxlLXRlbXBvcmFyeS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9maWxlc3lzdGVtL3NpbXBsZS10ZW1wb3JhcnktZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA5OTcyOCkKKysrIExheW91dFRlc3RzL2Zhc3QvZmlsZXN5c3RlbS9zaW1w
bGUtdGVtcG9yYXJ5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMyw3ICszLDcgQEAg
cmVxdWVzdEZpbGVTeXN0ZW0gVEVNUE9SQVJZIHRlc3QuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCiAKIAotU3VjY2Vzc2Z1bGx5IG9idGFpbmVkIFRFTVBPUkFSWSBGaWxlU3lzdGVtOmZpbGVf
XzA6VGVtcG9yYXJ5CitTdWNjZXNzZnVsbHkgb2J0YWluZWQgVEVNUE9SQVJZIEZpbGVTeXN0ZW06
X18wOlRlbXBvcmFyeQogUEFTUyBmaWxlU3lzdGVtLm5hbWUubGVuZ3RoID4gMCBpcyB0cnVlCiBQ
QVNTIGZpbGVTeXN0ZW0ucm9vdC5mdWxsUGF0aCBpcyAiLyIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFy
c2VkIGlzIHRydWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJh
bWUtYXR0cmlidXRlLXBhcnNpbmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLmh0bWwJKHJldmlzaW9u
IDk5NzI4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRy
aWJ1dGUtcGFyc2luZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1Niw3IEBAIHdpbmRv
dy5vbmxvYWQgPSBmdW5jdGlvbigpCiAgICAgPCEtLSBpZnJhbWVzIHdoZXJlIHNjcmlwdCBleGVj
dXRpb24gaXMgYWxsb3dlZCwgYnV0IG9yaWdpbiBpcyBub3Qgc2hhcmVkIC0tPgogCiAgICAgPCEt
LSBwbGFpbiwgcHJvcGVyIGF0dHJpYnV0ZSB2YWx1ZSAtLT4KLSAgICA8aWZyYW1lIHNhbmRib3g9
ImFsbG93LXNjcmlwdHMiCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93
LXNhbWUtb3JpZ2luIgogICAgICAgICAgICAgbmFtZT0iZjEiCiAgICAgICAgICAgICBzcmM9InJl
c291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbCI+
CiAgICAgPC9pZnJhbWU+CkBAIC02Niw3ICs2Niw3IEBAIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlv
bigpCiAKIGFsbG93LXNjcmlwdHMKIAotIgorYWxsb3ctc2FtZS1vcmlnaW4iCiAgICAgICAgICAg
ICBuYW1lPSJmMiIKICAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
YXR0cmlidXRlLXBhcnNpbmctYWxsb3dlZC5odG1sIj4KICAgICA8L2lmcmFtZT4KQEAgLTEwMyw3
ICsxMDMsNyBAQCBhbGxvdy1zY3JpcHRzCiAgICAgICAgIAogICAgICAgICAnS3lzc2FybmEnICgn
VGhlIGtpc3NlcycpLCBFc2FpYXMgVGVnbsOpciwgMTc4Mi0xODQ2CiAKLSAgICBhbGxvdy1zY3Jp
cHRzCisgICAgYWxsb3ctc2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbgogICAgIAogICAgICAgICBp
bnQgbWFpbih2b2lkKQogICAgICAgICB7CkBAIC0xMTQsNDQgKzExNCw0NCBAQCBhbGxvdy1zY3Jp
cHRzCiAgICAgPC9pZnJhbWU+CiAKICAgICA8IS0tIHRhYiBjaGFyYWN0ZXJzIGJlZm9yZSBhbmQg
YWZ0ZXIgYXR0cmlidXRlIHZhbHVlIC0tPgotICAgIDxpZnJhbWUgc2FuZGJveD0iCQlhbGxvdy1z
Y3JpcHRzCQkiCisgICAgPGlmcmFtZSBzYW5kYm94PSIJCWFsbG93LXNjcmlwdHMJCWFsbG93LXNh
bWUtb3JpZ2luIgogICAgICAgICAgICAgbmFtZT0iZjQiCiAgICAgICAgICAgICBzcmM9InJlc291
cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0ZS1wYXJzaW5nLWFsbG93ZWQuaHRtbCI+CiAg
ICAgPC9pZnJhbWU+CiAKICAgICA8IS0tIG1peGVkIGNhc2UgLS0+Ci0gICAgPGlmcmFtZSBzYW5k
Ym94PSJBbExvVy1zQ3JJcFRzIgorICAgIDxpZnJhbWUgc2FuZGJveD0iQWxMb1ctc0NySXBUcyBh
bGxvdy1zYW1lLW9yaWdpbiIKICAgICAgICAgICAgIG5hbWU9ImY1IgogICAgICAgICAgICAgc3Jj
PSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUtcGFyc2luZy1hbGxvd2VkLmh0
bWwiPgogICAgIDwvaWZyYW1lPgogCiAgICAgPCEtLSBpZnJhbWVzIHdoZXJlIHNjcmlwdCBleGVj
dXRpb24gaXMgZGlzYWxsb3dlZCAtLT4KIAotICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3dzY3Jp
cHRzIgorICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3dzY3JpcHRzIGFsbG93LXNhbWUtb3JpZ2lu
IgogICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1hdHRyaWJ1dGUt
cGFyc2luZy1kaXNhbGxvd2VkLmh0bWwiPgogICAgIDwvaWZyYW1lPgogCi0gICAgPGlmcmFtZSBz
YW5kYm94PSJhbGxvd3MtY3JpcHRzIgorICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3dzLWNyaXB0
cyBhbGxvdy1zYW1lLW9yaWdpbiIKICAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctZGlzYWxsb3dlZC5odG1sIj4KICAgICA8L2lmcmFt
ZT4KIAotICAgIDxpZnJhbWUgc2FuZGJveD0iLWFsbG93LXNjcmlwdHMiCisgICAgPGlmcmFtZSBz
YW5kYm94PSItYWxsb3ctc2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbiIKICAgICAgICAgICAgIHNy
Yz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctZGlzYWxsb3dl
ZC5odG1sIj4KICAgICA8L2lmcmFtZT4KIAotICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3dfc2Ny
aXB0cyIKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93X3NjcmlwdHMgYWxsb3ctc2FtZS1vcmln
aW4iCiAgICAgICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWF0dHJpYnV0
ZS1wYXJzaW5nLWRpc2FsbG93ZWQuaHRtbCI+CiAgICAgPC9pZnJhbWU+CiAKLSAgICA8aWZyYW1l
IHNhbmRib3g9ImFsbG93U2NyaXB0cyIKKyAgICA8aWZyYW1lIHNhbmRib3g9ImFsbG93U2NyaXB0
cyBhbGxvdy1zYW1lLW9yaWdpbiIKICAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hl
ZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctZGlzYWxsb3dlZC5odG1sIj4KICAgICA8L2lmcmFt
ZT4KIAotICAgIDxpZnJhbWUgc2FuZGJveD0iYWFsbG93LXNjcmlwdHMiCisgICAgPGlmcmFtZSBz
YW5kYm94PSJhYWxsb3ctc2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbiIKICAgICAgICAgICAgIHNy
Yz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmlidXRlLXBhcnNpbmctZGlzYWxsb3dl
ZC5odG1sIj4KICAgICA8L2lmcmFtZT4KIAotICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2Ny
aXB0c3MiCisgICAgPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzcyBhbGxvdy1zYW1lLW9y
aWdpbiIKICAgICAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtYXR0cmli
dXRlLXBhcnNpbmctZGlzYWxsb3dlZC5odG1sIj4KICAgICA8L2lmcmFtZT4KIApJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy1keW5hbWljLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1m
b3Jtcy1keW5hbWljLmh0bWwJKHJldmlzaW9uIDk5NzI4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9m
cmFtZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jtcy1keW5hbWljLmh0bWwJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDkgKzMwLDkgQEAgZnVuY3Rpb24gZGlzYWxsb3dlZEZvcm1TdWJtaXR0ZWQoKQogd2lu
ZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgewogICAgIGZyYW1lRWxlbWVudHMgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiaWZyYW1lIik7CiAKLSAgICBmcmFtZUVsZW1lbnRzWzBdLnNh
bmRib3ggPSAiYWxsb3ctc2NyaXB0cyI7Ci0gICAgZnJhbWVFbGVtZW50c1sxXS5zYW5kYm94ID0g
ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMiOwotICAgIGZyYW1lRWxlbWVudHNbMl0uc2FuZGJv
eCA9ICJhbGxvdy1zY3JpcHRzIjsKKyAgICBmcmFtZUVsZW1lbnRzWzBdLnNhbmRib3ggPSAiYWxs
b3ctc2NyaXB0cyBhbGxvdy1zYW1lLW9yaWdpbiI7CisgICAgZnJhbWVFbGVtZW50c1sxXS5zYW5k
Ym94ID0gImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMgYWxsb3ctc2FtZS1vcmlnaW4iOworICAg
IGZyYW1lRWxlbWVudHNbMl0uc2FuZGJveCA9ICJhbGxvdy1zY3JpcHRzIGFsbG93LXNhbWUtb3Jp
Z2luIjsKIAogICAgIGZyYW1lc1swXS5wb3N0TWVzc2FnZSgiZ28iLCAiKiIpOwogICAgIGZyYW1l
c1sxXS5wb3N0TWVzc2FnZSgiZ28iLCAiKiIpOwpAQCAtNDUsMTUgKzQ1LDE1IEBAIHdpbmRvdy5v
bmxvYWQgPSBmdW5jdGlvbigpIHsKIDxib2R5PgogCiAgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6
IDYwcHg7IGhlaWdodDogNjBweDsiCi0gICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxs
b3ctZm9ybXMiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMgYWxs
b3ctc2FtZS1vcmlnaW4iCiAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
Zm9ybS1keW5hbWljLWFsbG93ZWQuaHRtbCI+CiAgICAgPC9pZnJhbWU+CiAgICAgPGlmcmFtZSBz
dHlsZT0id2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCi0gICAgICAgIHNhbmRib3g9ImFsbG93
LXNjcmlwdHMiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmln
aW4iCiAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1keW5hbWlj
LWRpc2FsbG93ZWQuaHRtbCI+CiAgICAgPC9pZnJhbWU+CiAgICAgPGlmcmFtZSBzdHlsZT0id2lk
dGg6IDYwcHg7IGhlaWdodDogNjBweDsiCi0gICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMg
YWxsb3ctZm9ybXMiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMg
YWxsb3ctc2FtZS1vcmlnaW4iCiAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtZm9ybS1keW5hbWljLWFsbG93ZWQuaHRtbCI+CiAgICAgPC9pZnJhbWU+CiAKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtZm9ybXMuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm1zLmh0
bWwJKHJldmlzaW9uIDk5NzI4KQorKysgTGF5b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVk
LWlmcmFtZS1mb3Jtcy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC00MSw1MyArNDEsNTMgQEAgZnVu
Y3Rpb24gZGlzYWxsb3dlZEZvcm1TdWJtaXR0ZWQoKQogICAgIDwhLS0gZml2ZSBJRnJhbWVzIHdp
dGggZm9ybXMgYWxsb3dlZCAtLT4KIAogICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4OyBo
ZWlnaHQ6IDYwcHg7IgotICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1z
IgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIGFsbG93LXNhbWUt
b3JpZ2luIgogICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0tYWxs
b3dlZC5odG1sIj4KICAgICA8L2lmcmFtZT4KICAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBw
eDsgaGVpZ2h0OiA2MHB4OyIKLSAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1m
b3JtcyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyBhbGxvdy1z
YW1lLW9yaWdpbiIKICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3Jt
LWFsbG93ZWQuaHRtbCI+CiAgICAgPC9pZnJhbWU+CiAgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6
IDYwcHg7IGhlaWdodDogNjBweDsiCi0gICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxs
b3ctZm9ybXMiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMgYWxs
b3ctc2FtZS1vcmlnaW4iCiAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUt
Zm9ybS1hbGxvd2VkLmh0bWwiPgogICAgIDwvaWZyYW1lPgogICAgIDxpZnJhbWUgc3R5bGU9Indp
ZHRoOiA2MHB4OyBoZWlnaHQ6IDYwcHg7IgotICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRz
IGFsbG93LWZvcm1zIgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1z
IGFsbG93LXNhbWUtb3JpZ2luIgogICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZy
YW1lLWZvcm0tYWxsb3dlZC5odG1sIj4KICAgICA8L2lmcmFtZT4KICAgICA8aWZyYW1lIHN0eWxl
PSJ3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyIKLSAgICAgICAgc2FuZGJveD0iYWxsb3ctc2Ny
aXB0cyBhbGxvdy1mb3JtcyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1m
b3JtcyBhbGxvdy1zYW1lLW9yaWdpbiIKICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1mb3JtLWFsbG93ZWQuaHRtbCI+CiAgICAgPC9pZnJhbWU+CiAKICAgICA8IS0tIG9u
ZSBJRnJhbWUgd2l0aCBmb3JtcyBkaXNhbGxvd2VkIC0tPgogCiAgICAgPGlmcmFtZSBzdHlsZT0i
d2lkdGg6IDYwcHg7IGhlaWdodDogNjBweDsiCi0gICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlw
dHMiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctc2FtZS1vcmlnaW4iCiAg
ICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1kaXNhbGxvd2VkLmh0
bWwiPgogICAgIDwvaWZyYW1lPgogCiAgICAgPCEtLSBmaXZlIG1vcmUgSUZyYW1lcyB3aXRoIGZv
cm1zIGFsbG93ZWQgLS0+CiAKICAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDogNjBweDsgaGVpZ2h0
OiA2MHB4OyIKLSAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyIKKyAg
ICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyBhbGxvdy1zYW1lLW9yaWdp
biIKICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1mb3JtLWFsbG93ZWQu
aHRtbCI+CiAgICAgPC9pZnJhbWU+CiAgICAgPGlmcmFtZSBzdHlsZT0id2lkdGg6IDYwcHg7IGhl
aWdodDogNjBweDsiCi0gICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMi
CisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMgYWxsb3ctc2FtZS1v
cmlnaW4iCiAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJhbWUtZm9ybS1hbGxv
d2VkLmh0bWwiPgogICAgIDwvaWZyYW1lPgogICAgIDxpZnJhbWUgc3R5bGU9IndpZHRoOiA2MHB4
OyBoZWlnaHQ6IDYwcHg7IgotICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZv
cm1zIgorICAgICAgICBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LWZvcm1zIGFsbG93LXNh
bWUtb3JpZ2luIgogICAgICAgICBzcmM9InJlc291cmNlcy9zYW5kYm94ZWQtaWZyYW1lLWZvcm0t
YWxsb3dlZC5odG1sIj4KICAgICA8L2lmcmFtZT4KICAgICA8aWZyYW1lIHN0eWxlPSJ3aWR0aDog
NjBweDsgaGVpZ2h0OiA2MHB4OyIKLSAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxv
dy1mb3JtcyIKKyAgICAgICAgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy1mb3JtcyBhbGxv
dy1zYW1lLW9yaWdpbiIKICAgICAgICAgc3JjPSJyZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1m
b3JtLWFsbG93ZWQuaHRtbCI+CiAgICAgPC9pZnJhbWU+CiAgICAgPGlmcmFtZSBzdHlsZT0id2lk
dGg6IDYwcHg7IGhlaWdodDogNjBweDsiCi0gICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMg
YWxsb3ctZm9ybXMiCisgICAgICAgIHNhbmRib3g9ImFsbG93LXNjcmlwdHMgYWxsb3ctZm9ybXMg
YWxsb3ctc2FtZS1vcmlnaW4iCiAgICAgICAgIHNyYz0icmVzb3VyY2VzL3NhbmRib3hlZC1pZnJh
bWUtZm9ybS1hbGxvd2VkLmh0bWwiPgogICAgIDwvaWZyYW1lPgogICAgIApJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRvcC1ieS1jb25z
dGFudC1uYW1lMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3Nh
bmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10b3AtYnktY29uc3RhbnQtbmFtZTIuaHRtbAkocmV2
aXNpb24gOTk3MjgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5kYm94ZWQtaWZyYW1l
LW5hdmlnYXRpb24tdG9wLWJ5LWNvbnN0YW50LW5hbWUyLmh0bWwJKHdvcmtpbmcgY29weSkKQEAg
LTksNyArOSw3IEBAIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKIDwvaGVhZD4K
IDxib2R5PgogPHA+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgYSBzYW5kYm94ZWQgSUZyYW1lIGNh
biBuYXZpZ2F0ZSB0aGUgdG9wLWxldmVsIGZyYW1lIHdpdGggYWxsb3ctdG9wLW5hdmlnYXRpb24u
PC9wPgotPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LXRvcC1uYXZpZ2F0aW9u
IgorPGlmcmFtZSBzYW5kYm94PSJhbGxvdy1zY3JpcHRzIGFsbG93LXRvcC1uYXZpZ2F0aW9uIGFs
bG93LXNhbWUtb3JpZ2luIgogICAgICAgICBzcmM9InJlc291cmNlcy9uYXZpZ2F0ZS10b3AtYnkt
Y29uc3RhbnQtbmFtZTItdG8tcGFzcy5odG1sIj4KIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10b3AtYnkt
Y29uc3RhbnQtbmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVz
L3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10b3AtYnktY29uc3RhbnQtbmFtZS5odG1sCShy
ZXZpc2lvbiA5OTcyOCkKKysrIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJh
bWUtbmF2aWdhdGlvbi10b3AtYnktY29uc3RhbnQtbmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC05LDcgKzksNyBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiA8L2hlYWQ+
CiA8Ym9keT4KIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEgc2FuZGJveGVkIElGcmFtZSBj
YW4gbmF2aWdhdGUgdGhlIHRvcC1sZXZlbCBmcmFtZSB3aXRoIGFsbG93LXRvcC1uYXZpZ2F0aW9u
LjwvcD4KLTxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy10b3AtbmF2aWdhdGlv
biIKKzxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxvdy10b3AtbmF2aWdhdGlvbiBh
bGxvdy1zYW1lLW9yaWdpbiIKICAgICAgICAgc3JjPSJyZXNvdXJjZXMvbmF2aWdhdGUtdG9wLWJ5
LWNvbnN0YW50LW5hbWUtdG8tcGFzcy5odG1sIj4KIDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10b3AtYnkt
bmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hl
ZC1pZnJhbWUtbmF2aWdhdGlvbi10b3AtYnktbmFtZS5odG1sCShyZXZpc2lvbiA5OTcyOCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdhdGlvbi10b3At
YnktbmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xMCw3ICsxMCw3IEBAIHdpbmRvdy5uYW1l
ID0gInRhcmdldCI7CiA8L2hlYWQ+CiA8Ym9keT4KIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0
IGEgc2FuZGJveGVkIElGcmFtZSBjYW4gbmF2aWdhdGUgdGhlIHRvcC1sZXZlbCBmcmFtZSB3aXRo
IGFsbG93LXRvcC1uYXZpZ2F0aW9uLjwvcD4KLTxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0
cyBhbGxvdy10b3AtbmF2aWdhdGlvbiIKKzxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBh
bGxvdy10b3AtbmF2aWdhdGlvbiBhbGxvdy1zYW1lLW9yaWdpbiIKICAgICAgICAgc3JjPSJyZXNv
dXJjZXMvbmF2aWdhdGUtdG9wLWJ5LW5hbWUtdG8tcGFzcy5odG1sIj4KIDwvYm9keT4KIDwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZnJhbWVzL3NhbmRib3hlZC1pZnJhbWUtbmF2aWdh
dGlvbi10b3AuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9zYW5k
Ym94ZWQtaWZyYW1lLW5hdmlnYXRpb24tdG9wLmh0bWwJKHJldmlzaW9uIDk5NzI4KQorKysgTGF5
b3V0VGVzdHMvZmFzdC9mcmFtZXMvc2FuZGJveGVkLWlmcmFtZS1uYXZpZ2F0aW9uLXRvcC5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC05LDcgKzksNyBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CiA8L2hlYWQ+CiA8Ym9keT4KIDxwPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IGEg
c2FuZGJveGVkIElGcmFtZSBjYW4gbmF2aWdhdGUgdGhlIHRvcC1sZXZlbCBmcmFtZSB3aXRoIGFs
bG93LXRvcC1uYXZpZ2F0aW9uLjwvcD4KLTxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBh
bGxvdy10b3AtbmF2aWdhdGlvbiIKKzxpZnJhbWUgc2FuZGJveD0iYWxsb3ctc2NyaXB0cyBhbGxv
dy10b3AtbmF2aWdhdGlvbiBhbGxvdy1zYW1lLW9yaWdpbiIKICAgICAgICAgc3JjPSJyZXNvdXJj
ZXMvbmF2aWdhdGUtdG9wLXRvLXBhc3MuaHRtbCI+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdl
LWRpc2FsbG93ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9y
ZXNvdXJjZXMvc2FuZGJveGVkLWlmcmFtZS1zdG9yYWdlLWRpc2FsbG93ZWQuaHRtbAkocmV2aXNp
b24gOTk3MjgpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2ZyYW1lcy9yZXNvdXJjZXMvc2FuZGJveGVk
LWlmcmFtZS1zdG9yYWdlLWRpc2FsbG93ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDU2IEBACiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK2Z1
bmN0aW9uIGRlYnVnKG1zZykKK3sKKyAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInNwYW4iKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29sZSIpLmFwcGVu
ZENoaWxkKHNwYW4pOworICAgIHNwYW4uaW5uZXJIVE1MID0gbXNnICsgJzxiciAvPic7Cit9CisK
K2Z1bmN0aW9uIGVzY2FwZUhUTUwodGV4dCkKK3sKKyAgICByZXR1cm4gdGV4dC5yZXBsYWNlKC8m
L2csICImYW1wOyIpLnJlcGxhY2UoLzwvZywgIiZsdDsiKS5yZXBsYWNlKC9cMC9nLCAiXFwwIik7
Cit9CisKK2Z1bmN0aW9uIHRlc3RQYXNzZWQobXNnKQoreworICAgIGRlYnVnKCc8c3Bhbj48c3Bh
biBjbGFzcz0icGFzcyI+UEFTUzwvc3Bhbj4gJyArIGVzY2FwZUhUTUwobXNnKSArICc8L3NwYW4+
Jyk7Cit9CisKK2Z1bmN0aW9uIHRlc3RGYWlsZWQobXNnKQoreworICAgIGRlYnVnKCc8c3Bhbj48
c3BhbiBjbGFzcz0iZmFpbCI+RkFJTDwvc3Bhbj4gJyArIGVzY2FwZUhUTUwobXNnKSArICc8L3Nw
YW4+Jyk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KF9hLCBfZSkKK3sKKyAgdmFyIGV4Y2Vw
dGlvbjsKKyAgdmFyIF9hdjsKKyAgdHJ5IHsKKyAgICAgX2F2ID0gZXZhbChfYSk7CisgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgZXhjZXB0aW9uID0gZTsKKyAgfQorCisgIHZhciBfZXY7CisgIGlmIChf
ZSkKKyAgICAgIF9ldiA9ICBldmFsKF9lKTsKKworICBpZiAoZXhjZXB0aW9uKSB7CisgICAgaWYg
KHR5cGVvZiBfZSA9PSAidW5kZWZpbmVkIiB8fCBleGNlcHRpb24gPT0gX2V2KQorICAgICAgdGVz
dFBhc3NlZChfYSArICIgdGhyZXcgZXhjZXB0aW9uICIgKyBleGNlcHRpb24gKyAiLiIpOworICAg
IGVsc2UKKyAgICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCB0aHJvdyAiICsgKHR5cGVvZiBf
ZSA9PSAidW5kZWZpbmVkIiA/ICJhbiBleGNlcHRpb24iIDogX2V2KSArICIuIFRocmV3IGV4Y2Vw
dGlvbiAiICsgZXhjZXB0aW9uICsgIi4iKTsKKyAgfSBlbHNlIGlmICh0eXBlb2YgX2F2ID09ICJ1
bmRlZmluZWQiKQorICAgIHRlc3RGYWlsZWQoX2EgKyAiIHNob3VsZCB0aHJvdyAiICsgKHR5cGVv
ZiBfZSA9PSAidW5kZWZpbmVkIiA/ICJhbiBleGNlcHRpb24iIDogX2V2KSArICIuIFdhcyB1bmRl
ZmluZWQuIik7CisgIGVsc2UKKyAgICB0ZXN0RmFpbGVkKF9hICsgIiBzaG91bGQgdGhyb3cgIiAr
ICh0eXBlb2YgX2UgPT0gInVuZGVmaW5lZCIgPyAiYW4gZXhjZXB0aW9uIiA6IF9ldikgKyAiLiBX
YXMgIiArIF9hdiArICIuIik7Cit9Cis8L3NjcmlwdD4KIDxzY3JpcHQ+CiAKIHdpbmRvdy5vbmxv
YWQgPSBmdW5jdGlvbigpIHsKSW5kZXg6IExheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xz
LW5vLXNjcmlwdGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL21lZGlhL3ZpZGVv
LWNvbnRyb2xzLW5vLXNjcmlwdGluZy5odG1sCShyZXZpc2lvbiA5OTcyOCkKKysrIExheW91dFRl
c3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLW5vLXNjcmlwdGluZy5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw3ICsyNyw3IEBACiAKICAgICA8Ym9keT4KIAotICAgICAgICA8aWZyYW1lIHNhbmRi
b3ggc3JjPSJyZXNvdXJjZXMvdmlkZW8tY29udHJvbHMtbm8tc2NyaXB0aW5nLWlmcmFtZS5odG1s
IiBpZD0iZnIiIHN0eWxlPSJ3aWR0aDogNDAwcHg7IGhlaWdodDogMzIwcHg7IGJvcmRlcjogMXB4
IHNvbGlkIGJsYWNrOyI+PC9pZnJhbWU+CisgICAgICAgIDxpZnJhbWUgc2FuZGJveD0iYWxsb3ct
c2FtZS1vcmlnaW4iIHNyYz0icmVzb3VyY2VzL3ZpZGVvLWNvbnRyb2xzLW5vLXNjcmlwdGluZy1p
ZnJhbWUuaHRtbCIgaWQ9ImZyIiBzdHlsZT0id2lkdGg6IDQwMHB4OyBoZWlnaHQ6IDMyMHB4OyBi
b3JkZXI6IDFweCBzb2xpZCBibGFjazsiPjwvaWZyYW1lPgogCiAgICAgICAgIDxwPlRlc3RzIHRo
YXQgdGhlIGJ1aWx0LWluIGNvbnRyb2xzIGFyZSBhbHdheXMgZW5hYmxlZCB3aGVuIEphdmFTY3Jp
cHQgaXMgZGlzYWJsZWQuPC9wPgogICAgICAgICA8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4KSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0aW5nL3Bhc3RlYm9hcmQv
ZHJhZy1kcm9wLWRlYWQtZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1kcm9wLWRl
YWQtZnJhbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5OTcyOCkKKysrIExheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1kcm9wLWRlYWQtZnJh
bWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsNCBAQAogRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnROb2RlOiNkb2N1
bWVudC1mcmFnbWVudCByZXBsYWNpbmdET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBnaXZlbkFjdGlv
bjpXZWJWaWV3SW5zZXJ0QWN0aW9uRHJvcHBlZAotRURJVElORyBERUxFR0FURTogd2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1F
RElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20g
MCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gNSBvZiAjdGV4dCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5T
U2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCi1FRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2Vi
Vmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAg
IFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiBsYXllciBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQv
ZHJhZy1kcm9wLWRlYWQtZnJhbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1kcm9wLWRlYWQtZnJhbWUt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5OTcyOCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9lZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1kcm9wLWRlYWQtZnJhbWUtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDkgKzEsNCBAQAogRURJVElORyBERUxFR0FURTogd2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1F
RElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnROb2RlOiNkb2N1bWVudC1mcmFnbWVudCByZXBs
YWNpbmdET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8g
MCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBnaXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0
aW9uRHJvcHBlZAotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpX
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBz
aG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0byAwIG9mIEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFu
Z2UgZnJvbSAwIG9mICN0ZXh0ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4
dCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlE
b3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
LUVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlm
aWNhdGlvbgogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgIFJlbmRlclZpZXcgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCiBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL3F0L2VkaXRpbmcvcGFzdGVib2FyZC9kcmFnLWRyb3AtZGVhZC1mcmFt
ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZWRp
dGluZy9wYXN0ZWJvYXJkL2RyYWctZHJvcC1kZWFkLWZyYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gOTk3MjgpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9lZGl0aW5nL3Bhc3RlYm9hcmQv
ZHJhZy1kcm9wLWRlYWQtZnJhbWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDkg
KzEsNCBAQAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91
bGRJbnNlcnROb2RlOiNkb2N1bWVudC1mcmFnbWVudCByZXBsYWNpbmdET01SYW5nZTpyYW5nZSBm
cm9tIDAgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCBnaXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uRHJvcHBlZAotRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERP
TVJhbmdlOnJhbmdlIGZyb20gMCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4dCA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0
aW5nOkZBTFNFCi1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCiAgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiBsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvZHJhZy1kcm9wLWRlYWQtZnJhbWUtZXhwZWN0ZWQucG5nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjpt
aW1lLXR5cGUgPSBpbWFnZS9wbmcKCmlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUF5QUFBQUpZQ0FZ
QUFBQ2Fkb0p3QUFBQUtYUkZXSFJqYUdWamEzTjFiUUF4TURjMU9EY3gKWldRMVlUTXpNRFEwTkRk
bU9UVTNNR0l4TkRWa1lqWTBPSmY1c1VNQUFDQUFTVVJCVkhpYzdkMTVmQlgxdmZqL043dW9XQ3dp
bTRxbwpLT0tHZ3Z0RjYwWmRjS1d1dmFYaVVpMVNxOVo2WFdwRnF5alc2M3BkVzl0YWw0dG82MVl0
S2tKUktxSUlLbDVSRk5GaWxWVVFrUUFoCitmeis0TWY1SnBEa0pDRjh4UGI1ZkR4NFBEaExadWJN
ZkdhU1Y4NmNTYU9VVWdvQUFJQU1Hbi9kQ3dBQUFQejdFQ0FBQUVBMkFnUUEKQU1oR2dBQUFBTmtJ
RUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5cVZlQWZQYlpaL0haWjU4VmJuLysr
ZWVGL3k5YQp0Q2htekppeDVrdTJpcEtTa3Zqb280OGFmTHByUzFsWldiejc3cnNOTnIxUFB2bWt3
YWJWRU5iV2RzNDEvWDkzOCtiTmkvZmZmLy9yClhvd0czMC8rRmN5ZVBUdEdqUnBWNmJpNkxtaW9N
Vk9YYmI1MDZkSjQrZVdYMTNpZXhlUWFoMnRyUGpObnpxdzBYbGE5M1pBV0xWb1UKLy96blA2dDlQ
TWMycStuMWZmenh4NnZkTjMvKy9GaStmSG5SNlZiM2ZmYVRUejZKa3BLU2FyOXUwYUpGc1dqUm9u
cFBmKzdjdWV2YwovZzVyVzYwRFpQNzgrVEZnd0lEWWI3Lzk0cnJycm90YmJya2xEajc0NERqd3dB
UGp1T09PaTRpSWh4NTZLTnExYXhmMzMzOS9neTdrCnd3OC9IQjA3ZG93YmI3eXhRYWU3dHJ6MjJt
dlJvMGVQK05HUGZ0UWcwNXN5WlVyc3VPT09EVEt0aHJDMnRuT3U2UlB4eTEvK01vNDUKNXBpdmRS
a2Flai81VjNEUFBmZkVzR0hEWXN5WU1iSEREanZFMHFWTHYrNUZLbWlJTVZPWGJUNSsvUGpvMWF0
WDRmdkwycEpySEs3TgorVngwMFVVeGI5NjhhbTgzbEx2dnZqdmF0R2tUanp6eVNKV1A1OXBtRlYv
ZjBLRkRvMUdqUm9WLy8vVmYvMVY0M3Z2dnZ4OG5uSEJDClBQcm9vL0dMWC93aXJyamlpbXFuK2Z6
eno4ZHV1KzFXNmI0SkV5YkVRUWNkRkgvOTYxOWo4T0RCY2VxcHAwWnBhV25oOFlrVEo4WmwKbDEw
V1R6LzlkTng4ODgxeDZxbW5WaHNTMVUzL2tFTU9pZmJ0MjBlYk5tM2l4Qk5QakNWTGx0UjVmY0Ez
VXFxRmQ5NTVKM1hxMUNuMQo3OTgvTFYyNnRIQi9lWGw1dXZqaWk5TzIyMjVidUcvNzdiZFAxMXh6
VFcwbVd5Zjc3cnR2K3NsUGZ0TGcwMTFiQmcwYWxBNDg4TUFHCm1kYk1tVFBUbGx0dVdiaTlaTW1T
TkdyVXFBYVpkbjJ0cmUyY2Evci83dWJPblp1bVRwMzZkUzlHZys0bnRmRjE3anZGNXIxbzBhSzAK
d1FZYnBMS3lzcFJTU24vLys5OXpMVnF0Tk5TWXFjczJ2K0dHRzFLN2R1MXE5ZHcxMmJhNXh1SGFt
RTlwYVduYWQ5OTlxNzNkME5xMQphNWR1dXVtbWFoK3Z5emFyajRxdmIvSGl4YWxmdjM3cGhSZGVT
Qys4OEVJYU5XcFVtalZyVmtvcHBZVUxGNmJ0dHRzdVBmNzQ0NFd2CjNXZWZmZExkZDkrOTJqUS8v
L3p6MUt0WHI5U21UWnZDZlFzV0xFanQyclZMenp6elRPRyt3dzgvUEEwY09MQnd1MHVYTHVuNTU1
OHYKM0w3Z2dndlM1WmRmWHF2cEwxeTRNQjE2NktIcGlTZWVTSjk5OWxtNjlOSkxVMFNrd1lNSDEy
ZTF3RGRPMFhkQXlzcktvbi8vL3RHNApjZU80Kys2N28zbno1b1hIR2pWcUZOZGNjMDFzdSsyMmhm
dWFOV3NXalJvMWF2QlFhdEdpeFZxWmJrTXJMeStQaUlpbVRadEc0OFlOCjh4R2JkdTNhUmJkdTNT
SWlvclMwTkg3d2d4L0VTeSs5MUNEVHJxaW10NmhUU3BWdXI2M3RuR3Y2NjdKVjEvWGEwS1pObStq
YXRXdUQKVDdlMnkxNmYvYVF1NDdNcU5lMDd0VGs5bzY3enErMjhWNW84ZVhJc1c3YXNzRDcyMldl
ZkdxZFoxMlZlVTlXTm1iVzV6WnMzYjE2cgo0MEI5ajR0cmVyeWVNR0ZDREI4K2ZJM25zeWJiOHFX
WFhvcmV2WHRYZTN1bGhqcXVGRHMyMTNhYjFWZkYxL2ViMy93bVdyWnNHU1VsCkpiSG5ubnZHQVFj
Y0VKdHV1bWxFUkR6NDRJTXhkKzdjT1BMSUl3dGZPMkRBZ0xqcXFxdWlyS3lzMGpTSERCa1NaNTU1
WnFYbGZ1S0oKSjJMT25EbVYxdVgrKys4Zjk5eHpUOHljT1RQS3lzcGk0Y0tGOGRwcnJ4VWVYN1pz
V1pXdnZhcnBqeHMzTHU2OTk5NDQ2cWlqb24zNwo5bkgxMVZkSDE2NWRDNmV2RFIwNk5QN3hqMytz
eWFxQ2RWclJJKzV6enowWEV5Wk1pTk5PT3kzV1cyKzkxU2ZRdUhIODhZOS9ySFJmCmVYbDUvUEtY
djR3dHR0Z2lkdHh4eDVnK2ZYcmhzVm16WnNVRkYxd1ErKysvZi9UczJUTmVlZVdWd21NbEpTVngy
V1dYeGRDaFErUEUKRTArTUcyNjRvY3BsbWpScFV1eSsrKzd4czUvOUxONTQ0NDNWSG4vb29ZZGlo
eDEyaUNPT09LSnd2dTNreVpOajc3MzNqdEdqUjBmRQppbk0yQncwYUZELzcyYy9pbUdPT2lYUFBQ
YmR3anVmRER6OGNuVHAxaXR0dXV5MGlJb1lOR3hiYmJiZGRuSDMyMmRXdXA4V0xGOGZBCmdRUGo2
cXV2anJQUFBqc21USmhRNmZHYTVqZDY5T2c0NmFTVDRzSUxMNHg3NzcwM3R0NTY2K2pXclZ1bDli
Yi8vdnRIUk1UTk45OGMKVHo3NVpEeisrT1B4d3gvK01MNzY2cXZWbHFXNjlUaHg0c1E0NjZ5ejRo
ZS8rRVZjYzgwMTBiWnQyM2oxMVZmamhSZGVpS0ZEaDhhTgpOOTRZKys2N2I3ejk5dHVGYVQzODhN
Tng1NTEzeHZYWFg3L2FEMFExYmVlSy92em5QMGZidG0zajJHT1BqUVVMRnNRZi92Q0hhTnUyCmJS
eHl5Q0h4d1FjZlJFVEVqVGZlR0wxNzk2NzA5bk45eGxGdDFtVkZhM3VzVkxmT0t4bzVjbVNjZlBM
SmNmbmxsOGZGRjE4Y0hUcDAKaUMyMjJDSkdqaHhaNHpTcVd3ZC8rY3Rmb24zNzlySDc3cnNYMXUr
cnI3NGFuVHQzanVlZWV5NCsrK3l6dVA3NjYyUHZ2ZmN1TE1PYQo3ZzgxalpPS2F0cFA2ak0rRnk5
ZUhJTUdEWXBmL2VwWDBhZFBuempwcEpOaTZOQ2hWZjRnV3RXK1U5MjBxMXVXWXZPcmJwc1UyMjkv
Cis5dmZ4dURCZzJQNTh1Vnh6am5ueElVWFhsam45ZkhCQngvRVJSZGRGQmRjY0VFODlkUlRzZXV1
dTBhdlhyMWkzTGh4TVhueTVQamUKOTc0WEhUcDBpQ0ZEaGhUbVc5UHh1S0txeGt4RGJQTzZMRU5k
MTI5TjB5MjJUTVZNbmp3NWpqMzIyT2pYcjE5c3ZQSEdOWTZYbXVaVAoxL0gzcTEvOUtuYmZmZmRL
MDNqaWlTZmk2S09QWHUxMmZZOHJOUjBMS3E2L0N5KzhNTnExYXhjOWUvYU1LVk9tMUhtYjFXZThy
dnA2Cmh3MGJGZzg4OEVEMDdkczN1bmZ2SHM4ODgwemhlWC85NjEramE5ZXVsWUt2YTlldThjOS8v
ak1tVFpwVXVHL1lzR0hScDArZjJIamoKalN2TlovYnMyVkZlWGg2TEZ5OHUzTGZubm52Rzh1WEw0
ODAzMzR3bVRackVEMzd3Z3hnOGVIQU1HellzSms2Y0dCTW1USWp6enorLwowblNxbTM2ZlBuMmlZ
OGVPaGR1TkdqV0s3dDI3UjVjdVhTSmlSVER1dHR0dWNmcnBwNjhUbjllREJsZnNMWkpmLy9yWEtT
TFNmZmZkClY2dTNWSGJlZWVlMHl5NjdwSkVqUjZZWk0yYWtidDI2cFRQT09DT2xsTkx5NWN2VFlZ
Y2RsaFl1WEpqS3lzclNXV2VkbGRxMmJadm0KejUrZlVrcnAwRU1QVGVQR2pVc3BwVFJod29RVUVl
bjExMTlQS2FWMDRJRUhwblBQUFRlbGxOSmRkOTFWZEhuMjIyKy9kUERCQnhkdQpMMSsrUFBYcjE2
L1M0My84NHg5VFNpa3RXN1lzN2JISEhxbHYzNzZGeHp0MTZsVHBGS0ErZmZxazQ0OC92dHI1SFhI
RUVXbllzR0VwCnBaVEt5c3BTeDQ0ZDB5R0hIRktyK2MyY09UTnR1KzIycVZ1M2J1bXBwNTVLSDMz
MFVkcHV1KzNTbVdlZVdmajZPWFBtRlA2LzVaWmIKcGlGRGhsUzdMTld0eDNIanhxV05OOTQ0OWVq
Ukl6MzY2S1BwckxQT1NtKy8vWGJxMUtsVDRkU0Z3WU1IRjlaVGFXbHA2dFdyVjJHNgo1NTkvZnVI
MGtKcTJjMVYyMjIyM2ROcHBweFZ1ZitjNzMwa0RCZ3dvM0g3NjZhZlQ3My8vKzhMdCtvNmoycXpM
VmEzTnNWTFZPbC8xCk5KYnAwNmVuVFRmZE5IWHAwaVc5OU5KTGFjeVlNV21YWFhaSm0yKytlYlhU
bURKbFNvMzcwaGxubkpHNmR1MWFtRWRwYVdrNitlU1QKVTBvcHpaNDlPNTE5OXRscGswMDJhWkRY
V05NNFdWVk4rMGxkeDJkS0tkMTIyMjNwWnovN1dVb3BwY21USjZlSVNFT0hEazBmZmZSUgpsZk92
dU84c1hicTAybWxYdDkxcW1sK3g0MXV4L1hiNDhPR3BjZVBHaGR0MVhSOGZmUEJCMm5YWFhWT1hM
bDNTbzQ4K21oWXZYcHlPClAvNzR0TTAyMjZRaFE0YWt1WFBucGl1dXVDSTFhdFFvZmY3NTUwV1h0
NkpWeDB4RGJmTml5M0RycmJlbTl1M2IxK3E1RmRkdnNlY1cKTzE1WForclVxZW5razA5T3JWdTNU
a09HREVrbEpTWFZicXVwVTZmV09KLzZqTC9iYjc4OUhYMzAwWldXYWErOTlrcmw1ZVdyM2E3UApj
V1hxMUtsRmp3V2JiYlpaMm1HSEhkS1RUejZaUm8wYWxiYmNjc3UwMVZaYnBkTFMwanB0czdxTzEr
cGU3N1JwMDlMTk45K2NXclpzCm1abzNiNTdlZmZmZGxGSkt1KysrZS9ydWQ3OWJhVjI5L3ZycktT
TFNZNDg5bGxKS2FjYU1HZWtYdi9oRlNtbkYvbGZ4bURocDBxUVUKRVduRWlCR0YrMTU5OWRVVUVl
bXBwNTVLS2FWVVVsS1NEampnZ05Tb1VhTzAyMjY3cFVXTEZsV2FYMDNUWDFWNWVYbnEzTGx6NFdl
ZQpsRkthTjI5ZXV1eXl5MUxyMXEzVGlTZWVtTjU4ODgxcXZ4NithWXErQTdMeWFoZWJiTEpKcmFP
bWI5KytjZEJCQjhWbW0yMFdCeHh3ClFPRTN5OE9IRDQrVVVyejAwa3N4WXNTSTZOQ2hROHlaTXlk
ZWZQSEZHRFZxVkV5YU5DbjIzSFBQaUlqbzJiTm4zSFhYWGRHNWMrZEsKMDc3cnJydWlUWnMyMGI5
Ly94cVg0Znp6ejQ4WFhuaWg4SnZ2c1dQSHhtR0hIUllSRVNOR2pJaXhZOGZHU1NlZEZCRXIzbEkr
N2JUVAo0aTkvK1V1TUd6Y3VJaUphdG14WjZlM1M5ZGRmdjlxM2xWOTU1WlY0NXBsbjRydmYvVzVF
ckhoWDZQREREeTg4WG14KzdkcTFpNjIzCjNqcDIybW1uNk51M2IzVHUzRGtPUFBEQWVPKzk5d3JU
V0hYOVY3Y3NOYTNIdmZiYUs3cDE2eGJiYjc5OTlPdlhMKzY2NjY3bzNyMTcKSEhmY2NiSExMcnRF
eElyVExGYitObXZCZ2dYeHhodHZGSDZyZE9hWloxWjZHNys2N1Z5VkFRTUd4TFBQUGxzNEZlSGdn
dytPcDU1NgpxbkRxd2NpUkkrUDQ0NCt2OURYMUdVZTFXWmVyV3B0anBhcDF2dXBwTEZ0dXVXVnN2
dm5tY2RSUlI4Vi8vTWQveEg3NzdSZkRoZzJMCkdUTm14SlFwVTZxY3hxUkprNnBkQnhFUmd3WU5p
dmZmZjc5d2VrREY5ZHUyYmR2WWFhZWRDdHR5VFY5anNYR3lVckg5cEs3ak15TGkKL3Z2dmp6WnQy
a1JFeEk0NzdoaHQyN2FOaUZqdHVGSFJ5dVZ1MXF4WnRkT3VicnZWTkwrYXh1V3E4NjZOdXE2UHJi
ZmVPbnIwNkJFNwo3TEJEOU92WEwxcTJiQm5ISEhOTWZQenh4M0hKSlpkRW16WnQ0cnp6em91VVVu
ejg4Y2UxV3Q2VlZoMHpEYlhONjdJTWRWbS9OVDIzCjJESlY1ZU9QUDQ3VFR6ODlkdDU1NTJqZHVu
Vk1uVG8xTHJua2tzSlpBVlZ0cTNuejV0VTRuL3FNdjRFREI4YmpqejllbU1hYmI3NFoKTysyMFUr
RjFWN3hkbitQS3RHblRpaDRMSWlMNjkrOGZSeDU1WkJ4d3dBRngzWFhYeFljZmZsaDRaNlcyMjZ5
dTQ3V3ExeHNSc2RWVwpXOFZQZi9yVEdEdDJiTFJxMVNxdXYvNzZpRmh4SmtDelpzMHFMYy9LVTho
TFMwc2pwUlJEaGd5SlN5NjVwTXB0M3FOSGoramN1WFBjCmNjY2RVVlpXRnFXbHBZWFQ3YnAzN3g0
UkVldXR0MTRjZDl4eDBiVnIxNWc0Y1dKaDNoRlJkUHFyK3RPZi9oU0hIMzU0cFErcWYvdmIKMzQ2
cnI3NDZwazJiRmx0dHRWWDA3dDA3ampycXFCZy9mbnl0cGducnNxSUJzdVdXVzBaRTFIalp2VlZW
UERoc3ZQSEdoY3ZUalJzMwpMdHEwYVJQTm16ZVA1czJieDc3NzdodlBQLzk4OU96Wk0xNTg4Y1hZ
WjU5OUtuM3RXV2VkVmZobUh4SHh6RFBQeERYWFhGTTRvTmZrCnlDT1BqTTAzM3p6dXVlZWVpRmh4
V2txL2Z2MGlZc1hwS0czYnRxMTBjTnBqanowaUlpcTlOVnRiZi92YjM2SmJ0MjdSdW5YcnduMGIK
YnJoaDRiWFVabjRycitDeFVxdFdyV3E4R2taMVA4Z1VXNDh0VzdZcy9OQzBjanEzM25wckxGaXdJ
SVlPSFJwanhveUpMNy84TWlKVwpSTTl4eHgwWFJ4NTVaSnh6empteDVaWmJScE1tVGFwY2hvcmJ1
U29ubjN4eXpKa3pwM0NxeXR0dnYxMDRCV2JKa2lWUlhsNGVHMnl3ClFiV3ZzYmJqYU9YWDFXVmRy
dTJ4c3VvNnIwcWpSbzBxcmR0dTNickZ4aHR2WFBpbXZ1bzBpcTJEWFhiWkpYcjI3QmtQUFBCQVJF
UTgKKyt5emNjUVJSMVNhWDEzR1owMktqWk9WaXUwblZiM09tc1pueElwdFcvRUhvL2J0MnhmaXV6
b3I1MWRzMmxWdHQ1cm1WMnliVkp4MwpiZFYxZmF3Ni9WYXRXbFc2dmRGR0cwVkV4Snc1YzJxMXZC
VlZIRE1OdGMzcnNneDFXYjgxUGJjMjQ3Q2lCeDU0SUxiZGR0c1lNV0pFClRKZ3dJZTY0NDQ0cTkr
ZFZ0MVd4K2RSbi9LM3FpU2VlaUtPT09xcmEyM1U5cnRUMldQQ3RiMzJyOFArOTl0b3JJcUxLMDRS
cWM2eXUKcUtieFd0WHJxMmkzM1hhTGZ2MzZ4WnR2dmhrUksvYk5WYTlJdGZMVXg2NWR1OGJ0dDk4
ZS9mdjNqL1hYWDcvSzZVVkVQUDc0NHpGcgoxcXpZWnB0dDRrYy8rbEY4L3ZubnNjRUdHeFIrTHZy
ZDczNFg0OGFOaTNmZWVTY0dEUm9VVjExMVZkeDExMTBSRWJXYS9rb0xGaXlJCjRjT0h4MDAzM1ZU
bDQ5Lys5cmRqeUpBaDhlR0hIOGJ5NWN0anI3MzJpbE5PT2FYb2RHRmQxclRZRTFhVy9qdnZ2TFBH
TTVzN2QyNDAKYmRvMERqNzQ0TlVlbXpWclZxVnp1NnZTdTNmdkdETm1USngzM25seDc3MzMxdmpj
SmsyYXhJOS8vT080K2VhYjQ4b3JyNHlTa3BMQwpONExGaXhmSDNMbHpZOUdpUmJIaGhodEdSTVJP
TyswVVRaczJyZkl6RmNWODhza25NWGZ1M05YdVgzbHdiZWo1MWFRMjYzRlZkOTk5CmQ0d2RPelor
OTd2ZnhXOS8rOXRLbjFGNDZLR0hvbVBIam5ITExiZkV4SWtUNDlsbm55MThVNmlMTm0zYVJOKytm
ZVBCQngrTTFxMWIKUjY5ZXZhSng0OFl4Yk5pdytPS0xMK3AwZWMrYXhsRjk1QndyZGRHNGNlTm8y
clRxWGJRMjYrQzAwMDZMSzYrOE1xNisrdXBZYjczMQpLbDFBb3FLR2VJMjFHU2ZGOXBQcTFEUSt6
ei8vL0RqMTFGTmo4dVRKMGFKRmkxaC8vZlVMbjVlcWpacW1YWldhNXRmUTQ3SWhscmx4CjQ4YVYx
bS9GLzYvcDhqYkVOcS9MTWpUVWMrczZEci8zdmUvRjdObXo0OXBycjQxVFRqa2xyci8rK2xyOUVx
dzI4Nm5yK0Z2VnlKRWoKNDZLTExxcjJkbFZxT3E3VTUxalF1WFBuYU5XcTFXcnhFRkgzTVZiVGVJ
MG8vdnA2OSs1ZGVLZDhzODAyaTdGangxWjZmT1V2c2JwMgo3Um9EQmd5SVN5Kzl0UEJZYVdscExG
MjZORGJhYUtNWU5HaFFEQmt5SkhyMDZGSHBzME43N0xGSG5IMzIyWVhQbGR4ODg4MXh4eDEzClJK
TW1UZUsyMjI2TFdiTm14ZTkrOTdzNCsreXo0OTU3N3kwNi9aVXV1K3l5dVBIR0c2TkZpeGJWdnJa
WFhua2xycnp5eW5qeHhSZmoKM0hQUExicWRZVjFYOUIyUWd3NDZLSGJaWlpmNC9lOS9Id3NXTEtq
eU9iVzlna2VYTGwzaStlZWZyL1RiNkpSUy9PMXZmNHZPblR2SAorKysvSDlPbVRhdjBXTVhmdXJS
cTFTcnV2Ly8rdU8rKysrSlBmL3BUMGZtZGNjWVpzV0RCZ3JqMDBrc3JYY21pVzdkdVVWWldWdW5x
CkZiTm56NDdseTVmSDl0dHZYN2h2NWVsQ3hYVHMyREhtekprVFU2ZE9yZkx4MnM2dkxxcjdabG1i
OVZqUk8rKzhFd01IRG93YmJyaGgKdGJlclo4NmNHYk5uejQ2YmJyb3BSb3dZRVpNblQ0NWh3NGJW
YTNraklrNDk5ZFI0NUpGSDRqZS8rVTJjY2NZWk1XREFnSGpzc2NkaQo1TWlSZGZxaHNhWnhWRis1
eGtwdFRaMDZOZWJObTdmYWRlTlhxczA2T09XVVUyTGh3b1h4azUvOEpJNDk5dGhxNTdXbXI3RzI0
NlRZCmZsS1Ztc1puUk1UaGh4OGVaNTU1WnVHMzB5c3ZIRkNUbGZ0T3NXbFhwYWI1MVdhYnJPblZn
ZXF6ek5WWmsvMm9vYlo1WFphaEx1dTMKcHVmV2RSeXV0OTU2Y2NFRkY4U0hIMzRZMy92ZTkrS0VF
MDZJUXc0NXBNb0xvRlJVYkQ1cnVpMW56SmdSYmR1Mkxad0d0dXJ0cWhRNwpydFRuZTlXbm4zNGFY
Mzc1WmV5NjY2NnJQZGFReCtyYXZMNDMzbmlqOEk3Tk1jY2NVN2hhMVVydnZmZGU3TGpqanJIQkJo
dkUvZmZmCkh5TkhqaXo4R3p4NGNHeTAwVVl4Y3VUSUtpODQ4OGMvL2pIZWUrKzl3aWxWYytiTWlj
bVRKMWM2UGZxSFAveGhUSnc0TVpZdlgxN3IKNmQ5d3d3MXgrdW1ueDJhYmJWYTRiOWFzV1lYL3Yv
enl5M0hvb1lkR256NTlZdWVkZDQ3cDA2ZkhMYmZjRXAwNmRhcnpPb1IxU2RFQQphZHk0Y2R4NjY2
MVJXbG9hcDUxMldxVzNpQ01pcGsrZkhqLy8rYzhMRWJKNDhlSktWNDBvS1NrcFhFSGorOS8vZnN5
YU5Tdk9PdXVzCm1EOS9mc3llUFR1dXV1cXE2TnExYTV4NDRvbXgzbnJyeFlBQkEyTEtsQ2t4WmNx
VXVPaWlpMkx6elRlUGlCV1JrMUtLZmZiWkp5NisKK09JNC9mVFRpLzVGMlUwMjJTUk9PdW1rdU9l
ZWV5cGRpdS80NDQrUHpUYmJMSjUvL3ZuQ2ZSTW1USWh1M2JyRm9ZY2VHaEVyZnVzegpmdno0V0xa
c1dYejY2YWN4YmRxMGF2K3cwNGtubmhoTm16WXR2UFVhRWZIdXUrL0czTGx6bzZ5c3JGYnpXN1pz
V2FVZjhCWXZYcnphCnBRSlhhdDI2ZGVFdnFzNmZQMysxWlNtMkhpdGUwV1RLbENsUlhsNGU3N3p6
VHBTVmxjV1lNV05peVpJbGtWS0t1WFBueHNNUFB4d1IKSzY3WWNmVFJSeGQrSzFiVGRxN09ZWWNk
RmkxYXRJZ21UWnJFdDc3MXJUand3QU5qbzQwMmlnNGRPcXoyZzFsOXgxRmQxK1ZLYTNPcwpyTHJP
cTFQeGEwYVBIaDI5ZS9jdW5ONno2alNLcllPSUZlUGt1T09PaS9Ianh4ZStLVmRjSnlVbEpaRlNX
dVBYT0cvZXZHckhTVVhGCjlwT3FYbWRONHpPbEZGZGVlV1ZzdSsyMmNlNjU1OFlwcDV3U0xWdTJy
SEVkVjl4M1hudnR0UnFuWGRWMnEybCt4YlpKVGZ0dFJNVEMKaFF0WHUrcE9YZGRIYVdscHBiRytk
T25Td3Zucks2Y1hzU0ltYXpPR0txbzRaaHBxbTlkbVgxNjU3SFZadjMzNzlxM3hlMDJ4Y1ZpVgpW
cTFheGVXWFh4N1RwMCtQM1hiYkxYcjM3aDM5Ky9lUEdUTm1WTG10aXMybjJMYXNhdnk5OU5KTGhk
TjBpcDErdFZKZGppdTFPUlpFClJLWDFOR3JVcURqbW1HTUtuMldweXphcnkzaGQ5ZlY5OHNrbk1X
TEVpTUt4dnFTa0pNYU5HMWNJaEw1OSs4YW1tMjVhNlRMSm8wZVAKamx0dXVTVWlWbnlHYTQ4OTlp
ajgyM2JiYmFOWnMyYXh4eDU3eEJaYmJGRnBIVTZkT2pXdXVlYWFlUERCQnd1bk0yK3l5U2JSc1dQ
SApHREZpUk9GNUN4WXNpRjEzM1RXYU5tMWFxK25mZDk5OU1YLysvRmkyYkZtODhzb3I4ZkxMTDhm
dHQ5OGVFeWRPakpkZmZqbjY5T2tUCmZmdjJqVDMzM0RNKyt1aWpHRHAwYU9FeXcvQ05WOXRQcTAr
ZE9qWHR2Ly8rYWF1dHRrcG5uSEZHdXZEQ0M5T0JCeDZZTHJua2tyUmsKeVpLVVVrcVBQdnBvYXR5
NGNlcmV2WHVhTkdsU21qaHhZdHArKysxVDA2Wk4wNU5QUHBsU1N1bk9PKzlNTFZxMFNJMGFOVXB0
MjdZdApYSTBpcFpRZWUreXgxTFp0MnhRUnFYUG56bW5zMkxFcHBaUWVlZVNSdE9HR0c2YXR0OTQ2
dmZ6eXkybmF0R2xwL2ZYWFR4MDZkRWovCjh6Ly9VK055anhrekpwMXl5aW1yM1Q5eDRzVFV2WHYz
OU90Zi96bzk4OHd6NmFTVFRrcFRwa3dwUFA3Q0N5K2tObTNhcEsyMjJpcjkKL09jL1QyZWZmWFk2
NktDRHF2MURWdzgrK0dCcTFhcFYybjc3N2RNSko1eVFqanp5eUxUUFB2dWtCeDk4c09qOHhvd1pr
MXEzYnAwNgpkdXlZeG8wYmw5NTQ0NDIwelRiYnBCWXRXcVRubm50dXRYbGRldW1scVZHalJ1bTAw
MDRyL05HbGlxcGJqdzgrK0dEYVlJTU5Vb2NPCkhkTEREeitjVWtycHE2KytTajE2OUVnYmJyaGhH
akJnUUhyNjZhZlQrdXV2bi83elAvOHpUWm8wS1cyOTlkYnA3cnZ2VGs4ODhVUWEKT0hCZ0tpMHRy
ZFYycnM2RkYxNllQdmpnZzhMdHl5Ky92Tkx0bE5ac0hOVjFYVmEwTnNaS1ZldThLcjE2OVVvOWV2
UklsMTkrZWJyeQp5aXRUbno1OTBzeVpNMU5LVlcrM210WkJSUys4OEVLNjl0cHJLOTAzZnZ6NHRQ
ZmVlNmVJU0RmZGRGTmF1blRwR3IzR3Q5OSt1OHB4ClVwV2E5cE82anMrbFM1ZW04ODQ3TDBWRWlv
alVwRW1UMUs1ZHV6Unc0TUJLZnpDMW9vcjd6dlRwMDZ1ZDluMzMzVmZsT2k4MnY1cTIKU1UzNzdT
dXZ2Sko2OSs2ZElpSmRlT0dGYWRxMGFYVmVIeSsrK0dMcTJMRmphdGV1WFJvOWVuU2FQbjE2NnR1
M2I0cUlkTVVWVjZRRgpDeGFrcTYrK09rVkVPdUdFRTlJbm4zeFNxekZVMVppcDd0aFExMjFlMHpv
YlAzNTg2dG16WjRxSWRNY2RkNlNsUzVmV2FmM1c5TnhpCnkxUWJuMzc2YVRybm5IUFN4UmRmWE8w
K1d0TjhhdHFXMVkyL2M4ODlON1Z2M3o0dFg3NDhIWHJvb1dudTNMbUZ4MWE5blZMOWppdkYKamdW
WFhIRkYybW1ubmRKMTExMlhycjMyMnZUVG4vNDBMVnk0c003YmJOeTRjWFVhcjkvNXpuY3F2YjdY
WG5zdHJiLysrcWxyMTY3cApra3N1U2FlZmZucWFObTFhcGRmLzRZY2ZwaU9PT0NMZGVPT042YzQ3
NzB5Ly92V3ZxOTJlZi83em4xZTdTdFhISDMrY3Jyenl5blQ2CjZhZXZ0bTVUV25GVnJQNzkrNmNo
UTRhazMvem1OK25TU3k4dFhJV3IyUFJIang2ZG1qVnJWamllclB6WHNXUEh0SHo1OHJUMzNudW4K
SVVPR3BDKysrS0xhWlladnNsb0h5RW9sSlNWcDRzU0o2YTIzM2lwY2dyQ3VsaTVkbWo3NDRJTXF2
MkdWbDVjWERwQU40ZTY3NzA3UApQdnRzbFkrVmw1ZW5xVk9ucnZZRGNNWGxYTHg0Y1VwcHhlVUlp
MW0rZkhuaGNybFZyWnRpODZ1TGlwZmxyVXBkMStQSzE1blMvM3V0Ckt5K3JPWC8rL05VdUwxaGZL
Mk8xdXR0MVVkTTRxbytjWTJWVnZYcjFTaGRjY0VGYXRHaFJtajE3ZHEyL3JqYnJvTGJydUw2dnNh
N2oKcE5oK1VwV3F4bWRLS1EwWk1pUk5uVG8xdmZYV1crbnZmLzk3ZXZycHA5TVBmL2pEU24rZGVG
V3I3anZWVGJzcXRabGZUZHVrMkg1YgpXM1ZaNW1McXN4ODE5RGF2eXpMVVpmM1c5Tno2ak1PcUZG
dm1Zdk9weTdZc0x5OHZQSC84K1BHVkhsdjFka3IxUDY3VTVudlZaNTk5ClZ1c3gweERINnFwZTM1
ZGZmcG1tVFp0VzdTOGNWcG8zYjE2bFMvZld4dEtsUzlPb1VhUFNsMTkrV2ZTNUN4Y3VYS014VkpX
RytyNEcKNjZwR0tXWDRzOHRmZ3krLy9ESmF0R2dSMy8vKzkyUDQ4T0gvdG45Vm0rTFdoYkd5Kys2
N3gzNzc3UmYvL2QvL25YM2UzMVQzM0hOUApEQjgrZkxYTGZ6Nzc3TE94OWRaYnh6YmJiUE9Obmgr
c0tjY1ZZRjFWOUNwWTMwUjMzSEZIREJvMEtEcDE2aFQzM251ditLQmE2OEpZCktTOHZMM3l1Z3Ry
YmUrKzk0OXh6ejQzamp6OCtldmJzR1NVbEpURnIxcXpvMjdmdldvbUIzUE9ETmVHNEFxekwvaVhm
QWZuODg4L2oKNFljZmpxT1BQam82ZHV6NGRTOE82N0IxWWF6Y2Q5OTloUS9QYnJYVlZuSHl5U2Qv
TGN2eFRmVEZGMS9FaXkrK0dETm56b3dERGpoZwpyWWRBN3ZsQmZUbXVBT3V5ZjhrQUFRQUExazFG
TDhNTEFBRFFVQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJCkVBQUFJQnNC
QWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJ
SnVteFo3dzlEc3AKeDNKVTZZanVqYjYyZVFNQUFBM1BPeUFBQUVBMnRRcVFrcThXeFp6UFp0UnJC
cVhMbHNhVVNTOVhleHNBQVBqM1VUUkEvdmFYaCtJLwo5MnNYbzU2NnY4NFRmKyt0OFhIZThiM2lt
cDhlVitWdEFBRGczMHZSQVBsTzMxT2liY2ZPOVpyNGRqdnZHUWNkYzJxMXR3RUFnSDh2CnRUb0Zx
Mm5UWnRFbzZ2ZUI4R2JObWtjMGFsVHRiUUFBNE45SDBhdGdyWlJTZVR4dzJ5OWo1T04vaVBVMzJD
aCtlY2RUMFg2ekxoRVIKTVgvdXJIajAzcUh4d2YrOUhrc1dMNG9mWDM1N1QvZ1pHUUFBRHNWSlJF
RlVkTnRscjFwTnQrU3JSZkdIbXk2T1pzMWJ4R2YvbUJadApPMjRSQXk0WUdpM1dhMW0vVndRQUFL
eXphbjBWckxIUFBoSTc3cjUvM1BEZ3kxRmVYaGJEN3hrU0VSRmxaV1Z4ODJVRDR2dURyb3hyCi96
QTZ1dTYwZTF4MXpsR3hhT0dDV2sxMzhJK1BpTzEyM2pQT3VPaS80NUtiSG9tcGI0MlA2eTQ0b1g2
dkJnQUFXS2ZWT2tCMjM3OXYKOU5qcm9OaWsvV2F4OHg0SHhDZlQzNDJJaUxFamhrZUtGUC8zK2t2
eCt0Z1I4ZTFOT3NUQytYUGo3UWt2RnAzbTZ5K05pSGNtam8zOQpEanNwSWlLYU5tc1doeHg3V3J3
MjV1bVk4c2E0ZXI0a0FBQmdYVlhyQUdsVTRYTWJHMjYwY1pRc1hoUVJFVlBlSEJjYnRXNFR6Wm8x
CmoyYk5ta2YzM2ZhTnEzLzdYR3l6UTgraTA1dzYrZFg0MXJmYlJ0Tm16UXIzYmJ2ekhoRVI4ZUdV
U2JWK0VRQUF3RGREclQ4RFVwMkYKOCtkR2t5Wk5vOGZlQjlmNWE1Y3VXUndMNTgrTmtxOFdSY3NO
Tm95SWlDMjc3aFNObXpTSkpTVmZyZW1pQVFBQTY1ZzEva3ZvN1R0MQppVW5qbm85bFM1Y1U3a3Nw
eFZ1di9xM28xMjdXcFZ1VWw1ZkgrMisvVnJodndlZXpvN3lzTERiZmF2czFYVFFBQUdBZFU2c0FX
YnBrCmNTeGRzdmovM1Y1YUVzdVdsRVJFeEhmNmZqOFd6SjBWL3pQNHJGajB4ZnhZTUc5Mi9POGRW
MFhIemwwaklxSzBkRm1VbFpZV3ZyYmkKN2YvNDd2SFJwbDJubURUdStjTGo3Nzg5SVRicnNsMzAv
STlEMS96VkFRQUE2NVNpQWZMMzUvNFVNMmQ4R0srUEhSRWZUbmtqcGsyWgpGSytQSFJHZnpaZ1c0
MGMvRlZ0czB6MEcvdktPZVBHdkQ4ZEorN1NKZ1VmdkdGMjY3UktidE9zVTc3MzFhcno0elAvR2wx
OThIazhQCnV6UCtiK0xmSzkxdTByUlovUEwySitPVlVVL0VuMzkvUTB4NDZhL3g0alAvRzVmZCts
ZzBhYnJHWjRjQkFBRHJtRVlwcFZUVEU1NSsKcDhhSEMwcVhMWXU1TTJmRXBoMDcxemtlVWtyeDZU
OCtpTWFOR2tlSExiWXUzSDlFZDMrd0VBQUEvcFUwMk5zTXpabzNyeFFQZGRHbwpVYVBvOVArZnNn
VUFBUHpyV3VNUG9RTUFBTlNXQUFFQUFMSXAraGtRQUFDQWh1SWRFQUFBSUJzQkFnQUFaQ05BQUFD
QWJBUUlBQUNRCmpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNO
QUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTIKQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdB
QVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSQpFQUFBSUJz
QkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFB
SUJzQkFnQUFaQ05BCkFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJ
RUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUIKQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFB
QU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQQpBTWhH
Z0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFB
TWhHZ0FBQUFOa0lFQUFBCklCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJB
Z1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0EKYkFRSUFBQ1FqUUFCQUFDeUVTQUFB
RUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeQpF
U0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFB
Q3lFU0FBQUVBMkFnUUFBTWhHCmdBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpR
QUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0IKQWdBQVpDTkFBQUNBYkFRSUFB
Q1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFR
SQpBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFD
QWJBUUlBQUNRalFBQkFBQ3lFU0FBCkFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNO
QUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUEKQU5rSUVBQUFJQnNCQWdB
QVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNC
QWdBQQpaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFB
SUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRCmpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJ
RUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTIKQWdRQUFNaEdnQUFB
QU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdn
QUFBQU5rSQpFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFB
TWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BCkFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJB
Z1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUIKQUFDeUVTQUFB
RUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVT
QUFBRUEyQWdRQQpBTWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFB
Q3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBCklCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpR
QUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0EKYkFRSUFB
Q1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFR
SUFBQ1FqUUFCQUFDeQpFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFD
QWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHCmdBQUFBTmtJRUFBQUlCc0JBZ0FBWkNO
QUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0IKQWdB
QVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNC
QWdBQVpDTkFBQUNBYkFRSQpBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFB
SUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBCkFFQTJBZ1FBQU1oR2dBQUFBTmtJ
RUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUEK
QU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdn
QUFBQU5rSUVBQUFJQnNCQWdBQQpaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFB
TWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRCmpRQUJBQUN5RVNBQUFFQTJB
Z1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFF
QTIKQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVT
QUFBRUEyQWdRQUFNaEdnQUFBQU5rSQpFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFB
Q3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BCkFBQ0FiQVFJQUFDUWpR
QUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFD
UWpRQUIKQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFR
SUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQQpBTWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFD
QWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBCklCc0JBZ0FBWkNO
QUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FB
WkNOQUFBQ0EKYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNC
QWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeQpFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFB
SUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHCmdBQUFBTmtJ
RUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFB
TmtJRUFBQUlCc0IKQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdn
QUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSQpBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFB
TWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBCkFFQTJB
Z1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFF
QTJBZ1FBQU1oR2dBQUEKQU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVT
QUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQQpaQ05BQUFDQWJBUUlBQUNRalFBQkFB
Q3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRCmpR
QUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFD
UWpRQUJBQUN5RVNBQUFFQTIKQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYkFR
SUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSQpFQUFBSUJzQkFnQUFaQ05BQUFD
QWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lFQUFBSUJzQkFnQUFaQ05B
CkFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFBTmtJRUFBQUlCc0JBZ0FB
WkNOQUFBQ0FiQVFJQUFDUWpRQUIKQUFDeUVTQUFBRUEyQWdRQUFNaEdnQUFBQU5rSUVBQUFJQnNC
QWdBQVpDTkFBQUNBYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQQpBTWhHZ0FBQUFOa0lFQUFB
SUJzQkFnQUFaQ05BQUFDQWJBUUlBQUNRalFBQkFBQ3lFU0FBQUVBMkFnUUFBTWhHZ0FBQUFOa0lF
QUFBCklCc0JBZ0FBWkNOQUFBQ0FiQVFJQUFDUWpRQUJBQUN5RVNBQUFFQTJBZ1FBQU1oR2dBQUFB
TmtJRUFBQUlCc0JBZ0FBWkNOQUFBQ0EKYkFRSUFBQ1FqUUFCQUFDeUVTQUFBRUEyQWdRQUFNaEdn
QUFBQU5rSUVBQUFJQnNCQWdBQVpDTkFBQUNBYlA0L25ieUQyVTRIVlFFQQpBQUFBU1VWT1JLNUNZ
SUk9Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115710</attachid>
            <date>2011-11-17 16:53:01 -0800</date>
            <delta_ts>2011-11-17 17:18:26 -0800</delta_ts>
            <desc>Work in progress (needs WebCore.exp.in tweaks)</desc>
            <filename>bug-71745-20111117165300.patch</filename>
            <type>text/plain</type>
            <size>3011</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMTAwNjk2KQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2Miw3ICsxNzYy
LDcgQEAgdm9pZCBEb2N1bWVudDo6c2V0SXNWaWV3U291cmNlKGJvb2wgaXNWaQogICAgIGlmICgh
bV9pc1ZpZXdTb3VyY2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNldFNlY3VyaXR5T3JpZ2lu
KFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJsKCksIHRydWUpKTsKKyAgICBzZXRTZWN1cml0eU9y
aWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlVW5pcXVlKCkpOwogfQogCiB2b2lkIERvY3VtZW50
OjpjcmVhdGVTdHlsZVNlbGVjdG9yKCkKQEAgLTQ0NjcsNyArNDQ2Nyw3IEBAIHZvaWQgRG9jdW1l
bnQ6OmluaXRTZWN1cml0eUNvbnRleHQoKQogICAgIC8vIGxvYWRpbmcgVVJMIHdpdGggYSBmcmVz
aCBjb250ZW50IHNlY3VyaXR5IHBvbGljeS4KICAgICBtX2Nvb2tpZVVSTCA9IG1fdXJsOwogICAg
IGVuZm9yY2VTYW5kYm94RmxhZ3MobV9mcmFtZS0+bG9hZGVyKCktPmVmZmVjdGl2ZVNhbmRib3hG
bGFncygpKTsKLSAgICBzZXRTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1f
dXJsLCBpc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSkpOworICAgIHNldFNlY3VyaXR5T3JpZ2lu
KGlzU2FuZGJveGVkKFNhbmRib3hPcmlnaW4pID8gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1
ZSgpIDogU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtX3VybCkpOwogICAgIHNldENvbnRlbnRTZWN1
cml0eVBvbGljeShDb250ZW50U2VjdXJpdHlQb2xpY3k6OmNyZWF0ZSh0aGlzKSk7CiAKICAgICBp
ZiAoU2VjdXJpdHlQb2xpY3k6OmFsbG93U3Vic3RpdHV0ZURhdGFBY2Nlc3NUb0xvY2FsKCkpIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hlLmNwcAkocmV2
aXNpb24gMTAwNjk1KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL01lbW9yeUNhY2hl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTM3LDcgKzUzNyw3IEBAIHZvaWQgTWVtb3J5Q2FjaGU6
OmdldE9yaWdpbnNXaXRoQ2FjaGUoU2UKIHsKICAgICBDYWNoZWRSZXNvdXJjZU1hcDo6aXRlcmF0
b3IgZSA9IG1fcmVzb3VyY2VzLmVuZCgpOwogICAgIGZvciAoQ2FjaGVkUmVzb3VyY2VNYXA6Oml0
ZXJhdG9yIGl0ID0gbV9yZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZTsgKytpdCkKLSAgICAgICAg
b3JpZ2lucy5hZGQoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShLVVJMKEtVUkwoKSwgaXQtPnNlY29u
ZC0+dXJsKCkpKSk7CisgICAgICAgIG9yaWdpbnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGVG
cm9tU3RyaW5nKGl0LT5zZWNvbmQtPnVybCgpKSk7CiB9CiAKIHZvaWQgTWVtb3J5Q2FjaGU6OnJl
bW92ZUZyb21MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNl
KQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAJKHJldmlzaW9uIDEw
MDY5NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xODIsOSArMTgyLDkgQEAgU2VjdXJpdHlPcmlnaW46OlNlY3VyaXR5T3JpZ2lu
KGNvbnN0IFNlYwogewogfQogCi1QYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKGNvbnN0IEtVUkwmIHVybCwgYm9vbCBmb3JjZVVuaXF1ZSkKK1Bhc3NSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoY29uc3QgS1VSTCYgdXJs
KQogewotICAgIGlmIChmb3JjZVVuaXF1ZSB8fCBzaG91bGRUcmVhdEFzVW5pcXVlT3JpZ2luKHVy
bCkpIHsKKyAgICBpZiAoc2hvdWxkVHJlYXRBc1VuaXF1ZU9yaWdpbih1cmwpKSB7CiAgICAgICAg
IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gYWRvcHRSZWYobmV3IFNlY3VyaXR5T3Jp
Z2luKCkpOwogCiAgICAgICAgIGlmICh1cmwucHJvdG9jb2xJcygiZmlsZSIpKSB7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCShyZXZpc2lvbiAxMDA2OTUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcg
KzM5LDcgQEAgY2xhc3MgS1VSTDsKIAogY2xhc3MgU2VjdXJpdHlPcmlnaW4gOiBwdWJsaWMgVGhy
ZWFkU2FmZVJlZkNvdW50ZWQ8U2VjdXJpdHlPcmlnaW4+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gY3JlYXRlKGNvbnN0IEtVUkwmLCBib29sIGZvcmNl
VW5pcXVlID0gZmFsc2UpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBj
cmVhdGUoY29uc3QgS1VSTCYpOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBjcmVhdGVVbmlxdWUoKTsKIAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBjcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115712</attachid>
            <date>2011-11-17 17:18:31 -0800</date>
            <delta_ts>2011-11-17 20:59:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71745-20111117171830.patch</filename>
            <type>text/plain</type>
            <size>5187</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMDcwMikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDExLTExLTE3ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5pcXVlIFNlY3VyaXR5T3JpZ2lu
cyBzaG91bGRuJ3QgcmVtZW1iZXIgdGhlaXIgb2xkIHNjaGVtZXMgYW5kIGhvc3RzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTc0NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgaXMgdGhlIGZpbmFs
IHN0ZXAgaW4gdGhpcyBzZXJpZXMgb2YgcGF0Y2hlcy4KKworICAgICAgICBUaGlzIHBhdGNoIHJl
bW92ZXMgdGhlIGZvcmNlVW5pcXVlIGZsYWcgZnJvbSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlLgor
ICAgICAgICBOb3csIHdlIGNyZWF0ZSB1bmlxdWUgb3JpZ2lucyB3aXRob3V0IHBhc3NpbmcgaW4g
dGhlIGRvY3VtZW50J3MgVVJMLAorICAgICAgICBwcmV2ZW50aW5nIGluZm9ybWF0aW9uIGZyb20g
dGhlIGRvY3VtZW50J3MgVVJMIGZyb20gbGVha2luZyBpbnRvIHRoZQorICAgICAgICB1bmlxdWUg
b3JpZ2luLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRJc1ZpZXdTb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQpOgorICAgICAg
ICAqIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1v
cnlDYWNoZTo6Z2V0T3JpZ2luc1dpdGhDYWNoZSk6CisgICAgICAgICAgICAtIFVwZGF0ZSB0aGlz
IGNhbGxzaXRlIHRvIHVzZSBjcmVhdGVGcm9tU3RyaW5nLCB3aGljaCBkb2VzIGV4YWN0bHkKKyAg
ICAgICAgICAgICAgd2hhdCB0aGlzIGNvZGUgaXMgZG9pbmcgbWFudWFsbHkuCisgICAgICAgICog
cGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlKToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luLmg6CisKIDIwMTEtMTEt
MTcgIERhdmlkIFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hy
b21pdW1dIENhbGxzIHRvIHBhaW50Q29udGVudHNJZkRpcnR5KCkgYW5kIHVwZGF0ZUNvbXBvc2l0
b3JSZXNvdXJjZXMoKSBzaG91bGQgYmUgYmFsYW5jZWQuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
bgkocmV2aXNpb24gMTAwNjk1KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTM4OCw3ICszODgsNyBAQCBfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3Jp
Z2luMTJpc29sYXRlZENvCiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMTZjcmVhdGVGcm9t
U3RyaW5nRVJLTjNXVEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjI4Y3Jl
YXRlRnJvbURhdGFiYXNlSWRlbnRpZmllckVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE0
U2VjdXJpdHlPcmlnaW42Y3JlYXRlRVJLTjNXVEY2U3RyaW5nRVM0X2kKLV9fWk43V2ViQ29yZTE0
U2VjdXJpdHlPcmlnaW42Y3JlYXRlRVJLTlNfNEtVUkxFYgorX19aTjdXZWJDb3JlMTRTZWN1cml0
eU9yaWdpbjZjcmVhdGVFUktOU180S1VSTEUKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3kx
OHNldExvY2FsTG9hZFBvbGljeUVOUzBfMTVMb2NhbExvYWRQb2xpY3lFCiBfX1pON1dlYkNvcmUx
NFNlY3VyaXR5UG9saWN5MThzaG91bGRIaWRlUmVmZXJyZXJFUktOU180S1VSTEVSS04zV1RGNlN0
cmluZ0UKIF9fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3kyN3Jlc2V0T3JpZ2luQWNjZXNzV2hp
dGVsaXN0c0V2CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDEwMDY5NikK
KysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3
NjIsNyArMTc2Miw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldElzVmlld1NvdXJjZShib29sIGlzVmkK
ICAgICBpZiAoIW1faXNWaWV3U291cmNlKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXRTZWN1
cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCgpLCB0cnVlKSk7CisgICAgc2V0
U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46OmNyZWF0ZVVuaXF1ZSgpKTsKIH0KIAogdm9p
ZCBEb2N1bWVudDo6Y3JlYXRlU3R5bGVTZWxlY3RvcigpCkBAIC00NDY3LDcgKzQ0NjcsNyBAQCB2
b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAvLyBsb2FkaW5nIFVSTCB3
aXRoIGEgZnJlc2ggY29udGVudCBzZWN1cml0eSBwb2xpY3kuCiAgICAgbV9jb29raWVVUkwgPSBt
X3VybDsKICAgICBlbmZvcmNlU2FuZGJveEZsYWdzKG1fZnJhbWUtPmxvYWRlcigpLT5lZmZlY3Rp
dmVTYW5kYm94RmxhZ3MoKSk7Ci0gICAgc2V0U2VjdXJpdHlPcmlnaW4oU2VjdXJpdHlPcmlnaW46
OmNyZWF0ZShtX3VybCwgaXNTYW5kYm94ZWQoU2FuZGJveE9yaWdpbikpKTsKKyAgICBzZXRTZWN1
cml0eU9yaWdpbihpc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSA/IFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVVbmlxdWUoKSA6IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUobV91cmwpKTsKICAgICBzZXRD
b250ZW50U2VjdXJpdHlQb2xpY3koQ29udGVudFNlY3VyaXR5UG9saWN5OjpjcmVhdGUodGhpcykp
OwogCiAgICAgaWYgKFNlY3VyaXR5UG9saWN5OjphbGxvd1N1YnN0aXR1dGVEYXRhQWNjZXNzVG9M
b2NhbCgpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvTWVtb3J5Q2FjaGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9NZW1vcnlDYWNo
ZS5jcHAJKHJldmlzaW9uIDEwMDY5NSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9N
ZW1vcnlDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzNyw3ICs1MzcsNyBAQCB2b2lkIE1l
bW9yeUNhY2hlOjpnZXRPcmlnaW5zV2l0aENhY2hlKFNlCiB7CiAgICAgQ2FjaGVkUmVzb3VyY2VN
YXA6Oml0ZXJhdG9yIGUgPSBtX3Jlc291cmNlcy5lbmQoKTsKICAgICBmb3IgKENhY2hlZFJlc291
cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fcmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGU7ICsraXQp
Ci0gICAgICAgIG9yaWdpbnMuYWRkKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoS1VSTChLVVJMKCks
IGl0LT5zZWNvbmQtPnVybCgpKSkpOworICAgICAgICBvcmlnaW5zLmFkZChTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbVN0cmluZyhpdC0+c2Vjb25kLT51cmwoKSkpOwogfQogCiB2b2lkIE1lbW9y
eUNhY2hlOjpyZW1vdmVGcm9tTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0KENhY2hlZFJlc291cmNl
KiByZXNvdXJjZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCShy
ZXZpc2lvbiAxMDA2OTUpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDkgKzE4Miw5IEBAIFNlY3VyaXR5T3JpZ2luOjpTZWN1
cml0eU9yaWdpbihjb25zdCBTZWMKIHsKIH0KIAotUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4g
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShjb25zdCBLVVJMJiB1cmwsIGJvb2wgZm9yY2VVbmlxdWUp
CitQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKGNvbnN0
IEtVUkwmIHVybCkKIHsKLSAgICBpZiAoZm9yY2VVbmlxdWUgfHwgc2hvdWxkVHJlYXRBc1VuaXF1
ZU9yaWdpbih1cmwpKSB7CisgICAgaWYgKHNob3VsZFRyZWF0QXNVbmlxdWVPcmlnaW4odXJsKSkg
ewogICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IGFkb3B0UmVmKG5ldyBT
ZWN1cml0eU9yaWdpbigpKTsKIAogICAgICAgICBpZiAodXJsLnByb3RvY29sSXMoImZpbGUiKSkg
ewpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAkocmV2aXNpb24gMTAwNjk1
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEtVUkw7CiAKIGNsYXNzIFNlY3VyaXR5T3JpZ2luIDog
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlY3VyaXR5T3JpZ2luPiB7CiBwdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGNyZWF0ZShjb25zdCBLVVJMJiwg
Ym9vbCBmb3JjZVVuaXF1ZSA9IGZhbHNlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1cml0
eU9yaWdpbj4gY3JlYXRlKGNvbnN0IEtVUkwmKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4gY3JlYXRlVW5pcXVlKCk7CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4gY3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>