<?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>95790</bug_id>
          
          <creation_ts>2012-09-04 15:43:44 -0700</creation_ts>
          <short_desc>Allow third-party storage blocking setting to change while a page is loaded</short_desc>
          <delta_ts>2012-09-16 12:28:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>96859</dependson>
    
    <dependson>96889</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Vicki Pfau">jeffrey+webkit</reporter>
          <assigned_to name="Vicki Pfau">jeffrey+webkit</assigned_to>
          <cc>beidson</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gustavo</cc>
    
    <cc>philn</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>711519</commentid>
    <comment_count>0</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-09-04 15:43:44 -0700</bug_when>
    <thetext>The third-party storage blocking setting should affect pages that are already loaded, blocking (or unblocking, depending on the change) new interactions with third-party storage mechanisms and not just taking effect when a page is reloaded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716779</commentid>
    <comment_count>1</comment_count>
      <attachid>163265</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-09-10 19:09:56 -0700</bug_when>
    <thetext>Created attachment 163265
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716785</commentid>
    <comment_count>2</comment_count>
      <attachid>163265</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-10 19:40:46 -0700</bug_when>
    <thetext>Comment on attachment 163265
Patch

Attachment 163265 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13818188</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716805</commentid>
    <comment_count>3</comment_count>
      <attachid>163265</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2012-09-10 20:58:18 -0700</bug_when>
    <thetext>Comment on attachment 163265
Patch

Attachment 163265 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/13825062</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717587</commentid>
    <comment_count>4</comment_count>
      <attachid>163451</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-09-11 14:58:34 -0700</bug_when>
    <thetext>Created attachment 163451
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717694</commentid>
    <comment_count>5</comment_count>
      <attachid>163473</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-09-11 16:18:37 -0700</bug_when>
    <thetext>Created attachment 163473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718776</commentid>
    <comment_count>6</comment_count>
      <attachid>163710</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-09-12 15:04:17 -0700</bug_when>
    <thetext>Created attachment 163710
More tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718808</commentid>
    <comment_count>7</comment_count>
      <attachid>163710</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-09-12 15:30:24 -0700</bug_when>
    <thetext>Comment on attachment 163710
More tests

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

The comment about asynchronous init doesn&apos;t necessarily need to be resolved now, but it does need a bug filed about it.

My other comments are more pressing to me.

&gt; Source/WebKit2/PluginProcess/PluginControllerProxy.cpp:573
&gt; +    m_storageBlockingPolicy = static_cast&lt;SecurityOrigin::StorageBlockingPolicy&gt;(storageBlockingPolicy);
&gt; +
&gt; +    if (!m_isPrivateBrowsingEnabled)
&gt; +        m_plugin-&gt;storageBlockingStateChanged(m_storageBlockingPolicy);
&gt; +}
&gt; +

We only update the storage blocking setting on each plug-in while private browsing is disabled?

So what if the storage blocking setting changes while private browsing is enabled, then the user later disables private browsing?  Do the plug-in instances get told about the storage blocking setting then?

It feels to me like we should always pipe this through.

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp:959
&gt; +void NetscapePlugin::storageBlockingStateChanged(SecurityOrigin::StorageBlockingPolicy storageBlockingPolicy)
&gt; +{
&gt; +    privateBrowsingStateChanged(storageBlockingPolicy != SecurityOrigin::AllowAllStorage);
&gt; +}

I think we should always pass through a call to storageBlockingStateChanged and the NetscapePlugin remembers both the current private browsing and storage blocking settings.  Whenever *either* of them changes we calculate whether or not we need to update the plugin code or not.

&gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:591
&gt; +void PluginView::storageBlockingStateChanged(WebCore::SecurityOrigin::StorageBlockingPolicy storageBlockingPolicy)
&gt; +{
&gt; +    // The plug-in can be null here if it failed to initialize.
&gt; +    if (!m_isInitialized || !m_plugin)
&gt; +        return;
&gt; +
&gt; +    m_plugin-&gt;storageBlockingStateChanged(storageBlockingPolicy);
&gt; +}

In the brave new world of asynchronous plug-in initialization, we probably need to store off the new StorageBlockingPolicy value (as well as any new private browsing settings) so we can update the plug-in when it does actually finish initializing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718814</commentid>
    <comment_count>8</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-09-12 15:36:55 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 163710 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163710&amp;action=review
&gt; 
&gt; The comment about asynchronous init doesn&apos;t necessarily need to be resolved now, but it does need a bug filed about it.
&gt; 
&gt; My other comments are more pressing to me.
&gt; 
&gt; &gt; Source/WebKit2/PluginProcess/PluginControllerProxy.cpp:573
&gt; &gt; +    m_storageBlockingPolicy = static_cast&lt;SecurityOrigin::StorageBlockingPolicy&gt;(storageBlockingPolicy);
&gt; &gt; +
&gt; &gt; +    if (!m_isPrivateBrowsingEnabled)
&gt; &gt; +        m_plugin-&gt;storageBlockingStateChanged(m_storageBlockingPolicy);
&gt; &gt; +}
&gt; &gt; +
&gt; 
&gt; We only update the storage blocking setting on each plug-in while private browsing is disabled?
&gt; 
&gt; So what if the storage blocking setting changes while private browsing is enabled, then the user later disables private browsing?  Do the plug-in instances get told about the storage blocking setting then?
&gt; 
&gt; It feels to me like we should always pipe this through.

I would agree, but that would require the state of private browsing and storage blocking to be stored in each plugin. As you say later, that probably should be done anyway, but I was trying to approach this without having to do that. As for the case you mentioned, I believe the test storage-blocking-strengthened-private-browsing-plugin.html covers that, and it passes as would be expected:

- Turn private browsing on.
- Turn storage blocking all the way up.
- Turn private browsing off.
- The plugin still stays in its faux-private browsing mode, as desired.

Perhaps this wasn&apos;t the case you were talking about? But I can modify the patch to store the values of the states as needed.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp:959
&gt; &gt; +void NetscapePlugin::storageBlockingStateChanged(SecurityOrigin::StorageBlockingPolicy storageBlockingPolicy)
&gt; &gt; +{
&gt; &gt; +    privateBrowsingStateChanged(storageBlockingPolicy != SecurityOrigin::AllowAllStorage);
&gt; &gt; +}
&gt; 
&gt; I think we should always pass through a call to storageBlockingStateChanged and the NetscapePlugin remembers both the current private browsing and storage blocking settings.  Whenever *either* of them changes we calculate whether or not we need to update the plugin code or not.
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/PluginView.cpp:591
&gt; &gt; +void PluginView::storageBlockingStateChanged(WebCore::SecurityOrigin::StorageBlockingPolicy storageBlockingPolicy)
&gt; &gt; +{
&gt; &gt; +    // The plug-in can be null here if it failed to initialize.
&gt; &gt; +    if (!m_isInitialized || !m_plugin)
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    m_plugin-&gt;storageBlockingStateChanged(storageBlockingPolicy);
&gt; &gt; +}
&gt; 
&gt; In the brave new world of asynchronous plug-in initialization, we probably need to store off the new StorageBlockingPolicy value (as well as any new private browsing settings) so we can update the plug-in when it does actually finish initializing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718940</commentid>
    <comment_count>9</comment_count>
      <attachid>163751</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-09-12 17:59:24 -0700</bug_when>
    <thetext>Created attachment 163751
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718972</commentid>
    <comment_count>10</comment_count>
      <attachid>163751</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-12 18:46:46 -0700</bug_when>
    <thetext>Comment on attachment 163751
Patch

Attachment 163751 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13824928</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719007</commentid>
    <comment_count>11</comment_count>
      <attachid>163751</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-12 20:15:20 -0700</bug_when>
    <thetext>Comment on attachment 163751
Patch

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

New failing tests:
http/tests/security/storage-blocking-loosened-private-browsing-plugin.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719011</commentid>
    <comment_count>12</comment_count>
      <attachid>163751</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-12 20:42:23 -0700</bug_when>
    <thetext>Comment on attachment 163751
Patch

Attachment 163751 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13822999</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719802</commentid>
    <comment_count>13</comment_count>
      <attachid>163937</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-09-13 12:40:12 -0700</bug_when>
    <thetext>Created attachment 163937
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720158</commentid>
    <comment_count>14</comment_count>
      <attachid>163937</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-09-13 17:29:58 -0700</bug_when>
    <thetext>Comment on attachment 163937
Patch

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

I like this one *MUCH* better.

I have a few comments.  r+, but please address them before landing.

&gt; Source/WebCore/page/Page.cpp:1009
&gt; +void Page::storageBlockingStateChanged()

I think this method should get the same comment privateBrowsingStateChanged has.

&gt; Source/WebCore/page/Page.cpp:1031
&gt; +void Page::privateBrowsingStateChanged()
&gt; +{
&gt; +    bool privateBrowsingEnabled = m_settings-&gt;privateBrowsingEnabled();
&gt; +
&gt; +    for (Frame* frame = mainFrame(); frame; frame = frame-&gt;tree()-&gt;traverseNext())
&gt; +        frame-&gt;document()-&gt;privateBrowsingStateDidChange();
&gt; +
&gt; +    // Collect the PluginViews in to a vector to ensure that action the plug-in takes
&gt; +    // from below privateBrowsingStateChanged does not affect their lifetime.
&gt; +    Vector&lt;RefPtr&lt;PluginViewBase&gt;, 32&gt; pluginViewBases;
&gt; +    collectPluginViews(pluginViewBases);

I think this comment is useful, and its usefulness also applies to the new storageBlockingStateChanged() method

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp:972
&gt; +void NetscapePlugin::enactPrivateBrowsingState()

&quot;enact&quot; sounds like it is always enabling private browsing.

I&apos;d rather see &quot;updatePrivateBrowsingState&quot; since it both enables and disables it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720161</commentid>
    <comment_count>15</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-09-13 17:35:01 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 163937 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=163937&amp;action=review
&gt; 
&gt; I like this one *MUCH* better.
&gt; 
&gt; I have a few comments.  r+, but please address them before landing.
&gt; 
&gt; &gt; Source/WebCore/page/Page.cpp:1009
&gt; &gt; +void Page::storageBlockingStateChanged()
&gt; 
&gt; I think this method should get the same comment privateBrowsingStateChanged has.
&gt; 
&gt; &gt; Source/WebCore/page/Page.cpp:1031
&gt; &gt; +void Page::privateBrowsingStateChanged()
&gt; &gt; +{
&gt; &gt; +    bool privateBrowsingEnabled = m_settings-&gt;privateBrowsingEnabled();
&gt; &gt; +
&gt; &gt; +    for (Frame* frame = mainFrame(); frame; frame = frame-&gt;tree()-&gt;traverseNext())
&gt; &gt; +        frame-&gt;document()-&gt;privateBrowsingStateDidChange();
&gt; &gt; +
&gt; &gt; +    // Collect the PluginViews in to a vector to ensure that action the plug-in takes
&gt; &gt; +    // from below privateBrowsingStateChanged does not affect their lifetime.
&gt; &gt; +    Vector&lt;RefPtr&lt;PluginViewBase&gt;, 32&gt; pluginViewBases;
&gt; &gt; +    collectPluginViews(pluginViewBases);
&gt; 
&gt; I think this comment is useful, and its usefulness also applies to the new storageBlockingStateChanged() method

Alright, I can add that comment back and update its wording.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp:972
&gt; &gt; +void NetscapePlugin::enactPrivateBrowsingState()
&gt; 
&gt; &quot;enact&quot; sounds like it is always enabling private browsing.
&gt; 
&gt; I&apos;d rather see &quot;updatePrivateBrowsingState&quot; since it both enables and disables it.

My problem here is that there&apos;s already a setPrivateBrowsingState function that is slightly different than this. I&apos;m wondering if there&apos;s a better name, like updatePluginPrivateBrowsingState or updateInternalPrivateBrowsingState that makes it less ambiguous which one does what.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720175</commentid>
    <comment_count>16</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-09-13 17:58:31 -0700</bug_when>
    <thetext>&gt; &gt; &gt; Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp:972
&gt; &gt; &gt; +void NetscapePlugin::enactPrivateBrowsingState()
&gt; &gt; 
&gt; &gt; &quot;enact&quot; sounds like it is always enabling private browsing.
&gt; &gt; 
&gt; &gt; I&apos;d rather see &quot;updatePrivateBrowsingState&quot; since it both enables and disables it.
&gt; 
&gt; My problem here is that there&apos;s already a setPrivateBrowsingState function that is slightly different than this. I&apos;m wondering if there&apos;s a better name, like updatePluginPrivateBrowsingState or updateInternalPrivateBrowsingState that makes it less ambiguous which one does what.

This is about a concept called &quot;PrivateMode&quot; for Netscape plug-ins - How about we call it &quot;updateNetscapePrivateMode&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721096</commentid>
    <comment_count>17</comment_count>
      <attachid>164219</attachid>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-09-14 13:42:43 -0700</bug_when>
    <thetext>Created attachment 164219
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721133</commentid>
    <comment_count>18</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-09-14 14:31:14 -0700</bug_when>
    <thetext>Committed r128653: &lt;http://trac.webkit.org/changeset/128653&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721141</commentid>
    <comment_count>19</comment_count>
    <who name="Vicki Pfau">jeffrey+webkit</who>
    <bug_when>2012-09-14 14:36:10 -0700</bug_when>
    <thetext>&lt;rdar://problem/12303831&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163265</attachid>
            <date>2012-09-10 19:09:56 -0700</date>
            <delta_ts>2012-09-11 14:58:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95790-20120910190952.patch</filename>
            <type>text/plain</type>
            <size>44291</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYwMzNhNjBhMzU4MTRk
M2U4MzJmMWViYzM5NzBmYzRiNGQ4MjIyMS4uZDgwYjc0MzRkZDNhZGQyNWMwNjM2MjgxZmQwNjY2
NmFhOTFkOWM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTA5LTEwICBKZWZm
cmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdGhpcmQtcGFydHkg
c3RvcmFnZSBibG9ja2luZyBzZXR0aW5nIHRvIGNoYW5nZSB3aGlsZSBhIHBhZ2UgaXMgbG9hZGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTc5MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBpcGUgdGhy
b3VnaCBjaGFuZ2VzIHRvIHRoZSBzdG9yYWdlIGJsb2NraW5nIHBvbGljeSB0byBlYWNoIGRvY3Vt
ZW50IGFuZCBwbHVnaW4uCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvc2VjdXJpdHkvc3Rv
cmFnZS1ibG9ja2luZy1sb29zZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWwKKyAgICAgICAgICAgICAg
IGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wbHVnaW4uaHRt
bAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxv
b3NlbmVkLXNoYXJlZC13b3JrZXIuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1
cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXdlYnNxbC5odG1sCisgICAgICAgICAgICAg
ICBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLWxvY2Fs
LXN0b3JhZ2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdl
LWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wbHVnaW4uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90
ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1zaGFyZWQtd29ya2Vy
Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2lu
Zy1zdHJlbmd0aGVuZWQtd2Vic3FsLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6IFBpcGUgY2hhbmdlcyB0aHJvdWdoIHRvIHRoZSBE
b2N1bWVudCdzIFNlY3VyaXR5T3JpZ2luLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN0
b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAqIHBhZ2Uv
UGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpjb2xsZWN0UGx1Z2luVmlld3MpOiBS
ZWZhY3RvcmVkIG91dCBpbnRvIGEgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCk6IFBpcGUgY2hh
bmdlcyB0aHJvdWdoIHRvIGVhY2ggUGx1Z2luVmlldy4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCk6CisgICAgICAgICogcGFnZS9QYWdlLmg6Cisg
ICAgICAgIChQYWdlKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNldHRpbmdzOjpzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3kpOiBUZWxsIFBhZ2VzIGFi
b3V0IGNoYW5nZXMgdG8gdGhlIHN0b3JhZ2UgYmxvY2tpbmcgcG9saWN5LgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAoU2V0dGluZ3MpOgor
ICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
dWdpblZpZXdCYXNlOjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQpOgorCiAyMDEyLTA5LTA2
ICBKZWZmcmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CiAKICAgICAgICAgRXh0ZW5kIHRoaXJk
LXBhcnR5IHN0b3JhZ2UgYmxvY2tpbmcgQVBJIHRvIG9wdGlvbmFsbHkgYWxsb3cgYmxvY2tpbmcg
YWxsIHN0b3JhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhZWY3OGYyNmRjZDUxZDllZmQ1MDk4NjE5YjkyNjAy
MGYwYzJjNDFhLi4xZDc3MDhkMDQ2MzhhMjNmOWE5ZWVjNTg0NjQyMDBmZGEwZTdiMGFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTItMDktMTAgIEplZmZyZXkgUGZhdSAgPGpwZmF1
QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyB0aGlyZC1wYXJ0eSBzdG9yYWdlIGJsb2NraW5n
IHNldHRpbmcgdG8gY2hhbmdlIHdoaWxlIGEgcGFnZSBpcyBsb2FkZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5mb3JtIHBsdWdpbnMgYWJvdXQgY2hh
bmdlcyB0byB0aGUgc3RvcmFnZSBibG9ja2luZyBwb2xpY3kgYnkgd2F5IG9mIHRoZSBwcml2YXRl
IGJyb3dzaW5nIGZlYXR1cmUuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6
c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
ICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaDoKKyAgICAgICAgKFBsdWdp
bkNvbnRyb2xsZXJQcm94eSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9s
bGVyUHJveHkubWVzc2FnZXMuaW46IEFkZCBXSzIgbWVzc2FnZSBmb3Igc3RvcmFnZUJsb2NraW5n
U3RhdGVDaGFuZ2VkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzdG9yYWdl
QmxvY2tpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKE5ldHNj
YXBlUGx1Z2luKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZW
aWV3Lmg6CisgICAgICAgIChCdWlsdEluUERGVmlldyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5tbTogVHJlYXQgc3RvcmFnZUJsb2NraW5nU3RhdGVD
aGFuZ2VkIGFzIGEgbm8tb3AuCisgICAgICAgIChXZWJLaXQ6OkJ1aWx0SW5QREZWaWV3OjpzdG9y
YWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6IEFkZCBwdXJlIHZpcnR1YWwgc3RvcmFnZUJsb2Nr
aW5nU3RhdGVDaGFuZ2VkIG1ldGhvZC4KKyAgICAgICAgKFBsdWdpbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJveHk6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oOgorICAgICAgICAoUGx1
Z2luUHJveHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuaDoKKyAgICAgICAgKFBsdWdpblZpZXcpOgorCiAyMDEyLTA5LTA2ICBKZWZmcmV5IFBm
YXUgIDxqcGZhdUBhcHBsZS5jb20+CiAKICAgICAgICAgRXh0ZW5kIHRoaXJkLXBhcnR5IHN0b3Jh
Z2UgYmxvY2tpbmcgQVBJIHRvIG9wdGlvbmFsbHkgYWxsb3cgYmxvY2tpbmcgYWxsIHN0b3JhZ2UK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYjQ3NjlmOTE4MjU0OTFkNDIzNzY2MTg4YmZjOTk5ZGVi
MmYzMWU1MC4uNTQ4ZTU5MzUyNTA5NmUxYzM1NzdmZWQ2N2Q1NmU0Y2UwZGJkYjU2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KQEAgLTg3OCw2ICs4NzgsNyBAQCBfX1pON1dlYkNvcmU4U2V0dGluZ3My
M3NldFVzZXNFbmNvZGluZ0RldGVjdG9yRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI0c2V0QXBw
bGljYXRpb25DaHJvbWVNb2RlRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI0c2V0RE5TUHJlZmV0
Y2hpbmdFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI0c2V0TW9ja1Njcm9sbGJhcnNF
bmFibGVkRWIKK19fWk43V2ViQ29yZThTZXR0aW5nczI0c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5
RU5TXzE0U2VjdXJpdHlPcmlnaW4yMVN0b3JhZ2VCbG9ja2luZ1BvbGljeUUKIF9fWk43V2ViQ29y
ZThTZXR0aW5nczI0c2V0VGV4dEFyZWFzQXJlUmVzaXphYmxlRWIKIF9fWk43V2ViQ29yZThTZXR0
aW5nczI1c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3My
NXNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRFYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXgg
OTc4MGYyNDZkYjcyNDc5ZTRmNDY0MzEzZGM2ODI0NzQxMmJiMjczNy4uYjlkNTUxYTY1NzllNDhm
YjhhZDExYzlkNzIxNDIzNDhiMGVmNzYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00
NTQxLDYgKzQ1NDEsMTIgQEAgdm9pZCBEb2N1bWVudDo6dW5yZWdpc3RlckZvck1lZGlhVm9sdW1l
Q2FsbGJhY2tzKEVsZW1lbnQqIGUpCiAgICAgbV9tZWRpYVZvbHVtZUNhbGxiYWNrRWxlbWVudHMu
cmVtb3ZlKGUpOwogfQogCit2b2lkIERvY3VtZW50OjpzdG9yYWdlQmxvY2tpbmdTdGF0ZURpZENo
YW5nZSgpCit7CisgICAgaWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IHRoaXMtPnNldHRpbmdzKCkp
CisgICAgICAgIHNlY3VyaXR5T3JpZ2luKCktPnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShzZXR0
aW5ncy0+c3RvcmFnZUJsb2NraW5nUG9saWN5KCkpOworfQorCiB2b2lkIERvY3VtZW50Ojpwcml2
YXRlQnJvd3NpbmdTdGF0ZURpZENoYW5nZSgpIAogewogICAgIEhhc2hTZXQ8RWxlbWVudCo+Ojpp
dGVyYXRvciBlbmQgPSBtX3ByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZEVsZW1lbnRzLmVuZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBkYWZlMDRiZTMxNGE0YTdiNTAxMDU1Yzc1NWJhNTll
ZTA0NmQ2MmQzLi40MTc3NjI1Mjk1ZjJjZjY0M2QzYjcyMTk3MWVkOTA1MGRlMjU1NWMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaApAQCAtMTAxNiw2ICsxMDE2LDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCByZWdpc3RlckZvclByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZENhbGxiYWNrcyhFbGVtZW50
Kik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRm9yUHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkQ2Fs
bGJhY2tzKEVsZW1lbnQqKTsKKyAgICB2b2lkIHN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdl
KCk7CiAgICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZURpZENoYW5nZSgpOwogCiAgICAgdm9p
ZCBzZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAy
OTgzODA4ZWFjYWMzMTIwOTZlMjliYTFmZGY3Y2E5OGQzMjNkMzQ3Li4xN2JmYTBmMmJkNTE0ODc1
NDY0MGE4NjQ5ZmU2Mzk5NzcwNGQzMmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTU1LDcgKzU1
LDYgQEAKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCiAj
aW5jbHVkZSAiUGx1Z2luVmlldy5oIgotI2luY2x1ZGUgIlBsdWdpblZpZXdCYXNlLmgiCiAjaW5j
bHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2Vy
LmgiCiAjaW5jbHVkZSAiUmVuZGVyQXJlbmEuaCIKQEAgLTk4OCwxNiArOTg3LDggQEAgdm9pZCBQ
YWdlOjpkbnNQcmVmZXRjaGluZ1N0YXRlQ2hhbmdlZCgpCiAgICAgICAgIGZyYW1lLT5kb2N1bWVu
dCgpLT5pbml0RE5TUHJlZmV0Y2goKTsKIH0KIAotdm9pZCBQYWdlOjpwcml2YXRlQnJvd3NpbmdT
dGF0ZUNoYW5nZWQoKQordm9pZCBQYWdlOjpjb2xsZWN0UGx1Z2luVmlld3MoVmVjdG9yPFJlZlB0
cjxQbHVnaW5WaWV3QmFzZT4sIDMyPiYgcGx1Z2luVmlld0Jhc2VzKQogewotICAgIGJvb2wgcHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCA9IG1fc2V0dGluZ3MtPnByaXZhdGVCcm93c2luZ0VuYWJsZWQo
KTsKLQotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKQotICAgICAgICBmcmFtZS0+ZG9jdW1lbnQo
KS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoKTsKLQotICAgIC8vIENvbGxlY3QgdGhl
IFBsdWdpblZpZXdzIGluIHRvIGEgdmVjdG9yIHRvIGVuc3VyZSB0aGF0IGFjdGlvbiB0aGUgcGx1
Zy1pbiB0YWtlcwotICAgIC8vIGZyb20gYmVsb3cgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2Vk
IGRvZXMgbm90IGFmZmVjdCB0aGVpciBsaWZldGltZS4KLSAgICBWZWN0b3I8UmVmUHRyPFBsdWdp
blZpZXdCYXNlPiwgMzI+IHBsdWdpblZpZXdCYXNlczsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9
IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQo
KSkgewogICAgICAgICBGcmFtZVZpZXcqIHZpZXcgPSBmcmFtZS0+dmlldygpOwogICAgICAgICBp
ZiAoIXZpZXcpCkBAIC0xMDEzLDYgKzEwMDQsMzUgQEAgdm9pZCBQYWdlOjpwcml2YXRlQnJvd3Np
bmdTdGF0ZUNoYW5nZWQoKQogICAgICAgICAgICAgICAgIHBsdWdpblZpZXdCYXNlcy5hcHBlbmQo
c3RhdGljX2Nhc3Q8UGx1Z2luVmlld0Jhc2UqPih3aWRnZXQpKTsKICAgICAgICAgfQogICAgIH0K
K30KKwordm9pZCBQYWdlOjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoKQoreworICAgIFNl
Y3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3kgc3RvcmFnZUJsb2NraW5nUG9saWN5
ID0gbV9zZXR0aW5ncy0+c3RvcmFnZUJsb2NraW5nUG9saWN5KCk7CisKKyAgICBmb3IgKEZyYW1l
KiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2
ZXJzZU5leHQoKSkKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnN0b3JhZ2VCbG9ja2luZ1N0
YXRlRGlkQ2hhbmdlKCk7CisKKyAgICAvLyBDb2xsZWN0IHRoZSBQbHVnaW5WaWV3cyBpbiB0byBh
IHZlY3RvciB0byBlbnN1cmUgdGhhdCBhY3Rpb24gdGhlIHBsdWctaW4gdGFrZXMKKyAgICAvLyBm
cm9tIGJlbG93IHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCBkb2VzIG5vdCBhZmZlY3QgdGhl
aXIgbGlmZXRpbWUuCisgICAgVmVjdG9yPFJlZlB0cjxQbHVnaW5WaWV3QmFzZT4sIDMyPiBwbHVn
aW5WaWV3QmFzZXM7CisgICAgY29sbGVjdFBsdWdpblZpZXdzKHBsdWdpblZpZXdCYXNlcyk7CisK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBsdWdpblZpZXdCYXNlcy5zaXplKCk7ICsraSkK
KyAgICAgICAgcGx1Z2luVmlld0Jhc2VzW2ldLT5zdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQo
c3RvcmFnZUJsb2NraW5nUG9saWN5KTsKK30KKwordm9pZCBQYWdlOjpwcml2YXRlQnJvd3NpbmdT
dGF0ZUNoYW5nZWQoKQoreworICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IG1fc2V0
dGluZ3MtPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKworICAgIGZvciAoRnJhbWUqIGZyYW1l
ID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4
dCgpKQorICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRD
aGFuZ2UoKTsKKworICAgIC8vIENvbGxlY3QgdGhlIFBsdWdpblZpZXdzIGluIHRvIGEgdmVjdG9y
IHRvIGVuc3VyZSB0aGF0IGFjdGlvbiB0aGUgcGx1Zy1pbiB0YWtlcworICAgIC8vIGZyb20gYmVs
b3cgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkIGRvZXMgbm90IGFmZmVjdCB0aGVpciBsaWZl
dGltZS4KKyAgICBWZWN0b3I8UmVmUHRyPFBsdWdpblZpZXdCYXNlPiwgMzI+IHBsdWdpblZpZXdC
YXNlczsKKyAgICBjb2xsZWN0UGx1Z2luVmlld3MocGx1Z2luVmlld0Jhc2VzKTsKIAogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcGx1Z2luVmlld0Jhc2VzLnNpemUoKTsgKytpKQogICAgICAg
ICBwbHVnaW5WaWV3QmFzZXNbaV0tPnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChwcml2YXRl
QnJvd3NpbmdFbmFibGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKaW5kZXggYTIxOGQ1ZDRjYTU5YjViN2E0MmRh
YjQ0ZDdiZWE3NDBlZTU4MzZlMS4uMWQ1NzQwY2Q3OThlM2Q4ODUxNzEzMWEwMjhhOTMwZGExYmYx
MWJkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQYWdlVmlz
aWJpbGl0eVN0YXRlLmgiCiAjaW5jbHVkZSAiUGFnaW5hdGlvbi5oIgogI2luY2x1ZGUgIlBsYXRm
b3JtU2NyZWVuLmgiCisjaW5jbHVkZSAiUGx1Z2luVmlld0Jhc2UuaCIKICNpbmNsdWRlICJSZWdp
b24uaCIKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgogI2luY2x1ZGUgIlZpZXdwb3J0QXJn
dW1lbnRzLmgiCkBAIC0yNzEsNiArMjcyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBjb25zdCBTdHJpbmcmIHVzZXJTdHlsZVNoZWV0KCkgY29uc3Q7CiAKICAgICAgICAgdm9pZCBk
bnNQcmVmZXRjaGluZ1N0YXRlQ2hhbmdlZCgpOworICAgICAgICB2b2lkIHN0b3JhZ2VCbG9ja2lu
Z1N0YXRlQ2hhbmdlZCgpOwogICAgICAgICB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdl
ZCgpOwogCiAgICAgICAgIHN0YXRpYyB2b2lkIHNldERlYnVnZ2VyRm9yQWxsUGFnZXMoSlNDOjpE
ZWJ1Z2dlciopOwpAQCAtMzUwLDYgKzM1Miw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdm9pZCBzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUpOwogICAgICAgICBkb3VibGUg
bWluaW11bVRpbWVySW50ZXJ2YWwoKSBjb25zdDsKIAorICAgICAgICB2b2lkIGNvbGxlY3RQbHVn
aW5WaWV3cyhWZWN0b3I8UmVmUHRyPFBsdWdpblZpZXdCYXNlPiwgMzI+JiBwbHVnaW5WaWV3QmFz
ZXMpOworCiAgICAgICAgIE93blB0cjxDaHJvbWU+IG1fY2hyb21lOwogICAgICAgICBPd25QdHI8
RHJhZ0NhcmV0Q29udHJvbGxlcj4gbV9kcmFnQ2FyZXRDb250cm9sbGVyOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuY3BwCmluZGV4IGYyNTE1MGI1MTZjMzk2NTM1YzM4YmVmY2EzY2IyYTJhNjhmZWVh
MGYuLjZmMWQzZmEwODFmMDEzOTNmMDkyZjE0MGY1OTk0Zjk2ODJmMTVhNzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuY3BwCkBAIC05MzEsNiArOTMxLDE1IEBAIHZvaWQgU2V0dGluZ3M6OnNldExv
YWREZWZlcnJpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX2xvYWREZWZlcnJpbmdFbmFi
bGVkID0gZW5hYmxlZDsKIH0KIAordm9pZCBTZXR0aW5nczo6c2V0U3RvcmFnZUJsb2NraW5nUG9s
aWN5KFNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3kgZW5hYmxlZCkKK3sKKyAg
ICBpZiAobV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgPSBlbmFibGVkOworICAgIG1fcGFnZS0+
c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKCk7Cit9CisKIHZvaWQgU2V0dGluZ3M6OnNldFRp
bGVkQmFja2luZ1N0b3JlRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAgbV90aWxlZEJhY2tp
bmdTdG9yZUVuYWJsZWQgPSBlbmFibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCmluZGV4IDZmYTNi
YzAyNGI4YjhjMmY5YWNjMGVkMDNkMjYxOWQ0NjY1MzI5NjMuLjM5YTBhODUwODNjOGYwZDk5ZGMx
YmEyOGM0YWQ4YTRhZjJhYjQ0MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKQEAgLTYwMiw3ICs2
MDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0V2luZG93Rm9jdXNS
ZXN0cmljdGVkKGJvb2wgcmVzdHJpY3RlZCkgeyBtX3dpbmRvd0ZvY3VzUmVzdHJpY3RlZCA9IHJl
c3RyaWN0ZWQ7IH0KICAgICAgICAgYm9vbCB3aW5kb3dGb2N1c1Jlc3RyaWN0ZWQoKSBjb25zdCB7
IHJldHVybiBtX3dpbmRvd0ZvY3VzUmVzdHJpY3RlZDsgfQogCi0gICAgICAgIHZvaWQgc2V0U3Rv
cmFnZUJsb2NraW5nUG9saWN5KFNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3kg
cG9saWN5KSB7IG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ID0gcG9saWN5OyB9CisgICAgICAgIHZv
aWQgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KFNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tp
bmdQb2xpY3kpOwogICAgICAgICBTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5
IHN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZUJsb2NraW5n
UG9saWN5OyB9CiAKICAgICAgICAgdm9pZCBzZXRTY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdF
bmFibGVkKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5W
aWV3QmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oCmluZGV4
IDMxMmQ1N2MwOWQzNzgzMGI4NjNjOGQyODM5MzFkN2QxMjdkZDIxNjcuLmQyMWFlNDVmM2Q1N2Ji
YTc2MDhkZTlkZWNhNTU1MThjNTc1NzY0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luVmlld0Jhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdp
blZpZXdCYXNlLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJXaWRnZXQuaCIKICNpbmNs
dWRlICJHcmFwaGljc0xheWVyLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKKyNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKQEAgLTQ5LDYgKzUwLDcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICB2
aXJ0dWFsIEpTQzo6SlNPYmplY3QqIHNjcmlwdE9iamVjdChKU0M6OkpTR2xvYmFsT2JqZWN0Kikg
eyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgdm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5n
ZWQoU2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sKSB7IH0KICAgICB2aXJ0dWFs
IGJvb2wgZ2V0Rm9ybVZhbHVlKFN0cmluZyYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBib29sIHNjcm9sbChTY3JvbGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5KSB7IHJldHVy
biBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVn
aW5Db250cm9sbGVyUHJveHkuY3BwCmluZGV4IDJhZDQxZGFhNWMyYThlNTgwOGZiYmMzM2I2MzM3
NTUwNTk2ZDY3ZGMuLjBjZTc2ZTI0M2I0OGY5MzFkYjFkOTc2MDg3ZDJiM2NjMjVlYjNkM2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eS5jcHAKQEAgLTU2Myw2ICs1NjMsMTQgQEAgdm9pZCBQbHVnaW5Db250cm9sbGVyUHJv
eHk6OmdldFBsdWdpblNjcmlwdGFibGVOUE9iamVjdCh1aW50NjRfdCYgcGx1Z2luU2NyaXB0YWIK
ICAgICByZWxlYXNlTlBPYmplY3QocGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0KTsKIH0KIAordm9p
ZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCh1aW50
MzJfdCBzdG9yYWdlQmxvY2tpbmdQb2xpY3kpCit7CisgICAgbV9zdG9yYWdlQmxvY2tpbmdQb2xp
Y3kgPSBzdGF0aWNfY2FzdDxTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5Pihz
dG9yYWdlQmxvY2tpbmdQb2xpY3kpOworCisgICAgaWYgKCFtX2lzUHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCkKKyAgICAgICAgbV9wbHVnaW4tPnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZChtX3N0
b3JhZ2VCbG9ja2luZ1BvbGljeSk7Cit9CisKIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5Ojpw
cml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQp
CiB7CiAgICAgbV9pc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBpc1ByaXZhdGVCcm93c2luZ0Vu
YWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNv
bnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250
cm9sbGVyUHJveHkuaAppbmRleCBhOWQzNWE2NjNhNzE1NTcyNGRlYmU2MmNlYzczNjljZjNlMjA1
NmNmLi5iYTg2ZGJkYTFmNmM3YjU2ZTExODRiMmMzNDAxYjdmMTgyZDI0MzlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRl
ICJXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SdW5M
b29wLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0
Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgQ29yZUlQQyB7CkBAIC0xNTIsNiArMTUzLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUxheWVySG9zdGluZ0NvbnRleHQoTGF5ZXJIb3N0
aW5nTW9kZSk7CiAjZW5kaWYKIAorICAgIHZvaWQgc3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2Vk
KHVpbnQzMl90KTsKICAgICB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sKTsK
ICAgICB2b2lkIGdldEZvcm1WYWx1ZShib29sJiByZXR1cm5WYWx1ZSwgU3RyaW5nJiBmb3JtVmFs
dWUpOwogCkBAIC0xNjMsNiArMTY1LDcgQEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBtX3BsdWdp
bkluc3RhbmNlSUQ7CiAKICAgICBTdHJpbmcgbV91c2VyQWdlbnQ7CisgICAgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSBtX3N0b3JhZ2VCbG9ja2luZ1BvbGlj
eTsKICAgICBib29sIG1faXNQcml2YXRlQnJvd3NpbmdFbmFibGVkOwogICAgIGJvb2wgbV9pc0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkOwogICAgIGJvb2wgbV9pc0luaXRpYWxpemluZzsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5D
b250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMzcxYmVlMjM3NzVkZGUwZmY3MjEwNDNi
MzQ1MGNjYTYwNjVjOWRlYi4uZTBhMGRjYTY5MDFjM2E2MjdjZDA2MTkzOTQwNWQxZGRjZWRiYTZk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9s
bGVyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTEwNiw2ICsxMDYsOSBAQCBtZXNz
YWdlcyAtPiBQbHVnaW5Db250cm9sbGVyUHJveHkgewogICAgICMgUmV0dXJuIGEgc25hcHNob3Qg
b2YgdGhlIHBsdWdpbgogICAgIFNuYXBzaG90KCkgLT4gKFdlYktpdDo6U2hhcmVhYmxlQml0bWFw
OjpIYW5kbGUgYmFja2luZ1N0b3JlSGFuZGxlKQogICAgIAorICAgICMgU2VudCB3aGVuIHN0b3Jh
Z2UgYmxvY2tpbmcgcG9saWN5IGNoYW5nZXMKKyAgICBTdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5n
ZWQodWludDMyX3Qgc3RvcmFnZUJsb2NraW5nUG9saWN5KQorCiAgICAgIyBTZW50IHdoZW4gcHJp
dmF0ZSBicm93c2luZyBpcyBlbmFibGVkIG9yIGRpc2FibGVkCiAgICAgUHJpdmF0ZUJyb3dzaW5n
U3RhdGVDaGFuZ2VkKGJvb2wgaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNj
YXBlUGx1Z2luLmNwcAppbmRleCAxNWU3NjQ4ZGE2M2Y3YjM0OTIzZWQ5ODkzMDJmNDVlNTJkMTI0
NzIwLi5kMTlhNGViY2ZhNWIyZDczYmJhM2NiYTA5ODRiNDA1MThlMGRmMTE5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZVBsdWdpbi5jcHAKQEAgLTk1Myw2ICs5NTMsMTEgQEAgdm9pZCBOZXRzY2FwZVBsdWdp
bjo6Y29udGVudHNTY2FsZUZhY3RvckNoYW5nZWQoZmxvYXQgc2NhbGVGYWN0b3IpCiAjZW5kaWYK
IH0KIAordm9pZCBOZXRzY2FwZVBsdWdpbjo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKFNl
Y3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3kgc3RvcmFnZUJsb2NraW5nUG9saWN5
KQoreworICAgIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChzdG9yYWdlQmxvY2tpbmdQb2xp
Y3kgIT0gU2VjdXJpdHlPcmlnaW46OkFsbG93QWxsU3RvcmFnZSk7Cit9CisKIHZvaWQgTmV0c2Nh
cGVQbHVnaW46OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sIHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQpCiB7CiAgICAgQVNTRVJUKG1faXNTdGFydGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmgKaW5kZXggNWY5M2M1NzQ3NjU4MTdlOGJiY2I5MTFiYjNjM2M0YjVjNDlhNTRiYy4uNGFjMmRl
M2E5NTI2ZGI3ZmNmMGJhNGM4ZjFmMmY3ZDhjOWJiMmI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2lu
LmgKQEAgLTIyMiw2ICsyMjIsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZv
aWQgY29udGVudHNTY2FsZUZhY3RvckNoYW5nZWQoZmxvYXQpOworICAgIHZpcnR1YWwgdm9pZCBz
dG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlN0b3Jh
Z2VCbG9ja2luZ1BvbGljeSk7CiAgICAgdmlydHVhbCB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRl
Q2hhbmdlZChib29sKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0Rm9ybVZhbHVlKFN0cmluZyYgZm9y
bVZhbHVlKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbERp
cmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5oCmluZGV4IDlj
Y2Q4MDQwMDM3ZTgwMDkxZjk4NTZhM2VkMzkyYzM2NmEwYWFmMzIuLjlhZTFkNzY1YWEzN2ZkNmU1
MTc0Y2ZkNjE5YTQwNTYwMjA1MDZlOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3LmgKQEAgLTI4LDYgKzI4LDcgQEAK
IAogI2luY2x1ZGUgIlBsdWdpbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsYWJsZUFyZWEu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
dGFpblB0ci5oPgogCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVKU0NvbnRleHQqIEpTQ29u
dGV4dFJlZjsKQEAgLTExMyw2ICsxMTQsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRMYXllckhvc3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUpIE9WRVJSSURFOwogI2VuZGlmCiAK
KyAgICB2aXJ0dWFsIHZvaWQgc3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3kpOwogICAgIHZpcnR1YWwgdm9pZCBw
cml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCk7CiAgICAgdmlydHVhbCBib29sIGdldEZv
cm1WYWx1ZShTdHJpbmcmIGZvcm1WYWx1ZSk7CiAgICAgdmlydHVhbCBib29sIGhhbmRsZVNjcm9s
bChXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJ
blBERlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0
SW5QREZWaWV3Lm1tCmluZGV4IGZlN2YyNThiMGE0OWYyOWVjODY5ZTQ2ZmM2OTU3MDFkMjY3ZWVk
YWUuLjk3NmM3YTgwOGNlYWNiZGUxYzhmM2VkMDg5YWJkZTY0ODc4NzcxOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmll
dy5tbQpAQCAtNjYwLDYgKzY2MCwxMCBAQCB2b2lkIEJ1aWx0SW5QREZWaWV3OjpzZXRMYXllckhv
c3RpbmdNb2RlKExheWVySG9zdGluZ01vZGUpCiAKICNlbmRpZgogCit2b2lkIEJ1aWx0SW5QREZW
aWV3OjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoU2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VC
bG9ja2luZ1BvbGljeSkKK3sKK30KKwogdm9pZCBCdWlsdEluUERGVmlldzo6cHJpdmF0ZUJyb3dz
aW5nU3RhdGVDaGFuZ2VkKGJvb2wpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luLmgKaW5kZXggYjkxMTc0ZjllYjdjMjdlZjNiMmZlZThiMjQ0MGFmOWU0MTgx
N2NlYy4uZGU2MmRlNzRmOWM2MzY5NzM3ZDBlM2E3Y2I0ZGZlZjUxZjdiYWM3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgPFdlYkNvcmUvR3JhcGhpY3NMYXllci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvS1VS
TC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMjE4LDYgKzIx
OSw5IEBAIHB1YmxpYzoKICAgICAvLyBUZWxscyB0aGUgcGx1Zy1pbiBhYm91dCBzY2FsZSBmYWN0
b3IgY2hhbmdlcy4KICAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNTY2FsZUZhY3RvckNoYW5nZWQo
ZmxvYXQpID0gMDsKIAorICAgIC8vIENhbGxlZCB3aGVuIHRoZSBzdG9yYWdlIGJsb2NraW5nIHBv
bGljeSBmb3IgdGhpcyBwbHVnLWluIGNoYW5nZXMuCisgICAgdmlydHVhbCB2b2lkIHN0b3JhZ2VC
bG9ja2luZ1N0YXRlQ2hhbmdlZChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2Nr
aW5nUG9saWN5KSA9IDA7CisKICAgICAvLyBDYWxsZWQgd2hlbiB0aGUgcHJpdmF0ZSBicm93c2lu
ZyBzdGF0ZSBmb3IgdGhpcyBwbHVnLWluIGNoYW5nZXMuCiAgICAgdmlydHVhbCB2b2lkIHByaXZh
dGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCmluZGV4IGUzODBlZWY5NGYzNTdl
MDI5MWVlYzgzZTY5NGNiZjk4ZmQwYWQ0MGEuLmNiMzY1YTZjMTIyNmU1N2NlMDY1OGVmY2YxNmZh
MjkyYTRkMDgxOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5LmNwcApAQCAtNDYwLDYgKzQ2MCwxMSBAQCB2b2lkIFBsdWdpblByb3h5Ojpj
b250ZW50c1NjYWxlRmFjdG9yQ2hhbmdlZChmbG9hdCBzY2FsZUZhY3RvcikKICAgICBnZW9tZXRy
eURpZENoYW5nZSgpOwogfQogCit2b2lkIFBsdWdpblByb3h5OjpzdG9yYWdlQmxvY2tpbmdTdGF0
ZUNoYW5nZWQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSBp
c1N0b3JhZ2VCbG9ja2luZ1BvbGljeSkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpTdG9yYWdlQmxvY2tpbmdT
dGF0ZUNoYW5nZWQoaXNTdG9yYWdlQmxvY2tpbmdQb2xpY3kpLCBtX3BsdWdpbkluc3RhbmNlSUQp
OworfQorCiB2b2lkIFBsdWdpblByb3h5Ojpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9v
bCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiB7CiAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0
aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6UHJpdmF0ZUJyb3dz
aW5nU3RhdGVDaGFuZ2VkKGlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCksIG1fcGx1Z2luSW5zdGFu
Y2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5oCmluZGV4IGMwY2ExMTZiMDdlOTg0ZDdiMDA3NGRkOGU4MTYzMDVjZWZjMzViYjYuLmY0MGYx
NzNhNGU3NmQ1YmIyYjhjZGI2MmZiOTQwNWYwYWM5NzgxNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiUGx1Z2luLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9BZmZpbmVUcmFuc2Zvcm0uaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luLmg+CiAKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgpAQCAtMTEyLDYgKzExMyw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9p
ZCBjb250ZW50c1NjYWxlRmFjdG9yQ2hhbmdlZChmbG9hdCk7CisgICAgdmlydHVhbCB2b2lkIHN0
b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U3RvcmFn
ZUJsb2NraW5nUG9saWN5KTsKICAgICB2aXJ0dWFsIHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVD
aGFuZ2VkKGJvb2wpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRGb3JtVmFsdWUoU3RyaW5nJiBmb3Jt
VmFsdWUpOwogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsRGly
ZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggMGEwYzZiNjNkZDJiNjY3
MzRiY2JkMjc4MzJmZWQxNTg5YmE5ZWQxMi4uMzFiOGY3OTRiNTNkOGU4MWI3NTU2NjliZGFmZTI1
ODIzOTAwMjExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcApAQCAtNTgxLDYgKzU4MSwxNSBAQCBKU09iamVjdCogUGx1Z2luVmlldzo6
c2NyaXB0T2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAjZW5kaWYKIH0KIAor
dm9pZCBQbHVnaW5WaWV3OjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSBzdG9yYWdlQmxvY2tpbmdQb2xpY3kp
Cit7CisgICAgLy8gVGhlIHBsdWctaW4gY2FuIGJlIG51bGwgaGVyZSBpZiBpdCBmYWlsZWQgdG8g
aW5pdGlhbGl6ZS4KKyAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fcGx1Z2luLT5zdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQo
c3RvcmFnZUJsb2NraW5nUG9saWN5KTsKK30KKwogdm9pZCBQbHVnaW5WaWV3Ojpwcml2YXRlQnJv
d3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogewogICAgIC8v
IFRoZSBwbHVnLWluIGNhbiBiZSBudWxsIGhlcmUgaWYgaXQgZmFpbGVkIHRvIGluaXRpYWxpemUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRl
eCBkMWQ5ODUzNjMzODY4NmIzNWQ5YTQ4ODk5MmJiMGEzNWY5NmJhZjlkLi5iYzAzNzhkM2RjZDQ5
ZWU3ZDIzODM2OWVhZGE2NjQzNTg1MGExYjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTEwOSw2ICsxMDksNyBAQCBwcml2YXRlOgog
ICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwogI2VuZGlm
CiAgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBzY3JpcHRPYmplY3QoSlNDOjpKU0dsb2JhbE9i
amVjdCopOworICAgIHZpcnR1YWwgdm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7CiAgICAgdmlydHVh
bCB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sKTsKICAgICB2aXJ0dWFsIGJv
b2wgZ2V0Rm9ybVZhbHVlKFN0cmluZyYpOwogICAgIHZpcnR1YWwgYm9vbCBzY3JvbGwoV2ViQ29y
ZTo6U2Nyb2xsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YTE4MWRmNzJhYmIyZTU4MWRmNGQ3Nzc1OTEzZjY3OTNmMDQ3NmI0ZS4uNjBhZmRhNGQ5NzM3Zjgz
MDMyNDhkYjQ2ODAxMjJhYTQzOTg4NThiZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTA5
LTEwICBKZWZmcmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdGhp
cmQtcGFydHkgc3RvcmFnZSBibG9ja2luZyBzZXR0aW5nIHRvIGNoYW5nZSB3aGlsZSBhIHBhZ2Ug
aXMgbG9hZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NTc5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlc3RlZCBjb21iaW5hdGlvbnMgb2YgbG9vc2VuaW5nIGFuZCBzdHJlbmd0aGVuaW5nIHRoZSBz
dG9yYWdlIGJsb2NraW5nIHBvbGljeSBvbiB2YXJpb3VzIHR5cGVzIG9mIHN0b3JhZ2UuCisKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9pZnJhbWUtZm9yLXN0b3JhZ2Ut
YmxvY2tpbmctY2hhbmdlZC1sb2NhbC1zdG9yYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9ja2luZy1j
aGFuZ2VkLXNoYXJlZC13b3JrZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9z
ZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5nLWNoYW5nZWQtd2Vi
c3FsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1i
bG9ja2luZy1sb29zZW5lZC1sb2NhbC1zdG9yYWdlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLWxvY2Fs
LXN0b3JhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9y
YWdlLWJsb2NraW5nLWxvb3NlbmVkLXBsdWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wbHVnaW4u
aHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2Nr
aW5nLWxvb3NlbmVkLXNoYXJlZC13b3JrZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtc2hhcmVkLXdv
cmtlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2Ut
YmxvY2tpbmctbG9vc2VuZWQtd2Vic3FsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXdlYnNxbC5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmct
c3RyZW5ndGhlbmVkLWxvY2FsLXN0b3JhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLWxvY2Fs
LXN0b3JhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9y
YWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wbHVnaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVk
LXBsdWdpbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3Jh
Z2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXNoYXJlZC13b3JrZXItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5n
dGhlbmVkLXNoYXJlZC13b3JrZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9z
ZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC13ZWJzcWwtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmct
c3RyZW5ndGhlbmVkLXdlYnNxbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9UZXN0RXhwZWN0YXRpb25zOiBTa2lwIHNoYXJlZCB3b3JrZXIgdGVzdHMuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjLXdrMi9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmct
c3RyZW5ndGhlbmVkLXBsdWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDEyLTA5LTA2ICBK
ZWZmcmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CiAKICAgICAgICAgRXh0ZW5kIHRoaXJkLXBh
cnR5IHN0b3JhZ2UgYmxvY2tpbmcgQVBJIHRvIG9wdGlvbmFsbHkgYWxsb3cgYmxvY2tpbmcgYWxs
IHN0b3JhZ2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVz
b3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9ja2luZy1jaGFuZ2VkLWxvY2FsLXN0b3JhZ2Uu
aHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1m
b3Itc3RvcmFnZS1ibG9ja2luZy1jaGFuZ2VkLWxvY2FsLXN0b3JhZ2UuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lMjAzNzE5NjAyNzYzMDgwZWZiZGM2OTZhNDIwZTgwNDBmMDgwYzdkCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZv
ci1zdG9yYWdlLWJsb2NraW5nLWNoYW5nZWQtbG9jYWwtc3RvcmFnZS5odG1sCkBAIC0wLDAgKzEs
MzUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsK
Kwl2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKKwlub2RlLnRleHRDb250
ZW50ID0gbWVzc2FnZTsKKwlkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5vZGUpOworfQorCit3
aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisJdHJ5IHsKKwkJdmFyIGwgPSB3aW5kb3cubG9j
YWxTdG9yYWdlOworCQlsID0gbnVsbDsKKwkJbG9nKCdObyBleGNlcHRpb24nKTsKKwl9IGNhdGNo
IChleGNlcHRpb24pIHsKKwkJbG9nKGV4Y2VwdGlvbi5uYW1lKTsKKwl9Cit9CisKK3dpbmRvdy5v
bm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7CisJdHJ5IHsKKwkJdmFyIGwgPSB3aW5kb3cubG9jYWxT
dG9yYWdlOworCQlsID0gbnVsbDsKKwkJbG9nKCdObyBleGNlcHRpb24nKTsKKwkJd2luZG93LnBh
cmVudC5wb3N0TWVzc2FnZSgnTm8gZXhjZXB0aW9uJywgJyonKTsKKwl9IGNhdGNoIChleGNlcHRp
b24pIHsKKwkJbG9nKGV4Y2VwdGlvbi5uYW1lKTsKKwkJd2luZG93LnBhcmVudC5wb3N0TWVzc2Fn
ZShleGNlcHRpb24ubmFtZSwgJyonKTsKKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5nLWNoYW5nZWQtc2hh
cmVkLXdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJj
ZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5nLWNoYW5nZWQtc2hhcmVkLXdvcmtlci5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjM3YmExOWQxNzBlYjRhMDA4NzA3OWNkODdkYjQ1OTZhMDc0NDgyZjMKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNl
cy9pZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC1zaGFyZWQtd29ya2VyLmh0bWwK
QEAgLTAsMCArMSw0MSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2co
bWVzc2FnZSkgeworCXZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOworCW5v
ZGUudGV4dENvbnRlbnQgPSBtZXNzYWdlOworCWRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobm9k
ZSk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVdvcmtlcigpIHsKKwl2YXIgd29ya2VyID0gbmV3IFNo
YXJlZFdvcmtlcignc2hhcmVkLXdvcmtlci5qcycsICdTaGFyZWRXb3JrZXInKTsKKwl3b3JrZXIu
cG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgeworCQlsb2coZXZlbnQuZGF0YSk7CisJ
CXdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoZXZlbnQuZGF0YSwgJyonKTsKKwl9CisJd29ya2Vy
LnBvcnQuc3RhcnQoKTsKKwl3b3JrZXIucG9ydC5wb3N0TWVzc2FnZSgnQ29ubmVjdGlvbiB0ZXN0
Jyk7Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKwl0cnkgeworCQljcmVhdGVX
b3JrZXIoZmFsc2UpOworCX0gY2F0Y2ggKGV4Y2VwdGlvbikgeworCQlsb2coZXhjZXB0aW9uLm5h
bWUpOworCQl3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKGV4Y2VwdGlvbi5uYW1lLCAnKicpOwor
CX0KK30KKword2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGUpIHsKKwl0cnkgeworCQljcmVh
dGVXb3JrZXIodHJ1ZSk7CisJfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisJCWxvZyhleGNlcHRpb24u
bmFtZSk7CisJCXdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoZXhjZXB0aW9uLm5hbWUsICcqJyk7
CisJfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFt
ZS1mb3Itc3RvcmFnZS1ibG9ja2luZy1jaGFuZ2VkLXdlYnNxbC5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5n
LWNoYW5nZWQtd2Vic3FsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQ1MzhiYmJlODA4ODM4MDBmYTY5MjM2
YjlkZGFmMGVjZTNkYzc4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9ja2luZy1jaGFuZ2Vk
LXdlYnNxbC5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0Pgor
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKwl2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3AnKTsKKwlub2RlLnRleHRDb250ZW50ID0gbWVzc2FnZTsKKwlkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKG5vZGUpOworfQorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisJdHJ5
IHsKKwkJdmFyIHNxbCA9IHdpbmRvdy5vcGVuRGF0YWJhc2UoJ3Rlc3RkYicsICcxLjAnLCAnVGVz
dGluZyBkYXRhYmFzZScsIDUxMiAqIDEwMjQpOworCQlzcWwgPSBudWxsOworCQlsb2coJ05vIGV4
Y2VwdGlvbicpOworCX0gY2F0Y2ggKGV4Y2VwdGlvbikgeworCQlsb2coZXhjZXB0aW9uLm5hbWUp
OworCX0KK30KKword2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGUpIHsKKwl0cnkgeworCQl2
YXIgc3FsID0gd2luZG93Lm9wZW5EYXRhYmFzZSgndGVzdGRiJywgJzEuMCcsICdUZXN0aW5nIGRh
dGFiYXNlJywgNTEyICogMTAyNCk7CisJCXNxbCA9IG51bGw7CisJCWxvZygnTm8gZXhjZXB0aW9u
Jyk7CisJCXdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoJ05vIGV4Y2VwdGlvbicsICcqJyk7CisJ
fSBjYXRjaCAoZXhjZXB0aW9uKSB7CisJCWxvZyhleGNlcHRpb24ubmFtZSk7CisJCXdpbmRvdy5w
YXJlbnQucG9zdE1lc3NhZ2UoZXhjZXB0aW9uLm5hbWUsICcqJyk7CisJfQorfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1sb2NhbC1z
dG9yYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3Rv
cmFnZS1ibG9ja2luZy1sb29zZW5lZC1sb2NhbC1zdG9yYWdlLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5hM2ViOTMzMTg3ODAzZWU1ZTRiNzczNDM3YTYwN2ZhOTM3NDY3Y2ExCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5n
LWxvb3NlbmVkLWxvY2FsLXN0b3JhZ2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Ro
aXMgaWZyYW1lIHNob3VsZCByZXR1cm4gb25seSBvbmUgc2VjdXJpdHkgZXJyb3I6CisKKworCist
LS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0t
LS0tCitTRUNVUklUWV9FUlIKKworTm8gZXhjZXB0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtbG9jYWwtc3Rv
cmFnZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2Nr
aW5nLWxvb3NlbmVkLWxvY2FsLXN0b3JhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTlkYjBlOTA5MTcw
Nzc3NzJmYWNmOTk0YzRlN2Q1OTdmYTlkZTFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLWxvY2FsLXN0
b3JhZ2UuaHRtbApAQCAtMCwwICsxLDMxIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lm
ICh3aW5kb3cudGVzdFJ1bm5lcikgeworCXRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCXRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCXRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0
KCk7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKwlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0
U3RvcmFnZUJsb2NraW5nUG9saWN5KCdCbG9ja0FsbCcpOworCitmdW5jdGlvbiBkZWNyZW1lbnQo
KSB7CisJaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3Rv
cmFnZUJsb2NraW5nUG9saWN5KCdBbGxvd0FsbCcpOworCWZvciAodmFyIGkgPSAwOyBpIDwgd2lu
ZG93LmZyYW1lcy5sZW5ndGg7ICsraSkKKwkJd2luZG93LmZyYW1lc1tpXS5wb3N0TWVzc2FnZSgn
YmxvY2tlZCcsICcqJyk7Cit9CisKK3dpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbigpIHsKKwlp
ZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisJfQor
fQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaWZyYW1lIHNob3VsZCByZXR1
cm4gb25seSBvbmUgc2VjdXJpdHkgZXJyb3I6PC9wPgorPGlmcmFtZSBzcmM9Imh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5n
LWNoYW5nZWQtbG9jYWwtc3RvcmFnZS5odG1sIiBvbmxvYWQ9ImRlY3JlbWVudCgpIj48L2lmcmFt
ZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wbHVnaW4tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVk
LXBsdWdpbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjk4ZWU0ZjhlODUzN2M2NjRlMjIyZTNi
MWU3OTU5MTAyNTZhOTZmZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wbHVnaW4tZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsOCBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIG5vdCBoYXZlIHByaXZhdGUgYnJv
d3NpbmcgZW5hYmxlZDoKKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88
IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK2ZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtcGx1Z2luLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9v
c2VuZWQtcGx1Z2luLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2IwZDI0ZjIyZGFhNDBlNmMxMDU5N2MwN2U1
MzVjZGIzOTM2OTMwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wbHVnaW4uaHRtbApAQCAtMCwwICsx
LDMxIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworCXRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgp
OworCXRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKwlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5
KCdCbG9ja0FsbCcpOworCitmdW5jdGlvbiBkZWNyZW1lbnQoKSB7CisJaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorCQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdB
bGxvd0FsbCcpOworCWZvciAodmFyIGkgPSAwOyBpIDwgd2luZG93LmZyYW1lcy5sZW5ndGg7ICsr
aSkKKwkJd2luZG93LmZyYW1lc1tpXS5wb3N0TWVzc2FnZSgnYmxvY2tlZCcsICcqJyk7Cit9CisK
K3dpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbigpIHsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKwkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisJfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwPlRoaXMgaWZyYW1lIHNob3VsZCBub3QgaGF2ZSBwcml2YXRlIGJyb3dzaW5n
IGVuYWJsZWQ6PC9wPgorPGlmcmFtZSBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0
eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3ItcGx1Z2luLWFzeW5jLmh0bWwiIG9u
bG9hZD0iZGVjcmVtZW50KCkiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3Nl
bmVkLXNoYXJlZC13b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXNoYXJlZC13b3JrZXItZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjkwMTJhMzBiOWMxYjliZGUwNzkzMzA1NWYzODIwODEyZWRiOTViN2YK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3Jh
Z2UtYmxvY2tpbmctbG9vc2VuZWQtc2hhcmVkLXdvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMCBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIHJldHVybiBvbmx5IG9uZSBzZWN1cml0eSBlcnJv
cjoKKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+
LS0+JworLS0tLS0tLS0KK1NFQ1VSSVRZX0VSUgorCitDb25uZWN0ZWQgc3VjY2Vzc2Z1bGx5CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tp
bmctbG9vc2VuZWQtc2hhcmVkLXdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXNoYXJlZC13b3JrZXIuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wODU0YTQ4MmFlYzdkODZkOGNkZmVjMjBmNzViM2IyOGUzYzJmYjYyCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2Nr
aW5nLWxvb3NlbmVkLXNoYXJlZC13b3JrZXIuaHRtbApAQCAtMCwwICsxLDMxIEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCXRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCXRlc3RSdW5uZXIu
ZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKwlp
bnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdCbG9ja0FsbCcpOwor
Cit3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CisJaWYgKHdpbmRvdy50ZXN0UnVubmVy
KQorCQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdBbGxvd0Fs
bCcpOworCWZvciAodmFyIGkgPSAwOyBpIDwgd2luZG93LmZyYW1lcy5sZW5ndGg7ICsraSkKKwkJ
d2luZG93LmZyYW1lc1tpXS5wb3N0TWVzc2FnZSgnYmxvY2tlZCcsICcqJyk7CisKKwl3aW5kb3cu
b25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CisJCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCQkJ
dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisJCX0KKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHA+VGhpcyBpZnJhbWUgc2hvdWxkIHJldHVybiBvbmx5IG9uZSBzZWN1cml0eSBl
cnJvcjo8L3A+Cis8aWZyYW1lIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jl
c291cmNlcy9pZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC1zaGFyZWQtd29ya2Vy
Lmh0bWwiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXdlYnNxbC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxv
Y2tpbmctbG9vc2VuZWQtd2Vic3FsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hM2ViOTMzMTg3
ODAzZWU1ZTRiNzczNDM3YTYwN2ZhOTM3NDY3Y2ExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXdlYnNx
bC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIHJldHVy
biBvbmx5IG9uZSBzZWN1cml0eSBlcnJvcjoKKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1m
cmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK1NFQ1VSSVRZX0VSUgorCitO
byBleGNlcHRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
c3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC13ZWJzcWwuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC13ZWJzcWwuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lMDJjM2IzY2FkYzBkMmZlYWZjMDRkZWU3ZWZiYjYyZWU1NzY2OWExCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2Nr
aW5nLWxvb3NlbmVkLXdlYnNxbC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisJdGVzdFJ1bm5lci5kdW1wQ2hp
bGRGcmFtZXNBc1RleHQoKTsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCWludGVybmFs
cy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0Jsb2NrQWxsJyk7CisKK2Z1bmN0
aW9uIGRlY3JlbWVudCgpIHsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpCisJCWludGVybmFscy5z
ZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0FsbG93QWxsJyk7CisJZm9yICh2YXIg
aSA9IDA7IGkgPCB3aW5kb3cuZnJhbWVzLmxlbmd0aDsgKytpKQorCQl3aW5kb3cuZnJhbWVzW2ld
LnBvc3RNZXNzYWdlKCdibG9ja2VkJywgJyonKTsKK30KKword2luZG93Lm9ubWVzc2FnZSA9IGZ1
bmN0aW9uKCkgeworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCQl0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyBpZnJh
bWUgc2hvdWxkIHJldHVybiBvbmx5IG9uZSBzZWN1cml0eSBlcnJvcjo8L3A+Cis8aWZyYW1lIHNy
Yz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9pZnJhbWUtZm9yLXN0
b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC13ZWJzcWwuaHRtbCIgb25sb2FkPSJkZWNyZW1lbnQoKSI+
PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLWxvY2FsLXN0b3Jh
Z2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdl
LWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1sb2NhbC1zdG9yYWdlLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mNDAwODNmZDZmNGY5Yjk1NGE3OTM0MzEwZDdhNTU0NmQ0NmMyMzkwCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5n
LXN0cmVuZ3RoZW5lZC1sb2NhbC1zdG9yYWdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBA
CitUaGlzIGlmcmFtZSBzaG91bGQgcmV0dXJuIG9ubHkgb25lIHNlY3VyaXR5IGVycm9yOgorCisK
KworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCist
LS0tLS0tLQorTm8gZXhjZXB0aW9uCisKK05vIGV4Y2VwdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1s
b2NhbC1zdG9yYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3Jh
Z2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLWxvY2FsLXN0b3JhZ2UuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
NDlmNDFlOTVhZDZmNWMwZWRiZDM1NWY1N2Q4MzM0N2Y1NjBjYmEyCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVu
Z3RoZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwl0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKwl0ZXN0UnVubmVyLmR1bXBD
aGlsZEZyYW1lc0FzVGV4dCgpOworfQorCitmdW5jdGlvbiBkZWNyZW1lbnQoKSB7CisJaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorCQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5n
UG9saWN5KCdCbG9ja0FsbCcpOworCWZvciAodmFyIGkgPSAwOyBpIDwgd2luZG93LmZyYW1lcy5s
ZW5ndGg7ICsraSkKKwkJd2luZG93LmZyYW1lc1tpXS5wb3N0TWVzc2FnZSgnYmxvY2tlZCcsICcq
Jyk7Cit9CisKK3dpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbigpIHsKKwlpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKwkJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGlj
eSgnQWxsb3dBbGwnKTsKKwkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisJfQorfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaWZyYW1lIHNob3VsZCByZXR1cm4gb25seSBv
bmUgc2VjdXJpdHkgZXJyb3I6PC9wPgorPGlmcmFtZSBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5nLWNoYW5nZWQt
bG9jYWwtc3RvcmFnZS5odG1sIiBvbmxvYWQ9ImRlY3JlbWVudCgpIj48L2lmcmFtZT4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
c3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcGx1Z2luLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQt
cGx1Z2luLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NGQ4ZWNlZmE3ZTM4NzEzZDQ0N2VjODQz
YmVhMTIxNDQ0YTJjOGFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wbHVnaW4tZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsOCBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIGhhdmUgcHJpdmF0ZSBicm93
c2luZyBlbmFibGVkOgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwh
LS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcGx1Z2lu
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmct
c3RyZW5ndGhlbmVkLXBsdWdpbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5MGU2ODNmZDM1MGQ1ZTUzN2I3
OWNiOWZhMzA2NDhkZjdiZDZiNzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXBsdWdpbi5odG1s
CkBAIC0wLDAgKzEsMjkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisJdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisJdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisJdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK30KKwor
ZnVuY3Rpb24gZGVjcmVtZW50KCkgeworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikKKwkJaW50ZXJu
YWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeSgnQmxvY2tBbGwnKTsKKwlmb3Ig
KHZhciBpID0gMDsgaSA8IHdpbmRvdy5mcmFtZXMubGVuZ3RoOyArK2kpCisJCXdpbmRvdy5mcmFt
ZXNbaV0ucG9zdE1lc3NhZ2UoJ2Jsb2NrZWQnLCAnKicpOworfQorCit3aW5kb3cub25tZXNzYWdl
ID0gZnVuY3Rpb24oKSB7CisJaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJCWludGVybmFscy5z
ZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0FsbG93QWxsJyk7CisJCXRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworCX0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5U
aGlzIGlmcmFtZSBzaG91bGQgaGF2ZSBwcml2YXRlIGJyb3dzaW5nIGVuYWJsZWQ6PC9wPgorPGlm
cmFtZSBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3Mt
b3JpZ2luLWlmcmFtZS1mb3ItcGx1Z2luLWFzeW5jLmh0bWwiIG9ubG9hZD0iZGVjcmVtZW50KCki
PjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1zaGFyZWQtd29y
a2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFn
ZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtc2hhcmVkLXdvcmtlci1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2ZhMTgxNDNmZTZiYzRmOTU1ZGVlZjZhZTI5ODg1NGQ1OGJlNmNiNwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2lu
Zy1zdHJlbmd0aGVuZWQtc2hhcmVkLXdvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBA
QAorVGhpcyBpZnJhbWUgc2hvdWxkIHJldHVybiBvbmx5IG9uZSBzZWN1cml0eSBlcnJvcjoKKwor
CisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+Jwor
LS0tLS0tLS0KK0Nvbm5lY3RlZCBzdWNjZXNzZnVsbHkKKworU0VDVVJJVFlfRVJSCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3Ry
ZW5ndGhlbmVkLXNoYXJlZC13b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtc2hhcmVkLXdvcmtlci5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjQ4ZjliOWUwYzNlNTc5MWI5YTUzY2RjMjk0ODVlNDRkNTI4MjE1ODEKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxv
Y2tpbmctc3RyZW5ndGhlbmVkLXNoYXJlZC13b3JrZXIuaHRtbApAQCAtMCwwICsxLDI5IEBACis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCXRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCXRlc3RS
dW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKK3dpbmRvdy5vbm1lc3NhZ2UgPSBm
dW5jdGlvbigpIHsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpCisJCWludGVybmFscy5zZXR0aW5n
cy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0Jsb2NrQWxsJyk7CisJZm9yICh2YXIgaSA9IDA7
IGkgPCB3aW5kb3cuZnJhbWVzLmxlbmd0aDsgKytpKQorCQl3aW5kb3cuZnJhbWVzW2ldLnBvc3RN
ZXNzYWdlKCdibG9ja2VkJywgJyonKTsKKworCXdpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbigp
IHsKKwkJaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJCQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0
U3RvcmFnZUJsb2NraW5nUG9saWN5KCdBbGxvd0FsbCcpOworCQkJdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CisJCX0KKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyBp
ZnJhbWUgc2hvdWxkIHJldHVybiBvbmx5IG9uZSBzZWN1cml0eSBlcnJvcjo8L3A+Cis8aWZyYW1l
IHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9pZnJhbWUtZm9y
LXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC1zaGFyZWQtd29ya2VyLmh0bWwiPjwvaWZyYW1lPgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC13ZWJzcWwtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3Ro
ZW5lZC13ZWJzcWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlNjYxODVjM2Y0NTkxOWMzOWRm
NjdiZTk4MzFkYjliNDdiOTUxY2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXdlYnNxbC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIHJldHVybiBvbmx5
IG9uZSBzZWN1cml0eSBlcnJvcjoKKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBh
dGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK05vIGV4Y2VwdGlvbgorCitTRUNVUklU
WV9FUlIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFn
ZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtd2Vic3FsLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXdlYnNxbC5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjg4ZWVmMTQ5ZTRhMTk0MDQ4NDk4YmYyYmMzNWY1NjQ1YWUzNWM1ZDMKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxv
Y2tpbmctc3RyZW5ndGhlbmVkLXdlYnNxbC5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisJdGVzdFJ1bm5lci5k
dW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK30KKworZnVuY3Rpb24gZGVjcmVtZW50KCkgeworCWlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKwkJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9j
a2luZ1BvbGljeSgnQmxvY2tBbGwnKTsKKwlmb3IgKHZhciBpID0gMDsgaSA8IHdpbmRvdy5mcmFt
ZXMubGVuZ3RoOyArK2kpCisJCXdpbmRvdy5mcmFtZXNbaV0ucG9zdE1lc3NhZ2UoJ2Jsb2NrZWQn
LCAnKicpOworfQorCit3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CisJaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisJCWludGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQ
b2xpY3koJ0FsbG93QWxsJyk7CisJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworCX0KK30KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQgcmV0dXJuIG9u
bHkgb25lIHNlY3VyaXR5IGVycm9yOjwvcD4KKzxpZnJhbWUgc3JjPSJodHRwOi8vMTI3LjAuMC4x
OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9ja2luZy1jaGFu
Z2VkLXdlYnNxbC5odG1sIiBvbmxvYWQ9ImRlY3JlbWVudCgpIj48L2lmcmFtZT4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RF
eHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDE2NWM1OTMwNzRiYmNmNmEwZDA1MWNjNWI4NGIyYjJkMmFiNWZjODkuLmIxNTU2
MWUzM2U0Zjc5ODQwZTQ4NWYzMzRhNzQ4N2FiOWMzNmI0ZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTQxLDYgKzU0MSw4IEBAIFdP
TlRGSVggU0tJUCA6IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9saWN5L3No
YXJlZC13b3JrZXItY29ubmVjdC1zCiBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5
L2Nyb3NzLW9yaWdpbi1zaGFyZWQtd29ya2VyLmh0bWwgPSBURVhUCiBXT05URklYIFNLSVAgOiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1zaGFyZWQtd29ya2VyLWFsbG93ZWQuaHRt
bCA9IFRFWFQKIFdPTlRGSVggU0tJUCA6IGh0dHAvdGVzdHMvc2VjdXJpdHkvc2FtZS1vcmlnaW4t
c2hhcmVkLXdvcmtlci1ibG9ja2VkLmh0bWwgPSBURVhUCitXT05URklYIFNLSVAgOiBodHRwL3Rl
c3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtc2hhcmVkLXdvcmtlci5odG1s
ID0gVEVYVAorV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2Nr
aW5nLXN0cmVuZ3RoZW5lZC1zaGFyZWQtd29ya2VyLmh0bWwgPSBURVhUCiBXT05URklYIFNLSVAg
OiBzdG9yYWdlL2luZGV4ZWRkYi9iYXNpY3Mtc2hhcmVkLXdvcmtlcnMuaHRtbCA9IFBBU1MKIAog
Ly8gdGVzdF9zaGVsbCBkb2VzIG5vdCBzdXBwb3J0IG1lc3NhZ2UgcG9ydHMKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdl
LWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wbHVnaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMi9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3Ry
ZW5ndGhlbmVkLXBsdWdpbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjA5ZTdiNmRkNjY0NjFk
MjJiYjVlMDhhNjJjNjUxZDVlNWIzODg2NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0
cmVuZ3RoZW5lZC1wbHVnaW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGhpcyBpZnJh
bWUgc2hvdWxkIGhhdmUgcHJpdmF0ZSBicm93c2luZyBlbmFibGVkOgorCisKKworLS0tLS0tLS0K
K0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQordHJ1
ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163451</attachid>
            <date>2012-09-11 14:58:34 -0700</date>
            <delta_ts>2012-09-11 16:18:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95790-20120911145935.patch</filename>
            <type>text/plain</type>
            <size>46652</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYwMzNhNjBhMzU4MTRk
M2U4MzJmMWViYzM5NzBmYzRiNGQ4MjIyMS4uZDgwYjc0MzRkZDNhZGQyNWMwNjM2MjgxZmQwNjY2
NmFhOTFkOWM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTA5LTEwICBKZWZm
cmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdGhpcmQtcGFydHkg
c3RvcmFnZSBibG9ja2luZyBzZXR0aW5nIHRvIGNoYW5nZSB3aGlsZSBhIHBhZ2UgaXMgbG9hZGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTc5MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBpcGUgdGhy
b3VnaCBjaGFuZ2VzIHRvIHRoZSBzdG9yYWdlIGJsb2NraW5nIHBvbGljeSB0byBlYWNoIGRvY3Vt
ZW50IGFuZCBwbHVnaW4uCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvc2VjdXJpdHkvc3Rv
cmFnZS1ibG9ja2luZy1sb29zZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWwKKyAgICAgICAgICAgICAg
IGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wbHVnaW4uaHRt
bAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxv
b3NlbmVkLXNoYXJlZC13b3JrZXIuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1
cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXdlYnNxbC5odG1sCisgICAgICAgICAgICAg
ICBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLWxvY2Fs
LXN0b3JhZ2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdl
LWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wbHVnaW4uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90
ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1zaGFyZWQtd29ya2Vy
Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2lu
Zy1zdHJlbmd0aGVuZWQtd2Vic3FsLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6IFBpcGUgY2hhbmdlcyB0aHJvdWdoIHRvIHRoZSBE
b2N1bWVudCdzIFNlY3VyaXR5T3JpZ2luLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN0
b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAqIHBhZ2Uv
UGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpjb2xsZWN0UGx1Z2luVmlld3MpOiBS
ZWZhY3RvcmVkIG91dCBpbnRvIGEgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCk6IFBpcGUgY2hh
bmdlcyB0aHJvdWdoIHRvIGVhY2ggUGx1Z2luVmlldy4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCk6CisgICAgICAgICogcGFnZS9QYWdlLmg6Cisg
ICAgICAgIChQYWdlKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNldHRpbmdzOjpzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3kpOiBUZWxsIFBhZ2VzIGFi
b3V0IGNoYW5nZXMgdG8gdGhlIHN0b3JhZ2UgYmxvY2tpbmcgcG9saWN5LgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAoU2V0dGluZ3MpOgor
ICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
dWdpblZpZXdCYXNlOjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQpOgorCiAyMDEyLTA5LTA2
ICBKZWZmcmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CiAKICAgICAgICAgRXh0ZW5kIHRoaXJk
LXBhcnR5IHN0b3JhZ2UgYmxvY2tpbmcgQVBJIHRvIG9wdGlvbmFsbHkgYWxsb3cgYmxvY2tpbmcg
YWxsIHN0b3JhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhZWY3OGYyNmRjZDUxZDllZmQ1MDk4NjE5YjkyNjAy
MGYwYzJjNDFhLi5hNzdhMjM0ZDNkN2I2ZDk2NTY0N2QxMDdjOGY3MmU1YjNkZjZjMjBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTItMDktMTAgIEplZmZyZXkgUGZhdSAgPGpwZmF1
QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyB0aGlyZC1wYXJ0eSBzdG9yYWdlIGJsb2NraW5n
IHNldHRpbmcgdG8gY2hhbmdlIHdoaWxlIGEgcGFnZSBpcyBsb2FkZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5mb3JtIHBsdWdpbnMgYWJvdXQgY2hh
bmdlcyB0byB0aGUgc3RvcmFnZSBibG9ja2luZyBwb2xpY3kgYnkgd2F5IG9mIHRoZSBwcml2YXRl
IGJyb3dzaW5nIGZlYXR1cmUuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6
c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
ICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaDoKKyAgICAgICAgKFBsdWdp
bkNvbnRyb2xsZXJQcm94eSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9s
bGVyUHJveHkubWVzc2FnZXMuaW46IEFkZCBXSzIgbWVzc2FnZSBmb3Igc3RvcmFnZUJsb2NraW5n
U3RhdGVDaGFuZ2VkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzdG9yYWdl
QmxvY2tpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKE5ldHNj
YXBlUGx1Z2luKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZW
aWV3Lmg6CisgICAgICAgIChCdWlsdEluUERGVmlldyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5tbTogVHJlYXQgc3RvcmFnZUJsb2NraW5nU3RhdGVD
aGFuZ2VkIGFzIGEgbm8tb3AuCisgICAgICAgIChXZWJLaXQ6OkJ1aWx0SW5QREZWaWV3OjpzdG9y
YWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6IEFkZCBwdXJlIHZpcnR1YWwgc3RvcmFnZUJsb2Nr
aW5nU3RhdGVDaGFuZ2VkIG1ldGhvZC4KKyAgICAgICAgKFBsdWdpbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJveHk6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oOgorICAgICAgICAoUGx1
Z2luUHJveHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuaDoKKyAgICAgICAgKFBsdWdpblZpZXcpOgorICAgICAgICAqIHdpbi9XZWJLaXQyLmRl
ZjoKKwogMjAxMi0wOS0wNiAgSmVmZnJleSBQZmF1ICA8anBmYXVAYXBwbGUuY29tPgogCiAgICAg
ICAgIEV4dGVuZCB0aGlyZC1wYXJ0eSBzdG9yYWdlIGJsb2NraW5nIEFQSSB0byBvcHRpb25hbGx5
IGFsbG93IGJsb2NraW5nIGFsbCBzdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGI0NzY5
ZjkxODI1NDkxZDQyMzc2NjE4OGJmYzk5OWRlYjJmMzFlNTAuLjU0OGU1OTM1MjUwOTZlMWMzNTc3
ZmVkNjdkNTZlNGNlMGRiZGI1NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC04NzgsNiArODc4
LDcgQEAgX19aTjdXZWJDb3JlOFNldHRpbmdzMjNzZXRVc2VzRW5jb2RpbmdEZXRlY3RvckViCiBf
X1pON1dlYkNvcmU4U2V0dGluZ3MyNHNldEFwcGxpY2F0aW9uQ2hyb21lTW9kZUViCiBfX1pON1dl
YkNvcmU4U2V0dGluZ3MyNHNldEROU1ByZWZldGNoaW5nRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4
U2V0dGluZ3MyNHNldE1vY2tTY3JvbGxiYXJzRW5hYmxlZEViCitfX1pON1dlYkNvcmU4U2V0dGlu
Z3MyNHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeUVOU18xNFNlY3VyaXR5T3JpZ2luMjFTdG9yYWdl
QmxvY2tpbmdQb2xpY3lFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNHNldFRleHRBcmVhc0FyZVJl
c2l6YWJsZUViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNXNldERldmVsb3BlckV4dHJhc0VuYWJs
ZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjVzZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkRWIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDk3ODBmMjQ2ZGI3MjQ3OWU0ZjQ2NDMxM2RjNjgy
NDc0MTJiYjI3MzcuLmI5ZDU1MWE2NTc5ZTQ4ZmI4YWQxMWM5ZDcyMTQyMzQ4YjBlZjc2MTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDU0MSw2ICs0NTQxLDEyIEBAIHZvaWQgRG9jdW1l
bnQ6OnVucmVnaXN0ZXJGb3JNZWRpYVZvbHVtZUNhbGxiYWNrcyhFbGVtZW50KiBlKQogICAgIG1f
bWVkaWFWb2x1bWVDYWxsYmFja0VsZW1lbnRzLnJlbW92ZShlKTsKIH0KIAordm9pZCBEb2N1bWVu
dDo6c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UoKQoreworICAgIGlmIChTZXR0aW5ncyog
c2V0dGluZ3MgPSB0aGlzLT5zZXR0aW5ncygpKQorICAgICAgICBzZWN1cml0eU9yaWdpbigpLT5z
ZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koc2V0dGluZ3MtPnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgp
KTsKK30KKwogdm9pZCBEb2N1bWVudDo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoKSAK
IHsKICAgICBIYXNoU2V0PEVsZW1lbnQqPjo6aXRlcmF0b3IgZW5kID0gbV9wcml2YXRlQnJvd3Np
bmdTdGF0ZUNoYW5nZWRFbGVtZW50cy5lbmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZGFm
ZTA0YmUzMTRhNGE3YjUwMTA1NWM3NTViYTU5ZWUwNDZkNjJkMy4uNDE3NzYyNTI5NWYyY2Y2NDNk
M2I3MjE5NzFlZDkwNTBkZTI1NTVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEwMTYsNiAr
MTAxNiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVnaXN0ZXJGb3JQcml2YXRlQnJvd3NpbmdT
dGF0ZUNoYW5nZWRDYWxsYmFja3MoRWxlbWVudCopOwogICAgIHZvaWQgdW5yZWdpc3RlckZvclBy
aXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZENhbGxiYWNrcyhFbGVtZW50Kik7CisgICAgdm9pZCBz
dG9yYWdlQmxvY2tpbmdTdGF0ZURpZENoYW5nZSgpOwogICAgIHZvaWQgcHJpdmF0ZUJyb3dzaW5n
U3RhdGVEaWRDaGFuZ2UoKTsKIAogICAgIHZvaWQgc2V0U2hvdWxkQ3JlYXRlUmVuZGVyZXJzKGJv
b2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMjk4MzgwOGVhY2FjMzEyMDk2ZTI5YmExZmRmN2Nh
OThkMzIzZDM0Ny4uMTdiZmEwZjJiZDUxNDg3NTQ2NDBhODY0OWZlNjM5OTc3MDRkMzJkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCkBAIC01NSw3ICs1NSw2IEBACiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgi
CiAjaW5jbHVkZSAiUGx1Z2luRGF0YS5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKLSNpbmNs
dWRlICJQbHVnaW5WaWV3QmFzZS5oIgogI2luY2x1ZGUgIlBvaW50ZXJMb2NrQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgogI2luY2x1ZGUgIlJlbmRlckFyZW5hLmgi
CkBAIC05ODgsMTYgKzk4Nyw4IEBAIHZvaWQgUGFnZTo6ZG5zUHJlZmV0Y2hpbmdTdGF0ZUNoYW5n
ZWQoKQogICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+aW5pdEROU1ByZWZldGNoKCk7CiB9CiAK
LXZvaWQgUGFnZTo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKCkKK3ZvaWQgUGFnZTo6Y29s
bGVjdFBsdWdpblZpZXdzKFZlY3RvcjxSZWZQdHI8UGx1Z2luVmlld0Jhc2U+LCAzMj4mIHBsdWdp
blZpZXdCYXNlcykKIHsKLSAgICBib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBtX3NldHRp
bmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7Ci0KLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9
IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQo
KSkKLSAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hh
bmdlKCk7Ci0KLSAgICAvLyBDb2xsZWN0IHRoZSBQbHVnaW5WaWV3cyBpbiB0byBhIHZlY3RvciB0
byBlbnN1cmUgdGhhdCBhY3Rpb24gdGhlIHBsdWctaW4gdGFrZXMKLSAgICAvLyBmcm9tIGJlbG93
IHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCBkb2VzIG5vdCBhZmZlY3QgdGhlaXIgbGlmZXRp
bWUuCi0gICAgVmVjdG9yPFJlZlB0cjxQbHVnaW5WaWV3QmFzZT4sIDMyPiBwbHVnaW5WaWV3QmFz
ZXM7CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgRnJhbWVWaWV3KiB2aWV3
ID0gZnJhbWUtPnZpZXcoKTsKICAgICAgICAgaWYgKCF2aWV3KQpAQCAtMTAxMyw2ICsxMDA0LDM1
IEBAIHZvaWQgUGFnZTo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKCkKICAgICAgICAgICAg
ICAgICBwbHVnaW5WaWV3QmFzZXMuYXBwZW5kKHN0YXRpY19jYXN0PFBsdWdpblZpZXdCYXNlKj4o
d2lkZ2V0KSk7CiAgICAgICAgIH0KICAgICB9Cit9CisKK3ZvaWQgUGFnZTo6c3RvcmFnZUJsb2Nr
aW5nU3RhdGVDaGFuZ2VkKCkKK3sKKyAgICBTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5n
UG9saWN5IHN0b3JhZ2VCbG9ja2luZ1BvbGljeSA9IG1fc2V0dGluZ3MtPnN0b3JhZ2VCbG9ja2lu
Z1BvbGljeSgpOworCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCisgICAgICAgIGZyYW1lLT5k
b2N1bWVudCgpLT5zdG9yYWdlQmxvY2tpbmdTdGF0ZURpZENoYW5nZSgpOworCisgICAgLy8gQ29s
bGVjdCB0aGUgUGx1Z2luVmlld3MgaW4gdG8gYSB2ZWN0b3IgdG8gZW5zdXJlIHRoYXQgYWN0aW9u
IHRoZSBwbHVnLWluIHRha2VzCisgICAgLy8gZnJvbSBiZWxvdyBwcml2YXRlQnJvd3NpbmdTdGF0
ZUNoYW5nZWQgZG9lcyBub3QgYWZmZWN0IHRoZWlyIGxpZmV0aW1lLgorICAgIFZlY3RvcjxSZWZQ
dHI8UGx1Z2luVmlld0Jhc2U+LCAzMj4gcGx1Z2luVmlld0Jhc2VzOworICAgIGNvbGxlY3RQbHVn
aW5WaWV3cyhwbHVnaW5WaWV3QmFzZXMpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBw
bHVnaW5WaWV3QmFzZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHBsdWdpblZpZXdCYXNlc1tpXS0+
c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKHN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7Cit9CisK
K3ZvaWQgUGFnZTo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKCkKK3sKKyAgICBib29sIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQgPSBtX3NldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVk
KCk7CisKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50
KCktPnByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCk7CisKKyAgICAvLyBDb2xsZWN0IHRo
ZSBQbHVnaW5WaWV3cyBpbiB0byBhIHZlY3RvciB0byBlbnN1cmUgdGhhdCBhY3Rpb24gdGhlIHBs
dWctaW4gdGFrZXMKKyAgICAvLyBmcm9tIGJlbG93IHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdl
ZCBkb2VzIG5vdCBhZmZlY3QgdGhlaXIgbGlmZXRpbWUuCisgICAgVmVjdG9yPFJlZlB0cjxQbHVn
aW5WaWV3QmFzZT4sIDMyPiBwbHVnaW5WaWV3QmFzZXM7CisgICAgY29sbGVjdFBsdWdpblZpZXdz
KHBsdWdpblZpZXdCYXNlcyk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBsdWdpblZp
ZXdCYXNlcy5zaXplKCk7ICsraSkKICAgICAgICAgcGx1Z2luVmlld0Jhc2VzW2ldLT5wcml2YXRl
QnJvd3NpbmdTdGF0ZUNoYW5nZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CmluZGV4IGEyMThkNWQ0Y2E1OWI1YjdhNDJkYWI0NGQ3YmVhNzQwZWU1ODM2ZTEuLjFkNTc0MGNk
Nzk4ZTNkODg1MTcxMzFhMDI4YTkzMGRhMWJmMTFiZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSAiUGFnZVZpc2liaWxpdHlTdGF0ZS5oIgogI2luY2x1ZGUgIlBh
Z2luYXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgorI2luY2x1ZGUgIlBsdWdp
blZpZXdCYXNlLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFi
bGUuaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgpAQCAtMjcxLDYgKzI3Miw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiB1c2VyU3R5bGVTaGVl
dCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgZG5zUHJlZmV0Y2hpbmdTdGF0ZUNoYW5nZWQoKTsK
KyAgICAgICAgdm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoKTsKICAgICAgICAgdm9p
ZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCBz
ZXREZWJ1Z2dlckZvckFsbFBhZ2VzKEpTQzo6RGVidWdnZXIqKTsKQEAgLTM1MCw2ICszNTIsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2
YWwoZG91YmxlKTsKICAgICAgICAgZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKCkgY29uc3Q7
CiAKKyAgICAgICAgdm9pZCBjb2xsZWN0UGx1Z2luVmlld3MoVmVjdG9yPFJlZlB0cjxQbHVnaW5W
aWV3QmFzZT4sIDMyPiYgcGx1Z2luVmlld0Jhc2VzKTsKKwogICAgICAgICBPd25QdHI8Q2hyb21l
PiBtX2Nocm9tZTsKICAgICAgICAgT3duUHRyPERyYWdDYXJldENvbnRyb2xsZXI+IG1fZHJhZ0Nh
cmV0Q29udHJvbGxlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCBmMjUxNTBiNTE2
YzM5NjUzNWMzOGJlZmNhM2NiMmEyYTY4ZmVlYTBmLi42ZjFkM2ZhMDgxZjAxMzkzZjA5MmYxNDBm
NTk5NGY5NjgyZjE1YTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAtOTMxLDYgKzkz
MSwxNSBAQCB2b2lkIFNldHRpbmdzOjpzZXRMb2FkRGVmZXJyaW5nRW5hYmxlZChib29sIGVuYWJs
ZWQpCiAgICAgbV9sb2FkRGVmZXJyaW5nRW5hYmxlZCA9IGVuYWJsZWQ7CiB9CiAKK3ZvaWQgU2V0
dGluZ3M6OnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJs
b2NraW5nUG9saWN5IGVuYWJsZWQpCit7CisgICAgaWYgKG1fc3RvcmFnZUJsb2NraW5nUG9saWN5
ID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3RvcmFnZUJsb2NraW5nUG9s
aWN5ID0gZW5hYmxlZDsKKyAgICBtX3BhZ2UtPnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCgp
OworfQorCiB2b2lkIFNldHRpbmdzOjpzZXRUaWxlZEJhY2tpbmdTdG9yZUVuYWJsZWQoYm9vbCBl
bmFibGVkKQogewogICAgIG1fdGlsZWRCYWNraW5nU3RvcmVFbmFibGVkID0gZW5hYmxlZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuaAppbmRleCA2ZmEzYmMwMjRiOGI4YzJmOWFjYzBlZDAzZDI2MTlkNDY2
NTMyOTYzLi4zOWEwYTg1MDgzYzhmMGQ5OWRjMWJhMjhjNGFkOGE0YWYyYWI0NDJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5oCkBAIC02MDIsNyArNjAyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2b2lkIHNldFdpbmRvd0ZvY3VzUmVzdHJpY3RlZChib29sIHJlc3RyaWN0ZWQpIHsg
bV93aW5kb3dGb2N1c1Jlc3RyaWN0ZWQgPSByZXN0cmljdGVkOyB9CiAgICAgICAgIGJvb2wgd2lu
ZG93Rm9jdXNSZXN0cmljdGVkKCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dGb2N1c1Jlc3RyaWN0
ZWQ7IH0KIAotICAgICAgICB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShTZWN1cml0eU9y
aWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5IHBvbGljeSkgeyBtX3N0b3JhZ2VCbG9ja2luZ1Bv
bGljeSA9IHBvbGljeTsgfQorICAgICAgICB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShT
ZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5KTsKICAgICAgICAgU2VjdXJpdHlP
cmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSBzdG9yYWdlQmxvY2tpbmdQb2xpY3koKSBjb25z
dCB7IHJldHVybiBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeTsgfQogCiAgICAgICAgIHZvaWQgc2V0
U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luVmlld0Jhc2UuaAppbmRleCAzMTJkNTdjMDlkMzc4MzBiODYzYzhkMjgzOTMx
ZDdkMTI3ZGQyMTY3Li5kMjFhZTQ1ZjNkNTdiYmE3NjA4ZGU5ZGVjYTU1NTE4YzU3NTc2NGJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdCYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaW5jbHVkZSAiV2lkZ2V0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1
ZGUgIlNjcm9sbFR5cGVzLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00OSw2ICs1MCw3
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBzY3JpcHRP
YmplY3QoSlNDOjpKU0dsb2JhbE9iamVjdCopIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKFNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxv
Y2tpbmdQb2xpY3kpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNo
YW5nZWQoYm9vbCkgeyB9CiAgICAgdmlydHVhbCBib29sIGdldEZvcm1WYWx1ZShTdHJpbmcmKSB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzY3JvbGwoU2Nyb2xsRGlyZWN0aW9u
LCBTY3JvbGxHcmFudWxhcml0eSkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAppbmRleCAy
YWQ0MWRhYTVjMmE4ZTU4MDhmYmJjMzNiNjMzNzU1MDU5NmQ2N2RjLi4wY2U3NmUyNDNiNDhmOTMx
ZGIxZDk3NjA4N2QyYjNjYzI1ZWIzZDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCkBAIC01NjMsNiArNTYzLDE0
IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpnZXRQbHVnaW5TY3JpcHRhYmxlTlBPYmpl
Y3QodWludDY0X3QmIHBsdWdpblNjcmlwdGFiCiAgICAgcmVsZWFzZU5QT2JqZWN0KHBsdWdpblNj
cmlwdGFibGVOUE9iamVjdCk7CiB9CiAKK3ZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpzdG9y
YWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQodWludDMyX3Qgc3RvcmFnZUJsb2NraW5nUG9saWN5KQor
eworICAgIG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ID0gc3RhdGljX2Nhc3Q8U2VjdXJpdHlPcmln
aW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeT4oc3RvcmFnZUJsb2NraW5nUG9saWN5KTsKKworICAg
IGlmICghbV9pc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQpCisgICAgICAgIG1fcGx1Z2luLT5zdG9y
YWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQobV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kpOworfQorCiB2
b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJv
b2wgaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKQogewogICAgIG1faXNQcml2YXRlQnJvd3NpbmdF
bmFibGVkID0gaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKaW5kZXggYTlkMzVhNjYz
YTcxNTU3MjRkZWJlNjJjZWM3MzY5Y2YzZTIwNTZjZi4uYmE4NmRiZGExZjZjN2I1NmUxMTg0YjJj
MzQwMWI3ZjE4MmQyNDM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAi
U2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdl
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2Vj
dXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNl
IENvcmVJUEMgewpAQCAtMTUyLDYgKzE1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVM
YXllckhvc3RpbmdDb250ZXh0KExheWVySG9zdGluZ01vZGUpOwogI2VuZGlmCiAKKyAgICB2b2lk
IHN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCh1aW50MzJfdCk7CiAgICAgdm9pZCBwcml2YXRl
QnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCk7CiAgICAgdm9pZCBnZXRGb3JtVmFsdWUoYm9vbCYg
cmV0dXJuVmFsdWUsIFN0cmluZyYgZm9ybVZhbHVlKTsKIApAQCAtMTYzLDYgKzE2NSw3IEBAIHBy
aXZhdGU6CiAgICAgdWludDY0X3QgbV9wbHVnaW5JbnN0YW5jZUlEOwogCiAgICAgU3RyaW5nIG1f
dXNlckFnZW50OworICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQ
b2xpY3kgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3k7CiAgICAgYm9vbCBtX2lzUHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZDsKICAgICBib29sIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZDsK
ICAgICBib29sIG1faXNJbml0aWFsaXppbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IDM3MWJlZTIzNzc1ZGRlMGZmNzIxMDQzYjM0NTBjY2E2MDY1YzlkZWIuLmUwYTBkY2E2OTAx
YzNhNjI3Y2QwNjE5Mzk0MDVkMWRkY2VkYmE2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC0xMDYsNiArMTA2LDkgQEAgbWVzc2FnZXMgLT4gUGx1Z2luQ29udHJvbGxlclByb3h5
IHsKICAgICAjIFJldHVybiBhIHNuYXBzaG90IG9mIHRoZSBwbHVnaW4KICAgICBTbmFwc2hvdCgp
IC0+IChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGJhY2tpbmdTdG9yZUhhbmRsZSkK
ICAgICAKKyAgICAjIFNlbnQgd2hlbiBzdG9yYWdlIGJsb2NraW5nIHBvbGljeSBjaGFuZ2VzCisg
ICAgU3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKHVpbnQzMl90IHN0b3JhZ2VCbG9ja2luZ1Bv
bGljeSkKKwogICAgICMgU2VudCB3aGVuIHByaXZhdGUgYnJvd3NpbmcgaXMgZW5hYmxlZCBvciBk
aXNhYmxlZAogICAgIFByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sIGlzUHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggMTVlNzY0OGRh
NjNmN2IzNDkyM2VkOTg5MzAyZjQ1ZTUyZDEyNDcyMC4uZDE5YTRlYmNmYTViMmQ3M2JiYTNjYmEw
OTg0YjQwNTE4ZTBkZjExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC05NTMsNiAr
OTUzLDExIEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OmNvbnRlbnRzU2NhbGVGYWN0b3JDaGFuZ2Vk
KGZsb2F0IHNjYWxlRmFjdG9yKQogI2VuZGlmCiB9CiAKK3ZvaWQgTmV0c2NhcGVQbHVnaW46OnN0
b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZChTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5n
UG9saWN5IHN0b3JhZ2VCbG9ja2luZ1BvbGljeSkKK3sKKyAgICBwcml2YXRlQnJvd3NpbmdTdGF0
ZUNoYW5nZWQoc3RvcmFnZUJsb2NraW5nUG9saWN5ICE9IFNlY3VyaXR5T3JpZ2luOjpBbGxvd0Fs
bFN0b3JhZ2UpOworfQorCiB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwcml2YXRlQnJvd3NpbmdTdGF0
ZUNoYW5nZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogewogICAgIEFTU0VSVChtX2lz
U3RhcnRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IDVmOTNjNTc0NzY1ODE3ZThiYmNi
OTExYmIzYzNjNGI1YzQ5YTU0YmMuLjRhYzJkZTNhOTUyNmRiN2ZjZjBiYTRjOGYxZjJmN2Q4Yzli
YjJiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC0yMjIsNiArMjIyLDcgQEAgcHJpdmF0
ZToKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRzU2NhbGVGYWN0b3JDaGFuZ2Vk
KGZsb2F0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3kpOwogICAgIHZpcnR1
YWwgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCk7CiAgICAgdmlydHVhbCBi
b29sIGdldEZvcm1WYWx1ZShTdHJpbmcmIGZvcm1WYWx1ZSk7CiAgICAgdmlydHVhbCBib29sIGhh
bmRsZVNjcm9sbChXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51
bGFyaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvQnVpbHRJblBERlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvQnVpbHRJblBERlZpZXcuaAppbmRleCA5Y2NkODA0MDAzN2U4MDA5MWY5ODU2YTNlZDM5MmMz
NjZhMGFhZjMyLi45YWUxZDc2NWFhMzdmZDZlNTE3NGNmZDYxOWE0MDU2MDIwNTA2ZTkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZW
aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdElu
UERGVmlldy5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJQbHVnaW4uaCIKICNpbmNs
dWRlIDxXZWJDb3JlL1Njcm9sbGFibGVBcmVhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0
eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0NvbnRleHRSZWY7CkBAIC0xMTMsNiArMTE0LDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3Rp
bmdNb2RlKSBPVkVSUklERTsKICNlbmRpZgogCisgICAgdmlydHVhbCB2b2lkIHN0b3JhZ2VCbG9j
a2luZ1N0YXRlQ2hhbmdlZChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5n
UG9saWN5KTsKICAgICB2aXJ0dWFsIHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJv
b2wpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRGb3JtVmFsdWUoU3RyaW5nJiBmb3JtVmFsdWUpOwog
ICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uLCBX
ZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5tbQppbmRleCBmZTdmMjU4YjBh
NDlmMjllYzg2OWU0NmZjNjk1NzAxZDI2N2VlZGFlLi45NzZjN2E4MDhjZWFjYmRlMWM4ZjNlZDA4
OWFiZGU2NDg3ODc3MTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL0J1aWx0SW5QREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcubW0KQEAgLTY2MCw2ICs2NjAsMTAgQEAgdm9p
ZCBCdWlsdEluUERGVmlldzo6c2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlKQog
CiAjZW5kaWYKIAordm9pZCBCdWlsdEluUERGVmlldzo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFu
Z2VkKFNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3kpCit7Cit9CisKIHZvaWQg
QnVpbHRJblBERlZpZXc6OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sKQogewogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCmluZGV4IGI5MTE3NGY5
ZWI3YzI3ZWYzYjJmZWU4YjI0NDBhZjllNDE4MTdjZWMuLmRlNjJkZTc0ZjljNjM2OTczN2QwZTNh
N2NiNGRmZWY1MWY3YmFjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9s
bFR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KQEAgLTIxOCw2ICsyMTksOSBAQCBwdWJsaWM6CiAgICAgLy8gVGVsbHMg
dGhlIHBsdWctaW4gYWJvdXQgc2NhbGUgZmFjdG9yIGNoYW5nZXMuCiAgICAgdmlydHVhbCB2b2lk
IGNvbnRlbnRzU2NhbGVGYWN0b3JDaGFuZ2VkKGZsb2F0KSA9IDA7CiAKKyAgICAvLyBDYWxsZWQg
d2hlbiB0aGUgc3RvcmFnZSBibG9ja2luZyBwb2xpY3kgZm9yIHRoaXMgcGx1Zy1pbiBjaGFuZ2Vz
LgorICAgIHZpcnR1YWwgdm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSkgPSAwOworCiAgICAgLy8gQ2Fs
bGVkIHdoZW4gdGhlIHByaXZhdGUgYnJvd3Npbmcgc3RhdGUgZm9yIHRoaXMgcGx1Zy1pbiBjaGFu
Z2VzLgogICAgIHZpcnR1YWwgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCkg
PSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5LmNwcAppbmRleCBlMzgwZWVmOTRmMzU3ZTAyOTFlZWM4M2U2OTRjYmY5OGZkMGFkNDBhLi5j
YjM2NWE2YzEyMjZlNTdjZTA2NThlZmNmMTZmYTI5MmE0ZDA4MTllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKQEAgLTQ2MCw2ICs0
NjAsMTEgQEAgdm9pZCBQbHVnaW5Qcm94eTo6Y29udGVudHNTY2FsZUZhY3RvckNoYW5nZWQoZmxv
YXQgc2NhbGVGYWN0b3IpCiAgICAgZ2VvbWV0cnlEaWRDaGFuZ2UoKTsKIH0KIAordm9pZCBQbHVn
aW5Qcm94eTo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3kgaXNTdG9yYWdlQmxvY2tpbmdQb2xpY3kpCit7Cisg
ICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRy
b2xsZXJQcm94eTo6U3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKGlzU3RvcmFnZUJsb2NraW5n
UG9saWN5KSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKK30KKwogdm9pZCBQbHVnaW5Qcm94eTo6cHJp
dmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wgaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKQog
ewogICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5D
b250cm9sbGVyUHJveHk6OlByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChpc1ByaXZhdGVCcm93
c2luZ0VuYWJsZWQpLCBtX3BsdWdpbkluc3RhbmNlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAppbmRleCBjMGNhMTE2YjA3ZTk4NGQ3YjAw
NzRkZDhlODE2MzA1Y2VmYzM1YmI2Li5mNDBmMTczYTRlNzZkNWJiMmI4Y2RiNjJmYjk0MDVmMGFj
OTc4MTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJveHkuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlBsdWdpbi5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvQWZmaW5lVHJhbnNmb3JtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogCiAjaWYgUExBVEZPUk0oTUFD
KQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTExMiw2ICsxMTMsNyBAQCBwcml2YXRl
OgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNTY2FsZUZhY3RvckNoYW5nZWQo
ZmxvYXQpOworICAgIHZpcnR1YWwgdm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7CiAgICAgdmlydHVh
bCB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sKTsKICAgICB2aXJ0dWFsIGJv
b2wgZ2V0Rm9ybVZhbHVlKFN0cmluZyYgZm9ybVZhbHVlKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFu
ZGxlU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVs
YXJpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCmluZGV4IDBhMGM2YjYzZGQyYjY2NzM0YmNiZDI3ODMyZmVkMTU4OWJhOWVkMTIuLjMx
YjhmNzk0YjUzZDhlODFiNzU1NjY5YmRhZmUyNTgyMzkwMDIxMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTU4MSw2ICs1ODEs
MTUgQEAgSlNPYmplY3QqIFBsdWdpblZpZXc6OnNjcmlwdE9iamVjdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogI2VuZGlmCiB9CiAKK3ZvaWQgUGx1Z2luVmlldzo6c3RvcmFnZUJsb2Nr
aW5nU3RhdGVDaGFuZ2VkKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQ
b2xpY3kgc3RvcmFnZUJsb2NraW5nUG9saWN5KQoreworICAgIC8vIFRoZSBwbHVnLWluIGNhbiBi
ZSBudWxsIGhlcmUgaWYgaXQgZmFpbGVkIHRvIGluaXRpYWxpemUuCisgICAgaWYgKCFtX2lzSW5p
dGlhbGl6ZWQgfHwgIW1fcGx1Z2luKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BsdWdpbi0+
c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKHN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7Cit9CisK
IHZvaWQgUGx1Z2luVmlldzo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wgcHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCkKIHsKICAgICAvLyBUaGUgcGx1Zy1pbiBjYW4gYmUgbnVsbCBoZXJl
IGlmIGl0IGZhaWxlZCB0byBpbml0aWFsaXplLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggZDFkOTg1MzYzMzg2ODZiMzVkOWE0ODg5OTJi
YjBhMzVmOTZiYWY5ZC4uYmMwMzc4ZDNkY2Q0OWVlN2QyMzgzNjllYWRhNjY0MzU4NTBhMWI5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBA
IC0xMDksNiArMTA5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIoKSBjb25zdDsKICNlbmRpZgogICAgIHZpcnR1YWwgSlNDOjpKU09iamVjdCog
c2NyaXB0T2JqZWN0KEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3Rv
cmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpTdG9yYWdl
QmxvY2tpbmdQb2xpY3kpOwogICAgIHZpcnR1YWwgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNo
YW5nZWQoYm9vbCk7CiAgICAgdmlydHVhbCBib29sIGdldEZvcm1WYWx1ZShTdHJpbmcmKTsKICAg
ICB2aXJ0dWFsIGJvb2wgc2Nyb2xsKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29yZTo6
U2Nyb2xsR3JhbnVsYXJpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktp
dDIuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IDhlNTYwOTFiNTg3
MTI2NjY4YzBjODQwZWVhNmU1ZGYzMDlkMjUzNDIuLjBjZjQwYzg3ZjMyN2I5MjgzMTczNTY3OGQy
YzFkYzkyYWQ4MjYyODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRl
ZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTIzMSw2ICsyMzEsNyBA
QCBFWFBPUlRTCiAgICAgICAgID9zZXRTY3JvbGxPZmZzZXRGcm9tSW50ZXJuYWxzQFNjcm9sbGFi
bGVBcmVhQFdlYkNvcmVAQFFBRVhBQlZJbnRQb2ludEAyQEBaCiAgICAgICAgID9zZXRTZXJpZkZv
bnRGYW1pbHlAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWEFCVkF0b21pY1N0cmluZ0BXVEZAQFc0VVNj
cmlwdENvZGVAQEBaCiAgICAgICAgID9zZXRTdGFuZGFyZEZvbnRGYW1pbHlAU2V0dGluZ3NAV2Vi
Q29yZUBAUUFFWEFCVkF0b21pY1N0cmluZ0BXVEZAQFc0VVNjcmlwdENvZGVAQEBaCisJCT9zZXRT
dG9yYWdlQmxvY2tpbmdQb2xpY3lAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWFc0U3RvcmFnZUJsb2Nr
aW5nUG9saWN5QFNlY3VyaXR5T3JpZ2luQDJAQFoKICAgICAgICAgP3NldFN1Z2dlc3RlZFZhbHVl
QEhUTUxJbnB1dEVsZW1lbnRAV2ViQ29yZUBAUUFFWEFCVlN0cmluZ0BXVEZAQEBaCiAgICAgICAg
ID9zZXRFZGl0aW5nVmFsdWVASFRNTElucHV0RWxlbWVudEBXZWJDb3JlQEBRQUVYQUJWU3RyaW5n
QFdURkBAQFoKICAgICAgICAgP3NldHRpbmdzQERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVlNldHRp
bmdzQDJAWFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9T
b3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IGE5MThjOGNiMjkwMTgyYjM5MWJh
NmQyZjk5NmU4NWIyZTQwOGE4NDMuLjhlNmQ2Mzg1NDA4ZDc4MDQwZGI3NDI0ZGM0NWY4OTI4YjAy
NzJjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIv
U291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMTUzLDYgKzE1Myw3IEBAIF9aTjdX
ZWJDb3JlOFNldHRpbmdzMjFzZXRTdGFuZGFyZEZvbnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3Ry
aW5nRTExVVNjcmlwdENvZGU7CiBfWk43V2ViQ29yZThTZXR0aW5nczIyc2V0U2Fuc1NlcmlmRm9u
dEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZTsKIF9aTjdXZWJDb3Jl
OFNldHRpbmdzMjNzZXRQaWN0b2dyYXBoRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdF
MTFVU2NyaXB0Q29kZTsKIF9aTjdXZWJDb3JlOFNldHRpbmdzMjRzZXRNb2NrU2Nyb2xsYmFyc0Vu
YWJsZWRFYjsKK19aTjdXZWJDb3JlOFNldHRpbmdzMjRzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3lF
TlNfMTRTZWN1cml0eU9yaWdpbjIxU3RvcmFnZUJsb2NraW5nUG9saWN5RQogX1pON1dlYkNvcmU4
U2V0dGluZ3MzN3NldEZpeGVkRWxlbWVudHNMYXlvdXRSZWxhdGl2ZVRvRnJhbWVFYjsKIF9aTjdX
ZWJDb3JlOUZyYW1lVmlldzE3cGFpbnRDb250cm9sVGludHNFdjsKIF9aTjdXZWJDb3JlOUZyYW1l
VmlldzE5c2Nyb2xsRWxlbWVudFRvUmVjdEVQTlNfN0VsZW1lbnRFUktOU183SW50UmVjdEU7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggYTE4MWRmNzJhYmIyZTU4MWRmNGQ3Nzc1OTEzZjY3OTNmMDQ3NmI0ZS4uNjBhZmRhNGQ5
NzM3ZjgzMDMyNDhkYjQ2ODAxMjJhYTQzOTg4NThiZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisy
MDEyLTA5LTEwICBKZWZmcmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxs
b3cgdGhpcmQtcGFydHkgc3RvcmFnZSBibG9ja2luZyBzZXR0aW5nIHRvIGNoYW5nZSB3aGlsZSBh
IHBhZ2UgaXMgbG9hZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTc5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRlc3RlZCBjb21iaW5hdGlvbnMgb2YgbG9vc2VuaW5nIGFuZCBzdHJlbmd0aGVuaW5n
IHRoZSBzdG9yYWdlIGJsb2NraW5nIHBvbGljeSBvbiB2YXJpb3VzIHR5cGVzIG9mIHN0b3JhZ2Uu
CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9pZnJhbWUtZm9yLXN0
b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC1sb2NhbC1zdG9yYWdlLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9j
a2luZy1jaGFuZ2VkLXNoYXJlZC13b3JrZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5nLWNoYW5n
ZWQtd2Vic3FsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3Rv
cmFnZS1ibG9ja2luZy1sb29zZW5lZC1sb2NhbC1zdG9yYWdlLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVk
LWxvY2FsLXN0b3JhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0
eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXBsdWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1w
bHVnaW4uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdl
LWJsb2NraW5nLWxvb3NlbmVkLXNoYXJlZC13b3JrZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtc2hh
cmVkLXdvcmtlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0
b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtd2Vic3FsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXdlYnNx
bC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxv
Y2tpbmctc3RyZW5ndGhlbmVkLWxvY2FsLXN0b3JhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVk
LWxvY2FsLXN0b3JhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0
eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wbHVnaW4tZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5n
dGhlbmVkLXBsdWdpbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXNoYXJlZC13b3JrZXItZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmct
c3RyZW5ndGhlbmVkLXNoYXJlZC13b3JrZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC13ZWJzcWwtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxv
Y2tpbmctc3RyZW5ndGhlbmVkLXdlYnNxbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOiBTa2lwIHNoYXJlZCB3b3JrZXIgdGVzdHMuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxv
Y2tpbmctc3RyZW5ndGhlbmVkLXBsdWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDEyLTA5
LTA2ICBKZWZmcmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CiAKICAgICAgICAgRXh0ZW5kIHRo
aXJkLXBhcnR5IHN0b3JhZ2UgYmxvY2tpbmcgQVBJIHRvIG9wdGlvbmFsbHkgYWxsb3cgYmxvY2tp
bmcgYWxsIHN0b3JhZ2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvcmVzb3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9ja2luZy1jaGFuZ2VkLWxvY2FsLXN0
b3JhZ2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2lm
cmFtZS1mb3Itc3RvcmFnZS1ibG9ja2luZy1jaGFuZ2VkLWxvY2FsLXN0b3JhZ2UuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lMjAzNzE5NjAyNzYzMDgwZWZiZGM2OTZhNDIwZTgwNDBmMDgwYzdkCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvaWZy
YW1lLWZvci1zdG9yYWdlLWJsb2NraW5nLWNoYW5nZWQtbG9jYWwtc3RvcmFnZS5odG1sCkBAIC0w
LDAgKzEsMzUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3Nh
Z2UpIHsKKwl2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKKwlub2RlLnRl
eHRDb250ZW50ID0gbWVzc2FnZTsKKwlkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5vZGUpOwor
fQorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisJdHJ5IHsKKwkJdmFyIGwgPSB3aW5k
b3cubG9jYWxTdG9yYWdlOworCQlsID0gbnVsbDsKKwkJbG9nKCdObyBleGNlcHRpb24nKTsKKwl9
IGNhdGNoIChleGNlcHRpb24pIHsKKwkJbG9nKGV4Y2VwdGlvbi5uYW1lKTsKKwl9Cit9CisKK3dp
bmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7CisJdHJ5IHsKKwkJdmFyIGwgPSB3aW5kb3cu
bG9jYWxTdG9yYWdlOworCQlsID0gbnVsbDsKKwkJbG9nKCdObyBleGNlcHRpb24nKTsKKwkJd2lu
ZG93LnBhcmVudC5wb3N0TWVzc2FnZSgnTm8gZXhjZXB0aW9uJywgJyonKTsKKwl9IGNhdGNoIChl
eGNlcHRpb24pIHsKKwkJbG9nKGV4Y2VwdGlvbi5uYW1lKTsKKwkJd2luZG93LnBhcmVudC5wb3N0
TWVzc2FnZShleGNlcHRpb24ubmFtZSwgJyonKTsKKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5nLWNoYW5n
ZWQtc2hhcmVkLXdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9y
ZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5nLWNoYW5nZWQtc2hhcmVkLXdvcmtl
ci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjM3YmExOWQxNzBlYjRhMDA4NzA3OWNkODdkYjQ1OTZhMDc0NDgy
ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jl
c291cmNlcy9pZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC1zaGFyZWQtd29ya2Vy
Lmh0bWwKQEAgLTAsMCArMSw0MSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlv
biBsb2cobWVzc2FnZSkgeworCXZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcp
OworCW5vZGUudGV4dENvbnRlbnQgPSBtZXNzYWdlOworCWRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQobm9kZSk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVdvcmtlcigpIHsKKwl2YXIgd29ya2VyID0g
bmV3IFNoYXJlZFdvcmtlcignc2hhcmVkLXdvcmtlci5qcycsICdTaGFyZWRXb3JrZXInKTsKKwl3
b3JrZXIucG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgeworCQlsb2coZXZlbnQuZGF0
YSk7CisJCXdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoZXZlbnQuZGF0YSwgJyonKTsKKwl9CisJ
d29ya2VyLnBvcnQuc3RhcnQoKTsKKwl3b3JrZXIucG9ydC5wb3N0TWVzc2FnZSgnQ29ubmVjdGlv
biB0ZXN0Jyk7Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKwl0cnkgeworCQlj
cmVhdGVXb3JrZXIoZmFsc2UpOworCX0gY2F0Y2ggKGV4Y2VwdGlvbikgeworCQlsb2coZXhjZXB0
aW9uLm5hbWUpOworCQl3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKGV4Y2VwdGlvbi5uYW1lLCAn
KicpOworCX0KK30KKword2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGUpIHsKKwl0cnkgewor
CQljcmVhdGVXb3JrZXIodHJ1ZSk7CisJfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisJCWxvZyhleGNl
cHRpb24ubmFtZSk7CisJCXdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoZXhjZXB0aW9uLm5hbWUs
ICcqJyk7CisJfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2Vz
L2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9ja2luZy1jaGFuZ2VkLXdlYnNxbC5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJs
b2NraW5nLWNoYW5nZWQtd2Vic3FsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQ1MzhiYmJlODA4ODM4MDBm
YTY5MjM2YjlkZGFmMGVjZTNkYzc4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9ja2luZy1j
aGFuZ2VkLXdlYnNxbC5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKwl2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3AnKTsKKwlub2RlLnRleHRDb250ZW50ID0gbWVzc2FnZTsKKwlkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKG5vZGUpOworfQorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7
CisJdHJ5IHsKKwkJdmFyIHNxbCA9IHdpbmRvdy5vcGVuRGF0YWJhc2UoJ3Rlc3RkYicsICcxLjAn
LCAnVGVzdGluZyBkYXRhYmFzZScsIDUxMiAqIDEwMjQpOworCQlzcWwgPSBudWxsOworCQlsb2co
J05vIGV4Y2VwdGlvbicpOworCX0gY2F0Y2ggKGV4Y2VwdGlvbikgeworCQlsb2coZXhjZXB0aW9u
Lm5hbWUpOworCX0KK30KKword2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGUpIHsKKwl0cnkg
eworCQl2YXIgc3FsID0gd2luZG93Lm9wZW5EYXRhYmFzZSgndGVzdGRiJywgJzEuMCcsICdUZXN0
aW5nIGRhdGFiYXNlJywgNTEyICogMTAyNCk7CisJCXNxbCA9IG51bGw7CisJCWxvZygnTm8gZXhj
ZXB0aW9uJyk7CisJCXdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoJ05vIGV4Y2VwdGlvbicsICcq
Jyk7CisJfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisJCWxvZyhleGNlcHRpb24ubmFtZSk7CisJCXdp
bmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoZXhjZXB0aW9uLm5hbWUsICcqJyk7CisJfQorfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1s
b2NhbC1zdG9yYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1sb2NhbC1zdG9yYWdlLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hM2ViOTMzMTg3ODAzZWU1ZTRiNzczNDM3YTYwN2ZhOTM3NDY3Y2ExCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJs
b2NraW5nLWxvb3NlbmVkLWxvY2FsLXN0b3JhZ2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAg
QEAKK1RoaXMgaWZyYW1lIHNob3VsZCByZXR1cm4gb25seSBvbmUgc2VjdXJpdHkgZXJyb3I6CisK
KworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicK
Ky0tLS0tLS0tCitTRUNVUklUWV9FUlIKKworTm8gZXhjZXB0aW9uCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtbG9j
YWwtc3RvcmFnZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdl
LWJsb2NraW5nLWxvb3NlbmVkLWxvY2FsLXN0b3JhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTlkYjBl
OTA5MTcwNzc3NzJmYWNmOTk0YzRlN2Q1OTdmYTlkZTFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLWxv
Y2FsLXN0b3JhZ2UuaHRtbApAQCAtMCwwICsxLDMxIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCXRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCXRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVz
QXNUZXh0KCk7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKwlpbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdCbG9ja0FsbCcpOworCitmdW5jdGlvbiBkZWNy
ZW1lbnQoKSB7CisJaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCQlpbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdBbGxvd0FsbCcpOworCWZvciAodmFyIGkgPSAwOyBp
IDwgd2luZG93LmZyYW1lcy5sZW5ndGg7ICsraSkKKwkJd2luZG93LmZyYW1lc1tpXS5wb3N0TWVz
c2FnZSgnYmxvY2tlZCcsICcqJyk7Cit9CisKK3dpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbigp
IHsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7
CisJfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaWZyYW1lIHNob3Vs
ZCByZXR1cm4gb25seSBvbmUgc2VjdXJpdHkgZXJyb3I6PC9wPgorPGlmcmFtZSBzcmM9Imh0dHA6
Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJs
b2NraW5nLWNoYW5nZWQtbG9jYWwtc3RvcmFnZS5odG1sIiBvbmxvYWQ9ImRlY3JlbWVudCgpIj48
L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wbHVnaW4tZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxv
b3NlbmVkLXBsdWdpbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjk4ZWU0ZjhlODUzN2M2NjRl
MjIyZTNiMWU3OTU5MTAyNTZhOTZmZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wbHVnaW4tZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIG5vdCBoYXZlIHByaXZh
dGUgYnJvd3NpbmcgZW5hYmxlZDoKKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBh
dGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK2ZhbHNlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtcGx1
Z2luLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tp
bmctbG9vc2VuZWQtcGx1Z2luLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2IwZDI0ZjIyZGFhNDBlNmMxMDU5
N2MwN2U1MzVjZGIzOTM2OTMwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wbHVnaW4uaHRtbApAQCAt
MCwwICsxLDMxIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworCXRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCXRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworCXRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKwlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5n
UG9saWN5KCdCbG9ja0FsbCcpOworCitmdW5jdGlvbiBkZWNyZW1lbnQoKSB7CisJaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorCQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9s
aWN5KCdBbGxvd0FsbCcpOworCWZvciAodmFyIGkgPSAwOyBpIDwgd2luZG93LmZyYW1lcy5sZW5n
dGg7ICsraSkKKwkJd2luZG93LmZyYW1lc1tpXS5wb3N0TWVzc2FnZSgnYmxvY2tlZCcsICcqJyk7
Cit9CisKK3dpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbigpIHsKKwlpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKwkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisJfQorfQorPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaWZyYW1lIHNob3VsZCBub3QgaGF2ZSBwcml2YXRlIGJy
b3dzaW5nIGVuYWJsZWQ6PC9wPgorPGlmcmFtZSBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9z
ZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3ItcGx1Z2luLWFzeW5jLmh0
bWwiIG9ubG9hZD0iZGVjcmVtZW50KCkiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5n
LWxvb3NlbmVkLXNoYXJlZC13b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXNoYXJlZC13b3JrZXItZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwMTJhMzBiOWMxYjliZGUwNzkzMzA1NWYzODIwODEyZWRi
OTViN2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtc2hhcmVkLXdvcmtlci1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMCBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIHJldHVybiBvbmx5IG9uZSBzZWN1cml0
eSBlcnJvcjoKKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJh
bWUwLS0+LS0+JworLS0tLS0tLS0KK1NFQ1VSSVRZX0VSUgorCitDb25uZWN0ZWQgc3VjY2Vzc2Z1
bGx5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2Ut
YmxvY2tpbmctbG9vc2VuZWQtc2hhcmVkLXdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXNoYXJlZC13b3JrZXIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wODU0YTQ4MmFlYzdkODZkOGNkZmVjMjBmNzViM2IyOGUzYzJmYjYyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdl
LWJsb2NraW5nLWxvb3NlbmVkLXNoYXJlZC13b3JrZXIuaHRtbApAQCAtMCwwICsxLDMxIEBACis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCXRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCXRlc3RS
dW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKwlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdCbG9ja0Fs
bCcpOworCit3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CisJaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorCQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdB
bGxvd0FsbCcpOworCWZvciAodmFyIGkgPSAwOyBpIDwgd2luZG93LmZyYW1lcy5sZW5ndGg7ICsr
aSkKKwkJd2luZG93LmZyYW1lc1tpXS5wb3N0TWVzc2FnZSgnYmxvY2tlZCcsICcqJyk7CisKKwl3
aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CisJCWlmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworCQkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisJCX0KKwl9Cit9Cis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHA+VGhpcyBpZnJhbWUgc2hvdWxkIHJldHVybiBvbmx5IG9uZSBzZWN1
cml0eSBlcnJvcjo8L3A+Cis8aWZyYW1lIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3Vy
aXR5L3Jlc291cmNlcy9pZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC1zaGFyZWQt
d29ya2VyLmh0bWwiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXdl
YnNxbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3Jh
Z2UtYmxvY2tpbmctbG9vc2VuZWQtd2Vic3FsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hM2Vi
OTMzMTg3ODAzZWU1ZTRiNzczNDM3YTYwN2ZhOTM3NDY3Y2ExCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVk
LXdlYnNxbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGhpcyBpZnJhbWUgc2hvdWxk
IHJldHVybiBvbmx5IG9uZSBzZWN1cml0eSBlcnJvcjoKKworCisKKy0tLS0tLS0tCitGcmFtZTog
JzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK1NFQ1VSSVRZX0VS
UgorCitObyBleGNlcHRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC13ZWJzcWwuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC13ZWJzcWwuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lMDJjM2IzY2FkYzBkMmZlYWZjMDRkZWU3ZWZiYjYyZWU1NzY2OWExCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdl
LWJsb2NraW5nLWxvb3NlbmVkLXdlYnNxbC5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisJdGVzdFJ1bm5lci5k
dW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCWlu
dGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0Jsb2NrQWxsJyk7CisK
K2Z1bmN0aW9uIGRlY3JlbWVudCgpIHsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpCisJCWludGVy
bmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0FsbG93QWxsJyk7CisJZm9y
ICh2YXIgaSA9IDA7IGkgPCB3aW5kb3cuZnJhbWVzLmxlbmd0aDsgKytpKQorCQl3aW5kb3cuZnJh
bWVzW2ldLnBvc3RNZXNzYWdlKCdibG9ja2VkJywgJyonKTsKK30KKword2luZG93Lm9ubWVzc2Fn
ZSA9IGZ1bmN0aW9uKCkgeworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCQl0ZXN0UnVubmVy
Lm5vdGlmeURvbmUoKTsKKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhp
cyBpZnJhbWUgc2hvdWxkIHJldHVybiBvbmx5IG9uZSBzZWN1cml0eSBlcnJvcjo8L3A+Cis8aWZy
YW1lIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9pZnJhbWUt
Zm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC13ZWJzcWwuaHRtbCIgb25sb2FkPSJkZWNyZW1l
bnQoKSI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLWxvY2Fs
LXN0b3JhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9z
dG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1sb2NhbC1zdG9yYWdlLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5mNDAwODNmZDZmNGY5Yjk1NGE3OTM0MzEwZDdhNTU0NmQ0NmMyMzkwCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJs
b2NraW5nLXN0cmVuZ3RoZW5lZC1sb2NhbC1zdG9yYWdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDEwIEBACitUaGlzIGlmcmFtZSBzaG91bGQgcmV0dXJuIG9ubHkgb25lIHNlY3VyaXR5IGVycm9y
OgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4t
LT4nCistLS0tLS0tLQorTm8gZXhjZXB0aW9uCisKK05vIGV4Y2VwdGlvbgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3Ro
ZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLWxvY2FsLXN0b3JhZ2UuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kNDlmNDFlOTVhZDZmNWMwZWRiZDM1NWY1N2Q4MzM0N2Y1NjBjYmEyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5n
LXN0cmVuZ3RoZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwl0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKwl0ZXN0UnVubmVy
LmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworfQorCitmdW5jdGlvbiBkZWNyZW1lbnQoKSB7CisJ
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJs
b2NraW5nUG9saWN5KCdCbG9ja0FsbCcpOworCWZvciAodmFyIGkgPSAwOyBpIDwgd2luZG93LmZy
YW1lcy5sZW5ndGg7ICsraSkKKwkJd2luZG93LmZyYW1lc1tpXS5wb3N0TWVzc2FnZSgnYmxvY2tl
ZCcsICcqJyk7Cit9CisKK3dpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbigpIHsKKwlpZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKKwkJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2lu
Z1BvbGljeSgnQWxsb3dBbGwnKTsKKwkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisJfQorfQor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaWZyYW1lIHNob3VsZCByZXR1cm4g
b25seSBvbmUgc2VjdXJpdHkgZXJyb3I6PC9wPgorPGlmcmFtZSBzcmM9Imh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5nLWNo
YW5nZWQtbG9jYWwtc3RvcmFnZS5odG1sIiBvbmxvYWQ9ImRlY3JlbWVudCgpIj48L2lmcmFtZT4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcGx1Z2luLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0
aGVuZWQtcGx1Z2luLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NGQ4ZWNlZmE3ZTM4NzEzZDQ0
N2VjODQzYmVhMTIxNDQ0YTJjOGFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wbHVnaW4tZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIGhhdmUgcHJpdmF0
ZSBicm93c2luZyBlbmFibGVkOgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0
aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQt
cGx1Z2luLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxv
Y2tpbmctc3RyZW5ndGhlbmVkLXBsdWdpbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5MGU2ODNmZDM1MGQ1
ZTUzN2I3OWNiOWZhMzA2NDhkZjdiZDZiNzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXBsdWdp
bi5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisJdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisJdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisJdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsK
K30KKworZnVuY3Rpb24gZGVjcmVtZW50KCkgeworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikKKwkJ
aW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeSgnQmxvY2tBbGwnKTsK
Kwlmb3IgKHZhciBpID0gMDsgaSA8IHdpbmRvdy5mcmFtZXMubGVuZ3RoOyArK2kpCisJCXdpbmRv
dy5mcmFtZXNbaV0ucG9zdE1lc3NhZ2UoJ2Jsb2NrZWQnLCAnKicpOworfQorCit3aW5kb3cub25t
ZXNzYWdlID0gZnVuY3Rpb24oKSB7CisJaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJCWludGVy
bmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0FsbG93QWxsJyk7CisJCXRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOworCX0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQgaGF2ZSBwcml2YXRlIGJyb3dzaW5nIGVuYWJsZWQ6PC9w
PgorPGlmcmFtZSBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMv
Y3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3ItcGx1Z2luLWFzeW5jLmh0bWwiIG9ubG9hZD0iZGVjcmVt
ZW50KCkiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1zaGFy
ZWQtd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
c3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtc2hhcmVkLXdvcmtlci1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uN2ZhMTgxNDNmZTZiYzRmOTU1ZGVlZjZhZTI5ODg1NGQ1OGJlNmNiNwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1i
bG9ja2luZy1zdHJlbmd0aGVuZWQtc2hhcmVkLXdvcmtlci1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSwxMCBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIHJldHVybiBvbmx5IG9uZSBzZWN1cml0eSBlcnJv
cjoKKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+
LS0+JworLS0tLS0tLS0KK0Nvbm5lY3RlZCBzdWNjZXNzZnVsbHkKKworU0VDVVJJVFlfRVJSCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tp
bmctc3RyZW5ndGhlbmVkLXNoYXJlZC13b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtc2hhcmVkLXdvcmtlci5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjQ4ZjliOWUwYzNlNTc5MWI5YTUzY2RjMjk0ODVlNDRkNTI4MjE1ODEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3Jh
Z2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXNoYXJlZC13b3JrZXIuaHRtbApAQCAtMCwwICsxLDI5
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
CXRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
CXRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKK3dpbmRvdy5vbm1lc3Nh
Z2UgPSBmdW5jdGlvbigpIHsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpCisJCWludGVybmFscy5z
ZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0Jsb2NrQWxsJyk7CisJZm9yICh2YXIg
aSA9IDA7IGkgPCB3aW5kb3cuZnJhbWVzLmxlbmd0aDsgKytpKQorCQl3aW5kb3cuZnJhbWVzW2ld
LnBvc3RNZXNzYWdlKCdibG9ja2VkJywgJyonKTsKKworCXdpbmRvdy5vbm1lc3NhZ2UgPSBmdW5j
dGlvbigpIHsKKwkJaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJCQlpbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdBbGxvd0FsbCcpOworCQkJdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CisJCX0KKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+
VGhpcyBpZnJhbWUgc2hvdWxkIHJldHVybiBvbmx5IG9uZSBzZWN1cml0eSBlcnJvcjo8L3A+Cis8
aWZyYW1lIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9pZnJh
bWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC1zaGFyZWQtd29ya2VyLmh0bWwiPjwvaWZy
YW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC13ZWJzcWwtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0
cmVuZ3RoZW5lZC13ZWJzcWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlNjYxODVjM2Y0NTkx
OWMzOWRmNjdiZTk4MzFkYjliNDdiOTUxY2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXdlYnNx
bC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIHJldHVy
biBvbmx5IG9uZSBzZWN1cml0eSBlcnJvcjoKKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1m
cmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK05vIGV4Y2VwdGlvbgorCitT
RUNVUklUWV9FUlIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
c3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtd2Vic3FsLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXdlYnNxbC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjg4ZWVmMTQ5ZTRhMTk0MDQ4NDk4YmYyYmMzNWY1NjQ1YWUzNWM1ZDMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3Jh
Z2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXdlYnNxbC5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisJdGVzdFJ1
bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK30KKworZnVuY3Rpb24gZGVjcmVtZW50KCkg
eworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikKKwkJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3Jh
Z2VCbG9ja2luZ1BvbGljeSgnQmxvY2tBbGwnKTsKKwlmb3IgKHZhciBpID0gMDsgaSA8IHdpbmRv
dy5mcmFtZXMubGVuZ3RoOyArK2kpCisJCXdpbmRvdy5mcmFtZXNbaV0ucG9zdE1lc3NhZ2UoJ2Js
b2NrZWQnLCAnKicpOworfQorCit3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CisJaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisJCWludGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxv
Y2tpbmdQb2xpY3koJ0FsbG93QWxsJyk7CisJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworCX0K
K30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQgcmV0
dXJuIG9ubHkgb25lIHNlY3VyaXR5IGVycm9yOjwvcD4KKzxpZnJhbWUgc3JjPSJodHRwOi8vMTI3
LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9ja2lu
Zy1jaGFuZ2VkLXdlYnNxbC5odG1sIiBvbmxvYWQ9ImRlY3JlbWVudCgpIj48L2lmcmFtZT4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IDE2NWM1OTMwNzRiYmNmNmEwZDA1MWNjNWI4NGIyYjJkMmFiNWZjODku
LmIxNTU2MWUzM2U0Zjc5ODQwZTQ4NWYzMzRhNzQ4N2FiOWMzNmI0ZDAgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTQxLDYgKzU0MSw4
IEBAIFdPTlRGSVggU0tJUCA6IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3VyaXR5UG9s
aWN5L3NoYXJlZC13b3JrZXItY29ubmVjdC1zCiBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L2Nyb3NzLW9yaWdpbi1zaGFyZWQtd29ya2VyLmh0bWwgPSBURVhUCiBXT05URklYIFNL
SVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1zaGFyZWQtd29ya2VyLWFsbG93
ZWQuaHRtbCA9IFRFWFQKIFdPTlRGSVggU0tJUCA6IGh0dHAvdGVzdHMvc2VjdXJpdHkvc2FtZS1v
cmlnaW4tc2hhcmVkLXdvcmtlci1ibG9ja2VkLmh0bWwgPSBURVhUCitXT05URklYIFNLSVAgOiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtc2hhcmVkLXdvcmtl
ci5odG1sID0gVEVYVAorV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdl
LWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1zaGFyZWQtd29ya2VyLmh0bWwgPSBURVhUCiBXT05URklY
IFNLSVAgOiBzdG9yYWdlL2luZGV4ZWRkYi9iYXNpY3Mtc2hhcmVkLXdvcmtlcnMuaHRtbCA9IFBB
U1MKIAogLy8gdGVzdF9zaGVsbCBkb2VzIG5vdCBzdXBwb3J0IG1lc3NhZ2UgcG9ydHMKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvaHR0cC90ZXN0cy9zZWN1cml0eS9z
dG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wbHVnaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tp
bmctc3RyZW5ndGhlbmVkLXBsdWdpbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjA5ZTdiNmRk
NjY0NjFkMjJiYjVlMDhhNjJjNjUxZDVlNWIzODg2NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azIvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2Nr
aW5nLXN0cmVuZ3RoZW5lZC1wbHVnaW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGhp
cyBpZnJhbWUgc2hvdWxkIGhhdmUgcHJpdmF0ZSBicm93c2luZyBlbmFibGVkOgorCisKKworLS0t
LS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0t
LQordHJ1ZQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDNmYmEwNWFi
Mzg1OGNjMDVhNjVkZWJiY2EyYTdmM2JkMzcwNjljMzguLjhiZWExNjY2NzU5MWQwYmM2YmFiZmEz
Y2U0ZThlNTllOGZiN2EzNTAgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNCBAQAorMjAxMi0wOS0xMSAgSmVmZnJleSBQZmF1ICA8anBmYXVAYXBwbGUu
Y29tPgorCisgICAgICAgIEFsbG93IHRoaXJkLXBhcnR5IHN0b3JhZ2UgYmxvY2tpbmcgc2V0dGlu
ZyB0byBjaGFuZ2Ugd2hpbGUgYSBwYWdlIGlzIGxvYWRlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3OTAKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgZXhwb3J0ZWQgc3ltYm9scy4KKworICAg
ICAgICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTItMDktMDcgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgYm94LXNoYWRv
dyBjYXVzZXMgb3ZlcmxheSBzY3JvbGxiYXJzIHRvIGJlIGluIHRoZSB3cm9uZyBwb3NpdGlvbiB3
aGVuIGVsZW1lbnQgaXMgY29tcG9zaXRlZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163473</attachid>
            <date>2012-09-11 16:18:37 -0700</date>
            <delta_ts>2012-09-12 15:04:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95790-20120911161938.patch</filename>
            <type>text/plain</type>
            <size>46659</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYwMzNhNjBhMzU4MTRk
M2U4MzJmMWViYzM5NzBmYzRiNGQ4MjIyMS4uNWMwMWYwMmNlZDNlN2ZmYWNmNzg1ODlhN2IxZTdh
NDljYmRjZTY1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTA5LTExICBKZWZm
cmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdGhpcmQtcGFydHkg
c3RvcmFnZSBibG9ja2luZyBzZXR0aW5nIHRvIGNoYW5nZSB3aGlsZSBhIHBhZ2UgaXMgbG9hZGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTc5MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBpcGUgdGhy
b3VnaCBjaGFuZ2VzIHRvIHRoZSBzdG9yYWdlIGJsb2NraW5nIHBvbGljeSB0byBlYWNoIGRvY3Vt
ZW50IGFuZCBwbHVnaW4uCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvc2VjdXJpdHkvc3Rv
cmFnZS1ibG9ja2luZy1sb29zZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWwKKyAgICAgICAgICAgICAg
IGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wbHVnaW4uaHRt
bAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxv
b3NlbmVkLXNoYXJlZC13b3JrZXIuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1
cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXdlYnNxbC5odG1sCisgICAgICAgICAgICAg
ICBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLWxvY2Fs
LXN0b3JhZ2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdl
LWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wbHVnaW4uaHRtbAorICAgICAgICAgICAgICAgaHR0cC90
ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1zaGFyZWQtd29ya2Vy
Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2lu
Zy1zdHJlbmd0aGVuZWQtd2Vic3FsLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6IFBpcGUgY2hhbmdlcyB0aHJvdWdoIHRvIHRoZSBE
b2N1bWVudCdzIFNlY3VyaXR5T3JpZ2luLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN0
b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAqIHBhZ2Uv
UGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpjb2xsZWN0UGx1Z2luVmlld3MpOiBS
ZWZhY3RvcmVkIG91dCBpbnRvIGEgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2U6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCk6IFBpcGUgY2hh
bmdlcyB0aHJvdWdoIHRvIGVhY2ggUGx1Z2luVmlldy4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCk6CisgICAgICAgICogcGFnZS9QYWdlLmg6Cisg
ICAgICAgIChQYWdlKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNldHRpbmdzOjpzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3kpOiBUZWxsIFBhZ2VzIGFi
b3V0IGNoYW5nZXMgdG8gdGhlIHN0b3JhZ2UgYmxvY2tpbmcgcG9saWN5LgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAoU2V0dGluZ3MpOgor
ICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
dWdpblZpZXdCYXNlOjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQpOgorCiAyMDEyLTA5LTA2
ICBKZWZmcmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CiAKICAgICAgICAgRXh0ZW5kIHRoaXJk
LXBhcnR5IHN0b3JhZ2UgYmxvY2tpbmcgQVBJIHRvIG9wdGlvbmFsbHkgYWxsb3cgYmxvY2tpbmcg
YWxsIHN0b3JhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhZWY3OGYyNmRjZDUxZDllZmQ1MDk4NjE5YjkyNjAy
MGYwYzJjNDFhLi5kOTcxNjA4NjNjMWU4MmVmMThhMjViZTQ5ZDY3ZDgwYmIxYjNlZDY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTItMDktMTEgIEplZmZyZXkgUGZhdSAgPGpwZmF1
QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyB0aGlyZC1wYXJ0eSBzdG9yYWdlIGJsb2NraW5n
IHNldHRpbmcgdG8gY2hhbmdlIHdoaWxlIGEgcGFnZSBpcyBsb2FkZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5mb3JtIHBsdWdpbnMgYWJvdXQgY2hh
bmdlcyB0byB0aGUgc3RvcmFnZSBibG9ja2luZyBwb2xpY3kgYnkgd2F5IG9mIHRoZSBwcml2YXRl
IGJyb3dzaW5nIGZlYXR1cmUuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6
c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
ICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaDoKKyAgICAgICAgKFBsdWdp
bkNvbnRyb2xsZXJQcm94eSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9s
bGVyUHJveHkubWVzc2FnZXMuaW46IEFkZCBXSzIgbWVzc2FnZSBmb3Igc3RvcmFnZUJsb2NraW5n
U3RhdGVDaGFuZ2VkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpzdG9yYWdl
QmxvY2tpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKE5ldHNj
YXBlUGx1Z2luKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZW
aWV3Lmg6CisgICAgICAgIChCdWlsdEluUERGVmlldyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5tbTogVHJlYXQgc3RvcmFnZUJsb2NraW5nU3RhdGVD
aGFuZ2VkIGFzIGEgbm8tb3AuCisgICAgICAgIChXZWJLaXQ6OkJ1aWx0SW5QREZWaWV3OjpzdG9y
YWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6IEFkZCBwdXJlIHZpcnR1YWwgc3RvcmFnZUJsb2Nr
aW5nU3RhdGVDaGFuZ2VkIG1ldGhvZC4KKyAgICAgICAgKFBsdWdpbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJveHk6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oOgorICAgICAgICAoUGx1
Z2luUHJveHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuaDoKKyAgICAgICAgKFBsdWdpblZpZXcpOgorICAgICAgICAqIHdpbi9XZWJLaXQyLmRl
ZjoKKwogMjAxMi0wOS0wNiAgSmVmZnJleSBQZmF1ICA8anBmYXVAYXBwbGUuY29tPgogCiAgICAg
ICAgIEV4dGVuZCB0aGlyZC1wYXJ0eSBzdG9yYWdlIGJsb2NraW5nIEFQSSB0byBvcHRpb25hbGx5
IGFsbG93IGJsb2NraW5nIGFsbCBzdG9yYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGI0NzY5
ZjkxODI1NDkxZDQyMzc2NjE4OGJmYzk5OWRlYjJmMzFlNTAuLjU0OGU1OTM1MjUwOTZlMWMzNTc3
ZmVkNjdkNTZlNGNlMGRiZGI1NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC04NzgsNiArODc4
LDcgQEAgX19aTjdXZWJDb3JlOFNldHRpbmdzMjNzZXRVc2VzRW5jb2RpbmdEZXRlY3RvckViCiBf
X1pON1dlYkNvcmU4U2V0dGluZ3MyNHNldEFwcGxpY2F0aW9uQ2hyb21lTW9kZUViCiBfX1pON1dl
YkNvcmU4U2V0dGluZ3MyNHNldEROU1ByZWZldGNoaW5nRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4
U2V0dGluZ3MyNHNldE1vY2tTY3JvbGxiYXJzRW5hYmxlZEViCitfX1pON1dlYkNvcmU4U2V0dGlu
Z3MyNHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeUVOU18xNFNlY3VyaXR5T3JpZ2luMjFTdG9yYWdl
QmxvY2tpbmdQb2xpY3lFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNHNldFRleHRBcmVhc0FyZVJl
c2l6YWJsZUViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNXNldERldmVsb3BlckV4dHJhc0VuYWJs
ZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjVzZXRGcmFtZUZsYXR0ZW5pbmdFbmFibGVkRWIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDk3ODBmMjQ2ZGI3MjQ3OWU0ZjQ2NDMxM2RjNjgy
NDc0MTJiYjI3MzcuLmI5ZDU1MWE2NTc5ZTQ4ZmI4YWQxMWM5ZDcyMTQyMzQ4YjBlZjc2MTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDU0MSw2ICs0NTQxLDEyIEBAIHZvaWQgRG9jdW1l
bnQ6OnVucmVnaXN0ZXJGb3JNZWRpYVZvbHVtZUNhbGxiYWNrcyhFbGVtZW50KiBlKQogICAgIG1f
bWVkaWFWb2x1bWVDYWxsYmFja0VsZW1lbnRzLnJlbW92ZShlKTsKIH0KIAordm9pZCBEb2N1bWVu
dDo6c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UoKQoreworICAgIGlmIChTZXR0aW5ncyog
c2V0dGluZ3MgPSB0aGlzLT5zZXR0aW5ncygpKQorICAgICAgICBzZWN1cml0eU9yaWdpbigpLT5z
ZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koc2V0dGluZ3MtPnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgp
KTsKK30KKwogdm9pZCBEb2N1bWVudDo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoKSAK
IHsKICAgICBIYXNoU2V0PEVsZW1lbnQqPjo6aXRlcmF0b3IgZW5kID0gbV9wcml2YXRlQnJvd3Np
bmdTdGF0ZUNoYW5nZWRFbGVtZW50cy5lbmQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZGFm
ZTA0YmUzMTRhNGE3YjUwMTA1NWM3NTViYTU5ZWUwNDZkNjJkMy4uNDE3NzYyNTI5NWYyY2Y2NDNk
M2I3MjE5NzFlZDkwNTBkZTI1NTVjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEwMTYsNiAr
MTAxNiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVnaXN0ZXJGb3JQcml2YXRlQnJvd3NpbmdT
dGF0ZUNoYW5nZWRDYWxsYmFja3MoRWxlbWVudCopOwogICAgIHZvaWQgdW5yZWdpc3RlckZvclBy
aXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZENhbGxiYWNrcyhFbGVtZW50Kik7CisgICAgdm9pZCBz
dG9yYWdlQmxvY2tpbmdTdGF0ZURpZENoYW5nZSgpOwogICAgIHZvaWQgcHJpdmF0ZUJyb3dzaW5n
U3RhdGVEaWRDaGFuZ2UoKTsKIAogICAgIHZvaWQgc2V0U2hvdWxkQ3JlYXRlUmVuZGVyZXJzKGJv
b2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMjk4MzgwOGVhY2FjMzEyMDk2ZTI5YmExZmRmN2Nh
OThkMzIzZDM0Ny4uMTdiZmEwZjJiZDUxNDg3NTQ2NDBhODY0OWZlNjM5OTc3MDRkMzJkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuY3BwCkBAIC01NSw3ICs1NSw2IEBACiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgi
CiAjaW5jbHVkZSAiUGx1Z2luRGF0YS5oIgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKLSNpbmNs
dWRlICJQbHVnaW5WaWV3QmFzZS5oIgogI2luY2x1ZGUgIlBvaW50ZXJMb2NrQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgogI2luY2x1ZGUgIlJlbmRlckFyZW5hLmgi
CkBAIC05ODgsMTYgKzk4Nyw4IEBAIHZvaWQgUGFnZTo6ZG5zUHJlZmV0Y2hpbmdTdGF0ZUNoYW5n
ZWQoKQogICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+aW5pdEROU1ByZWZldGNoKCk7CiB9CiAK
LXZvaWQgUGFnZTo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKCkKK3ZvaWQgUGFnZTo6Y29s
bGVjdFBsdWdpblZpZXdzKFZlY3RvcjxSZWZQdHI8UGx1Z2luVmlld0Jhc2U+LCAzMj4mIHBsdWdp
blZpZXdCYXNlcykKIHsKLSAgICBib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBtX3NldHRp
bmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7Ci0KLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9
IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQo
KSkKLSAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hh
bmdlKCk7Ci0KLSAgICAvLyBDb2xsZWN0IHRoZSBQbHVnaW5WaWV3cyBpbiB0byBhIHZlY3RvciB0
byBlbnN1cmUgdGhhdCBhY3Rpb24gdGhlIHBsdWctaW4gdGFrZXMKLSAgICAvLyBmcm9tIGJlbG93
IHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCBkb2VzIG5vdCBhZmZlY3QgdGhlaXIgbGlmZXRp
bWUuCi0gICAgVmVjdG9yPFJlZlB0cjxQbHVnaW5WaWV3QmFzZT4sIDMyPiBwbHVnaW5WaWV3QmFz
ZXM7CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgRnJhbWVWaWV3KiB2aWV3
ID0gZnJhbWUtPnZpZXcoKTsKICAgICAgICAgaWYgKCF2aWV3KQpAQCAtMTAxMyw2ICsxMDA0LDM1
IEBAIHZvaWQgUGFnZTo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKCkKICAgICAgICAgICAg
ICAgICBwbHVnaW5WaWV3QmFzZXMuYXBwZW5kKHN0YXRpY19jYXN0PFBsdWdpblZpZXdCYXNlKj4o
d2lkZ2V0KSk7CiAgICAgICAgIH0KICAgICB9Cit9CisKK3ZvaWQgUGFnZTo6c3RvcmFnZUJsb2Nr
aW5nU3RhdGVDaGFuZ2VkKCkKK3sKKyAgICBTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5n
UG9saWN5IHN0b3JhZ2VCbG9ja2luZ1BvbGljeSA9IG1fc2V0dGluZ3MtPnN0b3JhZ2VCbG9ja2lu
Z1BvbGljeSgpOworCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCisgICAgICAgIGZyYW1lLT5k
b2N1bWVudCgpLT5zdG9yYWdlQmxvY2tpbmdTdGF0ZURpZENoYW5nZSgpOworCisgICAgLy8gQ29s
bGVjdCB0aGUgUGx1Z2luVmlld3MgaW4gdG8gYSB2ZWN0b3IgdG8gZW5zdXJlIHRoYXQgYWN0aW9u
IHRoZSBwbHVnLWluIHRha2VzCisgICAgLy8gZnJvbSBiZWxvdyBwcml2YXRlQnJvd3NpbmdTdGF0
ZUNoYW5nZWQgZG9lcyBub3QgYWZmZWN0IHRoZWlyIGxpZmV0aW1lLgorICAgIFZlY3RvcjxSZWZQ
dHI8UGx1Z2luVmlld0Jhc2U+LCAzMj4gcGx1Z2luVmlld0Jhc2VzOworICAgIGNvbGxlY3RQbHVn
aW5WaWV3cyhwbHVnaW5WaWV3QmFzZXMpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBw
bHVnaW5WaWV3QmFzZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHBsdWdpblZpZXdCYXNlc1tpXS0+
c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKHN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7Cit9CisK
K3ZvaWQgUGFnZTo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKCkKK3sKKyAgICBib29sIHBy
aXZhdGVCcm93c2luZ0VuYWJsZWQgPSBtX3NldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVk
KCk7CisKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50
KCktPnByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCk7CisKKyAgICAvLyBDb2xsZWN0IHRo
ZSBQbHVnaW5WaWV3cyBpbiB0byBhIHZlY3RvciB0byBlbnN1cmUgdGhhdCBhY3Rpb24gdGhlIHBs
dWctaW4gdGFrZXMKKyAgICAvLyBmcm9tIGJlbG93IHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdl
ZCBkb2VzIG5vdCBhZmZlY3QgdGhlaXIgbGlmZXRpbWUuCisgICAgVmVjdG9yPFJlZlB0cjxQbHVn
aW5WaWV3QmFzZT4sIDMyPiBwbHVnaW5WaWV3QmFzZXM7CisgICAgY29sbGVjdFBsdWdpblZpZXdz
KHBsdWdpblZpZXdCYXNlcyk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBsdWdpblZp
ZXdCYXNlcy5zaXplKCk7ICsraSkKICAgICAgICAgcGx1Z2luVmlld0Jhc2VzW2ldLT5wcml2YXRl
QnJvd3NpbmdTdGF0ZUNoYW5nZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5o
CmluZGV4IGEyMThkNWQ0Y2E1OWI1YjdhNDJkYWI0NGQ3YmVhNzQwZWU1ODM2ZTEuLjFkNTc0MGNk
Nzk4ZTNkODg1MTcxMzFhMDI4YTkzMGRhMWJmMTFiZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0yNyw2
ICsyNyw3IEBACiAjaW5jbHVkZSAiUGFnZVZpc2liaWxpdHlTdGF0ZS5oIgogI2luY2x1ZGUgIlBh
Z2luYXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgorI2luY2x1ZGUgIlBsdWdp
blZpZXdCYXNlLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFi
bGUuaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgpAQCAtMjcxLDYgKzI3Miw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiB1c2VyU3R5bGVTaGVl
dCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgZG5zUHJlZmV0Y2hpbmdTdGF0ZUNoYW5nZWQoKTsK
KyAgICAgICAgdm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoKTsKICAgICAgICAgdm9p
ZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCBz
ZXREZWJ1Z2dlckZvckFsbFBhZ2VzKEpTQzo6RGVidWdnZXIqKTsKQEAgLTM1MCw2ICszNTIsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2
YWwoZG91YmxlKTsKICAgICAgICAgZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKCkgY29uc3Q7
CiAKKyAgICAgICAgdm9pZCBjb2xsZWN0UGx1Z2luVmlld3MoVmVjdG9yPFJlZlB0cjxQbHVnaW5W
aWV3QmFzZT4sIDMyPiYgcGx1Z2luVmlld0Jhc2VzKTsKKwogICAgICAgICBPd25QdHI8Q2hyb21l
PiBtX2Nocm9tZTsKICAgICAgICAgT3duUHRyPERyYWdDYXJldENvbnRyb2xsZXI+IG1fZHJhZ0Nh
cmV0Q29udHJvbGxlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCBmMjUxNTBiNTE2
YzM5NjUzNWMzOGJlZmNhM2NiMmEyYTY4ZmVlYTBmLi42ZjFkM2ZhMDgxZjAxMzkzZjA5MmYxNDBm
NTk5NGY5NjgyZjE1YTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAtOTMxLDYgKzkz
MSwxNSBAQCB2b2lkIFNldHRpbmdzOjpzZXRMb2FkRGVmZXJyaW5nRW5hYmxlZChib29sIGVuYWJs
ZWQpCiAgICAgbV9sb2FkRGVmZXJyaW5nRW5hYmxlZCA9IGVuYWJsZWQ7CiB9CiAKK3ZvaWQgU2V0
dGluZ3M6OnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJs
b2NraW5nUG9saWN5IGVuYWJsZWQpCit7CisgICAgaWYgKG1fc3RvcmFnZUJsb2NraW5nUG9saWN5
ID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3RvcmFnZUJsb2NraW5nUG9s
aWN5ID0gZW5hYmxlZDsKKyAgICBtX3BhZ2UtPnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCgp
OworfQorCiB2b2lkIFNldHRpbmdzOjpzZXRUaWxlZEJhY2tpbmdTdG9yZUVuYWJsZWQoYm9vbCBl
bmFibGVkKQogewogICAgIG1fdGlsZWRCYWNraW5nU3RvcmVFbmFibGVkID0gZW5hYmxlZDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuaAppbmRleCA2ZmEzYmMwMjRiOGI4YzJmOWFjYzBlZDAzZDI2MTlkNDY2
NTMyOTYzLi4zOWEwYTg1MDgzYzhmMGQ5OWRjMWJhMjhjNGFkOGE0YWYyYWI0NDJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5oCkBAIC02MDIsNyArNjAyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2b2lkIHNldFdpbmRvd0ZvY3VzUmVzdHJpY3RlZChib29sIHJlc3RyaWN0ZWQpIHsg
bV93aW5kb3dGb2N1c1Jlc3RyaWN0ZWQgPSByZXN0cmljdGVkOyB9CiAgICAgICAgIGJvb2wgd2lu
ZG93Rm9jdXNSZXN0cmljdGVkKCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dGb2N1c1Jlc3RyaWN0
ZWQ7IH0KIAotICAgICAgICB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShTZWN1cml0eU9y
aWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5IHBvbGljeSkgeyBtX3N0b3JhZ2VCbG9ja2luZ1Bv
bGljeSA9IHBvbGljeTsgfQorICAgICAgICB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShT
ZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5KTsKICAgICAgICAgU2VjdXJpdHlP
cmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSBzdG9yYWdlQmxvY2tpbmdQb2xpY3koKSBjb25z
dCB7IHJldHVybiBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeTsgfQogCiAgICAgICAgIHZvaWQgc2V0
U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luVmlld0Jhc2UuaAppbmRleCAzMTJkNTdjMDlkMzc4MzBiODYzYzhkMjgzOTMx
ZDdkMTI3ZGQyMTY3Li5kMjFhZTQ1ZjNkNTdiYmE3NjA4ZGU5ZGVjYTU1NTE4YzU3NTc2NGJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdCYXNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaW5jbHVkZSAiV2lkZ2V0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIgogI2luY2x1
ZGUgIlNjcm9sbFR5cGVzLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00OSw2ICs1MCw3
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBzY3JpcHRP
YmplY3QoSlNDOjpKU0dsb2JhbE9iamVjdCopIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgc3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKFNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxv
Y2tpbmdQb2xpY3kpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNo
YW5nZWQoYm9vbCkgeyB9CiAgICAgdmlydHVhbCBib29sIGdldEZvcm1WYWx1ZShTdHJpbmcmKSB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzY3JvbGwoU2Nyb2xsRGlyZWN0aW9u
LCBTY3JvbGxHcmFudWxhcml0eSkgeyByZXR1cm4gZmFsc2U7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAppbmRleCAy
YWQ0MWRhYTVjMmE4ZTU4MDhmYmJjMzNiNjMzNzU1MDU5NmQ2N2RjLi4wY2U3NmUyNDNiNDhmOTMx
ZGIxZDk3NjA4N2QyYjNjYzI1ZWIzZDNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
UGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCkBAIC01NjMsNiArNTYzLDE0
IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpnZXRQbHVnaW5TY3JpcHRhYmxlTlBPYmpl
Y3QodWludDY0X3QmIHBsdWdpblNjcmlwdGFiCiAgICAgcmVsZWFzZU5QT2JqZWN0KHBsdWdpblNj
cmlwdGFibGVOUE9iamVjdCk7CiB9CiAKK3ZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpzdG9y
YWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQodWludDMyX3Qgc3RvcmFnZUJsb2NraW5nUG9saWN5KQor
eworICAgIG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ID0gc3RhdGljX2Nhc3Q8U2VjdXJpdHlPcmln
aW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeT4oc3RvcmFnZUJsb2NraW5nUG9saWN5KTsKKworICAg
IGlmICghbV9pc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQpCisgICAgICAgIG1fcGx1Z2luLT5zdG9y
YWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQobV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kpOworfQorCiB2
b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJv
b2wgaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKQogewogICAgIG1faXNQcml2YXRlQnJvd3NpbmdF
bmFibGVkID0gaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKaW5kZXggYTlkMzVhNjYz
YTcxNTU3MjRkZWJlNjJjZWM3MzY5Y2YzZTIwNTZjZi4uYmE4NmRiZGExZjZjN2I1NmUxMTg0YjJj
MzQwMWI3ZjE4MmQyNDM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vz
cy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAi
U2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdl
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2Vj
dXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNl
IENvcmVJUEMgewpAQCAtMTUyLDYgKzE1Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVM
YXllckhvc3RpbmdDb250ZXh0KExheWVySG9zdGluZ01vZGUpOwogI2VuZGlmCiAKKyAgICB2b2lk
IHN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCh1aW50MzJfdCk7CiAgICAgdm9pZCBwcml2YXRl
QnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCk7CiAgICAgdm9pZCBnZXRGb3JtVmFsdWUoYm9vbCYg
cmV0dXJuVmFsdWUsIFN0cmluZyYgZm9ybVZhbHVlKTsKIApAQCAtMTYzLDYgKzE2NSw3IEBAIHBy
aXZhdGU6CiAgICAgdWludDY0X3QgbV9wbHVnaW5JbnN0YW5jZUlEOwogCiAgICAgU3RyaW5nIG1f
dXNlckFnZW50OworICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQ
b2xpY3kgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3k7CiAgICAgYm9vbCBtX2lzUHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZDsKICAgICBib29sIG1faXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZDsK
ICAgICBib29sIG1faXNJbml0aWFsaXppbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCmlu
ZGV4IDM3MWJlZTIzNzc1ZGRlMGZmNzIxMDQzYjM0NTBjY2E2MDY1YzlkZWIuLmUwYTBkY2E2OTAx
YzNhNjI3Y2QwNjE5Mzk0MDVkMWRkY2VkYmE2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC0xMDYsNiArMTA2LDkgQEAgbWVzc2FnZXMgLT4gUGx1Z2luQ29udHJvbGxlclByb3h5
IHsKICAgICAjIFJldHVybiBhIHNuYXBzaG90IG9mIHRoZSBwbHVnaW4KICAgICBTbmFwc2hvdCgp
IC0+IChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGJhY2tpbmdTdG9yZUhhbmRsZSkK
ICAgICAKKyAgICAjIFNlbnQgd2hlbiBzdG9yYWdlIGJsb2NraW5nIHBvbGljeSBjaGFuZ2VzCisg
ICAgU3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKHVpbnQzMl90IHN0b3JhZ2VCbG9ja2luZ1Bv
bGljeSkKKwogICAgICMgU2VudCB3aGVuIHByaXZhdGUgYnJvd3NpbmcgaXMgZW5hYmxlZCBvciBk
aXNhYmxlZAogICAgIFByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sIGlzUHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggMTVlNzY0OGRh
NjNmN2IzNDkyM2VkOTg5MzAyZjQ1ZTUyZDEyNDcyMC4uZDE5YTRlYmNmYTViMmQ3M2JiYTNjYmEw
OTg0YjQwNTE4ZTBkZjExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCkBAIC05NTMsNiAr
OTUzLDExIEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OmNvbnRlbnRzU2NhbGVGYWN0b3JDaGFuZ2Vk
KGZsb2F0IHNjYWxlRmFjdG9yKQogI2VuZGlmCiB9CiAKK3ZvaWQgTmV0c2NhcGVQbHVnaW46OnN0
b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZChTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5n
UG9saWN5IHN0b3JhZ2VCbG9ja2luZ1BvbGljeSkKK3sKKyAgICBwcml2YXRlQnJvd3NpbmdTdGF0
ZUNoYW5nZWQoc3RvcmFnZUJsb2NraW5nUG9saWN5ICE9IFNlY3VyaXR5T3JpZ2luOjpBbGxvd0Fs
bFN0b3JhZ2UpOworfQorCiB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwcml2YXRlQnJvd3NpbmdTdGF0
ZUNoYW5nZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogewogICAgIEFTU0VSVChtX2lz
U3RhcnRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
TmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IDVmOTNjNTc0NzY1ODE3ZThiYmNi
OTExYmIzYzNjNGI1YzQ5YTU0YmMuLjRhYzJkZTNhOTUyNmRiN2ZjZjBiYTRjOGYxZjJmN2Q4Yzli
YjJiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC0yMjIsNiArMjIyLDcgQEAgcHJpdmF0
ZToKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRzU2NhbGVGYWN0b3JDaGFuZ2Vk
KGZsb2F0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3kpOwogICAgIHZpcnR1
YWwgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCk7CiAgICAgdmlydHVhbCBi
b29sIGdldEZvcm1WYWx1ZShTdHJpbmcmIGZvcm1WYWx1ZSk7CiAgICAgdmlydHVhbCBib29sIGhh
bmRsZVNjcm9sbChXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51
bGFyaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvQnVpbHRJblBERlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
REYvQnVpbHRJblBERlZpZXcuaAppbmRleCA5Y2NkODA0MDAzN2U4MDA5MWY5ODU2YTNlZDM5MmMz
NjZhMGFhZjMyLi45YWUxZDc2NWFhMzdmZDZlNTE3NGNmZDYxOWE0MDU2MDIwNTA2ZTkwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZW
aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdElu
UERGVmlldy5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJQbHVnaW4uaCIKICNpbmNs
dWRlIDxXZWJDb3JlL1Njcm9sbGFibGVBcmVhLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0
eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0NvbnRleHRSZWY7CkBAIC0xMTMsNiArMTE0LDcgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3Rp
bmdNb2RlKSBPVkVSUklERTsKICNlbmRpZgogCisgICAgdmlydHVhbCB2b2lkIHN0b3JhZ2VCbG9j
a2luZ1N0YXRlQ2hhbmdlZChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5n
UG9saWN5KTsKICAgICB2aXJ0dWFsIHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJv
b2wpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRGb3JtVmFsdWUoU3RyaW5nJiBmb3JtVmFsdWUpOwog
ICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9uLCBX
ZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5tbQppbmRleCBmZTdmMjU4YjBh
NDlmMjllYzg2OWU0NmZjNjk1NzAxZDI2N2VlZGFlLi45NzZjN2E4MDhjZWFjYmRlMWM4ZjNlZDA4
OWFiZGU2NDg3ODc3MTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL0J1aWx0SW5QREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcubW0KQEAgLTY2MCw2ICs2NjAsMTAgQEAgdm9p
ZCBCdWlsdEluUERGVmlldzo6c2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2RlKQog
CiAjZW5kaWYKIAordm9pZCBCdWlsdEluUERGVmlldzo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFu
Z2VkKFNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3kpCit7Cit9CisKIHZvaWQg
QnVpbHRJblBERlZpZXc6OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sKQogewogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCmluZGV4IGI5MTE3NGY5
ZWI3YzI3ZWYzYjJmZWU4YjI0NDBhZjllNDE4MTdjZWMuLmRlNjJkZTc0ZjljNjM2OTczN2QwZTNh
N2NiNGRmZWY1MWY3YmFjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9s
bFR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KQEAgLTIxOCw2ICsyMTksOSBAQCBwdWJsaWM6CiAgICAgLy8gVGVsbHMg
dGhlIHBsdWctaW4gYWJvdXQgc2NhbGUgZmFjdG9yIGNoYW5nZXMuCiAgICAgdmlydHVhbCB2b2lk
IGNvbnRlbnRzU2NhbGVGYWN0b3JDaGFuZ2VkKGZsb2F0KSA9IDA7CiAKKyAgICAvLyBDYWxsZWQg
d2hlbiB0aGUgc3RvcmFnZSBibG9ja2luZyBwb2xpY3kgZm9yIHRoaXMgcGx1Zy1pbiBjaGFuZ2Vz
LgorICAgIHZpcnR1YWwgdm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSkgPSAwOworCiAgICAgLy8gQ2Fs
bGVkIHdoZW4gdGhlIHByaXZhdGUgYnJvd3Npbmcgc3RhdGUgZm9yIHRoaXMgcGx1Zy1pbiBjaGFu
Z2VzLgogICAgIHZpcnR1YWwgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCkg
PSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5LmNwcAppbmRleCBlMzgwZWVmOTRmMzU3ZTAyOTFlZWM4M2U2OTRjYmY5OGZkMGFkNDBhLi5j
YjM2NWE2YzEyMjZlNTdjZTA2NThlZmNmMTZmYTI5MmE0ZDA4MTllIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKQEAgLTQ2MCw2ICs0
NjAsMTEgQEAgdm9pZCBQbHVnaW5Qcm94eTo6Y29udGVudHNTY2FsZUZhY3RvckNoYW5nZWQoZmxv
YXQgc2NhbGVGYWN0b3IpCiAgICAgZ2VvbWV0cnlEaWRDaGFuZ2UoKTsKIH0KIAordm9pZCBQbHVn
aW5Qcm94eTo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKFdlYkNvcmU6OlNlY3VyaXR5T3Jp
Z2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3kgaXNTdG9yYWdlQmxvY2tpbmdQb2xpY3kpCit7Cisg
ICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRy
b2xsZXJQcm94eTo6U3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKGlzU3RvcmFnZUJsb2NraW5n
UG9saWN5KSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKK30KKwogdm9pZCBQbHVnaW5Qcm94eTo6cHJp
dmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wgaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKQog
ewogICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5D
b250cm9sbGVyUHJveHk6OlByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChpc1ByaXZhdGVCcm93
c2luZ0VuYWJsZWQpLCBtX3BsdWdpbkluc3RhbmNlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAppbmRleCBjMGNhMTE2YjA3ZTk4NGQ3YjAw
NzRkZDhlODE2MzA1Y2VmYzM1YmI2Li5mNDBmMTczYTRlNzZkNWJiMmI4Y2RiNjJmYjk0MDVmMGFj
OTc4MTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJveHkuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlBsdWdpbi5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvQWZmaW5lVHJhbnNmb3JtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogCiAjaWYgUExBVEZPUk0oTUFD
KQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTExMiw2ICsxMTMsNyBAQCBwcml2YXRl
OgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNTY2FsZUZhY3RvckNoYW5nZWQo
ZmxvYXQpOworICAgIHZpcnR1YWwgdm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7CiAgICAgdmlydHVh
bCB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sKTsKICAgICB2aXJ0dWFsIGJv
b2wgZ2V0Rm9ybVZhbHVlKFN0cmluZyYgZm9ybVZhbHVlKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFu
ZGxlU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVs
YXJpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuY3BwCmluZGV4IDBhMGM2YjYzZGQyYjY2NzM0YmNiZDI3ODMyZmVkMTU4OWJhOWVkMTIuLjMx
YjhmNzk0YjUzZDhlODFiNzU1NjY5YmRhZmUyNTgyMzkwMDIxMWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTU4MSw2ICs1ODEs
MTUgQEAgSlNPYmplY3QqIFBsdWdpblZpZXc6OnNjcmlwdE9iamVjdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogI2VuZGlmCiB9CiAKK3ZvaWQgUGx1Z2luVmlldzo6c3RvcmFnZUJsb2Nr
aW5nU3RhdGVDaGFuZ2VkKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQ
b2xpY3kgc3RvcmFnZUJsb2NraW5nUG9saWN5KQoreworICAgIC8vIFRoZSBwbHVnLWluIGNhbiBi
ZSBudWxsIGhlcmUgaWYgaXQgZmFpbGVkIHRvIGluaXRpYWxpemUuCisgICAgaWYgKCFtX2lzSW5p
dGlhbGl6ZWQgfHwgIW1fcGx1Z2luKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BsdWdpbi0+
c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKHN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7Cit9CisK
IHZvaWQgUGx1Z2luVmlldzo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wgcHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCkKIHsKICAgICAvLyBUaGUgcGx1Zy1pbiBjYW4gYmUgbnVsbCBoZXJl
IGlmIGl0IGZhaWxlZCB0byBpbml0aWFsaXplLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggZDFkOTg1MzYzMzg2ODZiMzVkOWE0ODg5OTJi
YjBhMzVmOTZiYWY5ZC4uYmMwMzc4ZDNkY2Q0OWVlN2QyMzgzNjllYWRhNjY0MzU4NTBhMWI5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCkBA
IC0xMDksNiArMTA5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBs
YXRmb3JtTGF5ZXIoKSBjb25zdDsKICNlbmRpZgogICAgIHZpcnR1YWwgSlNDOjpKU09iamVjdCog
c2NyaXB0T2JqZWN0KEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3Rv
cmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpTdG9yYWdl
QmxvY2tpbmdQb2xpY3kpOwogICAgIHZpcnR1YWwgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNo
YW5nZWQoYm9vbCk7CiAgICAgdmlydHVhbCBib29sIGdldEZvcm1WYWx1ZShTdHJpbmcmKTsKICAg
ICB2aXJ0dWFsIGJvb2wgc2Nyb2xsKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29yZTo6
U2Nyb2xsR3JhbnVsYXJpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktp
dDIuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IDhlNTYwOTFiNTg3
MTI2NjY4YzBjODQwZWVhNmU1ZGYzMDlkMjUzNDIuLmVhMTY3OGE1ZGI4M2M5OTU3MGI5MWUwMjY3
ODU2ZjA1NGFkNGVjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRl
ZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTIzMSw2ICsyMzEsNyBA
QCBFWFBPUlRTCiAgICAgICAgID9zZXRTY3JvbGxPZmZzZXRGcm9tSW50ZXJuYWxzQFNjcm9sbGFi
bGVBcmVhQFdlYkNvcmVAQFFBRVhBQlZJbnRQb2ludEAyQEBaCiAgICAgICAgID9zZXRTZXJpZkZv
bnRGYW1pbHlAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWEFCVkF0b21pY1N0cmluZ0BXVEZAQFc0VVNj
cmlwdENvZGVAQEBaCiAgICAgICAgID9zZXRTdGFuZGFyZEZvbnRGYW1pbHlAU2V0dGluZ3NAV2Vi
Q29yZUBAUUFFWEFCVkF0b21pY1N0cmluZ0BXVEZAQFc0VVNjcmlwdENvZGVAQEBaCisgICAgICAg
ID9zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3lAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWFc0U3RvcmFn
ZUJsb2NraW5nUG9saWN5QFNlY3VyaXR5T3JpZ2luQDJAQFoKICAgICAgICAgP3NldFN1Z2dlc3Rl
ZFZhbHVlQEhUTUxJbnB1dEVsZW1lbnRAV2ViQ29yZUBAUUFFWEFCVlN0cmluZ0BXVEZAQEBaCiAg
ICAgICAgID9zZXRFZGl0aW5nVmFsdWVASFRNTElucHV0RWxlbWVudEBXZWJDb3JlQEBRQUVYQUJW
U3RyaW5nQFdURkBAQFoKICAgICAgICAgP3NldHRpbmdzQERvY3VtZW50QFdlYkNvcmVAQFFCRVBB
VlNldHRpbmdzQDJAWFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0
ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4IGE5MThjOGNiMjkwMTgy
YjM5MWJhNmQyZjk5NmU4NWIyZTQwOGE4NDMuLjU0MWQ2NGNlZWE0NjYwOTJkNjJhYWRiYmY3NDBl
NjZhMTlhOWQ4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIK
KysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAtMTUzLDYgKzE1Myw3IEBA
IF9aTjdXZWJDb3JlOFNldHRpbmdzMjFzZXRTdGFuZGFyZEZvbnRGYW1pbHlFUktOM1dURjEyQXRv
bWljU3RyaW5nRTExVVNjcmlwdENvZGU7CiBfWk43V2ViQ29yZThTZXR0aW5nczIyc2V0U2Fuc1Nl
cmlmRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZTsKIF9aTjdX
ZWJDb3JlOFNldHRpbmdzMjNzZXRQaWN0b2dyYXBoRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNT
dHJpbmdFMTFVU2NyaXB0Q29kZTsKIF9aTjdXZWJDb3JlOFNldHRpbmdzMjRzZXRNb2NrU2Nyb2xs
YmFyc0VuYWJsZWRFYjsKK19aTjdXZWJDb3JlOFNldHRpbmdzMjRzZXRTdG9yYWdlQmxvY2tpbmdQ
b2xpY3lFTlNfMTRTZWN1cml0eU9yaWdpbjIxU3RvcmFnZUJsb2NraW5nUG9saWN5RTsKIF9aTjdX
ZWJDb3JlOFNldHRpbmdzMzdzZXRGaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lRWI7
CiBfWk43V2ViQ29yZTlGcmFtZVZpZXcxN3BhaW50Q29udHJvbFRpbnRzRXY7CiBfWk43V2ViQ29y
ZTlGcmFtZVZpZXcxOXNjcm9sbEVsZW1lbnRUb1JlY3RFUE5TXzdFbGVtZW50RVJLTlNfN0ludFJl
Y3RFOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IGExODFkZjcyYWJiMmU1ODFkZjRkNzc3NTkxM2Y2NzkzZjA0NzZiNGUuLjJm
ZWIzNDhkYmFjZTllM2U0YWUwODE0N2FmNDU1NjI5MmVmODRkZGMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwz
NCBAQAorMjAxMi0wOS0xMSAgSmVmZnJleSBQZmF1ICA8anBmYXVAYXBwbGUuY29tPgorCisgICAg
ICAgIEFsbG93IHRoaXJkLXBhcnR5IHN0b3JhZ2UgYmxvY2tpbmcgc2V0dGluZyB0byBjaGFuZ2Ug
d2hpbGUgYSBwYWdlIGlzIGxvYWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTU3OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUZXN0ZWQgY29tYmluYXRpb25zIG9mIGxvb3NlbmluZyBhbmQgc3RyZW5n
dGhlbmluZyB0aGUgc3RvcmFnZSBibG9ja2luZyBwb2xpY3kgb24gdmFyaW91cyB0eXBlcyBvZiBz
dG9yYWdlLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1l
LWZvci1zdG9yYWdlLWJsb2NraW5nLWNoYW5nZWQtbG9jYWwtc3RvcmFnZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9pZnJhbWUtZm9yLXN0b3Jh
Z2UtYmxvY2tpbmctY2hhbmdlZC1zaGFyZWQtd29ya2VyLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9ja2lu
Zy1jaGFuZ2VkLXdlYnNxbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtbG9jYWwtc3RvcmFnZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1s
b29zZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wbHVnaW4tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9v
c2VuZWQtcGx1Z2luLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkv
c3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1zaGFyZWQtd29ya2VyLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3Nl
bmVkLXNoYXJlZC13b3JrZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXdlYnNxbC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5l
ZC13ZWJzcWwuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9y
YWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1sb2NhbC1zdG9yYWdlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVu
Z3RoZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcGx1Z2luLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5n
LXN0cmVuZ3RoZW5lZC1wbHVnaW4uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9z
ZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1zaGFyZWQtd29ya2VyLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJs
b2NraW5nLXN0cmVuZ3RoZW5lZC1zaGFyZWQtd29ya2VyLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtd2Vic3Fs
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9y
YWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC13ZWJzcWwuaHRtbDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9uczogU2tpcCBzaGFyZWQgd29ya2VyIHRl
c3RzLgorICAgICAgICAqIHBsYXRmb3JtL21hYy13azIvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9y
YWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wbHVnaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwog
MjAxMi0wOS0wNiAgSmVmZnJleSBQZmF1ICA8anBmYXVAYXBwbGUuY29tPgogCiAgICAgICAgIEV4
dGVuZCB0aGlyZC1wYXJ0eSBzdG9yYWdlIGJsb2NraW5nIEFQSSB0byBvcHRpb25hbGx5IGFsbG93
IGJsb2NraW5nIGFsbCBzdG9yYWdlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3Jlc291cmNlcy9pZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC1s
b2NhbC1zdG9yYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291
cmNlcy9pZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC1sb2NhbC1zdG9yYWdlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTIwMzcxOTYwMjc2MzA4MGVmYmRjNjk2YTQyMGU4MDQwZjA4MGM3ZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3Vy
Y2VzL2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9ja2luZy1jaGFuZ2VkLWxvY2FsLXN0b3JhZ2UuaHRt
bApAQCAtMCwwICsxLDM1IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxv
ZyhtZXNzYWdlKSB7CisJdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7CisJ
bm9kZS50ZXh0Q29udGVudCA9IG1lc3NhZ2U7CisJZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChu
b2RlKTsKK30KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworCXRyeSB7CisJCXZhciBs
ID0gd2luZG93LmxvY2FsU3RvcmFnZTsKKwkJbCA9IG51bGw7CisJCWxvZygnTm8gZXhjZXB0aW9u
Jyk7CisJfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisJCWxvZyhleGNlcHRpb24ubmFtZSk7CisJfQor
fQorCit3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oZSkgeworCXRyeSB7CisJCXZhciBsID0g
d2luZG93LmxvY2FsU3RvcmFnZTsKKwkJbCA9IG51bGw7CisJCWxvZygnTm8gZXhjZXB0aW9uJyk7
CisJCXdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoJ05vIGV4Y2VwdGlvbicsICcqJyk7CisJfSBj
YXRjaCAoZXhjZXB0aW9uKSB7CisJCWxvZyhleGNlcHRpb24ubmFtZSk7CisJCXdpbmRvdy5wYXJl
bnQucG9zdE1lc3NhZ2UoZXhjZXB0aW9uLm5hbWUsICcqJyk7CisJfQorfQorPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9ja2lu
Zy1jaGFuZ2VkLXNoYXJlZC13b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9ja2luZy1jaGFuZ2VkLXNoYXJl
ZC13b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zN2JhMTlkMTcwZWI0YTAwODcwNzljZDg3ZGI0NTk2
YTA3NDQ4MmYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5nLWNoYW5nZWQtc2hhcmVk
LXdvcmtlci5odG1sCkBAIC0wLDAgKzEsNDEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0Pgor
ZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKwl2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3AnKTsKKwlub2RlLnRleHRDb250ZW50ID0gbWVzc2FnZTsKKwlkb2N1bWVudC5ib2R5LmFw
cGVuZENoaWxkKG5vZGUpOworfQorCitmdW5jdGlvbiBjcmVhdGVXb3JrZXIoKSB7CisJdmFyIHdv
cmtlciA9IG5ldyBTaGFyZWRXb3JrZXIoJ3NoYXJlZC13b3JrZXIuanMnLCAnU2hhcmVkV29ya2Vy
Jyk7CisJd29ya2VyLnBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKKwkJbG9nKGV2
ZW50LmRhdGEpOworCQl3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKGV2ZW50LmRhdGEsICcqJyk7
CisJfQorCXdvcmtlci5wb3J0LnN0YXJ0KCk7CisJd29ya2VyLnBvcnQucG9zdE1lc3NhZ2UoJ0Nv
bm5lY3Rpb24gdGVzdCcpOworfQorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisJdHJ5
IHsKKwkJY3JlYXRlV29ya2VyKGZhbHNlKTsKKwl9IGNhdGNoIChleGNlcHRpb24pIHsKKwkJbG9n
KGV4Y2VwdGlvbi5uYW1lKTsKKwkJd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZShleGNlcHRpb24u
bmFtZSwgJyonKTsKKwl9Cit9CisKK3dpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7CisJ
dHJ5IHsKKwkJY3JlYXRlV29ya2VyKHRydWUpOworCX0gY2F0Y2ggKGV4Y2VwdGlvbikgeworCQls
b2coZXhjZXB0aW9uLm5hbWUpOworCQl3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKGV4Y2VwdGlv
bi5uYW1lLCAnKicpOworCX0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jl
c291cmNlcy9pZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC13ZWJzcWwuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1mb3Itc3Rv
cmFnZS1ibG9ja2luZy1jaGFuZ2VkLXdlYnNxbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0NTM4YmJiZTgw
ODgzODAwZmE2OTIzNmI5ZGRhZjBlY2UzZGM3ODkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9pZnJhbWUtZm9yLXN0b3JhZ2UtYmxv
Y2tpbmctY2hhbmdlZC13ZWJzcWwuaHRtbApAQCAtMCwwICsxLDM1IEBACis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisJdmFyIG5vZGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdwJyk7CisJbm9kZS50ZXh0Q29udGVudCA9IG1lc3NhZ2U7CisJZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChub2RlKTsKK30KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0
aW9uKCkgeworCXRyeSB7CisJCXZhciBzcWwgPSB3aW5kb3cub3BlbkRhdGFiYXNlKCd0ZXN0ZGIn
LCAnMS4wJywgJ1Rlc3RpbmcgZGF0YWJhc2UnLCA1MTIgKiAxMDI0KTsKKwkJc3FsID0gbnVsbDsK
KwkJbG9nKCdObyBleGNlcHRpb24nKTsKKwl9IGNhdGNoIChleGNlcHRpb24pIHsKKwkJbG9nKGV4
Y2VwdGlvbi5uYW1lKTsKKwl9Cit9CisKK3dpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7
CisJdHJ5IHsKKwkJdmFyIHNxbCA9IHdpbmRvdy5vcGVuRGF0YWJhc2UoJ3Rlc3RkYicsICcxLjAn
LCAnVGVzdGluZyBkYXRhYmFzZScsIDUxMiAqIDEwMjQpOworCQlzcWwgPSBudWxsOworCQlsb2co
J05vIGV4Y2VwdGlvbicpOworCQl3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKCdObyBleGNlcHRp
b24nLCAnKicpOworCX0gY2F0Y2ggKGV4Y2VwdGlvbikgeworCQlsb2coZXhjZXB0aW9uLm5hbWUp
OworCQl3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKGV4Y2VwdGlvbi5uYW1lLCAnKicpOworCX0K
K30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9v
c2VuZWQtbG9jYWwtc3RvcmFnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtbG9jYWwtc3RvcmFnZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYTNlYjkzMzE4NzgwM2VlNWU0Yjc3MzQzN2E2MDdmYTkzNzQ2N2Nh
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3Rv
cmFnZS1ibG9ja2luZy1sb29zZW5lZC1sb2NhbC1zdG9yYWdlLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDEwIEBACitUaGlzIGlmcmFtZSBzaG91bGQgcmV0dXJuIG9ubHkgb25lIHNlY3VyaXR5IGVy
cm9yOgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAt
LT4tLT4nCistLS0tLS0tLQorU0VDVVJJVFlfRVJSCisKK05vIGV4Y2VwdGlvbgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3Nl
bmVkLWxvY2FsLXN0b3JhZ2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
c3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZjU5ZGIwZTkwOTE3MDc3NzcyZmFjZjk5NGM0ZTdkNTk3ZmE5ZGUxZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29z
ZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwl0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKwl0ZXN0UnVubmVyLmR1bXBDaGls
ZEZyYW1lc0FzVGV4dCgpOworfQorCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisJaW50ZXJuYWxz
LnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeSgnQmxvY2tBbGwnKTsKKworZnVuY3Rp
b24gZGVjcmVtZW50KCkgeworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikKKwkJaW50ZXJuYWxzLnNl
dHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeSgnQWxsb3dBbGwnKTsKKwlmb3IgKHZhciBp
ID0gMDsgaSA8IHdpbmRvdy5mcmFtZXMubGVuZ3RoOyArK2kpCisJCXdpbmRvdy5mcmFtZXNbaV0u
cG9zdE1lc3NhZ2UoJ2Jsb2NrZWQnLCAnKicpOworfQorCit3aW5kb3cub25tZXNzYWdlID0gZnVu
Y3Rpb24oKSB7CisJaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJCXRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOworCX0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlmcmFt
ZSBzaG91bGQgcmV0dXJuIG9ubHkgb25lIHNlY3VyaXR5IGVycm9yOjwvcD4KKzxpZnJhbWUgc3Jj
PSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1mb3Itc3Rv
cmFnZS1ibG9ja2luZy1jaGFuZ2VkLWxvY2FsLXN0b3JhZ2UuaHRtbCIgb25sb2FkPSJkZWNyZW1l
bnQoKSI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtcGx1Z2luLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9j
a2luZy1sb29zZW5lZC1wbHVnaW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5OGVlNGY4ZTg1
MzdjNjY0ZTIyMmUzYjFlNzk1OTEwMjU2YTk2ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtcGx1Z2lu
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1RoaXMgaWZyYW1lIHNob3VsZCBub3QgaGF2
ZSBwcml2YXRlIGJyb3dzaW5nIGVuYWJsZWQ6CisKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0t
ZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitmYWxzZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3Nl
bmVkLXBsdWdpbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdl
LWJsb2NraW5nLWxvb3NlbmVkLXBsdWdpbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiMGQyNGYyMmRhYTQw
ZTZjMTA1OTdjMDdlNTM1Y2RiMzkzNjkzMDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtcGx1Z2luLmh0
bWwKQEAgLTAsMCArMSwzMSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKwl0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKwl0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKwl0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworfQor
CitpZiAod2luZG93LnRlc3RSdW5uZXIpCisJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VC
bG9ja2luZ1BvbGljeSgnQmxvY2tBbGwnKTsKKworZnVuY3Rpb24gZGVjcmVtZW50KCkgeworCWlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKwkJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9j
a2luZ1BvbGljeSgnQWxsb3dBbGwnKTsKKwlmb3IgKHZhciBpID0gMDsgaSA8IHdpbmRvdy5mcmFt
ZXMubGVuZ3RoOyArK2kpCisJCXdpbmRvdy5mcmFtZXNbaV0ucG9zdE1lc3NhZ2UoJ2Jsb2NrZWQn
LCAnKicpOworfQorCit3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CisJaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworCX0KK30KKzwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQgbm90IGhhdmUgcHJp
dmF0ZSBicm93c2luZyBlbmFibGVkOjwvcD4KKzxpZnJhbWUgc3JjPSJodHRwOi8vMTI3LjAuMC4x
OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLXBsdWdpbi1h
c3luYy5odG1sIiBvbmxvYWQ9ImRlY3JlbWVudCgpIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1i
bG9ja2luZy1sb29zZW5lZC1zaGFyZWQtd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1zaGFyZWQtd29y
a2VyLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MDEyYTMwYjljMWI5YmRlMDc5MzMwNTVmMzgy
MDgxMmVkYjk1YjdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXNoYXJlZC13b3JrZXItZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgaWZyYW1lIHNob3VsZCByZXR1cm4gb25seSBvbmUg
c2VjdXJpdHkgZXJyb3I6CisKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8v
PCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitTRUNVUklUWV9FUlIKKworQ29ubmVjdGVkIHN1
Y2Nlc3NmdWxseQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9z
dG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXNoYXJlZC13b3JrZXIuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1zaGFyZWQtd29y
a2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDg1NGE0ODJhZWM3ZDg2ZDhjZGZlYzIwZjc1YjNiMjhlM2My
ZmI2MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
c3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1zaGFyZWQtd29ya2VyLmh0bWwKQEAgLTAsMCArMSwz
MSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
Kwl0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
Kwl0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworfQorCitpZiAod2luZG93LnRl
c3RSdW5uZXIpCisJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeSgn
QmxvY2tBbGwnKTsKKword2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKCkgeworCWlmICh3aW5k
b3cudGVzdFJ1bm5lcikKKwkJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1Bv
bGljeSgnQWxsb3dBbGwnKTsKKwlmb3IgKHZhciBpID0gMDsgaSA8IHdpbmRvdy5mcmFtZXMubGVu
Z3RoOyArK2kpCisJCXdpbmRvdy5mcmFtZXNbaV0ucG9zdE1lc3NhZ2UoJ2Jsb2NrZWQnLCAnKicp
OworCisJd2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKCkgeworCQlpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKwkJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworCQl9CisJfQorfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaWZyYW1lIHNob3VsZCByZXR1cm4gb25seSBv
bmUgc2VjdXJpdHkgZXJyb3I6PC9wPgorPGlmcmFtZSBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5nLWNoYW5nZWQt
c2hhcmVkLXdvcmtlci5odG1sIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29z
ZW5lZC13ZWJzcWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXdlYnNxbC1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTNlYjkzMzE4NzgwM2VlNWU0Yjc3MzQzN2E2MDdmYTkzNzQ2N2NhMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1s
b29zZW5lZC13ZWJzcWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgaWZyYW1l
IHNob3VsZCByZXR1cm4gb25seSBvbmUgc2VjdXJpdHkgZXJyb3I6CisKKworCistLS0tLS0tLQor
RnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitTRUNV
UklUWV9FUlIKKworTm8gZXhjZXB0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtd2Vic3FsLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtd2Vi
c3FsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTAyYzNiM2NhZGMwZDJmZWFmYzA0ZGVlN2VmYmI2MmVlNTc2
NjlhMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
c3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC13ZWJzcWwuaHRtbApAQCAtMCwwICsxLDMxIEBACis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCXRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCXRlc3RS
dW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikKKwlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdCbG9ja0Fs
bCcpOworCitmdW5jdGlvbiBkZWNyZW1lbnQoKSB7CisJaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
CQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdBbGxvd0FsbCcp
OworCWZvciAodmFyIGkgPSAwOyBpIDwgd2luZG93LmZyYW1lcy5sZW5ndGg7ICsraSkKKwkJd2lu
ZG93LmZyYW1lc1tpXS5wb3N0TWVzc2FnZSgnYmxvY2tlZCcsICcqJyk7Cit9CisKK3dpbmRvdy5v
bm1lc3NhZ2UgPSBmdW5jdGlvbigpIHsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwkJdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7CisJfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwPlRoaXMgaWZyYW1lIHNob3VsZCByZXR1cm4gb25seSBvbmUgc2VjdXJpdHkgZXJyb3I6PC9w
PgorPGlmcmFtZSBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMv
aWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5nLWNoYW5nZWQtd2Vic3FsLmh0bWwiIG9ubG9hZD0i
ZGVjcmVtZW50KCkiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5l
ZC1sb2NhbC1zdG9yYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtbG9jYWwtc3RvcmFnZS1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZjQwMDgzZmQ2ZjRmOWI5NTRhNzkzNDMxMGQ3YTU1NDZkNDZjMjM5
MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3Rv
cmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtbG9jYWwtc3RvcmFnZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMCBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIHJldHVybiBvbmx5IG9uZSBzZWN1cml0
eSBlcnJvcjoKKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJh
bWUwLS0+LS0+JworLS0tLS0tLS0KK05vIGV4Y2VwdGlvbgorCitObyBleGNlcHRpb24KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1z
dHJlbmd0aGVuZWQtbG9jYWwtc3RvcmFnZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDQ5ZjQxZTk1YWQ2ZjVjMGVkYmQzNTVmNTdkODMzNDdmNTYwY2JhMgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1i
bG9ja2luZy1zdHJlbmd0aGVuZWQtbG9jYWwtc3RvcmFnZS5odG1sCkBAIC0wLDAgKzEsMjkgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJdGVz
dFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisJdGVz
dFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK30KKworZnVuY3Rpb24gZGVjcmVtZW50
KCkgeworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikKKwkJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0
b3JhZ2VCbG9ja2luZ1BvbGljeSgnQmxvY2tBbGwnKTsKKwlmb3IgKHZhciBpID0gMDsgaSA8IHdp
bmRvdy5mcmFtZXMubGVuZ3RoOyArK2kpCisJCXdpbmRvdy5mcmFtZXNbaV0ucG9zdE1lc3NhZ2Uo
J2Jsb2NrZWQnLCAnKicpOworfQorCit3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CisJ
aWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJCWludGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdl
QmxvY2tpbmdQb2xpY3koJ0FsbG93QWxsJyk7CisJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwor
CX0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQg
cmV0dXJuIG9ubHkgb25lIHNlY3VyaXR5IGVycm9yOjwvcD4KKzxpZnJhbWUgc3JjPSJodHRwOi8v
MTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9j
a2luZy1jaGFuZ2VkLWxvY2FsLXN0b3JhZ2UuaHRtbCIgb25sb2FkPSJkZWNyZW1lbnQoKSI+PC9p
ZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXBsdWdpbi1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmct
c3RyZW5ndGhlbmVkLXBsdWdpbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRkOGVjZWZhN2Uz
ODcxM2Q0NDdlYzg0M2JlYTEyMTQ0NGEyYzhhZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcGx1
Z2luLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1RoaXMgaWZyYW1lIHNob3VsZCBoYXZl
IHByaXZhdGUgYnJvd3NpbmcgZW5hYmxlZDoKKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1m
cmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK2ZhbHNlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5n
dGhlbmVkLXBsdWdpbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9y
YWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wbHVnaW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTBlNjgz
ZmQzNTBkNWU1MzdiNzljYjlmYTMwNjQ4ZGY3YmQ2YjcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5l
ZC1wbHVnaW4uaHRtbApAQCAtMCwwICsxLDI5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4K
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCXRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
CXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCXRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNU
ZXh0KCk7Cit9CisKK2Z1bmN0aW9uIGRlY3JlbWVudCgpIHsKKwlpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisJCWludGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0Jsb2Nr
QWxsJyk7CisJZm9yICh2YXIgaSA9IDA7IGkgPCB3aW5kb3cuZnJhbWVzLmxlbmd0aDsgKytpKQor
CQl3aW5kb3cuZnJhbWVzW2ldLnBvc3RNZXNzYWdlKCdibG9ja2VkJywgJyonKTsKK30KKword2lu
ZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKCkgeworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
CQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdBbGxvd0FsbCcp
OworCQl0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHA+VGhpcyBpZnJhbWUgc2hvdWxkIGhhdmUgcHJpdmF0ZSBicm93c2luZyBlbmFi
bGVkOjwvcD4KKzxpZnJhbWUgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVz
b3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLXBsdWdpbi1hc3luYy5odG1sIiBvbmxvYWQ9
ImRlY3JlbWVudCgpIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVu
ZWQtc2hhcmVkLXdvcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXNoYXJlZC13b3JrZXItZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjdmYTE4MTQzZmU2YmM0Zjk1NWRlZWY2YWUyOTg4NTRkNThiZTZj
YjcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0
b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXNoYXJlZC13b3JrZXItZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTAgQEAKK1RoaXMgaWZyYW1lIHNob3VsZCByZXR1cm4gb25seSBvbmUgc2VjdXJp
dHkgZXJyb3I6CisKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZy
YW1lMC0tPi0tPicKKy0tLS0tLS0tCitDb25uZWN0ZWQgc3VjY2Vzc2Z1bGx5CisKK1NFQ1VSSVRZ
X0VSUgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdl
LWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1zaGFyZWQtd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXNoYXJlZC13
b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OGY5YjllMGMzZTU3OTFiOWE1M2NkYzI5NDg1ZTQ0ZDUy
ODIxNTgxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1zaGFyZWQtd29ya2VyLmh0bWwKQEAgLTAs
MCArMSwyOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKwl0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKwl0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKwl0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworfQorCit3aW5kb3cu
b25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CisJaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCQlpbnRl
cm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdCbG9ja0FsbCcpOworCWZv
ciAodmFyIGkgPSAwOyBpIDwgd2luZG93LmZyYW1lcy5sZW5ndGg7ICsraSkKKwkJd2luZG93LmZy
YW1lc1tpXS5wb3N0TWVzc2FnZSgnYmxvY2tlZCcsICcqJyk7CisKKwl3aW5kb3cub25tZXNzYWdl
ID0gZnVuY3Rpb24oKSB7CisJCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCQkJaW50ZXJuYWxz
LnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeSgnQWxsb3dBbGwnKTsKKwkJCXRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOworCQl9CisJfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwPlRoaXMgaWZyYW1lIHNob3VsZCByZXR1cm4gb25seSBvbmUgc2VjdXJpdHkgZXJyb3I6
PC9wPgorPGlmcmFtZSBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJj
ZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5nLWNoYW5nZWQtc2hhcmVkLXdvcmtlci5odG1s
Ij48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtd2Vic3FsLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9j
a2luZy1zdHJlbmd0aGVuZWQtd2Vic3FsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTY2MTg1
YzNmNDU5MTljMzlkZjY3YmU5ODMxZGI5YjQ3Yjk1MWNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5l
ZC13ZWJzcWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgaWZyYW1lIHNob3Vs
ZCByZXR1cm4gb25seSBvbmUgc2VjdXJpdHkgZXJyb3I6CisKKworCistLS0tLS0tLQorRnJhbWU6
ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitObyBleGNlcHRp
b24KKworU0VDVVJJVFlfRVJSCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXdlYnNxbC5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC13
ZWJzcWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OGVlZjE0OWU0YTE5NDA0ODQ5OGJmMmJjMzVmNTY0NWFl
MzVjNWQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC13ZWJzcWwuaHRtbApAQCAtMCwwICsxLDI5
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgewor
CXRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
CXRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKK2Z1bmN0aW9uIGRlY3Jl
bWVudCgpIHsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpCisJCWludGVybmFscy5zZXR0aW5ncy5z
ZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0Jsb2NrQWxsJyk7CisJZm9yICh2YXIgaSA9IDA7IGkg
PCB3aW5kb3cuZnJhbWVzLmxlbmd0aDsgKytpKQorCQl3aW5kb3cuZnJhbWVzW2ldLnBvc3RNZXNz
YWdlKCdibG9ja2VkJywgJyonKTsKK30KKword2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKCkg
eworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3Rv
cmFnZUJsb2NraW5nUG9saWN5KCdBbGxvd0FsbCcpOworCQl0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyBpZnJhbWUgc2hv
dWxkIHJldHVybiBvbmx5IG9uZSBzZWN1cml0eSBlcnJvcjo8L3A+Cis8aWZyYW1lIHNyYz0iaHR0
cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9pZnJhbWUtZm9yLXN0b3JhZ2Ut
YmxvY2tpbmctY2hhbmdlZC13ZWJzcWwuaHRtbCIgb25sb2FkPSJkZWNyZW1lbnQoKSI+PC9pZnJh
bWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
VGVzdEV4cGVjdGF0aW9ucwppbmRleCAxNjVjNTkzMDc0YmJjZjZhMGQwNTFjYzViODRiMmIyZDJh
YjVmYzg5Li5iMTU1NjFlMzNlNGY3OTg0MGU0ODVmMzM0YTc0ODdhYjljMzZiNGQwIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTU0MSw2
ICs1NDEsOCBAQCBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1
cml0eVBvbGljeS9zaGFyZWQtd29ya2VyLWNvbm5lY3QtcwogV09OVEZJWCBTS0lQIDogaHR0cC90
ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tc2hhcmVkLXdvcmtlci5odG1sID0gVEVYVAogV09O
VEZJWCBTS0lQIDogaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tc2hhcmVkLXdvcmtl
ci1hbGxvd2VkLmh0bWwgPSBURVhUCiBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3NhbWUtb3JpZ2luLXNoYXJlZC13b3JrZXItYmxvY2tlZC5odG1sID0gVEVYVAorV09OVEZJWCBT
S0lQIDogaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXNoYXJl
ZC13b3JrZXIuaHRtbCA9IFRFWFQKK1dPTlRGSVggU0tJUCA6IGh0dHAvdGVzdHMvc2VjdXJpdHkv
c3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtc2hhcmVkLXdvcmtlci5odG1sID0gVEVYVAog
V09OVEZJWCBTS0lQIDogc3RvcmFnZS9pbmRleGVkZGIvYmFzaWNzLXNoYXJlZC13b3JrZXJzLmh0
bWwgPSBQQVNTCiAKIC8vIHRlc3Rfc2hlbGwgZG9lcyBub3Qgc3VwcG9ydCBtZXNzYWdlIHBvcnRz
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcGx1Z2luLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdl
LWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wbHVnaW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIw
OWU3YjZkZDY2NDYxZDIyYmI1ZTA4YTYyYzY1MWQ1ZTViMzg4NjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFn
ZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcGx1Z2luLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDgg
QEAKK1RoaXMgaWZyYW1lIHNob3VsZCBoYXZlIHByaXZhdGUgYnJvd3NpbmcgZW5hYmxlZDoKKwor
CisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+Jwor
LS0tLS0tLS0KK3RydWUKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAz
ZmJhMDVhYjM4NThjYzA1YTY1ZGViYmNhMmE3ZjNiZDM3MDY5YzM4Li44YmVhMTY2Njc1OTFkMGJj
NmJhYmZhM2NlNGU4ZTU5ZThmYjdhMzUwIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDktMTEgIEplZmZyZXkgUGZhdSAgPGpwZmF1
QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyB0aGlyZC1wYXJ0eSBzdG9yYWdlIGJsb2NraW5n
IHNldHRpbmcgdG8gY2hhbmdlIHdoaWxlIGEgcGFnZSBpcyBsb2FkZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGV4cG9ydGVkIHN5bWJvbHMu
CisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDEyLTA5
LTA3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIGJv
eC1zaGFkb3cgY2F1c2VzIG92ZXJsYXkgc2Nyb2xsYmFycyB0byBiZSBpbiB0aGUgd3JvbmcgcG9z
aXRpb24gd2hlbiBlbGVtZW50IGlzIGNvbXBvc2l0ZWQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163710</attachid>
            <date>2012-09-12 15:04:17 -0700</date>
            <delta_ts>2012-09-12 17:59:23 -0700</delta_ts>
            <desc>More tests</desc>
            <filename>bug-95790-20120912150514.patch</filename>
            <type>text/plain</type>
            <size>51722</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYwMzNhNjBhMzU4MTRk
M2U4MzJmMWViYzM5NzBmYzRiNGQ4MjIyMS4uMmIzMzA3NjhkZWVhYzliNzVmYTVlMzI1Njg5M2Zh
MDc2ODczZGEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTA5LTExICBKZWZm
cmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdGhpcmQtcGFydHkg
c3RvcmFnZSBibG9ja2luZyBzZXR0aW5nIHRvIGNoYW5nZSB3aGlsZSBhIHBhZ2UgaXMgbG9hZGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTc5MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBpcGUgdGhy
b3VnaCBjaGFuZ2VzIHRvIHRoZSBzdG9yYWdlIGJsb2NraW5nIHBvbGljeSB0byBlYWNoIGRvY3Vt
ZW50IGFuZCBwbHVnaW4uCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvc2VjdXJpdHkvc3Rv
cmFnZS1ibG9ja2luZy1sb29zZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWwKKyAgICAgICAgICAgICAg
IGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wbHVnaW4uaHRt
bAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxv
b3NlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1zaGFyZWQtd29ya2VyLmh0
bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1s
b29zZW5lZC13ZWJzcWwuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9z
dG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWwKKyAgICAgICAg
ICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQt
cGx1Z2luLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1i
bG9ja2luZy1zdHJlbmd0aGVuZWQtcHJpdmF0ZS1icm93c2luZy1wbHVnaW4uaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5l
ZC1zaGFyZWQtd29ya2VyLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkv
c3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtd2Vic3FsLmh0bWwKKworICAgICAgICAqIFdl
YkNvcmUuZXhwLmluOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6IFBpcGUgY2hhbmdlcyB0
aHJvdWdoIHRvIHRoZSBEb2N1bWVudCdzIFNlY3VyaXR5T3JpZ2luLgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoRG9jdW1lbnQpOgor
ICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpjb2xsZWN0
UGx1Z2luVmlld3MpOiBSZWZhY3RvcmVkIG91dCBpbnRvIGEgZnVuY3Rpb24uCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hh
bmdlZCk6IFBpcGUgY2hhbmdlcyB0aHJvdWdoIHRvIGVhY2ggUGx1Z2luVmlldy4KKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCk6CisgICAgICAgICog
cGFnZS9QYWdlLmg6CisgICAgICAgIChQYWdlKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3kp
OiBUZWxsIFBhZ2VzIGFib3V0IGNoYW5nZXMgdG8gdGhlIHN0b3JhZ2UgYmxvY2tpbmcgcG9saWN5
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAg
ICAoU2V0dGluZ3MpOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsdWdpblZpZXdCYXNlOjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQp
OgorCiAyMDEyLTA5LTA2ICBKZWZmcmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CiAKICAgICAg
ICAgRXh0ZW5kIHRoaXJkLXBhcnR5IHN0b3JhZ2UgYmxvY2tpbmcgQVBJIHRvIG9wdGlvbmFsbHkg
YWxsb3cgYmxvY2tpbmcgYWxsIHN0b3JhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhZWY3OGYyNmRjZDUxZDll
ZmQ1MDk4NjE5YjkyNjAyMGYwYzJjNDFhLi5kOTcxNjA4NjNjMWU4MmVmMThhMjViZTQ5ZDY3ZDgw
YmIxYjNlZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTItMDktMTEgIEplZmZy
ZXkgUGZhdSAgPGpwZmF1QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyB0aGlyZC1wYXJ0eSBz
dG9yYWdlIGJsb2NraW5nIHNldHRpbmcgdG8gY2hhbmdlIHdoaWxlIGEgcGFnZSBpcyBsb2FkZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzkwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5mb3JtIHBs
dWdpbnMgYWJvdXQgY2hhbmdlcyB0byB0aGUgc3RvcmFnZSBibG9ja2luZyBwb2xpY3kgYnkgd2F5
IG9mIHRoZSBwcml2YXRlIGJyb3dzaW5nIGZlYXR1cmUuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9j
ZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNv
bnRyb2xsZXJQcm94eTo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaDoK
KyAgICAgICAgKFBsdWdpbkNvbnRyb2xsZXJQcm94eSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vz
cy9QbHVnaW5Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW46IEFkZCBXSzIgbWVzc2FnZSBmb3Ig
c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luOjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoK
KyAgICAgICAgKE5ldHNjYXBlUGx1Z2luKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UERGL0J1aWx0SW5QREZWaWV3Lmg6CisgICAgICAgIChCdWlsdEluUERGVmlldyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5tbTogVHJlYXQgc3RvcmFn
ZUJsb2NraW5nU3RhdGVDaGFuZ2VkIGFzIGEgbm8tb3AuCisgICAgICAgIChXZWJLaXQ6OkJ1aWx0
SW5QREZWaWV3OjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6IEFkZCBwdXJlIHZpcnR1
YWwgc3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkIG1ldGhvZC4KKyAgICAgICAgKFBsdWdpbik6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJveHk6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5o
OgorICAgICAgICAoUGx1Z2luUHJveHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6c3RvcmFnZUJsb2Nr
aW5nU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuaDoKKyAgICAgICAgKFBsdWdpblZpZXcpOgorICAgICAgICAq
IHdpbi9XZWJLaXQyLmRlZjoKKwogMjAxMi0wOS0wNiAgSmVmZnJleSBQZmF1ICA8anBmYXVAYXBw
bGUuY29tPgogCiAgICAgICAgIEV4dGVuZCB0aGlyZC1wYXJ0eSBzdG9yYWdlIGJsb2NraW5nIEFQ
SSB0byBvcHRpb25hbGx5IGFsbG93IGJsb2NraW5nIGFsbCBzdG9yYWdlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCmluZGV4IGI0NzY5ZjkxODI1NDkxZDQyMzc2NjE4OGJmYzk5OWRlYjJmMzFlNTAuLjU0OGU1
OTM1MjUwOTZlMWMzNTc3ZmVkNjdkNTZlNGNlMGRiZGI1NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CkBAIC04NzgsNiArODc4LDcgQEAgX19aTjdXZWJDb3JlOFNldHRpbmdzMjNzZXRVc2VzRW5jb2Rp
bmdEZXRlY3RvckViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNHNldEFwcGxpY2F0aW9uQ2hyb21l
TW9kZUViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNHNldEROU1ByZWZldGNoaW5nRW5hYmxlZEVi
CiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNHNldE1vY2tTY3JvbGxiYXJzRW5hYmxlZEViCitfX1pO
N1dlYkNvcmU4U2V0dGluZ3MyNHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeUVOU18xNFNlY3VyaXR5
T3JpZ2luMjFTdG9yYWdlQmxvY2tpbmdQb2xpY3lFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNHNl
dFRleHRBcmVhc0FyZVJlc2l6YWJsZUViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNXNldERldmVs
b3BlckV4dHJhc0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjVzZXRGcmFtZUZsYXR0
ZW5pbmdFbmFibGVkRWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDk3ODBmMjQ2ZGI3MjQ3
OWU0ZjQ2NDMxM2RjNjgyNDc0MTJiYjI3MzcuLmI5ZDU1MWE2NTc5ZTQ4ZmI4YWQxMWM5ZDcyMTQy
MzQ4YjBlZjc2MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNDU0MSw2ICs0NTQxLDEy
IEBAIHZvaWQgRG9jdW1lbnQ6OnVucmVnaXN0ZXJGb3JNZWRpYVZvbHVtZUNhbGxiYWNrcyhFbGVt
ZW50KiBlKQogICAgIG1fbWVkaWFWb2x1bWVDYWxsYmFja0VsZW1lbnRzLnJlbW92ZShlKTsKIH0K
IAordm9pZCBEb2N1bWVudDo6c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UoKQoreworICAg
IGlmIChTZXR0aW5ncyogc2V0dGluZ3MgPSB0aGlzLT5zZXR0aW5ncygpKQorICAgICAgICBzZWN1
cml0eU9yaWdpbigpLT5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koc2V0dGluZ3MtPnN0b3JhZ2VC
bG9ja2luZ1BvbGljeSgpKTsKK30KKwogdm9pZCBEb2N1bWVudDo6cHJpdmF0ZUJyb3dzaW5nU3Rh
dGVEaWRDaGFuZ2UoKSAKIHsKICAgICBIYXNoU2V0PEVsZW1lbnQqPjo6aXRlcmF0b3IgZW5kID0g
bV9wcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWRFbGVtZW50cy5lbmQoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKaW5kZXggZGFmZTA0YmUzMTRhNGE3YjUwMTA1NWM3NTViYTU5ZWUwNDZkNjJkMy4uNDE3
NzYyNTI5NWYyY2Y2NDNkM2I3MjE5NzFlZDkwNTBkZTI1NTVjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmgKQEAgLTEwMTYsNiArMTAxNiw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcmVnaXN0ZXJGb3JQ
cml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWRDYWxsYmFja3MoRWxlbWVudCopOwogICAgIHZvaWQg
dW5yZWdpc3RlckZvclByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZENhbGxiYWNrcyhFbGVtZW50
Kik7CisgICAgdm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZURpZENoYW5nZSgpOwogICAgIHZvaWQg
cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoKTsKIAogICAgIHZvaWQgc2V0U2hvdWxkQ3Jl
YXRlUmVuZGVyZXJzKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggMjk4MzgwOGVhY2FjMzEy
MDk2ZTI5YmExZmRmN2NhOThkMzIzZDM0Ny4uMTdiZmEwZjJiZDUxNDg3NTQ2NDBhODY0OWZlNjM5
OTc3MDRkMzJkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC01NSw3ICs1NSw2IEBACiAjaW5jbHVk
ZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YS5oIgogI2luY2x1ZGUgIlBsdWdp
blZpZXcuaCIKLSNpbmNsdWRlICJQbHVnaW5WaWV3QmFzZS5oIgogI2luY2x1ZGUgIlBvaW50ZXJM
b2NrQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlByb2dyZXNzVHJhY2tlci5oIgogI2luY2x1ZGUg
IlJlbmRlckFyZW5hLmgiCkBAIC05ODgsMTYgKzk4Nyw4IEBAIHZvaWQgUGFnZTo6ZG5zUHJlZmV0
Y2hpbmdTdGF0ZUNoYW5nZWQoKQogICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+aW5pdEROU1By
ZWZldGNoKCk7CiB9CiAKLXZvaWQgUGFnZTo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKCkK
K3ZvaWQgUGFnZTo6Y29sbGVjdFBsdWdpblZpZXdzKFZlY3RvcjxSZWZQdHI8UGx1Z2luVmlld0Jh
c2U+LCAzMj4mIHBsdWdpblZpZXdCYXNlcykKIHsKLSAgICBib29sIHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQgPSBtX3NldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7Ci0KLSAgICBmb3Ig
KEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LT50cmF2ZXJzZU5leHQoKSkKLSAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnByaXZhdGVCcm93
c2luZ1N0YXRlRGlkQ2hhbmdlKCk7Ci0KLSAgICAvLyBDb2xsZWN0IHRoZSBQbHVnaW5WaWV3cyBp
biB0byBhIHZlY3RvciB0byBlbnN1cmUgdGhhdCBhY3Rpb24gdGhlIHBsdWctaW4gdGFrZXMKLSAg
ICAvLyBmcm9tIGJlbG93IHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCBkb2VzIG5vdCBhZmZl
Y3QgdGhlaXIgbGlmZXRpbWUuCi0gICAgVmVjdG9yPFJlZlB0cjxQbHVnaW5WaWV3QmFzZT4sIDMy
PiBwbHVnaW5WaWV3QmFzZXM7CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAg
RnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKTsKICAgICAgICAgaWYgKCF2aWV3KQpAQCAt
MTAxMyw2ICsxMDA0LDM1IEBAIHZvaWQgUGFnZTo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2Vk
KCkKICAgICAgICAgICAgICAgICBwbHVnaW5WaWV3QmFzZXMuYXBwZW5kKHN0YXRpY19jYXN0PFBs
dWdpblZpZXdCYXNlKj4od2lkZ2V0KSk7CiAgICAgICAgIH0KICAgICB9Cit9CisKK3ZvaWQgUGFn
ZTo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKCkKK3sKKyAgICBTZWN1cml0eU9yaWdpbjo6
U3RvcmFnZUJsb2NraW5nUG9saWN5IHN0b3JhZ2VCbG9ja2luZ1BvbGljeSA9IG1fc2V0dGluZ3Mt
PnN0b3JhZ2VCbG9ja2luZ1BvbGljeSgpOworCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtYWlu
RnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCisg
ICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zdG9yYWdlQmxvY2tpbmdTdGF0ZURpZENoYW5nZSgp
OworCisgICAgLy8gQ29sbGVjdCB0aGUgUGx1Z2luVmlld3MgaW4gdG8gYSB2ZWN0b3IgdG8gZW5z
dXJlIHRoYXQgYWN0aW9uIHRoZSBwbHVnLWluIHRha2VzCisgICAgLy8gZnJvbSBiZWxvdyBwcml2
YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQgZG9lcyBub3QgYWZmZWN0IHRoZWlyIGxpZmV0aW1lLgor
ICAgIFZlY3RvcjxSZWZQdHI8UGx1Z2luVmlld0Jhc2U+LCAzMj4gcGx1Z2luVmlld0Jhc2VzOwor
ICAgIGNvbGxlY3RQbHVnaW5WaWV3cyhwbHVnaW5WaWV3QmFzZXMpOworCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBwbHVnaW5WaWV3QmFzZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHBsdWdp
blZpZXdCYXNlc1tpXS0+c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKHN0b3JhZ2VCbG9ja2lu
Z1BvbGljeSk7Cit9CisKK3ZvaWQgUGFnZTo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKCkK
K3sKKyAgICBib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBtX3NldHRpbmdzLT5wcml2YXRl
QnJvd3NpbmdFbmFibGVkKCk7CisKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgp
OyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKKyAgICAgICAg
ZnJhbWUtPmRvY3VtZW50KCktPnByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCk7CisKKyAg
ICAvLyBDb2xsZWN0IHRoZSBQbHVnaW5WaWV3cyBpbiB0byBhIHZlY3RvciB0byBlbnN1cmUgdGhh
dCBhY3Rpb24gdGhlIHBsdWctaW4gdGFrZXMKKyAgICAvLyBmcm9tIGJlbG93IHByaXZhdGVCcm93
c2luZ1N0YXRlQ2hhbmdlZCBkb2VzIG5vdCBhZmZlY3QgdGhlaXIgbGlmZXRpbWUuCisgICAgVmVj
dG9yPFJlZlB0cjxQbHVnaW5WaWV3QmFzZT4sIDMyPiBwbHVnaW5WaWV3QmFzZXM7CisgICAgY29s
bGVjdFBsdWdpblZpZXdzKHBsdWdpblZpZXdCYXNlcyk7CiAKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHBsdWdpblZpZXdCYXNlcy5zaXplKCk7ICsraSkKICAgICAgICAgcGx1Z2luVmlld0Jh
c2VzW2ldLT5wcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCmluZGV4IGEyMThkNWQ0Y2E1OWI1YjdhNDJkYWI0NGQ3YmVhNzQwZWU1
ODM2ZTEuLjFkNTc0MGNkNzk4ZTNkODg1MTcxMzFhMDI4YTkzMGRhMWJmMTFiZDggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiUGFnZVZpc2liaWxpdHlTdGF0ZS5o
IgogI2luY2x1ZGUgIlBhZ2luYXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgor
I2luY2x1ZGUgIlBsdWdpblZpZXdCYXNlLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVk
ZSAiU3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgpAQCAt
MjcxLDYgKzI3Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3RyaW5n
JiB1c2VyU3R5bGVTaGVldCgpIGNvbnN0OwogCiAgICAgICAgIHZvaWQgZG5zUHJlZmV0Y2hpbmdT
dGF0ZUNoYW5nZWQoKTsKKyAgICAgICAgdm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQo
KTsKICAgICAgICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoKTsKIAogICAgICAg
ICBzdGF0aWMgdm9pZCBzZXREZWJ1Z2dlckZvckFsbFBhZ2VzKEpTQzo6RGVidWdnZXIqKTsKQEAg
LTM1MCw2ICszNTIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0TWlu
aW11bVRpbWVySW50ZXJ2YWwoZG91YmxlKTsKICAgICAgICAgZG91YmxlIG1pbmltdW1UaW1lcklu
dGVydmFsKCkgY29uc3Q7CiAKKyAgICAgICAgdm9pZCBjb2xsZWN0UGx1Z2luVmlld3MoVmVjdG9y
PFJlZlB0cjxQbHVnaW5WaWV3QmFzZT4sIDMyPiYgcGx1Z2luVmlld0Jhc2VzKTsKKwogICAgICAg
ICBPd25QdHI8Q2hyb21lPiBtX2Nocm9tZTsKICAgICAgICAgT3duUHRyPERyYWdDYXJldENvbnRy
b2xsZXI+IG1fZHJhZ0NhcmV0Q29udHJvbGxlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApp
bmRleCBmMjUxNTBiNTE2YzM5NjUzNWMzOGJlZmNhM2NiMmEyYTY4ZmVlYTBmLi42ZjFkM2ZhMDgx
ZjAxMzkzZjA5MmYxNDBmNTk5NGY5NjgyZjE1YTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNw
cApAQCAtOTMxLDYgKzkzMSwxNSBAQCB2b2lkIFNldHRpbmdzOjpzZXRMb2FkRGVmZXJyaW5nRW5h
YmxlZChib29sIGVuYWJsZWQpCiAgICAgbV9sb2FkRGVmZXJyaW5nRW5hYmxlZCA9IGVuYWJsZWQ7
CiB9CiAKK3ZvaWQgU2V0dGluZ3M6OnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShTZWN1cml0eU9y
aWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5IGVuYWJsZWQpCit7CisgICAgaWYgKG1fc3RvcmFn
ZUJsb2NraW5nUG9saWN5ID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3Rv
cmFnZUJsb2NraW5nUG9saWN5ID0gZW5hYmxlZDsKKyAgICBtX3BhZ2UtPnN0b3JhZ2VCbG9ja2lu
Z1N0YXRlQ2hhbmdlZCgpOworfQorCiB2b2lkIFNldHRpbmdzOjpzZXRUaWxlZEJhY2tpbmdTdG9y
ZUVuYWJsZWQoYm9vbCBlbmFibGVkKQogewogICAgIG1fdGlsZWRCYWNraW5nU3RvcmVFbmFibGVk
ID0gZW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCA2ZmEzYmMwMjRiOGI4YzJmOWFj
YzBlZDAzZDI2MTlkNDY2NTMyOTYzLi4zOWEwYTg1MDgzYzhmMGQ5OWRjMWJhMjhjNGFkOGE0YWYy
YWI0NDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC02MDIsNyArNjAyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldFdpbmRvd0ZvY3VzUmVzdHJpY3RlZChib29s
IHJlc3RyaWN0ZWQpIHsgbV93aW5kb3dGb2N1c1Jlc3RyaWN0ZWQgPSByZXN0cmljdGVkOyB9CiAg
ICAgICAgIGJvb2wgd2luZG93Rm9jdXNSZXN0cmljdGVkKCkgY29uc3QgeyByZXR1cm4gbV93aW5k
b3dGb2N1c1Jlc3RyaWN0ZWQ7IH0KIAotICAgICAgICB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1Bv
bGljeShTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5IHBvbGljeSkgeyBtX3N0
b3JhZ2VCbG9ja2luZ1BvbGljeSA9IHBvbGljeTsgfQorICAgICAgICB2b2lkIHNldFN0b3JhZ2VC
bG9ja2luZ1BvbGljeShTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5KTsKICAg
ICAgICAgU2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSBzdG9yYWdlQmxvY2tp
bmdQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeTsgfQogCiAg
ICAgICAgIHZvaWQgc2V0U2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChib29sKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaAppbmRleCAzMTJkNTdjMDlkMzc4
MzBiODYzYzhkMjgzOTMxZDdkMTI3ZGQyMTY3Li5kMjFhZTQ1ZjNkNTdiYmE3NjA4ZGU5ZGVjYTU1
NTE4YzU3NTc2NGJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZp
ZXdCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oCkBA
IC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiV2lkZ2V0LmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NM
YXllci5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW4uaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CkBAIC00OSw2ICs1MCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgdmlydHVhbCBKU0M6OkpT
T2JqZWN0KiBzY3JpcHRPYmplY3QoSlNDOjpKU0dsb2JhbE9iamVjdCopIHsgcmV0dXJuIDA7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgc3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKFNlY3VyaXR5T3Jp
Z2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3kpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBwcml2YXRl
QnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCkgeyB9CiAgICAgdmlydHVhbCBib29sIGdldEZvcm1W
YWx1ZShTdHJpbmcmKSB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBzY3JvbGwo
U2Nyb2xsRGlyZWN0aW9uLCBTY3JvbGxHcmFudWxhcml0eSkgeyByZXR1cm4gZmFsc2U7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5LmNwcAppbmRleCAyYWQ0MWRhYTVjMmE4ZTU4MDhmYmJjMzNiNjMzNzU1MDU5NmQ2N2RjLi4w
Y2U3NmUyNDNiNDhmOTMxZGIxZDk3NjA4N2QyYjNjYzI1ZWIzZDNjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCkBA
IC01NjMsNiArNTYzLDE0IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpnZXRQbHVnaW5T
Y3JpcHRhYmxlTlBPYmplY3QodWludDY0X3QmIHBsdWdpblNjcmlwdGFiCiAgICAgcmVsZWFzZU5Q
T2JqZWN0KHBsdWdpblNjcmlwdGFibGVOUE9iamVjdCk7CiB9CiAKK3ZvaWQgUGx1Z2luQ29udHJv
bGxlclByb3h5OjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQodWludDMyX3Qgc3RvcmFnZUJs
b2NraW5nUG9saWN5KQoreworICAgIG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ID0gc3RhdGljX2Nh
c3Q8U2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeT4oc3RvcmFnZUJsb2NraW5n
UG9saWN5KTsKKworICAgIGlmICghbV9pc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQpCisgICAgICAg
IG1fcGx1Z2luLT5zdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQobV9zdG9yYWdlQmxvY2tpbmdQ
b2xpY3kpOworfQorCiB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cHJpdmF0ZUJyb3dzaW5n
U3RhdGVDaGFuZ2VkKGJvb2wgaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKQogewogICAgIG1faXNQ
cml2YXRlQnJvd3NpbmdFbmFibGVkID0gaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgK
aW5kZXggYTlkMzVhNjYzYTcxNTU3MjRkZWJlNjJjZWM3MzY5Y2YzZTIwNTZjZi4uYmE4NmRiZGEx
ZjZjN2I1NmUxMTg0YjJjMzQwMWI3ZjE4MmQyNDM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCkBAIC0zNSw2ICszNSw3
IEBACiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0Nv
bm5lY3Rpb25NZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUu
aD4KIAogbmFtZXNwYWNlIENvcmVJUEMgewpAQCAtMTUyLDYgKzE1Myw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB1cGRhdGVMYXllckhvc3RpbmdDb250ZXh0KExheWVySG9zdGluZ01vZGUpOwogI2Vu
ZGlmCiAKKyAgICB2b2lkIHN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCh1aW50MzJfdCk7CiAg
ICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCk7CiAgICAgdm9pZCBnZXRG
b3JtVmFsdWUoYm9vbCYgcmV0dXJuVmFsdWUsIFN0cmluZyYgZm9ybVZhbHVlKTsKIApAQCAtMTYz
LDYgKzE2NSw3IEBAIHByaXZhdGU6CiAgICAgdWludDY0X3QgbV9wbHVnaW5JbnN0YW5jZUlEOwog
CiAgICAgU3RyaW5nIG1fdXNlckFnZW50OworICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpT
dG9yYWdlQmxvY2tpbmdQb2xpY3kgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3k7CiAgICAgYm9vbCBt
X2lzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsKICAgICBib29sIG1faXNBY2NlbGVyYXRlZENvbXBv
c2l0aW5nRW5hYmxlZDsKICAgICBib29sIG1faXNJbml0aWFsaXppbmc7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
Lm1lc3NhZ2VzLmluCmluZGV4IDM3MWJlZTIzNzc1ZGRlMGZmNzIxMDQzYjM0NTBjY2E2MDY1Yzlk
ZWIuLmUwYTBkY2E2OTAxYzNhNjI3Y2QwNjE5Mzk0MDVkMWRkY2VkYmE2ZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5Lm1lc3NhZ2VzLmluCkBAIC0xMDYsNiArMTA2LDkgQEAgbWVzc2FnZXMgLT4gUGx1Z2lu
Q29udHJvbGxlclByb3h5IHsKICAgICAjIFJldHVybiBhIHNuYXBzaG90IG9mIHRoZSBwbHVnaW4K
ICAgICBTbmFwc2hvdCgpIC0+IChXZWJLaXQ6OlNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGJhY2tp
bmdTdG9yZUhhbmRsZSkKICAgICAKKyAgICAjIFNlbnQgd2hlbiBzdG9yYWdlIGJsb2NraW5nIHBv
bGljeSBjaGFuZ2VzCisgICAgU3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKHVpbnQzMl90IHN0
b3JhZ2VCbG9ja2luZ1BvbGljeSkKKwogICAgICMgU2VudCB3aGVuIHByaXZhdGUgYnJvd3Npbmcg
aXMgZW5hYmxlZCBvciBkaXNhYmxlZAogICAgIFByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChi
b29sIGlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAK
aW5kZXggMTVlNzY0OGRhNjNmN2IzNDkyM2VkOTg5MzAyZjQ1ZTUyZDEyNDcyMC4uZDE5YTRlYmNm
YTViMmQ3M2JiYTNjYmEwOTg0YjQwNTE4ZTBkZjExOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4u
Y3BwCkBAIC05NTMsNiArOTUzLDExIEBAIHZvaWQgTmV0c2NhcGVQbHVnaW46OmNvbnRlbnRzU2Nh
bGVGYWN0b3JDaGFuZ2VkKGZsb2F0IHNjYWxlRmFjdG9yKQogI2VuZGlmCiB9CiAKK3ZvaWQgTmV0
c2NhcGVQbHVnaW46OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZChTZWN1cml0eU9yaWdpbjo6
U3RvcmFnZUJsb2NraW5nUG9saWN5IHN0b3JhZ2VCbG9ja2luZ1BvbGljeSkKK3sKKyAgICBwcml2
YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoc3RvcmFnZUJsb2NraW5nUG9saWN5ICE9IFNlY3VyaXR5
T3JpZ2luOjpBbGxvd0FsbFN0b3JhZ2UpOworfQorCiB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwcml2
YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogewog
ICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IDVmOTNj
NTc0NzY1ODE3ZThiYmNiOTExYmIzYzNjNGI1YzQ5YTU0YmMuLjRhYzJkZTNhOTUyNmRiN2ZjZjBi
YTRjOGYxZjJmN2Q4YzliYjJiNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC0yMjIsNiAr
MjIyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRzU2Nh
bGVGYWN0b3JDaGFuZ2VkKGZsb2F0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcmFnZUJsb2NraW5n
U3RhdGVDaGFuZ2VkKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xp
Y3kpOwogICAgIHZpcnR1YWwgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCk7
CiAgICAgdmlydHVhbCBib29sIGdldEZvcm1WYWx1ZShTdHJpbmcmIGZvcm1WYWx1ZSk7CiAgICAg
dmlydHVhbCBib29sIGhhbmRsZVNjcm9sbChXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNv
cmU6OlNjcm9sbEdyYW51bGFyaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaAppbmRleCA5Y2NkODA0MDAzN2U4MDA5
MWY5ODU2YTNlZDM5MmMzNjZhMGFhZjMyLi45YWUxZDc2NWFhMzdmZDZlNTE3NGNmZDYxOWE0MDU2
MDIwNTA2ZTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UERGL0J1aWx0SW5QREZWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BERi9CdWlsdEluUERGVmlldy5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJQ
bHVnaW4uaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGFibGVBcmVhLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAog
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlSlNDb250ZXh0KiBKU0NvbnRleHRSZWY7CkBAIC0x
MTMsNiArMTE0LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJIb3N0aW5n
TW9kZShMYXllckhvc3RpbmdNb2RlKSBPVkVSUklERTsKICNlbmRpZgogCisgICAgdmlydHVhbCB2
b2lkIHN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6
U3RvcmFnZUJsb2NraW5nUG9saWN5KTsKICAgICB2aXJ0dWFsIHZvaWQgcHJpdmF0ZUJyb3dzaW5n
U3RhdGVDaGFuZ2VkKGJvb2wpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRGb3JtVmFsdWUoU3RyaW5n
JiBmb3JtVmFsdWUpOwogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVTY3JvbGwoV2ViQ29yZTo6U2Ny
b2xsRGlyZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3Lm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5tbQpp
bmRleCBmZTdmMjU4YjBhNDlmMjllYzg2OWU0NmZjNjk1NzAxZDI2N2VlZGFlLi45NzZjN2E4MDhj
ZWFjYmRlMWM4ZjNlZDA4OWFiZGU2NDg3ODc3MTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcubW0KQEAgLTY2MCw2
ICs2NjAsMTAgQEAgdm9pZCBCdWlsdEluUERGVmlldzo6c2V0TGF5ZXJIb3N0aW5nTW9kZShMYXll
ckhvc3RpbmdNb2RlKQogCiAjZW5kaWYKIAordm9pZCBCdWlsdEluUERGVmlldzo6c3RvcmFnZUJs
b2NraW5nU3RhdGVDaGFuZ2VkKFNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3kp
Cit7Cit9CisKIHZvaWQgQnVpbHRJblBERlZpZXc6OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdl
ZChib29sKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5o
CmluZGV4IGI5MTE3NGY5ZWI3YzI3ZWYzYjJmZWU4YjI0NDBhZjllNDE4MTdjZWMuLmRlNjJkZTc0
ZjljNjM2OTczN2QwZTNhN2NiNGRmZWY1MWY3YmFjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlIDxXZWJD
b3JlL0dyYXBoaWNzTGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0tVUkwuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdp
bi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTIxOCw2ICsyMTksOSBAQCBwdWJsaWM6
CiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gYWJvdXQgc2NhbGUgZmFjdG9yIGNoYW5nZXMuCiAg
ICAgdmlydHVhbCB2b2lkIGNvbnRlbnRzU2NhbGVGYWN0b3JDaGFuZ2VkKGZsb2F0KSA9IDA7CiAK
KyAgICAvLyBDYWxsZWQgd2hlbiB0aGUgc3RvcmFnZSBibG9ja2luZyBwb2xpY3kgZm9yIHRoaXMg
cGx1Zy1pbiBjaGFuZ2VzLgorICAgIHZpcnR1YWwgdm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNo
YW5nZWQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSkgPSAw
OworCiAgICAgLy8gQ2FsbGVkIHdoZW4gdGhlIHByaXZhdGUgYnJvd3Npbmcgc3RhdGUgZm9yIHRo
aXMgcGx1Zy1pbiBjaGFuZ2VzLgogICAgIHZpcnR1YWwgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0
ZUNoYW5nZWQoYm9vbCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb3h5LmNwcAppbmRleCBlMzgwZWVmOTRmMzU3ZTAyOTFlZWM4M2U2OTRj
YmY5OGZkMGFkNDBhLi5jYjM2NWE2YzEyMjZlNTdjZTA2NThlZmNmMTZmYTI5MmE0ZDA4MTllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5j
cHAKQEAgLTQ2MCw2ICs0NjAsMTEgQEAgdm9pZCBQbHVnaW5Qcm94eTo6Y29udGVudHNTY2FsZUZh
Y3RvckNoYW5nZWQoZmxvYXQgc2NhbGVGYWN0b3IpCiAgICAgZ2VvbWV0cnlEaWRDaGFuZ2UoKTsK
IH0KIAordm9pZCBQbHVnaW5Qcm94eTo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3kgaXNTdG9yYWdlQmxvY2tp
bmdQb2xpY3kpCit7CisgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6U3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKGlz
U3RvcmFnZUJsb2NraW5nUG9saWN5KSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKK30KKwogdm9pZCBQ
bHVnaW5Qcm94eTo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wgaXNQcml2YXRlQnJv
d3NpbmdFbmFibGVkKQogewogICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6OlByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdl
ZChpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBtX3BsdWdpbkluc3RhbmNlSUQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAppbmRleCBjMGNh
MTE2YjA3ZTk4NGQ3YjAwNzRkZDhlODE2MzA1Y2VmYzM1YmI2Li5mNDBmMTczYTRlNzZkNWJiMmI4
Y2RiNjJmYjk0MDVmMGFjOTc4MTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJveHkuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlBsdWdp
bi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWZmaW5lVHJhbnNmb3JtLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9JbnRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogCiAj
aWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTExMiw2ICsx
MTMsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNTY2Fs
ZUZhY3RvckNoYW5nZWQoZmxvYXQpOworICAgIHZpcnR1YWwgdm9pZCBzdG9yYWdlQmxvY2tpbmdT
dGF0ZUNoYW5nZWQoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGlj
eSk7CiAgICAgdmlydHVhbCB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sKTsK
ICAgICB2aXJ0dWFsIGJvb2wgZ2V0Rm9ybVZhbHVlKFN0cmluZyYgZm9ybVZhbHVlKTsKICAgICB2
aXJ0dWFsIGJvb2wgaGFuZGxlU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29y
ZTo6U2Nyb2xsR3JhbnVsYXJpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDBhMGM2YjYzZGQyYjY2NzM0YmNiZDI3ODMyZmVk
MTU4OWJhOWVkMTIuLjMxYjhmNzk0YjUzZDhlODFiNzU1NjY5YmRhZmUyNTgyMzkwMDIxMWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
QEAgLTU4MSw2ICs1ODEsMTUgQEAgSlNPYmplY3QqIFBsdWdpblZpZXc6OnNjcmlwdE9iamVjdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogI2VuZGlmCiB9CiAKK3ZvaWQgUGx1Z2luVmll
dzo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpT
dG9yYWdlQmxvY2tpbmdQb2xpY3kgc3RvcmFnZUJsb2NraW5nUG9saWN5KQoreworICAgIC8vIFRo
ZSBwbHVnLWluIGNhbiBiZSBudWxsIGhlcmUgaWYgaXQgZmFpbGVkIHRvIGluaXRpYWxpemUuCisg
ICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX3BsdWdpbi0+c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKHN0b3JhZ2VCbG9ja2lu
Z1BvbGljeSk7Cit9CisKIHZvaWQgUGx1Z2luVmlldzo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFu
Z2VkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKIHsKICAgICAvLyBUaGUgcGx1Zy1pbiBj
YW4gYmUgbnVsbCBoZXJlIGlmIGl0IGZhaWxlZCB0byBpbml0aWFsaXplLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5kZXggZDFkOTg1MzYzMzg2
ODZiMzVkOWE0ODg5OTJiYjBhMzVmOTZiYWY5ZC4uYmMwMzc4ZDNkY2Q0OWVlN2QyMzgzNjllYWRh
NjY0MzU4NTBhMWI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5oCkBAIC0xMDksNiArMTA5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIFBs
YXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdDsKICNlbmRpZgogICAgIHZpcnR1YWwg
SlNDOjpKU09iamVjdCogc2NyaXB0T2JqZWN0KEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luOjpTdG9yYWdlQmxvY2tpbmdQb2xpY3kpOwogICAgIHZpcnR1YWwgdm9pZCBwcml2YXRl
QnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCk7CiAgICAgdmlydHVhbCBib29sIGdldEZvcm1WYWx1
ZShTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsKFdlYkNvcmU6OlNjcm9sbERpcmVj
dGlvbiwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmlu
ZGV4IDhlNTYwOTFiNTg3MTI2NjY4YzBjODQwZWVhNmU1ZGYzMDlkMjUzNDIuLmVhMTY3OGE1ZGI4
M2M5OTU3MGI5MWUwMjY3ODU2ZjA1NGFkNGVjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAg
LTIzMSw2ICsyMzEsNyBAQCBFWFBPUlRTCiAgICAgICAgID9zZXRTY3JvbGxPZmZzZXRGcm9tSW50
ZXJuYWxzQFNjcm9sbGFibGVBcmVhQFdlYkNvcmVAQFFBRVhBQlZJbnRQb2ludEAyQEBaCiAgICAg
ICAgID9zZXRTZXJpZkZvbnRGYW1pbHlAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWEFCVkF0b21pY1N0
cmluZ0BXVEZAQFc0VVNjcmlwdENvZGVAQEBaCiAgICAgICAgID9zZXRTdGFuZGFyZEZvbnRGYW1p
bHlAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWEFCVkF0b21pY1N0cmluZ0BXVEZAQFc0VVNjcmlwdENv
ZGVAQEBaCisgICAgICAgID9zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3lAU2V0dGluZ3NAV2ViQ29y
ZUBAUUFFWFc0U3RvcmFnZUJsb2NraW5nUG9saWN5QFNlY3VyaXR5T3JpZ2luQDJAQFoKICAgICAg
ICAgP3NldFN1Z2dlc3RlZFZhbHVlQEhUTUxJbnB1dEVsZW1lbnRAV2ViQ29yZUBAUUFFWEFCVlN0
cmluZ0BXVEZAQEBaCiAgICAgICAgID9zZXRFZGl0aW5nVmFsdWVASFRNTElucHV0RWxlbWVudEBX
ZWJDb3JlQEBRQUVYQUJWU3RyaW5nQFdURkBAQFoKICAgICAgICAgP3NldHRpbmdzQERvY3VtZW50
QFdlYkNvcmVAQFFCRVBBVlNldHRpbmdzQDJAWFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9v
bHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4
IGE5MThjOGNiMjkwMTgyYjM5MWJhNmQyZjk5NmU4NWIyZTQwOGE4NDMuLjU0MWQ2NGNlZWE0NjYw
OTJkNjJhYWRiYmY3NDBlNjZhMTlhOWQ4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAt
MTUzLDYgKzE1Myw3IEBAIF9aTjdXZWJDb3JlOFNldHRpbmdzMjFzZXRTdGFuZGFyZEZvbnRGYW1p
bHlFUktOM1dURjEyQXRvbWljU3RyaW5nRTExVVNjcmlwdENvZGU7CiBfWk43V2ViQ29yZThTZXR0
aW5nczIyc2V0U2Fuc1NlcmlmRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFMTFVU2Ny
aXB0Q29kZTsKIF9aTjdXZWJDb3JlOFNldHRpbmdzMjNzZXRQaWN0b2dyYXBoRm9udEZhbWlseUVS
S04zV1RGMTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZTsKIF9aTjdXZWJDb3JlOFNldHRpbmdz
MjRzZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWRFYjsKK19aTjdXZWJDb3JlOFNldHRpbmdzMjRzZXRT
dG9yYWdlQmxvY2tpbmdQb2xpY3lFTlNfMTRTZWN1cml0eU9yaWdpbjIxU3RvcmFnZUJsb2NraW5n
UG9saWN5RTsKIF9aTjdXZWJDb3JlOFNldHRpbmdzMzdzZXRGaXhlZEVsZW1lbnRzTGF5b3V0UmVs
YXRpdmVUb0ZyYW1lRWI7CiBfWk43V2ViQ29yZTlGcmFtZVZpZXcxN3BhaW50Q29udHJvbFRpbnRz
RXY7CiBfWk43V2ViQ29yZTlGcmFtZVZpZXcxOXNjcm9sbEVsZW1lbnRUb1JlY3RFUE5TXzdFbGVt
ZW50RVJLTlNfN0ludFJlY3RFOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGExODFkZjcyYWJiMmU1ODFkZjRkNzc3NTkxM2Y2
NzkzZjA0NzZiNGUuLjZkOWQ2NzkzMDEwMWE5NzBiYTljNjU1NTJjMTAxMzEyOWI2ZjNhM2UgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzOSBAQAorMjAxMi0wOS0xMSAgSmVmZnJleSBQZmF1ICA8anBmYXVAYXBw
bGUuY29tPgorCisgICAgICAgIEFsbG93IHRoaXJkLXBhcnR5IHN0b3JhZ2UgYmxvY2tpbmcgc2V0
dGluZyB0byBjaGFuZ2Ugd2hpbGUgYSBwYWdlIGlzIGxvYWRlZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3OTAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0ZWQgY29tYmluYXRpb25zIG9mIGxvb3Nl
bmluZyBhbmQgc3RyZW5ndGhlbmluZyB0aGUgc3RvcmFnZSBibG9ja2luZyBwb2xpY3kgb24gdmFy
aW91cyB0eXBlcyBvZiBzdG9yYWdlLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9y
ZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5nLWNoYW5nZWQtbG9jYWwtc3RvcmFn
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9p
ZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC1zaGFyZWQtd29ya2VyLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1mb3It
c3RvcmFnZS1ibG9ja2luZy1jaGFuZ2VkLXdlYnNxbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtbG9jYWwtc3RvcmFn
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3Rv
cmFnZS1ibG9ja2luZy1sb29zZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wbHVnaW4t
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3Jh
Z2UtYmxvY2tpbmctbG9vc2VuZWQtcGx1Z2luLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
dGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wcml2YXRlLWJyb3dzaW5n
LXBsdWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wcml2YXRlLWJyb3dzaW5nLXBsdWdpbi5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmct
bG9vc2VuZWQtc2hhcmVkLXdvcmtlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1zaGFyZWQtd29ya2Vy
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9j
a2luZy1sb29zZW5lZC13ZWJzcWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtd2Vic3FsLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJl
bmd0aGVuZWQtbG9jYWwtc3RvcmFnZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtbG9jYWwtc3Rv
cmFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2Ut
YmxvY2tpbmctc3RyZW5ndGhlbmVkLXBsdWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcGx1
Z2luLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1i
bG9ja2luZy1zdHJlbmd0aGVuZWQtcHJpdmF0ZS1icm93c2luZy1wbHVnaW4tZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmct
c3RyZW5ndGhlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtc2hh
cmVkLXdvcmtlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2Vj
dXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtc2hhcmVkLXdvcmtlci5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3Ry
ZW5ndGhlbmVkLXdlYnNxbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtd2Vic3FsLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6IFNraXAg
c2hhcmVkIHdvcmtlciB0ZXN0cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL2h0dHAvdGVz
dHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcGx1Z2luLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2lu
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTItMDktMDYgIEplZmZyZXkgUGZhdSAgPGpwZmF1
QGFwcGxlLmNvbT4KIAogICAgICAgICBFeHRlbmQgdGhpcmQtcGFydHkgc3RvcmFnZSBibG9ja2lu
ZyBBUEkgdG8gb3B0aW9uYWxseSBhbGxvdyBibG9ja2luZyBhbGwgc3RvcmFnZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1z
dG9yYWdlLWJsb2NraW5nLWNoYW5nZWQtbG9jYWwtc3RvcmFnZS5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5n
LWNoYW5nZWQtbG9jYWwtc3RvcmFnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyMDM3MTk2MDI3NjMwODBl
ZmJkYzY5NmE0MjBlODA0MGYwODBjN2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9pZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmct
Y2hhbmdlZC1sb2NhbC1zdG9yYWdlLmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworCXZhciBub2RlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgncCcpOworCW5vZGUudGV4dENvbnRlbnQgPSBtZXNzYWdlOworCWRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobm9kZSk7Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5j
dGlvbigpIHsKKwl0cnkgeworCQl2YXIgbCA9IHdpbmRvdy5sb2NhbFN0b3JhZ2U7CisJCWwgPSBu
dWxsOworCQlsb2coJ05vIGV4Y2VwdGlvbicpOworCX0gY2F0Y2ggKGV4Y2VwdGlvbikgeworCQls
b2coZXhjZXB0aW9uLm5hbWUpOworCX0KK30KKword2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9u
KGUpIHsKKwl0cnkgeworCQl2YXIgbCA9IHdpbmRvdy5sb2NhbFN0b3JhZ2U7CisJCWwgPSBudWxs
OworCQlsb2coJ05vIGV4Y2VwdGlvbicpOworCQl3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKCdO
byBleGNlcHRpb24nLCAnKicpOworCX0gY2F0Y2ggKGV4Y2VwdGlvbikgeworCQlsb2coZXhjZXB0
aW9uLm5hbWUpOworCQl3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKGV4Y2VwdGlvbi5uYW1lLCAn
KicpOworCX0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9p
ZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC1zaGFyZWQtd29ya2VyLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9pZnJhbWUtZm9yLXN0b3Jh
Z2UtYmxvY2tpbmctY2hhbmdlZC1zaGFyZWQtd29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzdiYTE5
ZDE3MGViNGEwMDg3MDc5Y2Q4N2RiNDU5NmEwNzQ0ODJmMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFn
ZS1ibG9ja2luZy1jaGFuZ2VkLXNoYXJlZC13b3JrZXIuaHRtbApAQCAtMCwwICsxLDQxIEBACis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisJdmFyIG5v
ZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7CisJbm9kZS50ZXh0Q29udGVudCA9IG1l
c3NhZ2U7CisJZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChub2RlKTsKK30KKworZnVuY3Rpb24g
Y3JlYXRlV29ya2VyKCkgeworCXZhciB3b3JrZXIgPSBuZXcgU2hhcmVkV29ya2VyKCdzaGFyZWQt
d29ya2VyLmpzJywgJ1NoYXJlZFdvcmtlcicpOworCXdvcmtlci5wb3J0Lm9ubWVzc2FnZSA9IGZ1
bmN0aW9uKGV2ZW50KSB7CisJCWxvZyhldmVudC5kYXRhKTsKKwkJd2luZG93LnBhcmVudC5wb3N0
TWVzc2FnZShldmVudC5kYXRhLCAnKicpOworCX0KKwl3b3JrZXIucG9ydC5zdGFydCgpOworCXdv
cmtlci5wb3J0LnBvc3RNZXNzYWdlKCdDb25uZWN0aW9uIHRlc3QnKTsKK30KKword2luZG93Lm9u
bG9hZCA9IGZ1bmN0aW9uKCkgeworCXRyeSB7CisJCWNyZWF0ZVdvcmtlcihmYWxzZSk7CisJfSBj
YXRjaCAoZXhjZXB0aW9uKSB7CisJCWxvZyhleGNlcHRpb24ubmFtZSk7CisJCXdpbmRvdy5wYXJl
bnQucG9zdE1lc3NhZ2UoZXhjZXB0aW9uLm5hbWUsICcqJyk7CisJfQorfQorCit3aW5kb3cub25t
ZXNzYWdlID0gZnVuY3Rpb24oZSkgeworCXRyeSB7CisJCWNyZWF0ZVdvcmtlcih0cnVlKTsKKwl9
IGNhdGNoIChleGNlcHRpb24pIHsKKwkJbG9nKGV4Y2VwdGlvbi5uYW1lKTsKKwkJd2luZG93LnBh
cmVudC5wb3N0TWVzc2FnZShleGNlcHRpb24ubmFtZSwgJyonKTsKKwl9Cit9Cis8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2Nr
aW5nLWNoYW5nZWQtd2Vic3FsLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Jlc291cmNlcy9pZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC13ZWJzcWwuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45NDUzOGJiYmU4MDg4MzgwMGZhNjkyMzZiOWRkYWYwZWNlM2RjNzg5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJj
ZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5nLWNoYW5nZWQtd2Vic3FsLmh0bWwKQEAgLTAs
MCArMSwzNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2Fn
ZSkgeworCXZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOworCW5vZGUudGV4
dENvbnRlbnQgPSBtZXNzYWdlOworCWRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobm9kZSk7Cit9
CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKwl0cnkgeworCQl2YXIgc3FsID0gd2lu
ZG93Lm9wZW5EYXRhYmFzZSgndGVzdGRiJywgJzEuMCcsICdUZXN0aW5nIGRhdGFiYXNlJywgNTEy
ICogMTAyNCk7CisJCXNxbCA9IG51bGw7CisJCWxvZygnTm8gZXhjZXB0aW9uJyk7CisJfSBjYXRj
aCAoZXhjZXB0aW9uKSB7CisJCWxvZyhleGNlcHRpb24ubmFtZSk7CisJfQorfQorCit3aW5kb3cu
b25tZXNzYWdlID0gZnVuY3Rpb24oZSkgeworCXRyeSB7CisJCXZhciBzcWwgPSB3aW5kb3cub3Bl
bkRhdGFiYXNlKCd0ZXN0ZGInLCAnMS4wJywgJ1Rlc3RpbmcgZGF0YWJhc2UnLCA1MTIgKiAxMDI0
KTsKKwkJc3FsID0gbnVsbDsKKwkJbG9nKCdObyBleGNlcHRpb24nKTsKKwkJd2luZG93LnBhcmVu
dC5wb3N0TWVzc2FnZSgnTm8gZXhjZXB0aW9uJywgJyonKTsKKwl9IGNhdGNoIChleGNlcHRpb24p
IHsKKwkJbG9nKGV4Y2VwdGlvbi5uYW1lKTsKKwkJd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZShl
eGNlcHRpb24ubmFtZSwgJyonKTsKKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLWxvY2FsLXN0b3JhZ2UtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3Nl
bmVkLWxvY2FsLXN0b3JhZ2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzZWI5MzMxODc4MDNl
ZTVlNGI3NzM0MzdhNjA3ZmE5Mzc0NjdjYTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtbG9jYWwtc3Rv
cmFnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIHJl
dHVybiBvbmx5IG9uZSBzZWN1cml0eSBlcnJvcjoKKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwh
LS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK1NFQ1VSSVRZX0VSUgor
CitObyBleGNlcHRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtbG9jYWwt
c3RvcmFnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1OWRiMGU5MDkxNzA3Nzc3MmZhY2Y5OTRjNGU3ZDU5
N2ZhOWRlMWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtbG9jYWwtc3RvcmFnZS5odG1sCkBAIC0wLDAg
KzEsMzEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisJdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisJdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK30KKworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorCWludGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xp
Y3koJ0Jsb2NrQWxsJyk7CisKK2Z1bmN0aW9uIGRlY3JlbWVudCgpIHsKKwlpZiAod2luZG93LnRl
c3RSdW5uZXIpCisJCWludGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3ko
J0FsbG93QWxsJyk7CisJZm9yICh2YXIgaSA9IDA7IGkgPCB3aW5kb3cuZnJhbWVzLmxlbmd0aDsg
KytpKQorCQl3aW5kb3cuZnJhbWVzW2ldLnBvc3RNZXNzYWdlKCdibG9ja2VkJywgJyonKTsKK30K
Kword2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKCkgeworCWlmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworCQl0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHA+VGhpcyBpZnJhbWUgc2hvdWxkIHJldHVybiBvbmx5IG9uZSBzZWN1cml0
eSBlcnJvcjo8L3A+Cis8aWZyYW1lIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5
L3Jlc291cmNlcy9pZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC1sb2NhbC1zdG9y
YWdlLmh0bWwiIG9ubG9hZD0iZGVjcmVtZW50KCkiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJs
b2NraW5nLWxvb3NlbmVkLXBsdWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtcGx1Z2luLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iOThlZTRmOGU4NTM3YzY2NGUyMjJlM2IxZTc5NTkxMDI1NmE5NmZlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdl
LWJsb2NraW5nLWxvb3NlbmVkLXBsdWdpbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitU
aGlzIGlmcmFtZSBzaG91bGQgbm90IGhhdmUgcHJpdmF0ZSBicm93c2luZyBlbmFibGVkOgorCisK
KworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCist
LS0tLS0tLQorZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wbHVnaW4uaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wbHVnaW4uaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43YjBkMjRmMjJkYWE0MGU2YzEwNTk3YzA3ZTUzNWNkYjM5MzY5MzAxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJs
b2NraW5nLWxvb3NlbmVkLXBsdWdpbi5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisJdGVzdFJ1bm5lci5kdW1w
Q2hpbGRGcmFtZXNBc1RleHQoKTsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCWludGVy
bmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0Jsb2NrQWxsJyk7CisKK2Z1
bmN0aW9uIGRlY3JlbWVudCgpIHsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpCisJCWludGVybmFs
cy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0FsbG93QWxsJyk7CisJZm9yICh2
YXIgaSA9IDA7IGkgPCB3aW5kb3cuZnJhbWVzLmxlbmd0aDsgKytpKQorCQl3aW5kb3cuZnJhbWVz
W2ldLnBvc3RNZXNzYWdlKCdibG9ja2VkJywgJyonKTsKK30KKword2luZG93Lm9ubWVzc2FnZSA9
IGZ1bmN0aW9uKCkgeworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCQl0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyBp
ZnJhbWUgc2hvdWxkIG5vdCBoYXZlIHByaXZhdGUgYnJvd3NpbmcgZW5hYmxlZDo8L3A+Cis8aWZy
YW1lIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1v
cmlnaW4taWZyYW1lLWZvci1wbHVnaW4tYXN5bmMuaHRtbCIgb25sb2FkPSJkZWNyZW1lbnQoKSI+
PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtcHJpdmF0ZS1icm93c2lu
Zy1wbHVnaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9z
dG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMDllN2I2ZGQ2NjQ2MWQyMmJiNWUwOGE2MmM2NTFkNWU1YjM4ODY2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9y
YWdlLWJsb2NraW5nLWxvb3NlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDggQEAKK1RoaXMgaWZyYW1lIHNob3VsZCBoYXZlIHByaXZhdGUgYnJvd3Np
bmcgZW5hYmxlZDoKKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0t
ZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK3RydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wcml2YXRlLWJyb3dz
aW5nLXBsdWdpbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdl
LWJsb2NraW5nLWxvb3NlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOGZhM2M3ODEyNTRhYzliZWFmNTQ3NzFlNmIzNGNjODQ4NzI0MjlhYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1s
b29zZW5lZC1wcml2YXRlLWJyb3dzaW5nLXBsdWdpbi5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisJdGVzdFJ1
bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKwlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3Rv
cmFnZUJsb2NraW5nUG9saWN5KCdCbG9ja0FsbCcpOworfQorCitmdW5jdGlvbiBkZWNyZW1lbnQo
KSB7CisJaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJCXRlc3RSdW5uZXIuc2V0UHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCh0cnVlKTsKKwkJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9j
a2luZ1BvbGljeSgnQWxsb3dBbGwnKTsKKwl9CisJZm9yICh2YXIgaSA9IDA7IGkgPCB3aW5kb3cu
ZnJhbWVzLmxlbmd0aDsgKytpKQorCQl3aW5kb3cuZnJhbWVzW2ldLnBvc3RNZXNzYWdlKCdibG9j
a2VkJywgJyonKTsKK30KKword2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKCkgeworCWlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworCQl0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKwkJdGVzdFJ1
bm5lci5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKTsKKwl9Cit9Cis8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyBpZnJhbWUgc2hvdWxkIGhhdmUgcHJpdmF0ZSBicm93
c2luZyBlbmFibGVkOjwvcD4KKzxpZnJhbWUgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2Vj
dXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLXBsdWdpbi1hc3luYy5odG1s
IiBvbmxvYWQ9ImRlY3JlbWVudCgpIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1s
b29zZW5lZC1zaGFyZWQtd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1zaGFyZWQtd29ya2VyLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45MDEyYTMwYjljMWI5YmRlMDc5MzMwNTVmMzgyMDgxMmVkYjk1
YjdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9z
dG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXNoYXJlZC13b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTAgQEAKK1RoaXMgaWZyYW1lIHNob3VsZCByZXR1cm4gb25seSBvbmUgc2VjdXJpdHkg
ZXJyb3I6CisKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1l
MC0tPi0tPicKKy0tLS0tLS0tCitTRUNVUklUWV9FUlIKKworQ29ubmVjdGVkIHN1Y2Nlc3NmdWxs
eQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJs
b2NraW5nLWxvb3NlbmVkLXNoYXJlZC13b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1zaGFyZWQtd29ya2VyLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDg1NGE0ODJhZWM3ZDg2ZDhjZGZlYzIwZjc1YjNiMjhlM2MyZmI2MgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1i
bG9ja2luZy1sb29zZW5lZC1zaGFyZWQtd29ya2VyLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwl0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKwl0ZXN0UnVu
bmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworfQorCitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeSgnQmxvY2tBbGwn
KTsKKword2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKCkgeworCWlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKwkJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeSgnQWxs
b3dBbGwnKTsKKwlmb3IgKHZhciBpID0gMDsgaSA8IHdpbmRvdy5mcmFtZXMubGVuZ3RoOyArK2kp
CisJCXdpbmRvdy5mcmFtZXNbaV0ucG9zdE1lc3NhZ2UoJ2Jsb2NrZWQnLCAnKicpOworCisJd2lu
ZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKCkgeworCQlpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KwkJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworCQl9CisJfQorfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwPlRoaXMgaWZyYW1lIHNob3VsZCByZXR1cm4gb25seSBvbmUgc2VjdXJp
dHkgZXJyb3I6PC9wPgorPGlmcmFtZSBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0
eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5nLWNoYW5nZWQtc2hhcmVkLXdv
cmtlci5odG1sIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC13ZWJz
cWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdl
LWJsb2NraW5nLWxvb3NlbmVkLXdlYnNxbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTNlYjkz
MzE4NzgwM2VlNWU0Yjc3MzQzN2E2MDdmYTkzNzQ2N2NhMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC13
ZWJzcWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgaWZyYW1lIHNob3VsZCBy
ZXR1cm4gb25seSBvbmUgc2VjdXJpdHkgZXJyb3I6CisKKworCistLS0tLS0tLQorRnJhbWU6ICc8
IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitTRUNVUklUWV9FUlIK
KworTm8gZXhjZXB0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtd2Vic3FsLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtd2Vic3FsLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTAyYzNiM2NhZGMwZDJmZWFmYzA0ZGVlN2VmYmI2MmVlNTc2NjlhMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1i
bG9ja2luZy1sb29zZW5lZC13ZWJzcWwuaHRtbApAQCAtMCwwICsxLDMxIEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCXRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCXRlc3RSdW5uZXIuZHVt
cENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKwlpbnRl
cm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdCbG9ja0FsbCcpOworCitm
dW5jdGlvbiBkZWNyZW1lbnQoKSB7CisJaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCQlpbnRlcm5h
bHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdBbGxvd0FsbCcpOworCWZvciAo
dmFyIGkgPSAwOyBpIDwgd2luZG93LmZyYW1lcy5sZW5ndGg7ICsraSkKKwkJd2luZG93LmZyYW1l
c1tpXS5wb3N0TWVzc2FnZSgnYmxvY2tlZCcsICcqJyk7Cit9CisKK3dpbmRvdy5vbm1lc3NhZ2Ug
PSBmdW5jdGlvbigpIHsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwkJdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CisJfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMg
aWZyYW1lIHNob3VsZCByZXR1cm4gb25seSBvbmUgc2VjdXJpdHkgZXJyb3I6PC9wPgorPGlmcmFt
ZSBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZv
ci1zdG9yYWdlLWJsb2NraW5nLWNoYW5nZWQtd2Vic3FsLmh0bWwiIG9ubG9hZD0iZGVjcmVtZW50
KCkiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1sb2NhbC1z
dG9yYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3Rv
cmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtbG9jYWwtc3RvcmFnZS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjQwMDgzZmQ2ZjRmOWI5NTRhNzkzNDMxMGQ3YTU1NDZkNDZjMjM5MAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9j
a2luZy1zdHJlbmd0aGVuZWQtbG9jYWwtc3RvcmFnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MCBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIHJldHVybiBvbmx5IG9uZSBzZWN1cml0eSBlcnJvcjoK
KworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+
JworLS0tLS0tLS0KK05vIGV4Y2VwdGlvbgorCitObyBleGNlcHRpb24KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVu
ZWQtbG9jYWwtc3RvcmFnZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9z
dG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDQ5ZjQxZTk1YWQ2ZjVjMGVkYmQzNTVmNTdkODMzNDdmNTYwY2JhMgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1z
dHJlbmd0aGVuZWQtbG9jYWwtc3RvcmFnZS5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisJdGVzdFJ1bm5lci5k
dW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK30KKworZnVuY3Rpb24gZGVjcmVtZW50KCkgeworCWlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKwkJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9j
a2luZ1BvbGljeSgnQmxvY2tBbGwnKTsKKwlmb3IgKHZhciBpID0gMDsgaSA8IHdpbmRvdy5mcmFt
ZXMubGVuZ3RoOyArK2kpCisJCXdpbmRvdy5mcmFtZXNbaV0ucG9zdE1lc3NhZ2UoJ2Jsb2NrZWQn
LCAnKicpOworfQorCit3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CisJaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisJCWludGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQ
b2xpY3koJ0FsbG93QWxsJyk7CisJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworCX0KK30KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQgcmV0dXJuIG9u
bHkgb25lIHNlY3VyaXR5IGVycm9yOjwvcD4KKzxpZnJhbWUgc3JjPSJodHRwOi8vMTI3LjAuMC4x
OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9ja2luZy1jaGFu
Z2VkLWxvY2FsLXN0b3JhZ2UuaHRtbCIgb25sb2FkPSJkZWNyZW1lbnQoKSI+PC9pZnJhbWU+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXBsdWdpbi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhl
bmVkLXBsdWdpbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRkOGVjZWZhN2UzODcxM2Q0NDdl
Yzg0M2JlYTEyMTQ0NGEyYzhhZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcGx1Z2luLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1RoaXMgaWZyYW1lIHNob3VsZCBoYXZlIHByaXZhdGUg
YnJvd3NpbmcgZW5hYmxlZDoKKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGgg
Ly88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK2ZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXBs
dWdpbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2Nr
aW5nLXN0cmVuZ3RoZW5lZC1wbHVnaW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTBlNjgzZmQzNTBkNWU1
MzdiNzljYjlmYTMwNjQ4ZGY3YmQ2YjcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wbHVnaW4u
aHRtbApAQCAtMCwwICsxLDI5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworCXRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCXRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworCXRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9
CisKK2Z1bmN0aW9uIGRlY3JlbWVudCgpIHsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpCisJCWlu
dGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0Jsb2NrQWxsJyk7CisJ
Zm9yICh2YXIgaSA9IDA7IGkgPCB3aW5kb3cuZnJhbWVzLmxlbmd0aDsgKytpKQorCQl3aW5kb3cu
ZnJhbWVzW2ldLnBvc3RNZXNzYWdlKCdibG9ja2VkJywgJyonKTsKK30KKword2luZG93Lm9ubWVz
c2FnZSA9IGZ1bmN0aW9uKCkgeworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCQlpbnRlcm5h
bHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdBbGxvd0FsbCcpOworCQl0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHA+VGhpcyBpZnJhbWUgc2hvdWxkIGhhdmUgcHJpdmF0ZSBicm93c2luZyBlbmFibGVkOjwvcD4K
KzxpZnJhbWUgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Ny
b3NzLW9yaWdpbi1pZnJhbWUtZm9yLXBsdWdpbi1hc3luYy5odG1sIiBvbmxvYWQ9ImRlY3JlbWVu
dCgpIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcHJpdmF0
ZS1icm93c2luZy1wbHVnaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wcml2YXRlLWJyb3dzaW5nLXBs
dWdpbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRkOGVjZWZhN2UzODcxM2Q0NDdlYzg0M2Jl
YTEyMTQ0NGEyYzhhZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcHJpdmF0ZS1icm93c2luZy1w
bHVnaW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIGhh
dmUgcHJpdmF0ZSBicm93c2luZyBlbmFibGVkOgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEt
LWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorZmFsc2UKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJl
bmd0aGVuZWQtcHJpdmF0ZS1icm93c2luZy1wbHVnaW4uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcHJpdmF0ZS1icm93
c2luZy1wbHVnaW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODljOTgyMmNjYzEwYWZkMTU3MTVkM2I5ZjNl
NTk3MWI4ZDg2ZTgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wcml2YXRlLWJyb3dzaW5nLXBs
dWdpbi5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisJdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisJdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisJdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQo
KTsKKwl0ZXN0UnVubmVyLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQodHJ1ZSk7Cit9CisKK2Z1
bmN0aW9uIGRlY3JlbWVudCgpIHsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwkJaW50ZXJu
YWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeSgnQmxvY2tBbGwnKTsKKwkJdGVz
dFJ1bm5lci5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKTsKKwl9CisJZm9yICh2YXIg
aSA9IDA7IGkgPCB3aW5kb3cuZnJhbWVzLmxlbmd0aDsgKytpKQorCQl3aW5kb3cuZnJhbWVzW2ld
LnBvc3RNZXNzYWdlKCdibG9ja2VkJywgJyonKTsKK30KKword2luZG93Lm9ubWVzc2FnZSA9IGZ1
bmN0aW9uKCkgeworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCQlpbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdBbGxvd0FsbCcpOworCQl0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyBp
ZnJhbWUgc2hvdWxkIGhhdmUgcHJpdmF0ZSBicm93c2luZyBlbmFibGVkOjwvcD4KKzxpZnJhbWUg
c3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdp
bi1pZnJhbWUtZm9yLXBsdWdpbi1hc3luYy5odG1sIiBvbmxvYWQ9ImRlY3JlbWVudCgpIj48L2lm
cmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtc2hhcmVkLXdvcmtlci1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxv
Y2tpbmctc3RyZW5ndGhlbmVkLXNoYXJlZC13b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdmYTE4MTQzZmU2YmM0Zjk1NWRlZWY2YWUyOTg4NTRkNThiZTZjYjcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3Ry
ZW5ndGhlbmVkLXNoYXJlZC13b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Ro
aXMgaWZyYW1lIHNob3VsZCByZXR1cm4gb25seSBvbmUgc2VjdXJpdHkgZXJyb3I6CisKKworCist
LS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0t
LS0tCitDb25uZWN0ZWQgc3VjY2Vzc2Z1bGx5CisKK1NFQ1VSSVRZX0VSUgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3Ro
ZW5lZC1zaGFyZWQtd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXNoYXJlZC13b3JrZXIuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40OGY5YjllMGMzZTU3OTFiOWE1M2NkYzI5NDg1ZTQ0ZDUyODIxNTgxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5n
LXN0cmVuZ3RoZW5lZC1zaGFyZWQtd29ya2VyLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwl0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKwl0ZXN0UnVubmVy
LmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworfQorCit3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rp
b24oKSB7CisJaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0
U3RvcmFnZUJsb2NraW5nUG9saWN5KCdCbG9ja0FsbCcpOworCWZvciAodmFyIGkgPSAwOyBpIDwg
d2luZG93LmZyYW1lcy5sZW5ndGg7ICsraSkKKwkJd2luZG93LmZyYW1lc1tpXS5wb3N0TWVzc2Fn
ZSgnYmxvY2tlZCcsICcqJyk7CisKKwl3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CisJ
CWlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCQkJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3Jh
Z2VCbG9ja2luZ1BvbGljeSgnQWxsb3dBbGwnKTsKKwkJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworCQl9CisJfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaWZyYW1l
IHNob3VsZCByZXR1cm4gb25seSBvbmUgc2VjdXJpdHkgZXJyb3I6PC9wPgorPGlmcmFtZSBzcmM9
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9y
YWdlLWJsb2NraW5nLWNoYW5nZWQtc2hhcmVkLXdvcmtlci5odG1sIj48L2lmcmFtZT4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
c3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtd2Vic3FsLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQt
d2Vic3FsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTY2MTg1YzNmNDU5MTljMzlkZjY3YmU5
ODMxZGI5YjQ3Yjk1MWNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC13ZWJzcWwtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgaWZyYW1lIHNob3VsZCByZXR1cm4gb25seSBvbmUg
c2VjdXJpdHkgZXJyb3I6CisKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8v
PCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitObyBleGNlcHRpb24KKworU0VDVVJJVFlfRVJS
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxv
Y2tpbmctc3RyZW5ndGhlbmVkLXdlYnNxbC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC13ZWJzcWwuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44OGVlZjE0OWU0YTE5NDA0ODQ5OGJmMmJjMzVmNTY0NWFlMzVjNWQzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5n
LXN0cmVuZ3RoZW5lZC13ZWJzcWwuaHRtbApAQCAtMCwwICsxLDI5IEBACis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCXRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCXRlc3RSdW5uZXIuZHVtcENo
aWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKK2Z1bmN0aW9uIGRlY3JlbWVudCgpIHsKKwlpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisJCWludGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQ
b2xpY3koJ0Jsb2NrQWxsJyk7CisJZm9yICh2YXIgaSA9IDA7IGkgPCB3aW5kb3cuZnJhbWVzLmxl
bmd0aDsgKytpKQorCQl3aW5kb3cuZnJhbWVzW2ldLnBvc3RNZXNzYWdlKCdibG9ja2VkJywgJyon
KTsKK30KKword2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKCkgeworCWlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworCQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5
KCdBbGxvd0FsbCcpOworCQl0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKwl9Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyBpZnJhbWUgc2hvdWxkIHJldHVybiBvbmx5IG9u
ZSBzZWN1cml0eSBlcnJvcjo8L3A+Cis8aWZyYW1lIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAw
L3NlY3VyaXR5L3Jlc291cmNlcy9pZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC13
ZWJzcWwuaHRtbCIgb25sb2FkPSJkZWNyZW1lbnQoKSI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCAxNjVjNTkzMDc0YmJjZjZhMGQwNTFjYzViODRiMmIyZDJhYjVmYzg5Li5iMTU1NjFlMzNl
NGY3OTg0MGU0ODVmMzM0YTc0ODdhYjljMzZiNGQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTU0MSw2ICs1NDEsOCBAQCBXT05URklY
IFNLSVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9zaGFyZWQt
d29ya2VyLWNvbm5lY3QtcwogV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9z
cy1vcmlnaW4tc2hhcmVkLXdvcmtlci5odG1sID0gVEVYVAogV09OVEZJWCBTS0lQIDogaHR0cC90
ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tc2hhcmVkLXdvcmtlci1hbGxvd2VkLmh0bWwgPSBU
RVhUCiBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5L3NhbWUtb3JpZ2luLXNoYXJl
ZC13b3JrZXItYmxvY2tlZC5odG1sID0gVEVYVAorV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy9z
ZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXNoYXJlZC13b3JrZXIuaHRtbCA9IFRF
WFQKK1dPTlRGSVggU0tJUCA6IGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1z
dHJlbmd0aGVuZWQtc2hhcmVkLXdvcmtlci5odG1sID0gVEVYVAogV09OVEZJWCBTS0lQIDogc3Rv
cmFnZS9pbmRleGVkZGIvYmFzaWNzLXNoYXJlZC13b3JrZXJzLmh0bWwgPSBQQVNTCiAKIC8vIHRl
c3Rfc2hlbGwgZG9lcyBub3Qgc3VwcG9ydCBtZXNzYWdlIHBvcnRzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9j
a2luZy1zdHJlbmd0aGVuZWQtcGx1Z2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3Ro
ZW5lZC1wbHVnaW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwOWU3YjZkZDY2NDYxZDIyYmI1
ZTA4YTYyYzY1MWQ1ZTViMzg4NjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2syL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0
aGVuZWQtcGx1Z2luLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1RoaXMgaWZyYW1lIHNo
b3VsZCBoYXZlIHByaXZhdGUgYnJvd3NpbmcgZW5hYmxlZDoKKworCisKKy0tLS0tLS0tCitGcmFt
ZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK3RydWUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvaHR0cC90ZXN0cy9zZWN1cml0
eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wcml2YXRlLWJyb3dzaW5nLXBsdWdpbi1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcHJpdmF0ZS1icm93c2luZy1wbHVn
aW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwOWU3YjZkZDY2NDYxZDIyYmI1ZTA4YTYyYzY1
MWQ1ZTViMzg4NjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcHJp
dmF0ZS1icm93c2luZy1wbHVnaW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGhpcyBp
ZnJhbWUgc2hvdWxkIGhhdmUgcHJpdmF0ZSBicm93c2luZyBlbmFibGVkOgorCisKKworLS0tLS0t
LS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQor
dHJ1ZQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDNmYmEwNWFiMzg1
OGNjMDVhNjVkZWJiY2EyYTdmM2JkMzcwNjljMzguLjhiZWExNjY2NzU5MWQwYmM2YmFiZmEzY2U0
ZThlNTllOGZiN2EzNTAgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAxMi0wOS0xMSAgSmVmZnJleSBQZmF1ICA8anBmYXVAYXBwbGUuY29t
PgorCisgICAgICAgIEFsbG93IHRoaXJkLXBhcnR5IHN0b3JhZ2UgYmxvY2tpbmcgc2V0dGluZyB0
byBjaGFuZ2Ugd2hpbGUgYSBwYWdlIGlzIGxvYWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgZXhwb3J0ZWQgc3ltYm9scy4KKworICAgICAg
ICAqIFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTItMDktMDcgIFNpbW9u
IEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgYm94LXNoYWRvdyBj
YXVzZXMgb3ZlcmxheSBzY3JvbGxiYXJzIHRvIGJlIGluIHRoZSB3cm9uZyBwb3NpdGlvbiB3aGVu
IGVsZW1lbnQgaXMgY29tcG9zaXRlZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163751</attachid>
            <date>2012-09-12 17:59:24 -0700</date>
            <delta_ts>2012-09-13 12:40:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95790-20120912180021.patch</filename>
            <type>text/plain</type>
            <size>52884</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYwMzNhNjBhMzU4MTRk
M2U4MzJmMWViYzM5NzBmYzRiNGQ4MjIyMS4uZGZlMDY3YmI5ZWQ2NzMyMzlmYjgzMzk1ODIxNWNk
YjA5NWQ0MTFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTA5LTEyICBKZWZm
cmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdGhpcmQtcGFydHkg
c3RvcmFnZSBibG9ja2luZyBzZXR0aW5nIHRvIGNoYW5nZSB3aGlsZSBhIHBhZ2UgaXMgbG9hZGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTc5MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBpcGUgdGhy
b3VnaCBjaGFuZ2VzIHRvIHRoZSBzdG9yYWdlIGJsb2NraW5nIHBvbGljeSB0byBlYWNoIGRvY3Vt
ZW50IGFuZCBwbHVnaW4uCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvc2VjdXJpdHkvc3Rv
cmFnZS1ibG9ja2luZy1sb29zZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWwKKyAgICAgICAgICAgICAg
IGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wbHVnaW4uaHRt
bAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxv
b3NlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1zaGFyZWQtd29ya2VyLmh0
bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1s
b29zZW5lZC13ZWJzcWwuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9z
dG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWwKKyAgICAgICAg
ICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQt
cGx1Z2luLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1i
bG9ja2luZy1zdHJlbmd0aGVuZWQtcHJpdmF0ZS1icm93c2luZy1wbHVnaW4uaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5l
ZC1zaGFyZWQtd29ya2VyLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkv
c3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtd2Vic3FsLmh0bWwKKworICAgICAgICAqIFdl
YkNvcmUuZXhwLmluOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6IFBpcGUgY2hhbmdlcyB0
aHJvdWdoIHRvIHRoZSBEb2N1bWVudCdzIFNlY3VyaXR5T3JpZ2luLgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoRG9jdW1lbnQpOgor
ICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpjb2xsZWN0
UGx1Z2luVmlld3MpOiBSZWZhY3RvcmVkIG91dCBpbnRvIGEgZnVuY3Rpb24uCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hh
bmdlZCk6IFBpcGUgY2hhbmdlcyB0aHJvdWdoIHRvIGVhY2ggUGx1Z2luVmlldy4KKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCk6CisgICAgICAgICog
cGFnZS9QYWdlLmg6CisgICAgICAgIChQYWdlKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3kp
OiBUZWxsIFBhZ2VzIGFib3V0IGNoYW5nZXMgdG8gdGhlIHN0b3JhZ2UgYmxvY2tpbmcgcG9saWN5
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAg
ICAoU2V0dGluZ3MpOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsdWdpblZpZXdCYXNlOjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQp
OgorCiAyMDEyLTA5LTA2ICBKZWZmcmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CiAKICAgICAg
ICAgRXh0ZW5kIHRoaXJkLXBhcnR5IHN0b3JhZ2UgYmxvY2tpbmcgQVBJIHRvIG9wdGlvbmFsbHkg
YWxsb3cgYmxvY2tpbmcgYWxsIHN0b3JhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhZWY3OGYyNmRjZDUxZDll
ZmQ1MDk4NjE5YjkyNjAyMGYwYzJjNDFhLi40NmRhNzM1NDFhYmJjMTZjMTZhNmYzZWIxYWQ3NDcy
MDhjYzJiMGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTItMDktMTIgIEplZmZy
ZXkgUGZhdSAgPGpwZmF1QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyB0aGlyZC1wYXJ0eSBz
dG9yYWdlIGJsb2NraW5nIHNldHRpbmcgdG8gY2hhbmdlIHdoaWxlIGEgcGFnZSBpcyBsb2FkZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzkwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5mb3JtIHBs
dWdpbnMgYWJvdXQgY2hhbmdlcyB0byB0aGUgc3RvcmFnZSBibG9ja2luZyBwb2xpY3kgYnkgd2F5
IG9mIHRoZSBwcml2YXRlIGJyb3dzaW5nIGZlYXR1cmUuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9j
ZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNv
bnRyb2xsZXJQcm94eTo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaDoK
KyAgICAgICAgKFBsdWdpbkNvbnRyb2xsZXJQcm94eSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vz
cy9QbHVnaW5Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW46IEFkZCBXSzIgbWVzc2FnZSBmb3Ig
c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luOjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hh
bmdlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjplbmFjdFByaXZhdGVCcm93
c2luZ1N0YXRlKTogU2V0IHBsdWdpbidzIHByaXZhdGUgYnJvd3NpbmcgaWYgZWl0aGVyIHByaXZh
dGUgYnJvd3Npbmcgb3Igc3RvcmFnZSBibG9ja2luZyBpcyBlbmFibGVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAgICAoTmV0
c2NhcGVQbHVnaW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBE
RlZpZXcuaDoKKyAgICAgICAgKEJ1aWx0SW5QREZWaWV3KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3Lm1tOiBUcmVhdCBzdG9yYWdlQmxvY2tpbmdTdGF0
ZUNoYW5nZWQgYXMgYSBuby1vcC4KKyAgICAgICAgKFdlYktpdDo6QnVpbHRJblBERlZpZXc6OnN0
b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDogQWRkIHB1cmUgdmlydHVhbCBzdG9yYWdlQmxv
Y2tpbmdTdGF0ZUNoYW5nZWQgbWV0aG9kLgorICAgICAgICAoUGx1Z2luKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5Qcm94eTo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lmg6CisgICAgICAgIChQ
bHVnaW5Qcm94eSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oOgorICAgICAgICAoUGx1Z2luVmlldyk6CisgICAgICAgICogd2luL1dlYktpdDIu
ZGVmOgorCiAyMDEyLTA5LTA2ICBKZWZmcmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CiAKICAg
ICAgICAgRXh0ZW5kIHRoaXJkLXBhcnR5IHN0b3JhZ2UgYmxvY2tpbmcgQVBJIHRvIG9wdGlvbmFs
bHkgYWxsb3cgYmxvY2tpbmcgYWxsIHN0b3JhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYjQ3
NjlmOTE4MjU0OTFkNDIzNzY2MTg4YmZjOTk5ZGViMmYzMWU1MC4uNTQ4ZTU5MzUyNTA5NmUxYzM1
NzdmZWQ2N2Q1NmU0Y2UwZGJkYjU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTg3OCw2ICs4
NzgsNyBAQCBfX1pON1dlYkNvcmU4U2V0dGluZ3MyM3NldFVzZXNFbmNvZGluZ0RldGVjdG9yRWIK
IF9fWk43V2ViQ29yZThTZXR0aW5nczI0c2V0QXBwbGljYXRpb25DaHJvbWVNb2RlRWIKIF9fWk43
V2ViQ29yZThTZXR0aW5nczI0c2V0RE5TUHJlZmV0Y2hpbmdFbmFibGVkRWIKIF9fWk43V2ViQ29y
ZThTZXR0aW5nczI0c2V0TW9ja1Njcm9sbGJhcnNFbmFibGVkRWIKK19fWk43V2ViQ29yZThTZXR0
aW5nczI0c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5RU5TXzE0U2VjdXJpdHlPcmlnaW4yMVN0b3Jh
Z2VCbG9ja2luZ1BvbGljeUUKIF9fWk43V2ViQ29yZThTZXR0aW5nczI0c2V0VGV4dEFyZWFzQXJl
UmVzaXphYmxlRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI1c2V0RGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNXNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRF
YgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOTc4MGYyNDZkYjcyNDc5ZTRmNDY0MzEzZGM2
ODI0NzQxMmJiMjczNy4uYjlkNTUxYTY1NzllNDhmYjhhZDExYzlkNzIxNDIzNDhiMGVmNzYxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00NTQxLDYgKzQ1NDEsMTIgQEAgdm9pZCBEb2N1
bWVudDo6dW5yZWdpc3RlckZvck1lZGlhVm9sdW1lQ2FsbGJhY2tzKEVsZW1lbnQqIGUpCiAgICAg
bV9tZWRpYVZvbHVtZUNhbGxiYWNrRWxlbWVudHMucmVtb3ZlKGUpOwogfQogCit2b2lkIERvY3Vt
ZW50OjpzdG9yYWdlQmxvY2tpbmdTdGF0ZURpZENoYW5nZSgpCit7CisgICAgaWYgKFNldHRpbmdz
KiBzZXR0aW5ncyA9IHRoaXMtPnNldHRpbmdzKCkpCisgICAgICAgIHNlY3VyaXR5T3JpZ2luKCkt
PnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShzZXR0aW5ncy0+c3RvcmFnZUJsb2NraW5nUG9saWN5
KCkpOworfQorCiB2b2lkIERvY3VtZW50Ojpwcml2YXRlQnJvd3NpbmdTdGF0ZURpZENoYW5nZSgp
IAogewogICAgIEhhc2hTZXQ8RWxlbWVudCo+OjppdGVyYXRvciBlbmQgPSBtX3ByaXZhdGVCcm93
c2luZ1N0YXRlQ2hhbmdlZEVsZW1lbnRzLmVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBk
YWZlMDRiZTMxNGE0YTdiNTAxMDU1Yzc1NWJhNTllZTA0NmQ2MmQzLi40MTc3NjI1Mjk1ZjJjZjY0
M2QzYjcyMTk3MWVkOTA1MGRlMjU1NWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTAxNiw2
ICsxMDE2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCByZWdpc3RlckZvclByaXZhdGVCcm93c2lu
Z1N0YXRlQ2hhbmdlZENhbGxiYWNrcyhFbGVtZW50Kik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRm9y
UHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKEVsZW1lbnQqKTsKKyAgICB2b2lk
IHN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKCk7CiAgICAgdm9pZCBwcml2YXRlQnJvd3Np
bmdTdGF0ZURpZENoYW5nZSgpOwogCiAgICAgdm9pZCBzZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMo
Ym9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAyOTgzODA4ZWFjYWMzMTIwOTZlMjliYTFmZGY3
Y2E5OGQzMjNkMzQ3Li4wM2UwODBiZWQxODVlZjczNzk4ZGEyNDVkYjExNmRiNmY3NWI0OWQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTU1LDcgKzU1LDYgQEAKICNpbmNsdWRlICJQYWdlR3JvdXAu
aCIKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgotI2lu
Y2x1ZGUgIlBsdWdpblZpZXdCYXNlLmgiCiAjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyQXJlbmEu
aCIKQEAgLTk4OCwxNiArOTg3LDggQEAgdm9pZCBQYWdlOjpkbnNQcmVmZXRjaGluZ1N0YXRlQ2hh
bmdlZCgpCiAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5pbml0RE5TUHJlZmV0Y2goKTsKIH0K
IAotdm9pZCBQYWdlOjpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoKQordm9pZCBQYWdlOjpj
b2xsZWN0UGx1Z2luVmlld3MoVmVjdG9yPFJlZlB0cjxQbHVnaW5WaWV3QmFzZT4sIDMyPiYgcGx1
Z2luVmlld0Jhc2VzKQogewotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IG1fc2V0
dGluZ3MtPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKLQotICAgIGZvciAoRnJhbWUqIGZyYW1l
ID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4
dCgpKQotICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRD
aGFuZ2UoKTsKLQotICAgIC8vIENvbGxlY3QgdGhlIFBsdWdpblZpZXdzIGluIHRvIGEgdmVjdG9y
IHRvIGVuc3VyZSB0aGF0IGFjdGlvbiB0aGUgcGx1Zy1pbiB0YWtlcwotICAgIC8vIGZyb20gYmVs
b3cgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkIGRvZXMgbm90IGFmZmVjdCB0aGVpciBsaWZl
dGltZS4KLSAgICBWZWN0b3I8UmVmUHRyPFBsdWdpblZpZXdCYXNlPiwgMzI+IHBsdWdpblZpZXdC
YXNlczsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBGcmFtZVZpZXcqIHZp
ZXcgPSBmcmFtZS0+dmlldygpOwogICAgICAgICBpZiAoIXZpZXcpCkBAIC0xMDEzLDYgKzEwMDQs
MzEgQEAgdm9pZCBQYWdlOjpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoKQogICAgICAgICAg
ICAgICAgIHBsdWdpblZpZXdCYXNlcy5hcHBlbmQoc3RhdGljX2Nhc3Q8UGx1Z2luVmlld0Jhc2Uq
Pih3aWRnZXQpKTsKICAgICAgICAgfQogICAgIH0KK30KKwordm9pZCBQYWdlOjpzdG9yYWdlQmxv
Y2tpbmdTdGF0ZUNoYW5nZWQoKQoreworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1l
KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKQorICAgICAg
ICBmcmFtZS0+ZG9jdW1lbnQoKS0+c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UoKTsKKwor
ICAgIFZlY3RvcjxSZWZQdHI8UGx1Z2luVmlld0Jhc2U+LCAzMj4gcGx1Z2luVmlld0Jhc2VzOwor
ICAgIGNvbGxlY3RQbHVnaW5WaWV3cyhwbHVnaW5WaWV3QmFzZXMpOworCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBwbHVnaW5WaWV3QmFzZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHBsdWdp
blZpZXdCYXNlc1tpXS0+c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKCk7Cit9CisKK3ZvaWQg
UGFnZTo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKCkKK3sKKyAgICBib29sIHByaXZhdGVC
cm93c2luZ0VuYWJsZWQgPSBtX3NldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisK
KyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnBy
aXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCk7CisKKyAgICAvLyBDb2xsZWN0IHRoZSBQbHVn
aW5WaWV3cyBpbiB0byBhIHZlY3RvciB0byBlbnN1cmUgdGhhdCBhY3Rpb24gdGhlIHBsdWctaW4g
dGFrZXMKKyAgICAvLyBmcm9tIGJlbG93IHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCBkb2Vz
IG5vdCBhZmZlY3QgdGhlaXIgbGlmZXRpbWUuCisgICAgVmVjdG9yPFJlZlB0cjxQbHVnaW5WaWV3
QmFzZT4sIDMyPiBwbHVnaW5WaWV3QmFzZXM7CisgICAgY29sbGVjdFBsdWdpblZpZXdzKHBsdWdp
blZpZXdCYXNlcyk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBsdWdpblZpZXdCYXNl
cy5zaXplKCk7ICsraSkKICAgICAgICAgcGx1Z2luVmlld0Jhc2VzW2ldLT5wcml2YXRlQnJvd3Np
bmdTdGF0ZUNoYW5nZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4
IGEyMThkNWQ0Y2E1OWI1YjdhNDJkYWI0NGQ3YmVhNzQwZWU1ODM2ZTEuLjFkNTc0MGNkNzk4ZTNk
ODg1MTcxMzFhMDI4YTkzMGRhMWJmMTFiZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSAiUGFnZVZpc2liaWxpdHlTdGF0ZS5oIgogI2luY2x1ZGUgIlBhZ2luYXRp
b24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgorI2luY2x1ZGUgIlBsdWdpblZpZXdC
YXNlLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIK
ICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgpAQCAtMjcxLDYgKzI3Miw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiB1c2VyU3R5bGVTaGVldCgpIGNv
bnN0OwogCiAgICAgICAgIHZvaWQgZG5zUHJlZmV0Y2hpbmdTdGF0ZUNoYW5nZWQoKTsKKyAgICAg
ICAgdm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoKTsKICAgICAgICAgdm9pZCBwcml2
YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCBzZXREZWJ1
Z2dlckZvckFsbFBhZ2VzKEpTQzo6RGVidWdnZXIqKTsKQEAgLTM1MCw2ICszNTIsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91
YmxlKTsKICAgICAgICAgZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKCkgY29uc3Q7CiAKKyAg
ICAgICAgdm9pZCBjb2xsZWN0UGx1Z2luVmlld3MoVmVjdG9yPFJlZlB0cjxQbHVnaW5WaWV3QmFz
ZT4sIDMyPiYgcGx1Z2luVmlld0Jhc2VzKTsKKwogICAgICAgICBPd25QdHI8Q2hyb21lPiBtX2No
cm9tZTsKICAgICAgICAgT3duUHRyPERyYWdDYXJldENvbnRyb2xsZXI+IG1fZHJhZ0NhcmV0Q29u
dHJvbGxlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCBmMjUxNTBiNTE2YzM5NjUz
NWMzOGJlZmNhM2NiMmEyYTY4ZmVlYTBmLi42ZjFkM2ZhMDgxZjAxMzkzZjA5MmYxNDBmNTk5NGY5
NjgyZjE1YTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAtOTMxLDYgKzkzMSwxNSBA
QCB2b2lkIFNldHRpbmdzOjpzZXRMb2FkRGVmZXJyaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiAg
ICAgbV9sb2FkRGVmZXJyaW5nRW5hYmxlZCA9IGVuYWJsZWQ7CiB9CiAKK3ZvaWQgU2V0dGluZ3M6
OnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5n
UG9saWN5IGVuYWJsZWQpCit7CisgICAgaWYgKG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ID09IGVu
YWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ID0g
ZW5hYmxlZDsKKyAgICBtX3BhZ2UtPnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCgpOworfQor
CiB2b2lkIFNldHRpbmdzOjpzZXRUaWxlZEJhY2tpbmdTdG9yZUVuYWJsZWQoYm9vbCBlbmFibGVk
KQogewogICAgIG1fdGlsZWRCYWNraW5nU3RvcmVFbmFibGVkID0gZW5hYmxlZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuaAppbmRleCA2ZmEzYmMwMjRiOGI4YzJmOWFjYzBlZDAzZDI2MTlkNDY2NTMyOTYz
Li4zOWEwYTg1MDgzYzhmMGQ5OWRjMWJhMjhjNGFkOGE0YWYyYWI0NDJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5oCkBAIC02MDIsNyArNjAyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2b2lkIHNldFdpbmRvd0ZvY3VzUmVzdHJpY3RlZChib29sIHJlc3RyaWN0ZWQpIHsgbV93aW5k
b3dGb2N1c1Jlc3RyaWN0ZWQgPSByZXN0cmljdGVkOyB9CiAgICAgICAgIGJvb2wgd2luZG93Rm9j
dXNSZXN0cmljdGVkKCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dGb2N1c1Jlc3RyaWN0ZWQ7IH0K
IAotICAgICAgICB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShTZWN1cml0eU9yaWdpbjo6
U3RvcmFnZUJsb2NraW5nUG9saWN5IHBvbGljeSkgeyBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSA9
IHBvbGljeTsgfQorICAgICAgICB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShTZWN1cml0
eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5KTsKICAgICAgICAgU2VjdXJpdHlPcmlnaW46
OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSBzdG9yYWdlQmxvY2tpbmdQb2xpY3koKSBjb25zdCB7IHJl
dHVybiBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeTsgfQogCiAgICAgICAgIHZvaWQgc2V0U2Nyb2xs
aW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
UGx1Z2luVmlld0Jhc2UuaAppbmRleCAzMTJkNTdjMDlkMzc4MzBiODYzYzhkMjgzOTMxZDdkMTI3
ZGQyMTY3Li5mYzdlOThlZmRiOTk2MzEyYjE3NWY0MzZiNjVjZDkxYzgzMGNkYWMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdCYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oCkBAIC00OSw2ICs0OSw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBzY3JpcHRPYmplY3QoSlND
OjpKU0dsb2JhbE9iamVjdCopIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3RvcmFn
ZUJsb2NraW5nU3RhdGVDaGFuZ2VkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHByaXZhdGVCcm93
c2luZ1N0YXRlQ2hhbmdlZChib29sKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgZ2V0Rm9ybVZhbHVl
KFN0cmluZyYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIHNjcm9sbChTY3Jv
bGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5KSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHku
Y3BwCmluZGV4IDJhZDQxZGFhNWMyYThlNTgwOGZiYmMzM2I2MzM3NTUwNTk2ZDY3ZGMuLjMxYTVk
NjFhNjVhNjYwYTlkOTQ4M2FlMDBjMTNlYmQwOTQ0MDc2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTU2
Myw2ICs1NjMsMTQgQEAgdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OmdldFBsdWdpblNjcmlw
dGFibGVOUE9iamVjdCh1aW50NjRfdCYgcGx1Z2luU2NyaXB0YWIKICAgICByZWxlYXNlTlBPYmpl
Y3QocGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0KTsKIH0KIAordm9pZCBQbHVnaW5Db250cm9sbGVy
UHJveHk6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZChib29sIGlzU3RvcmFnZUJsb2NraW5n
RW5hYmxlZCkKK3sKKyAgICBpZiAobV9zdG9yYWdlQmxvY2tpbmdFbmFibGVkICE9IGlzU3RvcmFn
ZUJsb2NraW5nRW5hYmxlZCkgeworICAgICAgICBtX3N0b3JhZ2VCbG9ja2luZ0VuYWJsZWQgPSBp
c1N0b3JhZ2VCbG9ja2luZ0VuYWJsZWQ7CisgICAgICAgIG1fcGx1Z2luLT5zdG9yYWdlQmxvY2tp
bmdTdGF0ZUNoYW5nZWQobV9zdG9yYWdlQmxvY2tpbmdFbmFibGVkKTsKKyAgICB9Cit9CisKIHZv
aWQgUGx1Z2luQ29udHJvbGxlclByb3h5Ojpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9v
bCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiB7CiAgICAgbV9pc1ByaXZhdGVCcm93c2luZ0Vu
YWJsZWQgPSBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAppbmRleCBhOWQzNWE2NjNh
NzE1NTcyNGRlYmU2MmNlYzczNjljZjNlMjA1NmNmLi5iNGE0MDY3M2VjNGM4OTEwYWJlYjdiZGEx
MGViNWNlMTQ4NTFlNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJT
aGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2Ug
Q29yZUlQQyB7CkBAIC0xNTIsNiArMTUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUxh
eWVySG9zdGluZ0NvbnRleHQoTGF5ZXJIb3N0aW5nTW9kZSk7CiAjZW5kaWYKIAorICAgIHZvaWQg
c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKGJvb2wpOwogICAgIHZvaWQgcHJpdmF0ZUJyb3dz
aW5nU3RhdGVDaGFuZ2VkKGJvb2wpOwogICAgIHZvaWQgZ2V0Rm9ybVZhbHVlKGJvb2wmIHJldHVy
blZhbHVlLCBTdHJpbmcmIGZvcm1WYWx1ZSk7CiAKQEAgLTE2Myw2ICsxNjUsNyBAQCBwcml2YXRl
OgogICAgIHVpbnQ2NF90IG1fcGx1Z2luSW5zdGFuY2VJRDsKIAogICAgIFN0cmluZyBtX3VzZXJB
Z2VudDsKKyAgICBib29sIG1fc3RvcmFnZUJsb2NraW5nRW5hYmxlZDsKICAgICBib29sIG1faXNQ
cml2YXRlQnJvd3NpbmdFbmFibGVkOwogICAgIGJvb2wgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdFbmFibGVkOwogICAgIGJvb2wgbV9pc0luaXRpYWxpemluZzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkubWVz
c2FnZXMuaW4KaW5kZXggMzcxYmVlMjM3NzVkZGUwZmY3MjEwNDNiMzQ1MGNjYTYwNjVjOWRlYi4u
ZDdjMmQwMmIyYjEwNzYyY2UzNzc4YmI4ZGYwMmNkYzY5MjdjN2JkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTEwNiw2ICsxMDYsOSBAQCBtZXNzYWdlcyAtPiBQbHVnaW5Db250
cm9sbGVyUHJveHkgewogICAgICMgUmV0dXJuIGEgc25hcHNob3Qgb2YgdGhlIHBsdWdpbgogICAg
IFNuYXBzaG90KCkgLT4gKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgYmFja2luZ1N0
b3JlSGFuZGxlKQogICAgIAorICAgICMgU2VudCB3aGVuIHN0b3JhZ2UgYmxvY2tpbmcgcG9saWN5
IGNoYW5nZXMKKyAgICBTdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoYm9vbCBzdG9yYWdlQmxv
Y2tpbmdFbmFibGVkKQorCiAgICAgIyBTZW50IHdoZW4gcHJpdmF0ZSBicm93c2luZyBpcyBlbmFi
bGVkIG9yIGRpc2FibGVkCiAgICAgUHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wgaXNQ
cml2YXRlQnJvd3NpbmdFbmFibGVkKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCAx
NWU3NjQ4ZGE2M2Y3YjM0OTIzZWQ5ODkzMDJmNDVlNTJkMTI0NzIwLi40YzU5ZGRhMzVhNzIwOTE5
ZjMwMGQ4ZGE4ZWZkMjMyMGZiOGZmZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAg
LTk1Myw4ICs5NTMsMjQgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6Y29udGVudHNTY2FsZUZhY3Rv
ckNoYW5nZWQoZmxvYXQgc2NhbGVGYWN0b3IpCiAjZW5kaWYKIH0KIAordm9pZCBOZXRzY2FwZVBs
dWdpbjo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKGJvb2wgc3RvcmFnZUJsb2NraW5nRW5h
YmxlZCkKK3sKKyAgICBpZiAobV9zdG9yYWdlQmxvY2tpbmdTdGF0ZSAhPSBzdG9yYWdlQmxvY2tp
bmdFbmFibGVkKSB7CisgICAgICAgIG1fc3RvcmFnZUJsb2NraW5nU3RhdGUgPSBzdG9yYWdlQmxv
Y2tpbmdFbmFibGVkOworICAgICAgICBlbmFjdFByaXZhdGVCcm93c2luZ1N0YXRlKCk7CisgICAg
fQorfQorCiB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQo
Ym9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogeworICAgIGlmIChtX3ByaXZhdGVCcm93c2lu
Z1N0YXRlICE9IHByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKKyAgICAgICAgbV9wcml2YXRlQnJv
d3NpbmdTdGF0ZSA9IHByaXZhdGVCcm93c2luZ0VuYWJsZWQ7CisgICAgICAgIGVuYWN0UHJpdmF0
ZUJyb3dzaW5nU3RhdGUoKTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0c2NhcGVQbHVnaW46OmVuYWN0
UHJpdmF0ZUJyb3dzaW5nU3RhdGUoKQorewogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CiAKICAg
ICAvLyBGcm9tIGh0dHBzOi8vd2lraS5tb3ppbGxhLm9yZy9QbHVnaW5zOlByaXZhdGVNb2RlCkBA
IC05NjIsNyArOTc4LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6cHJpdmF0ZUJyb3dzaW5nU3Rh
dGVDaGFuZ2VkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKICAgICAvLyAgIChhc3NpZ25l
ZCBlbnVtIHZhbHVlIDE4KSB3aXRoIGEgcG9pbnRlciB0byBhbiBOUEJvb2wgdmFsdWUgb24gYWxs
IGFwcGxpY2FibGUgaW5zdGFuY2VzLgogICAgIC8vICAgUGx1Z2lucyBzaG91bGQgY2hlY2sgdGhl
IGJvb2xlYW4gdmFsdWUgcG9pbnRlZCB0bywgbm90IHRoZSBwb2ludGVyIGl0c2VsZi4gCiAgICAg
Ly8gICBUaGUgdmFsdWUgd2lsbCBiZSB0cnVlIHdoZW4gcHJpdmF0ZSBtb2RlIGlzIG9uLgotICAg
IE5QQm9vbCB2YWx1ZSA9IHByaXZhdGVCcm93c2luZ0VuYWJsZWQ7CisgICAgTlBCb29sIHZhbHVl
ID0gbV9wcml2YXRlQnJvd3NpbmdTdGF0ZSB8fCBtX3N0b3JhZ2VCbG9ja2luZ1N0YXRlOwogICAg
IE5QUF9TZXRWYWx1ZShOUE5WcHJpdmF0ZU1vZGVCb29sLCAmdmFsdWUpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5oCmluZGV4IDVmOTNjNTc0NzY1ODE3ZThiYmNiOTExYmIzYzNjNGI1YzQ5YTU0
YmMuLjc0ZDQ4OTg5MmIxMjdhZWVhYWY1MjU5YTQ5OTM4ZjYzZWEyMWQ4YzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5oCkBAIC0yMjIsNiArMjIyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAg
dmlydHVhbCB2b2lkIGNvbnRlbnRzU2NhbGVGYWN0b3JDaGFuZ2VkKGZsb2F0KTsKKyAgICB2aXJ0
dWFsIHZvaWQgc3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKGJvb2wpOwogICAgIHZpcnR1YWwg
dm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCk7CiAgICAgdmlydHVhbCBib29s
IGdldEZvcm1WYWx1ZShTdHJpbmcmIGZvcm1WYWx1ZSk7CiAgICAgdmlydHVhbCBib29sIGhhbmRs
ZVNjcm9sbChXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFy
aXR5KTsKQEAgLTIzNyw2ICsyMzgsOCBAQCBwcml2YXRlOgogICAgIC8vIGNvbnZlcnRlZCAoaWYg
dGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBpc24ndCBpbnZlcnRpYmxlKS4KICAgICBib29sIGNv
bnZlcnRGcm9tUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50SW5Sb290Vmll
d0Nvb3JkaW5hdGVzLCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnRJblBsdWdpbkNvb3JkaW5hdGVz
KTsKIAorICAgIHZvaWQgZW5hY3RQcml2YXRlQnJvd3NpbmdTdGF0ZSgpOworCiAjaWYgUExVR0lO
X0FSQ0hJVEVDVFVSRShXSU4pCiAgICAgc3RhdGljIEJPT0wgV0lOQVBJIGhvb2tlZFRyYWNrUG9w
dXBNZW51KEhNRU5VLCBVSU5UIHVGbGFncywgaW50IHgsIGludCB5LCBpbnQgblJlc2VydmVkLCBI
V05ELCBjb25zdCBSRUNUKik7CiAgICAgdm9pZCBzY2hlZHVsZVdpbmRvd2VkR2VvbWV0cnlVcGRh
dGUoKTsKQEAgLTM0NCw2ICszNDcsOSBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkludFJlY3Qg
bV93aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXM7CiAgICAgV2ViQ29yZTo6SW50UmVjdCBt
X3ZpZXdGcmFtZUluV2luZG93Q29vcmRpbmF0ZXM7CiAKKyAgICBib29sIG1fcHJpdmF0ZUJyb3dz
aW5nU3RhdGU7CisgICAgYm9vbCBtX3N0b3JhZ2VCbG9ja2luZ1N0YXRlOworCiAjaWZuZGVmIE5Q
X05PX0NBUkJPTgogICAgIHZvaWQgbnVsbEV2ZW50VGltZXJGaXJlZCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3LmgK
aW5kZXggOWNjZDgwNDAwMzdlODAwOTFmOTg1NmEzZWQzOTJjMzY2YTBhYWYzMi4uYWFkYTVlZjgx
NTVhNjUyODRjZGUzNmViMzY3ODZhYjA2ZGQ4MDBiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaApAQCAtMTEzLDYg
KzExMyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldExheWVySG9zdGluZ01vZGUo
TGF5ZXJIb3N0aW5nTW9kZSkgT1ZFUlJJREU7CiAjZW5kaWYKIAorICAgIHZpcnR1YWwgdm9pZCBz
dG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHByaXZh
dGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0Rm9ybVZh
bHVlKFN0cmluZyYgZm9ybVZhbHVlKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlU2Nyb2xsKFdl
YkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERG
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBE
RlZpZXcubW0KaW5kZXggZmU3ZjI1OGIwYTQ5ZjI5ZWM4NjllNDZmYzY5NTcwMWQyNjdlZWRhZS4u
ZDM3NjVkZTY4ZDUzMGY0ODk5YjIzMTVlNTgwNDI5ZjUyODg4MzgxYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3Lm1t
CkBAIC02NjAsNiArNjYwLDEwIEBAIHZvaWQgQnVpbHRJblBERlZpZXc6OnNldExheWVySG9zdGlu
Z01vZGUoTGF5ZXJIb3N0aW5nTW9kZSkKIAogI2VuZGlmCiAKK3ZvaWQgQnVpbHRJblBERlZpZXc6
OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZChib29sKQoreworfQorCiB2b2lkIEJ1aWx0SW5Q
REZWaWV3Ojpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCkKIHsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCBiOTExNzRmOWViN2MyN2Vm
M2IyZmVlOGIyNDQwYWY5ZTQxODE3Y2VjLi5mODM2M2RjOTBlYzY2ZWQzZDRiMTUwYzlkYTJiYzNl
MzY2NmZlN2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5o
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CkBAIC0yMTgsNiArMjE5LDkgQEAgcHVibGljOgogICAgIC8vIFRlbGxzIHRoZSBwbHVn
LWluIGFib3V0IHNjYWxlIGZhY3RvciBjaGFuZ2VzLgogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50
c1NjYWxlRmFjdG9yQ2hhbmdlZChmbG9hdCkgPSAwOwogCisgICAgLy8gQ2FsbGVkIHdoZW4gdGhl
IHN0b3JhZ2UgYmxvY2tpbmcgcG9saWN5IGZvciB0aGlzIHBsdWctaW4gY2hhbmdlcy4KKyAgICB2
aXJ0dWFsIHZvaWQgc3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKGJvb2wpID0gMDsKKwogICAg
IC8vIENhbGxlZCB3aGVuIHRoZSBwcml2YXRlIGJyb3dzaW5nIHN0YXRlIGZvciB0aGlzIHBsdWct
aW4gY2hhbmdlcy4KICAgICB2aXJ0dWFsIHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2Vk
KGJvb2wpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm94eS5jcHAKaW5kZXggZTM4MGVlZjk0ZjM1N2UwMjkxZWVjODNlNjk0Y2JmOThmZDBh
ZDQwYS4uZDliMGM1NmZkNWQyMTg2ZGU4MmUyMTgxMjdmMTdhNjQwNGM4YWEyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC00
NjAsNiArNDYwLDExIEBAIHZvaWQgUGx1Z2luUHJveHk6OmNvbnRlbnRzU2NhbGVGYWN0b3JDaGFu
Z2VkKGZsb2F0IHNjYWxlRmFjdG9yKQogICAgIGdlb21ldHJ5RGlkQ2hhbmdlKCk7CiB9CiAKK3Zv
aWQgUGx1Z2luUHJveHk6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZChib29sIGlzU3RvcmFn
ZUJsb2NraW5nRW5hYmxlZCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpTdG9yYWdlQmxvY2tpbmdTdGF0ZUNo
YW5nZWQoaXNTdG9yYWdlQmxvY2tpbmdFbmFibGVkKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKK30K
Kwogdm9pZCBQbHVnaW5Qcm94eTo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wgaXNQ
cml2YXRlQnJvd3NpbmdFbmFibGVkKQogewogICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVyUHJveHk6OlByaXZhdGVCcm93c2luZ1N0
YXRlQ2hhbmdlZChpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQpLCBtX3BsdWdpbkluc3RhbmNlSUQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaApp
bmRleCBjMGNhMTE2YjA3ZTk4NGQ3YjAwNzRkZDhlODE2MzA1Y2VmYzM1YmI2Li40YmJlNDY4NmZm
YTYwZTRlYzM0MDQyOWE3ZmE3MjAyMzljMGRkYjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1
ZGUgIlBsdWdpbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWZmaW5lVHJhbnNmb3JtLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdp
bi5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAg
LTExMiw2ICsxMTMsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgY29u
dGVudHNTY2FsZUZhY3RvckNoYW5nZWQoZmxvYXQpOworICAgIHZpcnR1YWwgdm9pZCBzdG9yYWdl
QmxvY2tpbmdTdGF0ZUNoYW5nZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHByaXZhdGVCcm93
c2luZ1N0YXRlQ2hhbmdlZChib29sKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0Rm9ybVZhbHVlKFN0
cmluZyYgZm9ybVZhbHVlKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlU2Nyb2xsKFdlYkNvcmU6
OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDBhMGM2
YjYzZGQyYjY2NzM0YmNiZDI3ODMyZmVkMTU4OWJhOWVkMTIuLmQwYjhiNGViNTYwN2VkYTcxZjA2
YmVmM2VmZTA3Yjc2YTUxNWYxYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTU4MSwxMyArNTgxLDIxIEBAIEpTT2JqZWN0KiBQ
bHVnaW5WaWV3OjpzY3JpcHRPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICNl
bmRpZgogfQogCi12b2lkIFBsdWdpblZpZXc6OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChi
b29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCit2b2lkIFBsdWdpblZpZXc6OnN0b3JhZ2VCbG9j
a2luZ1N0YXRlQ2hhbmdlZCgpCiB7CiAgICAgLy8gVGhlIHBsdWctaW4gY2FuIGJlIG51bGwgaGVy
ZSBpZiBpdCBmYWlsZWQgdG8gaW5pdGlhbGl6ZS4KICAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8
fCAhbV9wbHVnaW4pCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghcHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCAmJiAhZnJhbWUoKS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNj
ZXNzUGx1Z2luU3RvcmFnZShmcmFtZSgpLT50cmVlKCktPnRvcCgpLT5kb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpKSkKKyAgICBib29sIHN0b3JhZ2VCbG9ja2luZ1BvbGljeSA9ICFmcmFtZSgp
LT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NQbHVnaW5TdG9yYWdlKGZy
YW1lKCktPnRyZWUoKS0+dG9wKCktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpOworCisg
ICAgbV9wbHVnaW4tPnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZChzdG9yYWdlQmxvY2tpbmdQ
b2xpY3kpOworfQorCit2b2lkIFBsdWdpblZpZXc6OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdl
ZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCit7CisgICAgLy8gVGhlIHBsdWctaW4gY2Fu
IGJlIG51bGwgaGVyZSBpZiBpdCBmYWlsZWQgdG8gaW5pdGlhbGl6ZS4KKyAgICBpZiAoIW1faXNJ
bml0aWFsaXplZCB8fCAhbV9wbHVnaW4pCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGx1Z2lu
LT5wcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCBk
MWQ5ODUzNjMzODY4NmIzNWQ5YTQ4ODk5MmJiMGEzNWY5NmJhZjlkLi45Y2MyNTdhOTgwNjQ0NTk5
MjcyY2JmMjYwMDY1ZGNjMmUzN2EyZTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTEwOSw2ICsxMDksNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0OwogI2VuZGlmCiAg
ICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBzY3JpcHRPYmplY3QoSlNDOjpKU0dsb2JhbE9iamVj
dCopOworICAgIHZpcnR1YWwgdm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wpOwogICAgIHZp
cnR1YWwgYm9vbCBnZXRGb3JtVmFsdWUoU3RyaW5nJik7CiAgICAgdmlydHVhbCBib29sIHNjcm9s
bChXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJL
aXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCA4ZTU2MDkxYjU4NzEyNjY2OGMwYzg0MGVlYTZlNWRm
MzA5ZDI1MzQyLi5lYTE2NzhhNWRiODNjOTk1NzBiOTFlMDI2Nzg1NmYwNTRhZDRlY2Q0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dlYktp
dDIvd2luL1dlYktpdDIuZGVmCkBAIC0yMzEsNiArMjMxLDcgQEAgRVhQT1JUUwogICAgICAgICA/
c2V0U2Nyb2xsT2Zmc2V0RnJvbUludGVybmFsc0BTY3JvbGxhYmxlQXJlYUBXZWJDb3JlQEBRQUVY
QUJWSW50UG9pbnRAMkBAWgogICAgICAgICA/c2V0U2VyaWZGb250RmFtaWx5QFNldHRpbmdzQFdl
YkNvcmVAQFFBRVhBQlZBdG9taWNTdHJpbmdAV1RGQEBXNFVTY3JpcHRDb2RlQEBAWgogICAgICAg
ICA/c2V0U3RhbmRhcmRGb250RmFtaWx5QFNldHRpbmdzQFdlYkNvcmVAQFFBRVhBQlZBdG9taWNT
dHJpbmdAV1RGQEBXNFVTY3JpcHRDb2RlQEBAWgorICAgICAgICA/c2V0U3RvcmFnZUJsb2NraW5n
UG9saWN5QFNldHRpbmdzQFdlYkNvcmVAQFFBRVhXNFN0b3JhZ2VCbG9ja2luZ1BvbGljeUBTZWN1
cml0eU9yaWdpbkAyQEBaCiAgICAgICAgID9zZXRTdWdnZXN0ZWRWYWx1ZUBIVE1MSW5wdXRFbGVt
ZW50QFdlYkNvcmVAQFFBRVhBQlZTdHJpbmdAV1RGQEBAWgogICAgICAgICA/c2V0RWRpdGluZ1Zh
bHVlQEhUTUxJbnB1dEVsZW1lbnRAV2ViQ29yZUBAUUFFWEFCVlN0cmluZ0BXVEZAQEBaCiAgICAg
ICAgID9zZXR0aW5nc0BEb2N1bWVudEBXZWJDb3JlQEBRQkVQQVZTZXR0aW5nc0AyQFhaCmRpZmYg
LS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyIGIvU291cmNlL2F1dG90b29s
cy9zeW1ib2xzLmZpbHRlcgppbmRleCBhOTE4YzhjYjI5MDE4MmIzOTFiYTZkMmY5OTZlODViMmU0
MDhhODQzLi41NDFkNjRjZWVhNDY2MDkyZDYyYWFkYmJmNzQwZTY2YTE5YTlkOGY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCisrKyBiL1NvdXJjZS9hdXRvdG9v
bHMvc3ltYm9scy5maWx0ZXIKQEAgLTE1Myw2ICsxNTMsNyBAQCBfWk43V2ViQ29yZThTZXR0aW5n
czIxc2V0U3RhbmRhcmRGb250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UxMVVTY3JpcHRD
b2RlOwogX1pON1dlYkNvcmU4U2V0dGluZ3MyMnNldFNhbnNTZXJpZkZvbnRGYW1pbHlFUktOM1dU
RjEyQXRvbWljU3RyaW5nRTExVVNjcmlwdENvZGU7CiBfWk43V2ViQ29yZThTZXR0aW5nczIzc2V0
UGljdG9ncmFwaEZvbnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5nRTExVVNjcmlwdENvZGU7
CiBfWk43V2ViQ29yZThTZXR0aW5nczI0c2V0TW9ja1Njcm9sbGJhcnNFbmFibGVkRWI7CitfWk43
V2ViQ29yZThTZXR0aW5nczI0c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5RU5TXzE0U2VjdXJpdHlP
cmlnaW4yMVN0b3JhZ2VCbG9ja2luZ1BvbGljeUU7CiBfWk43V2ViQ29yZThTZXR0aW5nczM3c2V0
Rml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZUViOwogX1pON1dlYkNvcmU5RnJhbWVW
aWV3MTdwYWludENvbnRyb2xUaW50c0V2OwogX1pON1dlYkNvcmU5RnJhbWVWaWV3MTlzY3JvbGxF
bGVtZW50VG9SZWN0RVBOU183RWxlbWVudEVSS05TXzdJbnRSZWN0RTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhMTgxZGY3
MmFiYjJlNTgxZGY0ZDc3NzU5MTNmNjc5M2YwNDc2YjRlLi42ZDlkNjc5MzAxMDFhOTcwYmE5YzY1
NTUyYzEwMTMxMjliNmYzYTNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTItMDktMTEgIEpl
ZmZyZXkgUGZhdSAgPGpwZmF1QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyB0aGlyZC1wYXJ0
eSBzdG9yYWdlIGJsb2NraW5nIHNldHRpbmcgdG8gY2hhbmdlIHdoaWxlIGEgcGFnZSBpcyBsb2Fk
ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1Nzkw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdGVk
IGNvbWJpbmF0aW9ucyBvZiBsb29zZW5pbmcgYW5kIHN0cmVuZ3RoZW5pbmcgdGhlIHN0b3JhZ2Ug
YmxvY2tpbmcgcG9saWN5IG9uIHZhcmlvdXMgdHlwZXMgb2Ygc3RvcmFnZS4KKworICAgICAgICAq
IGh0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9ja2lu
Zy1jaGFuZ2VkLWxvY2FsLXN0b3JhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5nLWNoYW5nZWQt
c2hhcmVkLXdvcmtlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3Jlc291cmNlcy9pZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC13ZWJzcWwuaHRt
bDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5n
LWxvb3NlbmVkLWxvY2FsLXN0b3JhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtbG9jYWwtc3RvcmFn
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxv
Y2tpbmctbG9vc2VuZWQtcGx1Z2luLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXBsdWdpbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9v
c2VuZWQtcHJpdmF0ZS1icm93c2luZy1wbHVnaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtcHJpdmF0
ZS1icm93c2luZy1wbHVnaW4uaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXNoYXJlZC13b3JrZXItZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmct
bG9vc2VuZWQtc2hhcmVkLXdvcmtlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtd2Vic3FsLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxv
b3NlbmVkLXdlYnNxbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLWxvY2FsLXN0b3JhZ2UtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmct
c3RyZW5ndGhlbmVkLWxvY2FsLXN0b3JhZ2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90
ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wbHVnaW4tZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxv
Y2tpbmctc3RyZW5ndGhlbmVkLXBsdWdpbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXByaXZhdGUtYnJvd3Np
bmctcGx1Z2luLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wcml2YXRlLWJyb3dzaW5nLXBsdWdp
bi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxv
Y2tpbmctc3RyZW5ndGhlbmVkLXNoYXJlZC13b3JrZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVk
LXNoYXJlZC13b3JrZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0
eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC13ZWJzcWwtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5n
dGhlbmVkLXdlYnNxbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9U
ZXN0RXhwZWN0YXRpb25zOiBTa2lwIHNoYXJlZCB3b3JrZXIgdGVzdHMuCisgICAgICAgICogcGxh
dGZvcm0vbWFjLXdrMi9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5n
dGhlbmVkLXBsdWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy13azIvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1w
cml2YXRlLWJyb3dzaW5nLXBsdWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDEyLTA5LTA2
ICBKZWZmcmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CiAKICAgICAgICAgRXh0ZW5kIHRoaXJk
LXBhcnR5IHN0b3JhZ2UgYmxvY2tpbmcgQVBJIHRvIG9wdGlvbmFsbHkgYWxsb3cgYmxvY2tpbmcg
YWxsIHN0b3JhZ2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
cmVzb3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9ja2luZy1jaGFuZ2VkLWxvY2FsLXN0b3Jh
Z2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFt
ZS1mb3Itc3RvcmFnZS1ibG9ja2luZy1jaGFuZ2VkLWxvY2FsLXN0b3JhZ2UuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lMjAzNzE5NjAyNzYzMDgwZWZiZGM2OTZhNDIwZTgwNDBmMDgwYzdkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1l
LWZvci1zdG9yYWdlLWJsb2NraW5nLWNoYW5nZWQtbG9jYWwtc3RvcmFnZS5odG1sCkBAIC0wLDAg
KzEsMzUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2Up
IHsKKwl2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKKwlub2RlLnRleHRD
b250ZW50ID0gbWVzc2FnZTsKKwlkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5vZGUpOworfQor
Cit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisJdHJ5IHsKKwkJdmFyIGwgPSB3aW5kb3cu
bG9jYWxTdG9yYWdlOworCQlsID0gbnVsbDsKKwkJbG9nKCdObyBleGNlcHRpb24nKTsKKwl9IGNh
dGNoIChleGNlcHRpb24pIHsKKwkJbG9nKGV4Y2VwdGlvbi5uYW1lKTsKKwl9Cit9CisKK3dpbmRv
dy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7CisJdHJ5IHsKKwkJdmFyIGwgPSB3aW5kb3cubG9j
YWxTdG9yYWdlOworCQlsID0gbnVsbDsKKwkJbG9nKCdObyBleGNlcHRpb24nKTsKKwkJd2luZG93
LnBhcmVudC5wb3N0TWVzc2FnZSgnTm8gZXhjZXB0aW9uJywgJyonKTsKKwl9IGNhdGNoIChleGNl
cHRpb24pIHsKKwkJbG9nKGV4Y2VwdGlvbi5uYW1lKTsKKwkJd2luZG93LnBhcmVudC5wb3N0TWVz
c2FnZShleGNlcHRpb24ubmFtZSwgJyonKTsKKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5nLWNoYW5nZWQt
c2hhcmVkLXdvcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNv
dXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5nLWNoYW5nZWQtc2hhcmVkLXdvcmtlci5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjM3YmExOWQxNzBlYjRhMDA4NzA3OWNkODdkYjQ1OTZhMDc0NDgyZjMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291
cmNlcy9pZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC1zaGFyZWQtd29ya2VyLmh0
bWwKQEAgLTAsMCArMSw0MSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBs
b2cobWVzc2FnZSkgeworCXZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOwor
CW5vZGUudGV4dENvbnRlbnQgPSBtZXNzYWdlOworCWRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
bm9kZSk7Cit9CisKK2Z1bmN0aW9uIGNyZWF0ZVdvcmtlcigpIHsKKwl2YXIgd29ya2VyID0gbmV3
IFNoYXJlZFdvcmtlcignc2hhcmVkLXdvcmtlci5qcycsICdTaGFyZWRXb3JrZXInKTsKKwl3b3Jr
ZXIucG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgeworCQlsb2coZXZlbnQuZGF0YSk7
CisJCXdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoZXZlbnQuZGF0YSwgJyonKTsKKwl9CisJd29y
a2VyLnBvcnQuc3RhcnQoKTsKKwl3b3JrZXIucG9ydC5wb3N0TWVzc2FnZSgnQ29ubmVjdGlvbiB0
ZXN0Jyk7Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKwl0cnkgeworCQljcmVh
dGVXb3JrZXIoZmFsc2UpOworCX0gY2F0Y2ggKGV4Y2VwdGlvbikgeworCQlsb2coZXhjZXB0aW9u
Lm5hbWUpOworCQl3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKGV4Y2VwdGlvbi5uYW1lLCAnKicp
OworCX0KK30KKword2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGUpIHsKKwl0cnkgeworCQlj
cmVhdGVXb3JrZXIodHJ1ZSk7CisJfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisJCWxvZyhleGNlcHRp
b24ubmFtZSk7CisJCXdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoZXhjZXB0aW9uLm5hbWUsICcq
Jyk7CisJfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2lm
cmFtZS1mb3Itc3RvcmFnZS1ibG9ja2luZy1jaGFuZ2VkLXdlYnNxbC5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2Nr
aW5nLWNoYW5nZWQtd2Vic3FsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTQ1MzhiYmJlODA4ODM4MDBmYTY5
MjM2YjlkZGFmMGVjZTNkYzc4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9ja2luZy1jaGFu
Z2VkLXdlYnNxbC5odG1sCkBAIC0wLDAgKzEsMzUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpIHsKKwl2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3AnKTsKKwlub2RlLnRleHRDb250ZW50ID0gbWVzc2FnZTsKKwlkb2N1bWVudC5ib2R5
LmFwcGVuZENoaWxkKG5vZGUpOworfQorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisJ
dHJ5IHsKKwkJdmFyIHNxbCA9IHdpbmRvdy5vcGVuRGF0YWJhc2UoJ3Rlc3RkYicsICcxLjAnLCAn
VGVzdGluZyBkYXRhYmFzZScsIDUxMiAqIDEwMjQpOworCQlzcWwgPSBudWxsOworCQlsb2coJ05v
IGV4Y2VwdGlvbicpOworCX0gY2F0Y2ggKGV4Y2VwdGlvbikgeworCQlsb2coZXhjZXB0aW9uLm5h
bWUpOworCX0KK30KKword2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGUpIHsKKwl0cnkgewor
CQl2YXIgc3FsID0gd2luZG93Lm9wZW5EYXRhYmFzZSgndGVzdGRiJywgJzEuMCcsICdUZXN0aW5n
IGRhdGFiYXNlJywgNTEyICogMTAyNCk7CisJCXNxbCA9IG51bGw7CisJCWxvZygnTm8gZXhjZXB0
aW9uJyk7CisJCXdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoJ05vIGV4Y2VwdGlvbicsICcqJyk7
CisJfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisJCWxvZyhleGNlcHRpb24ubmFtZSk7CisJCXdpbmRv
dy5wYXJlbnQucG9zdE1lc3NhZ2UoZXhjZXB0aW9uLm5hbWUsICcqJyk7CisJfQorfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1sb2Nh
bC1zdG9yYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
c3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1sb2NhbC1zdG9yYWdlLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hM2ViOTMzMTg3ODAzZWU1ZTRiNzczNDM3YTYwN2ZhOTM3NDY3Y2ExCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2Nr
aW5nLWxvb3NlbmVkLWxvY2FsLXN0b3JhZ2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAK
K1RoaXMgaWZyYW1lIHNob3VsZCByZXR1cm4gb25seSBvbmUgc2VjdXJpdHkgZXJyb3I6CisKKwor
CistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0t
LS0tLS0tCitTRUNVUklUWV9FUlIKKworTm8gZXhjZXB0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtbG9jYWwt
c3RvcmFnZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJs
b2NraW5nLWxvb3NlbmVkLWxvY2FsLXN0b3JhZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTlkYjBlOTA5
MTcwNzc3NzJmYWNmOTk0YzRlN2Q1OTdmYTlkZTFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLWxvY2Fs
LXN0b3JhZ2UuaHRtbApAQCAtMCwwICsxLDMxIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4K
K2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCXRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwor
CXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCXRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNU
ZXh0KCk7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKwlpbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdCbG9ja0FsbCcpOworCitmdW5jdGlvbiBkZWNyZW1l
bnQoKSB7CisJaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0
U3RvcmFnZUJsb2NraW5nUG9saWN5KCdBbGxvd0FsbCcpOworCWZvciAodmFyIGkgPSAwOyBpIDwg
d2luZG93LmZyYW1lcy5sZW5ndGg7ICsraSkKKwkJd2luZG93LmZyYW1lc1tpXS5wb3N0TWVzc2Fn
ZSgnYmxvY2tlZCcsICcqJyk7Cit9CisKK3dpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbigpIHsK
KwlpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisJ
fQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaWZyYW1lIHNob3VsZCBy
ZXR1cm4gb25seSBvbmUgc2VjdXJpdHkgZXJyb3I6PC9wPgorPGlmcmFtZSBzcmM9Imh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2Nr
aW5nLWNoYW5nZWQtbG9jYWwtc3RvcmFnZS5odG1sIiBvbmxvYWQ9ImRlY3JlbWVudCgpIj48L2lm
cmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wbHVnaW4tZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3Nl
bmVkLXBsdWdpbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjk4ZWU0ZjhlODUzN2M2NjRlMjIy
ZTNiMWU3OTU5MTAyNTZhOTZmZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wbHVnaW4tZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsOCBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIG5vdCBoYXZlIHByaXZhdGUg
YnJvd3NpbmcgZW5hYmxlZDoKKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGgg
Ly88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK2ZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtcGx1Z2lu
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmct
bG9vc2VuZWQtcGx1Z2luLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2IwZDI0ZjIyZGFhNDBlNmMxMDU5N2Mw
N2U1MzVjZGIzOTM2OTMwMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wbHVnaW4uaHRtbApAQCAtMCww
ICsxLDMxIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworCXRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCXRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworCXRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikKKwlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9s
aWN5KCdCbG9ja0FsbCcpOworCitmdW5jdGlvbiBkZWNyZW1lbnQoKSB7CisJaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorCQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5
KCdBbGxvd0FsbCcpOworCWZvciAodmFyIGkgPSAwOyBpIDwgd2luZG93LmZyYW1lcy5sZW5ndGg7
ICsraSkKKwkJd2luZG93LmZyYW1lc1tpXS5wb3N0TWVzc2FnZSgnYmxvY2tlZCcsICcqJyk7Cit9
CisKK3dpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbigpIHsKKwlpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKwkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisJfQorfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwPlRoaXMgaWZyYW1lIHNob3VsZCBub3QgaGF2ZSBwcml2YXRlIGJyb3dz
aW5nIGVuYWJsZWQ6PC9wPgorPGlmcmFtZSBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1
cml0eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3ItcGx1Z2luLWFzeW5jLmh0bWwi
IG9ubG9hZD0iZGVjcmVtZW50KCkiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxv
b3NlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wcml2YXRlLWJy
b3dzaW5nLXBsdWdpbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjA5ZTdiNmRkNjY0NjFkMjJi
YjVlMDhhNjJjNjUxZDVlNWIzODg2NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wcml2YXRlLWJyb3dz
aW5nLXBsdWdpbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUaGlzIGlmcmFtZSBzaG91
bGQgaGF2ZSBwcml2YXRlIGJyb3dzaW5nIGVuYWJsZWQ6CisKKworCistLS0tLS0tLQorRnJhbWU6
ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCit0cnVlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmct
bG9vc2VuZWQtcHJpdmF0ZS1icm93c2luZy1wbHVnaW4uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wcml2YXRlLWJyb3dzaW5n
LXBsdWdpbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhmYTNjNzgxMjU0YWM5YmVhZjU0NzcxZTZiMzRjYzg0
ODcyNDI5YWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtcHJpdmF0ZS1icm93c2luZy1wbHVnaW4uaHRt
bApAQCAtMCwwICsxLDMyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworCXRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCXRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworCXRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisJaW50
ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeSgnQmxvY2tBbGwnKTsKK30K
KworZnVuY3Rpb24gZGVjcmVtZW50KCkgeworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCQl0
ZXN0UnVubmVyLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQodHJ1ZSk7CisJCWludGVybmFscy5z
ZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0FsbG93QWxsJyk7CisJfQorCWZvciAo
dmFyIGkgPSAwOyBpIDwgd2luZG93LmZyYW1lcy5sZW5ndGg7ICsraSkKKwkJd2luZG93LmZyYW1l
c1tpXS5wb3N0TWVzc2FnZSgnYmxvY2tlZCcsICcqJyk7Cit9CisKK3dpbmRvdy5vbm1lc3NhZ2Ug
PSBmdW5jdGlvbigpIHsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwkJdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CisJCXRlc3RSdW5uZXIuc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChmYWxz
ZSk7CisJfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaWZyYW1lIHNo
b3VsZCBoYXZlIHByaXZhdGUgYnJvd3NpbmcgZW5hYmxlZDo8L3A+Cis8aWZyYW1lIHNyYz0iaHR0
cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4taWZyYW1l
LWZvci1wbHVnaW4tYXN5bmMuaHRtbCIgb25sb2FkPSJkZWNyZW1lbnQoKSI+PC9pZnJhbWU+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtc2hhcmVkLXdvcmtlci1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2Vu
ZWQtc2hhcmVkLXdvcmtlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTAxMmEzMGI5YzFiOWJk
ZTA3OTMzMDU1ZjM4MjA4MTJlZGI5NWI3ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1zaGFyZWQtd29y
a2VyLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUaGlzIGlmcmFtZSBzaG91bGQgcmV0
dXJuIG9ubHkgb25lIHNlY3VyaXR5IGVycm9yOgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEt
LWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorU0VDVVJJVFlfRVJSCisK
K0Nvbm5lY3RlZCBzdWNjZXNzZnVsbHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1zaGFyZWQtd29ya2VyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2Vu
ZWQtc2hhcmVkLXdvcmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4NTRhNDgyYWVjN2Q4NmQ4Y2RmZWMy
MGY3NWIzYjI4ZTNjMmZiNjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtc2hhcmVkLXdvcmtlci5odG1s
CkBAIC0wLDAgKzEsMzEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisJdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisJdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisJdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK30KKwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCWludGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxv
Y2tpbmdQb2xpY3koJ0Jsb2NrQWxsJyk7CisKK3dpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbigp
IHsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpCisJCWludGVybmFscy5zZXR0aW5ncy5zZXRTdG9y
YWdlQmxvY2tpbmdQb2xpY3koJ0FsbG93QWxsJyk7CisJZm9yICh2YXIgaSA9IDA7IGkgPCB3aW5k
b3cuZnJhbWVzLmxlbmd0aDsgKytpKQorCQl3aW5kb3cuZnJhbWVzW2ldLnBvc3RNZXNzYWdlKCdi
bG9ja2VkJywgJyonKTsKKworCXdpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbigpIHsKKwkJaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisJCQl0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKwkJfQor
CX0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQg
cmV0dXJuIG9ubHkgb25lIHNlY3VyaXR5IGVycm9yOjwvcD4KKzxpZnJhbWUgc3JjPSJodHRwOi8v
MTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9j
a2luZy1jaGFuZ2VkLXNoYXJlZC13b3JrZXIuaHRtbCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2Ut
YmxvY2tpbmctbG9vc2VuZWQtd2Vic3FsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC13ZWJzcWwtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmEzZWI5MzMxODc4MDNlZTVlNGI3NzM0MzdhNjA3ZmE5Mzc0NjdjYTEK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3Jh
Z2UtYmxvY2tpbmctbG9vc2VuZWQtd2Vic3FsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBA
CitUaGlzIGlmcmFtZSBzaG91bGQgcmV0dXJuIG9ubHkgb25lIHNlY3VyaXR5IGVycm9yOgorCisK
KworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCist
LS0tLS0tLQorU0VDVVJJVFlfRVJSCisKK05vIGV4Y2VwdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXdlYnNx
bC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5n
LWxvb3NlbmVkLXdlYnNxbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwMmMzYjNjYWRjMGQyZmVhZmMwNGRl
ZTdlZmJiNjJlZTU3NjY5YTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtd2Vic3FsLmh0bWwKQEAgLTAs
MCArMSwzMSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5u
ZXIpIHsKKwl0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKwl0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKwl0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworfQorCitpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1Bv
bGljeSgnQmxvY2tBbGwnKTsKKworZnVuY3Rpb24gZGVjcmVtZW50KCkgeworCWlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKwkJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGlj
eSgnQWxsb3dBbGwnKTsKKwlmb3IgKHZhciBpID0gMDsgaSA8IHdpbmRvdy5mcmFtZXMubGVuZ3Ro
OyArK2kpCisJCXdpbmRvdy5mcmFtZXNbaV0ucG9zdE1lc3NhZ2UoJ2Jsb2NrZWQnLCAnKicpOwor
fQorCit3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CisJaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworCX0KK30KKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQgcmV0dXJuIG9ubHkgb25lIHNlY3Vy
aXR5IGVycm9yOjwvcD4KKzxpZnJhbWUgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJp
dHkvcmVzb3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9ja2luZy1jaGFuZ2VkLXdlYnNxbC5o
dG1sIiBvbmxvYWQ9ImRlY3JlbWVudCgpIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2lu
Zy1zdHJlbmd0aGVuZWQtbG9jYWwtc3RvcmFnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLWxvY2FsLXN0
b3JhZ2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY0MDA4M2ZkNmY0ZjliOTU0YTc5MzQzMTBk
N2E1NTQ2ZDQ2YzIzOTAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLWxvY2FsLXN0b3JhZ2UtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgaWZyYW1lIHNob3VsZCByZXR1cm4gb25s
eSBvbmUgc2VjdXJpdHkgZXJyb3I6CisKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQ
YXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitObyBleGNlcHRpb24KKworTm8gZXhj
ZXB0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3Jh
Z2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLWxvY2FsLXN0b3JhZ2UuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtbG9jYWwt
c3RvcmFnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0OWY0MWU5NWFkNmY1YzBlZGJkMzU1ZjU3ZDgzMzQ3
ZjU2MGNiYTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLWxvY2FsLXN0b3JhZ2UuaHRtbApAQCAt
MCwwICsxLDI5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworCXRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCXRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworCXRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKK2Z1bmN0
aW9uIGRlY3JlbWVudCgpIHsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpCisJCWludGVybmFscy5z
ZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0Jsb2NrQWxsJyk7CisJZm9yICh2YXIg
aSA9IDA7IGkgPCB3aW5kb3cuZnJhbWVzLmxlbmd0aDsgKytpKQorCQl3aW5kb3cuZnJhbWVzW2ld
LnBvc3RNZXNzYWdlKCdibG9ja2VkJywgJyonKTsKK30KKword2luZG93Lm9ubWVzc2FnZSA9IGZ1
bmN0aW9uKCkgeworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCQlpbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdBbGxvd0FsbCcpOworCQl0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyBp
ZnJhbWUgc2hvdWxkIHJldHVybiBvbmx5IG9uZSBzZWN1cml0eSBlcnJvcjo8L3A+Cis8aWZyYW1l
IHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9pZnJhbWUtZm9y
LXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC1sb2NhbC1zdG9yYWdlLmh0bWwiIG9ubG9hZD0iZGVj
cmVtZW50KCkiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1w
bHVnaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9y
YWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wbHVnaW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
Ljk0ZDhlY2VmYTdlMzg3MTNkNDQ3ZWM4NDNiZWExMjE0NDRhMmM4YWUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3Ry
ZW5ndGhlbmVkLXBsdWdpbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUaGlzIGlmcmFt
ZSBzaG91bGQgaGF2ZSBwcml2YXRlIGJyb3dzaW5nIGVuYWJsZWQ6CisKKworCistLS0tLS0tLQor
RnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitmYWxz
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJs
b2NraW5nLXN0cmVuZ3RoZW5lZC1wbHVnaW4uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcGx1Z2luLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTkwZTY4M2ZkMzUwZDVlNTM3Yjc5Y2I5ZmEzMDY0OGRmN2JkNmI3MQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2lu
Zy1zdHJlbmd0aGVuZWQtcGx1Z2luLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwl0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKwl0ZXN0UnVubmVyLmR1bXBD
aGlsZEZyYW1lc0FzVGV4dCgpOworfQorCitmdW5jdGlvbiBkZWNyZW1lbnQoKSB7CisJaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorCQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5n
UG9saWN5KCdCbG9ja0FsbCcpOworCWZvciAodmFyIGkgPSAwOyBpIDwgd2luZG93LmZyYW1lcy5s
ZW5ndGg7ICsraSkKKwkJd2luZG93LmZyYW1lc1tpXS5wb3N0TWVzc2FnZSgnYmxvY2tlZCcsICcq
Jyk7Cit9CisKK3dpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbigpIHsKKwlpZiAod2luZG93LnRl
c3RSdW5uZXIpIHsKKwkJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGlj
eSgnQWxsb3dBbGwnKTsKKwkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisJfQorfQorPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaWZyYW1lIHNob3VsZCBoYXZlIHByaXZhdGUg
YnJvd3NpbmcgZW5hYmxlZDo8L3A+Cis8aWZyYW1lIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAw
L3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4taWZyYW1lLWZvci1wbHVnaW4tYXN5bmMu
aHRtbCIgb25sb2FkPSJkZWNyZW1lbnQoKSI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tp
bmctc3RyZW5ndGhlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVu
ZWQtcHJpdmF0ZS1icm93c2luZy1wbHVnaW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0ZDhl
Y2VmYTdlMzg3MTNkNDQ3ZWM4NDNiZWExMjE0NDRhMmM4YWUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhl
bmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAK
K1RoaXMgaWZyYW1lIHNob3VsZCBoYXZlIHByaXZhdGUgYnJvd3NpbmcgZW5hYmxlZDoKKworCisK
Ky0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0t
LS0tLS0KK2ZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3Ry
ZW5ndGhlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTg5Yzk4
MjJjY2MxMGFmZDE1NzE1ZDNiOWYzZTU5NzFiOGQ4NmU4MgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVu
ZWQtcHJpdmF0ZS1icm93c2luZy1wbHVnaW4uaHRtbApAQCAtMCwwICsxLDMyIEBACis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCXRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCXRlc3RSdW5uZXIu
ZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CisJdGVzdFJ1bm5lci5zZXRQcml2YXRlQnJvd3NpbmdF
bmFibGVkKHRydWUpOworfQorCitmdW5jdGlvbiBkZWNyZW1lbnQoKSB7CisJaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisJCWludGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xp
Y3koJ0Jsb2NrQWxsJyk7CisJCXRlc3RSdW5uZXIuc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChm
YWxzZSk7CisJfQorCWZvciAodmFyIGkgPSAwOyBpIDwgd2luZG93LmZyYW1lcy5sZW5ndGg7ICsr
aSkKKwkJd2luZG93LmZyYW1lc1tpXS5wb3N0TWVzc2FnZSgnYmxvY2tlZCcsICcqJyk7Cit9CisK
K3dpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbigpIHsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKwkJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeSgnQWxsb3dB
bGwnKTsKKwkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisJfQorfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwPlRoaXMgaWZyYW1lIHNob3VsZCBoYXZlIHByaXZhdGUgYnJvd3Npbmcg
ZW5hYmxlZDo8L3A+Cis8aWZyYW1lIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5
L3Jlc291cmNlcy9jcm9zcy1vcmlnaW4taWZyYW1lLWZvci1wbHVnaW4tYXN5bmMuaHRtbCIgb25s
b2FkPSJkZWNyZW1lbnQoKSI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5n
dGhlbmVkLXNoYXJlZC13b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1zaGFyZWQtd29ya2VyLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZmExODE0M2ZlNmJjNGY5NTVkZWVmNmFlMjk4ODU0ZDU4
YmU2Y2I3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0
eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1zaGFyZWQtd29ya2VyLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDEwIEBACitUaGlzIGlmcmFtZSBzaG91bGQgcmV0dXJuIG9ubHkgb25lIHNl
Y3VyaXR5IGVycm9yOgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwh
LS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorQ29ubmVjdGVkIHN1Y2Nlc3NmdWxseQorCitTRUNV
UklUWV9FUlIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3Rv
cmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtc2hhcmVkLXdvcmtlci5odG1sIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1zaGFy
ZWQtd29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhmOWI5ZTBjM2U1NzkxYjlhNTNjZGMyOTQ4NWU0
NGQ1MjgyMTU4MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtc2hhcmVkLXdvcmtlci5odG1sCkBA
IC0wLDAgKzEsMjkgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisJdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisJdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisJdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK30KKword2lu
ZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKCkgeworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikKKwkJ
aW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeSgnQmxvY2tBbGwnKTsK
Kwlmb3IgKHZhciBpID0gMDsgaSA8IHdpbmRvdy5mcmFtZXMubGVuZ3RoOyArK2kpCisJCXdpbmRv
dy5mcmFtZXNbaV0ucG9zdE1lc3NhZ2UoJ2Jsb2NrZWQnLCAnKicpOworCisJd2luZG93Lm9ubWVz
c2FnZSA9IGZ1bmN0aW9uKCkgeworCQlpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwkJCWludGVy
bmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0FsbG93QWxsJyk7CisJCQl0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKwkJfQorCX0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQgcmV0dXJuIG9ubHkgb25lIHNlY3VyaXR5IGVy
cm9yOjwvcD4KKzxpZnJhbWUgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVz
b3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9ja2luZy1jaGFuZ2VkLXNoYXJlZC13b3JrZXIu
aHRtbCI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXdlYnNx
bC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2Ut
YmxvY2tpbmctc3RyZW5ndGhlbmVkLXdlYnNxbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2U2
NjE4NWMzZjQ1OTE5YzM5ZGY2N2JlOTgzMWRiOWI0N2I5NTFjZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0
aGVuZWQtd2Vic3FsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUaGlzIGlmcmFtZSBz
aG91bGQgcmV0dXJuIG9ubHkgb25lIHNlY3VyaXR5IGVycm9yOgorCisKKworLS0tLS0tLS0KK0Zy
YW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorTm8gZXhj
ZXB0aW9uCisKK1NFQ1VSSVRZX0VSUgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC13ZWJzcWwuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVu
ZWQtd2Vic3FsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODhlZWYxNDllNGExOTQwNDg0OThiZjJiYzM1ZjU2
NDVhZTM1YzVkMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtd2Vic3FsLmh0bWwKQEAgLTAsMCAr
MSwyOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKwl0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKwl0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworfQorCitmdW5jdGlvbiBk
ZWNyZW1lbnQoKSB7CisJaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCQlpbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdCbG9ja0FsbCcpOworCWZvciAodmFyIGkgPSAw
OyBpIDwgd2luZG93LmZyYW1lcy5sZW5ndGg7ICsraSkKKwkJd2luZG93LmZyYW1lc1tpXS5wb3N0
TWVzc2FnZSgnYmxvY2tlZCcsICcqJyk7Cit9CisKK3dpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlv
bigpIHsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwkJaW50ZXJuYWxzLnNldHRpbmdzLnNl
dFN0b3JhZ2VCbG9ja2luZ1BvbGljeSgnQWxsb3dBbGwnKTsKKwkJdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CisJfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaWZyYW1l
IHNob3VsZCByZXR1cm4gb25seSBvbmUgc2VjdXJpdHkgZXJyb3I6PC9wPgorPGlmcmFtZSBzcmM9
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9y
YWdlLWJsb2NraW5nLWNoYW5nZWQtd2Vic3FsLmh0bWwiIG9ubG9hZD0iZGVjcmVtZW50KCkiPjwv
aWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggMTY1YzU5MzA3NGJiY2Y2YTBkMDUxY2M1Yjg0YjJi
MmQyYWI1ZmM4OS4uYjE1NTYxZTMzZTRmNzk4NDBlNDg1ZjMzNGE3NDg3YWI5YzM2YjRkMCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwor
KysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCkBAIC01
NDEsNiArNTQxLDggQEAgV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50
U2VjdXJpdHlQb2xpY3kvc2hhcmVkLXdvcmtlci1jb25uZWN0LXMKIFdPTlRGSVggU0tJUCA6IGh0
dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXNoYXJlZC13b3JrZXIuaHRtbCA9IFRFWFQK
IFdPTlRGSVggU0tJUCA6IGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLXNoYXJlZC13
b3JrZXItYWxsb3dlZC5odG1sID0gVEVYVAogV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy9zZWN1
cml0eS9zYW1lLW9yaWdpbi1zaGFyZWQtd29ya2VyLWJsb2NrZWQuaHRtbCA9IFRFWFQKK1dPTlRG
SVggU0tJUCA6IGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1z
aGFyZWQtd29ya2VyLmh0bWwgPSBURVhUCitXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXNoYXJlZC13b3JrZXIuaHRtbCA9IFRF
WFQKIFdPTlRGSVggU0tJUCA6IHN0b3JhZ2UvaW5kZXhlZGRiL2Jhc2ljcy1zaGFyZWQtd29ya2Vy
cy5odG1sID0gUEFTUwogCiAvLyB0ZXN0X3NoZWxsIGRvZXMgbm90IHN1cHBvcnQgbWVzc2FnZSBw
b3J0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXBsdWdpbi1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3Rv
cmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcGx1Z2luLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yMDllN2I2ZGQ2NjQ2MWQyMmJiNWUwOGE2MmM2NTFkNWU1YjM4ODY2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0
b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXBsdWdpbi1leHBlY3RlZC50eHQKQEAgLTAsMCAr
MSw4IEBACitUaGlzIGlmcmFtZSBzaG91bGQgaGF2ZSBwcml2YXRlIGJyb3dzaW5nIGVuYWJsZWQ6
CisKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0t
PicKKy0tLS0tLS0tCit0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcHJp
dmF0ZS1icm93c2luZy1wbHVnaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMi9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVk
LXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDllN2I2
ZGQ2NjQ2MWQyMmJiNWUwOGE2MmM2NTFkNWU1YjM4ODY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxv
Y2tpbmctc3RyZW5ndGhlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDggQEAKK1RoaXMgaWZyYW1lIHNob3VsZCBoYXZlIHByaXZhdGUgYnJvd3Npbmcg
ZW5hYmxlZDoKKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJh
bWUwLS0+LS0+JworLS0tLS0tLS0KK3RydWUKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCAzZmJhMDVhYjM4NThjYzA1YTY1ZGViYmNhMmE3ZjNiZDM3MDY5YzM4Li42NTdh
ZjcwN2M5ZmFjNDUwYmM0OWQ2MTk2NWJhYWYxZTQ4YzZjOTE2IDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDktMTIgIEplZmZyZXkg
UGZhdSAgPGpwZmF1QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyB0aGlyZC1wYXJ0eSBzdG9y
YWdlIGJsb2NraW5nIHNldHRpbmcgdG8gY2hhbmdlIHdoaWxlIGEgcGFnZSBpcyBsb2FkZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzkwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGV4cG9y
dGVkIHN5bWJvbHMuCisKKyAgICAgICAgKiBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVy
OgorCiAyMDEyLTA5LTA3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIGJveC1zaGFkb3cgY2F1c2VzIG92ZXJsYXkgc2Nyb2xsYmFycyB0byBiZSBpbiB0
aGUgd3JvbmcgcG9zaXRpb24gd2hlbiBlbGVtZW50IGlzIGNvbXBvc2l0ZWQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163937</attachid>
            <date>2012-09-13 12:40:12 -0700</date>
            <delta_ts>2012-09-14 13:42:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95790-20120913124105.patch</filename>
            <type>text/plain</type>
            <size>53655</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYwMzNhNjBhMzU4MTRk
M2U4MzJmMWViYzM5NzBmYzRiNGQ4MjIyMS4uZmI4Njg4MGQzNzRmMDUyN2M4MmJlNWEyN2FiNjhh
ODA0NTMxZDNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTA5LTEzICBKZWZm
cmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdGhpcmQtcGFydHkg
c3RvcmFnZSBibG9ja2luZyBzZXR0aW5nIHRvIGNoYW5nZSB3aGlsZSBhIHBhZ2UgaXMgbG9hZGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTc5MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBpcGUgdGhy
b3VnaCBjaGFuZ2VzIHRvIHRoZSBzdG9yYWdlIGJsb2NraW5nIHBvbGljeSB0byBlYWNoIGRvY3Vt
ZW50IGFuZCBwbHVnaW4uCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvc2VjdXJpdHkvc3Rv
cmFnZS1ibG9ja2luZy1sb29zZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWwKKyAgICAgICAgICAgICAg
IGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wbHVnaW4uaHRt
bAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxv
b3NlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1zaGFyZWQtd29ya2VyLmh0
bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1s
b29zZW5lZC13ZWJzcWwuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9z
dG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWwKKyAgICAgICAg
ICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQt
cGx1Z2luLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1i
bG9ja2luZy1zdHJlbmd0aGVuZWQtcHJpdmF0ZS1icm93c2luZy1wbHVnaW4uaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5l
ZC1zaGFyZWQtd29ya2VyLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkv
c3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtd2Vic3FsLmh0bWwKKworICAgICAgICAqIFdl
YkNvcmUuZXhwLmluOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6IFBpcGUgY2hhbmdlcyB0
aHJvdWdoIHRvIHRoZSBEb2N1bWVudCdzIFNlY3VyaXR5T3JpZ2luLgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoRG9jdW1lbnQpOgor
ICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpjb2xsZWN0
UGx1Z2luVmlld3MpOiBSZWZhY3RvcmVkIG91dCBpbnRvIGEgZnVuY3Rpb24uCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hh
bmdlZCk6IFBpcGUgY2hhbmdlcyB0aHJvdWdoIHRvIGVhY2ggUGx1Z2luVmlldy4KKyAgICAgICAg
KFdlYkNvcmU6OlBhZ2U6OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCk6CisgICAgICAgICog
cGFnZS9QYWdlLmg6CisgICAgICAgIChQYWdlKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3kp
OiBUZWxsIFBhZ2VzIGFib3V0IGNoYW5nZXMgdG8gdGhlIHN0b3JhZ2UgYmxvY2tpbmcgcG9saWN5
LgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAg
ICAoU2V0dGluZ3MpOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBsdWdpblZpZXdCYXNlOjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQp
OgorCiAyMDEyLTA5LTA2ICBKZWZmcmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CiAKICAgICAg
ICAgRXh0ZW5kIHRoaXJkLXBhcnR5IHN0b3JhZ2UgYmxvY2tpbmcgQVBJIHRvIG9wdGlvbmFsbHkg
YWxsb3cgYmxvY2tpbmcgYWxsIHN0b3JhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhZWY3OGYyNmRjZDUxZDll
ZmQ1MDk4NjE5YjkyNjAyMGYwYzJjNDFhLi44MjUzMmE3M2RjMWE3NzAwZDE2MTljMDlkZDg5ODNh
YzVjNGU0M2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTItMDktMTMgIEplZmZy
ZXkgUGZhdSAgPGpwZmF1QGFwcGxlLmNvbT4KKworICAgICAgICBBbGxvdyB0aGlyZC1wYXJ0eSBz
dG9yYWdlIGJsb2NraW5nIHNldHRpbmcgdG8gY2hhbmdlIHdoaWxlIGEgcGFnZSBpcyBsb2FkZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NzkwCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5mb3JtIHBs
dWdpbnMgYWJvdXQgY2hhbmdlcyB0byB0aGUgc3RvcmFnZSBibG9ja2luZyBwb2xpY3kgYnkgd2F5
IG9mIHRoZSBwcml2YXRlIGJyb3dzaW5nIGZlYXR1cmUuCisKKyAgICAgICAgKiBQbHVnaW5Qcm9j
ZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNv
bnRyb2xsZXJQcm94eTo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaDoK
KyAgICAgICAgKFBsdWdpbkNvbnRyb2xsZXJQcm94eSk6CisgICAgICAgICogUGx1Z2luUHJvY2Vz
cy9QbHVnaW5Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW46IEFkZCBXSzIgbWVzc2FnZSBmb3Ig
c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBl
UGx1Z2luOjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hh
bmdlZCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjplbmFjdFByaXZhdGVCcm93
c2luZ1N0YXRlKTogU2V0IHBsdWdpbidzIHByaXZhdGUgYnJvd3NpbmcgaWYgZWl0aGVyIHByaXZh
dGUgYnJvd3Npbmcgb3Igc3RvcmFnZSBibG9ja2luZyBpcyBlbmFibGVkLgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAgICAoTmV0
c2NhcGVQbHVnaW4pOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBE
RlZpZXcuaDoKKyAgICAgICAgKEJ1aWx0SW5QREZWaWV3KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3Lm1tOiBUcmVhdCBzdG9yYWdlQmxvY2tpbmdTdGF0
ZUNoYW5nZWQgYXMgYSBuby1vcC4KKyAgICAgICAgKFdlYktpdDo6QnVpbHRJblBERlZpZXc6OnN0
b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDogQWRkIHB1cmUgdmlydHVhbCBzdG9yYWdlQmxv
Y2tpbmdTdGF0ZUNoYW5nZWQgbWV0aG9kLgorICAgICAgICAoUGx1Z2luKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5Qcm94eTo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lmg6CisgICAgICAgIChQ
bHVnaW5Qcm94eSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5n
ZWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oOgorICAgICAgICAoUGx1Z2luVmlldyk6CisgICAgICAgICogd2luL1dlYktpdDIu
ZGVmOgorCiAyMDEyLTA5LTA2ICBKZWZmcmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CiAKICAg
ICAgICAgRXh0ZW5kIHRoaXJkLXBhcnR5IHN0b3JhZ2UgYmxvY2tpbmcgQVBJIHRvIG9wdGlvbmFs
bHkgYWxsb3cgYmxvY2tpbmcgYWxsIHN0b3JhZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggYjQ3
NjlmOTE4MjU0OTFkNDIzNzY2MTg4YmZjOTk5ZGViMmYzMWU1MC4uNTQ4ZTU5MzUyNTA5NmUxYzM1
NzdmZWQ2N2Q1NmU0Y2UwZGJkYjU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTg3OCw2ICs4
NzgsNyBAQCBfX1pON1dlYkNvcmU4U2V0dGluZ3MyM3NldFVzZXNFbmNvZGluZ0RldGVjdG9yRWIK
IF9fWk43V2ViQ29yZThTZXR0aW5nczI0c2V0QXBwbGljYXRpb25DaHJvbWVNb2RlRWIKIF9fWk43
V2ViQ29yZThTZXR0aW5nczI0c2V0RE5TUHJlZmV0Y2hpbmdFbmFibGVkRWIKIF9fWk43V2ViQ29y
ZThTZXR0aW5nczI0c2V0TW9ja1Njcm9sbGJhcnNFbmFibGVkRWIKK19fWk43V2ViQ29yZThTZXR0
aW5nczI0c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5RU5TXzE0U2VjdXJpdHlPcmlnaW4yMVN0b3Jh
Z2VCbG9ja2luZ1BvbGljeUUKIF9fWk43V2ViQ29yZThTZXR0aW5nczI0c2V0VGV4dEFyZWFzQXJl
UmVzaXphYmxlRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI1c2V0RGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNXNldEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRF
YgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOTc4MGYyNDZkYjcyNDc5ZTRmNDY0MzEzZGM2
ODI0NzQxMmJiMjczNy4uYjlkNTUxYTY1NzllNDhmYjhhZDExYzlkNzIxNDIzNDhiMGVmNzYxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00NTQxLDYgKzQ1NDEsMTIgQEAgdm9pZCBEb2N1
bWVudDo6dW5yZWdpc3RlckZvck1lZGlhVm9sdW1lQ2FsbGJhY2tzKEVsZW1lbnQqIGUpCiAgICAg
bV9tZWRpYVZvbHVtZUNhbGxiYWNrRWxlbWVudHMucmVtb3ZlKGUpOwogfQogCit2b2lkIERvY3Vt
ZW50OjpzdG9yYWdlQmxvY2tpbmdTdGF0ZURpZENoYW5nZSgpCit7CisgICAgaWYgKFNldHRpbmdz
KiBzZXR0aW5ncyA9IHRoaXMtPnNldHRpbmdzKCkpCisgICAgICAgIHNlY3VyaXR5T3JpZ2luKCkt
PnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShzZXR0aW5ncy0+c3RvcmFnZUJsb2NraW5nUG9saWN5
KCkpOworfQorCiB2b2lkIERvY3VtZW50Ojpwcml2YXRlQnJvd3NpbmdTdGF0ZURpZENoYW5nZSgp
IAogewogICAgIEhhc2hTZXQ8RWxlbWVudCo+OjppdGVyYXRvciBlbmQgPSBtX3ByaXZhdGVCcm93
c2luZ1N0YXRlQ2hhbmdlZEVsZW1lbnRzLmVuZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBk
YWZlMDRiZTMxNGE0YTdiNTAxMDU1Yzc1NWJhNTllZTA0NmQ2MmQzLi40MTc3NjI1Mjk1ZjJjZjY0
M2QzYjcyMTk3MWVkOTA1MGRlMjU1NWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTAxNiw2
ICsxMDE2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCByZWdpc3RlckZvclByaXZhdGVCcm93c2lu
Z1N0YXRlQ2hhbmdlZENhbGxiYWNrcyhFbGVtZW50Kik7CiAgICAgdm9pZCB1bnJlZ2lzdGVyRm9y
UHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkQ2FsbGJhY2tzKEVsZW1lbnQqKTsKKyAgICB2b2lk
IHN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKCk7CiAgICAgdm9pZCBwcml2YXRlQnJvd3Np
bmdTdGF0ZURpZENoYW5nZSgpOwogCiAgICAgdm9pZCBzZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMo
Ym9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAyOTgzODA4ZWFjYWMzMTIwOTZlMjliYTFmZGY3
Y2E5OGQzMjNkMzQ3Li4wM2UwODBiZWQxODVlZjczNzk4ZGEyNDVkYjExNmRiNmY3NWI0OWQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTU1LDcgKzU1LDYgQEAKICNpbmNsdWRlICJQYWdlR3JvdXAu
aCIKICNpbmNsdWRlICJQbHVnaW5EYXRhLmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlldy5oIgotI2lu
Y2x1ZGUgIlBsdWdpblZpZXdCYXNlLmgiCiAjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVyQXJlbmEu
aCIKQEAgLTk4OCwxNiArOTg3LDggQEAgdm9pZCBQYWdlOjpkbnNQcmVmZXRjaGluZ1N0YXRlQ2hh
bmdlZCgpCiAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5pbml0RE5TUHJlZmV0Y2goKTsKIH0K
IAotdm9pZCBQYWdlOjpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoKQordm9pZCBQYWdlOjpj
b2xsZWN0UGx1Z2luVmlld3MoVmVjdG9yPFJlZlB0cjxQbHVnaW5WaWV3QmFzZT4sIDMyPiYgcGx1
Z2luVmlld0Jhc2VzKQogewotICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IG1fc2V0
dGluZ3MtPnByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKLQotICAgIGZvciAoRnJhbWUqIGZyYW1l
ID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4
dCgpKQotICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRD
aGFuZ2UoKTsKLQotICAgIC8vIENvbGxlY3QgdGhlIFBsdWdpblZpZXdzIGluIHRvIGEgdmVjdG9y
IHRvIGVuc3VyZSB0aGF0IGFjdGlvbiB0aGUgcGx1Zy1pbiB0YWtlcwotICAgIC8vIGZyb20gYmVs
b3cgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkIGRvZXMgbm90IGFmZmVjdCB0aGVpciBsaWZl
dGltZS4KLSAgICBWZWN0b3I8UmVmUHRyPFBsdWdpblZpZXdCYXNlPiwgMzI+IHBsdWdpblZpZXdC
YXNlczsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBGcmFtZVZpZXcqIHZp
ZXcgPSBmcmFtZS0+dmlldygpOwogICAgICAgICBpZiAoIXZpZXcpCkBAIC0xMDEzLDYgKzEwMDQs
MzEgQEAgdm9pZCBQYWdlOjpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoKQogICAgICAgICAg
ICAgICAgIHBsdWdpblZpZXdCYXNlcy5hcHBlbmQoc3RhdGljX2Nhc3Q8UGx1Z2luVmlld0Jhc2Uq
Pih3aWRnZXQpKTsKICAgICAgICAgfQogICAgIH0KK30KKwordm9pZCBQYWdlOjpzdG9yYWdlQmxv
Y2tpbmdTdGF0ZUNoYW5nZWQoKQoreworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1l
KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKQorICAgICAg
ICBmcmFtZS0+ZG9jdW1lbnQoKS0+c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UoKTsKKwor
ICAgIFZlY3RvcjxSZWZQdHI8UGx1Z2luVmlld0Jhc2U+LCAzMj4gcGx1Z2luVmlld0Jhc2VzOwor
ICAgIGNvbGxlY3RQbHVnaW5WaWV3cyhwbHVnaW5WaWV3QmFzZXMpOworCisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBwbHVnaW5WaWV3QmFzZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHBsdWdp
blZpZXdCYXNlc1tpXS0+c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKCk7Cit9CisKK3ZvaWQg
UGFnZTo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKCkKK3sKKyAgICBib29sIHByaXZhdGVC
cm93c2luZ0VuYWJsZWQgPSBtX3NldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisK
KyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnBy
aXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCk7CisKKyAgICAvLyBDb2xsZWN0IHRoZSBQbHVn
aW5WaWV3cyBpbiB0byBhIHZlY3RvciB0byBlbnN1cmUgdGhhdCBhY3Rpb24gdGhlIHBsdWctaW4g
dGFrZXMKKyAgICAvLyBmcm9tIGJlbG93IHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCBkb2Vz
IG5vdCBhZmZlY3QgdGhlaXIgbGlmZXRpbWUuCisgICAgVmVjdG9yPFJlZlB0cjxQbHVnaW5WaWV3
QmFzZT4sIDMyPiBwbHVnaW5WaWV3QmFzZXM7CisgICAgY29sbGVjdFBsdWdpblZpZXdzKHBsdWdp
blZpZXdCYXNlcyk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBsdWdpblZpZXdCYXNl
cy5zaXplKCk7ICsraSkKICAgICAgICAgcGx1Z2luVmlld0Jhc2VzW2ldLT5wcml2YXRlQnJvd3Np
bmdTdGF0ZUNoYW5nZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4
IGEyMThkNWQ0Y2E1OWI1YjdhNDJkYWI0NGQ3YmVhNzQwZWU1ODM2ZTEuLjFkNTc0MGNkNzk4ZTNk
ODg1MTcxMzFhMDI4YTkzMGRhMWJmMTFiZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0yNyw2ICsyNyw3
IEBACiAjaW5jbHVkZSAiUGFnZVZpc2liaWxpdHlTdGF0ZS5oIgogI2luY2x1ZGUgIlBhZ2luYXRp
b24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgorI2luY2x1ZGUgIlBsdWdpblZpZXdC
YXNlLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIK
ICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgpAQCAtMjcxLDYgKzI3Miw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiB1c2VyU3R5bGVTaGVldCgpIGNv
bnN0OwogCiAgICAgICAgIHZvaWQgZG5zUHJlZmV0Y2hpbmdTdGF0ZUNoYW5nZWQoKTsKKyAgICAg
ICAgdm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoKTsKICAgICAgICAgdm9pZCBwcml2
YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCBzZXREZWJ1
Z2dlckZvckFsbFBhZ2VzKEpTQzo6RGVidWdnZXIqKTsKQEAgLTM1MCw2ICszNTIsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwoZG91
YmxlKTsKICAgICAgICAgZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKCkgY29uc3Q7CiAKKyAg
ICAgICAgdm9pZCBjb2xsZWN0UGx1Z2luVmlld3MoVmVjdG9yPFJlZlB0cjxQbHVnaW5WaWV3QmFz
ZT4sIDMyPiYgcGx1Z2luVmlld0Jhc2VzKTsKKwogICAgICAgICBPd25QdHI8Q2hyb21lPiBtX2No
cm9tZTsKICAgICAgICAgT3duUHRyPERyYWdDYXJldENvbnRyb2xsZXI+IG1fZHJhZ0NhcmV0Q29u
dHJvbGxlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCBmMjUxNTBiNTE2YzM5NjUz
NWMzOGJlZmNhM2NiMmEyYTY4ZmVlYTBmLi42ZjFkM2ZhMDgxZjAxMzkzZjA5MmYxNDBmNTk5NGY5
NjgyZjE1YTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAtOTMxLDYgKzkzMSwxNSBA
QCB2b2lkIFNldHRpbmdzOjpzZXRMb2FkRGVmZXJyaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiAg
ICAgbV9sb2FkRGVmZXJyaW5nRW5hYmxlZCA9IGVuYWJsZWQ7CiB9CiAKK3ZvaWQgU2V0dGluZ3M6
OnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5n
UG9saWN5IGVuYWJsZWQpCit7CisgICAgaWYgKG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ID09IGVu
YWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ID0g
ZW5hYmxlZDsKKyAgICBtX3BhZ2UtPnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCgpOworfQor
CiB2b2lkIFNldHRpbmdzOjpzZXRUaWxlZEJhY2tpbmdTdG9yZUVuYWJsZWQoYm9vbCBlbmFibGVk
KQogewogICAgIG1fdGlsZWRCYWNraW5nU3RvcmVFbmFibGVkID0gZW5hYmxlZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuaAppbmRleCA2ZmEzYmMwMjRiOGI4YzJmOWFjYzBlZDAzZDI2MTlkNDY2NTMyOTYz
Li4zOWEwYTg1MDgzYzhmMGQ5OWRjMWJhMjhjNGFkOGE0YWYyYWI0NDJiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5oCkBAIC02MDIsNyArNjAyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2b2lkIHNldFdpbmRvd0ZvY3VzUmVzdHJpY3RlZChib29sIHJlc3RyaWN0ZWQpIHsgbV93aW5k
b3dGb2N1c1Jlc3RyaWN0ZWQgPSByZXN0cmljdGVkOyB9CiAgICAgICAgIGJvb2wgd2luZG93Rm9j
dXNSZXN0cmljdGVkKCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dGb2N1c1Jlc3RyaWN0ZWQ7IH0K
IAotICAgICAgICB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShTZWN1cml0eU9yaWdpbjo6
U3RvcmFnZUJsb2NraW5nUG9saWN5IHBvbGljeSkgeyBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeSA9
IHBvbGljeTsgfQorICAgICAgICB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShTZWN1cml0
eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5KTsKICAgICAgICAgU2VjdXJpdHlPcmlnaW46
OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSBzdG9yYWdlQmxvY2tpbmdQb2xpY3koKSBjb25zdCB7IHJl
dHVybiBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeTsgfQogCiAgICAgICAgIHZvaWQgc2V0U2Nyb2xs
aW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
UGx1Z2luVmlld0Jhc2UuaAppbmRleCAzMTJkNTdjMDlkMzc4MzBiODYzYzhkMjgzOTMxZDdkMTI3
ZGQyMTY3Li5mYzdlOThlZmRiOTk2MzEyYjE3NWY0MzZiNjVjZDkxYzgzMGNkYWMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdCYXNlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oCkBAIC00OSw2ICs0OSw3IEBAIHB1Ymxp
YzoKICNlbmRpZgogCiAgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBzY3JpcHRPYmplY3QoSlND
OjpKU0dsb2JhbE9iamVjdCopIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3RvcmFn
ZUJsb2NraW5nU3RhdGVDaGFuZ2VkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHByaXZhdGVCcm93
c2luZ1N0YXRlQ2hhbmdlZChib29sKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgZ2V0Rm9ybVZhbHVl
KFN0cmluZyYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIHNjcm9sbChTY3Jv
bGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5KSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHku
Y3BwCmluZGV4IDJhZDQxZGFhNWMyYThlNTgwOGZiYmMzM2I2MzM3NTUwNTk2ZDY3ZGMuLjMxYTVk
NjFhNjVhNjYwYTlkOTQ4M2FlMDBjMTNlYmQwOTQ0MDc2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTU2
Myw2ICs1NjMsMTQgQEAgdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OmdldFBsdWdpblNjcmlw
dGFibGVOUE9iamVjdCh1aW50NjRfdCYgcGx1Z2luU2NyaXB0YWIKICAgICByZWxlYXNlTlBPYmpl
Y3QocGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0KTsKIH0KIAordm9pZCBQbHVnaW5Db250cm9sbGVy
UHJveHk6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZChib29sIGlzU3RvcmFnZUJsb2NraW5n
RW5hYmxlZCkKK3sKKyAgICBpZiAobV9zdG9yYWdlQmxvY2tpbmdFbmFibGVkICE9IGlzU3RvcmFn
ZUJsb2NraW5nRW5hYmxlZCkgeworICAgICAgICBtX3N0b3JhZ2VCbG9ja2luZ0VuYWJsZWQgPSBp
c1N0b3JhZ2VCbG9ja2luZ0VuYWJsZWQ7CisgICAgICAgIG1fcGx1Z2luLT5zdG9yYWdlQmxvY2tp
bmdTdGF0ZUNoYW5nZWQobV9zdG9yYWdlQmxvY2tpbmdFbmFibGVkKTsKKyAgICB9Cit9CisKIHZv
aWQgUGx1Z2luQ29udHJvbGxlclByb3h5Ojpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9v
bCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiB7CiAgICAgbV9pc1ByaXZhdGVCcm93c2luZ0Vu
YWJsZWQgPSBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAppbmRleCBhOWQzNWE2NjNh
NzE1NTcyNGRlYmU2MmNlYzczNjljZjNlMjA1NmNmLi5iNGE0MDY3M2VjNGM4OTEwYWJlYjdiZGEx
MGViNWNlMTQ4NTFlNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJT
aGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TZWN1
cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2Ug
Q29yZUlQQyB7CkBAIC0xNTIsNiArMTUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUxh
eWVySG9zdGluZ0NvbnRleHQoTGF5ZXJIb3N0aW5nTW9kZSk7CiAjZW5kaWYKIAorICAgIHZvaWQg
c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKGJvb2wpOwogICAgIHZvaWQgcHJpdmF0ZUJyb3dz
aW5nU3RhdGVDaGFuZ2VkKGJvb2wpOwogICAgIHZvaWQgZ2V0Rm9ybVZhbHVlKGJvb2wmIHJldHVy
blZhbHVlLCBTdHJpbmcmIGZvcm1WYWx1ZSk7CiAKQEAgLTE2Myw2ICsxNjUsNyBAQCBwcml2YXRl
OgogICAgIHVpbnQ2NF90IG1fcGx1Z2luSW5zdGFuY2VJRDsKIAogICAgIFN0cmluZyBtX3VzZXJB
Z2VudDsKKyAgICBib29sIG1fc3RvcmFnZUJsb2NraW5nRW5hYmxlZDsKICAgICBib29sIG1faXNQ
cml2YXRlQnJvd3NpbmdFbmFibGVkOwogICAgIGJvb2wgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRp
bmdFbmFibGVkOwogICAgIGJvb2wgbV9pc0luaXRpYWxpemluZzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkubWVz
c2FnZXMuaW4KaW5kZXggMzcxYmVlMjM3NzVkZGUwZmY3MjEwNDNiMzQ1MGNjYTYwNjVjOWRlYi4u
ZDdjMmQwMmIyYjEwNzYyY2UzNzc4YmI4ZGYwMmNkYzY5MjdjN2JkMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTEwNiw2ICsxMDYsOSBAQCBtZXNzYWdlcyAtPiBQbHVnaW5Db250
cm9sbGVyUHJveHkgewogICAgICMgUmV0dXJuIGEgc25hcHNob3Qgb2YgdGhlIHBsdWdpbgogICAg
IFNuYXBzaG90KCkgLT4gKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgYmFja2luZ1N0
b3JlSGFuZGxlKQogICAgIAorICAgICMgU2VudCB3aGVuIHN0b3JhZ2UgYmxvY2tpbmcgcG9saWN5
IGNoYW5nZXMKKyAgICBTdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoYm9vbCBzdG9yYWdlQmxv
Y2tpbmdFbmFibGVkKQorCiAgICAgIyBTZW50IHdoZW4gcHJpdmF0ZSBicm93c2luZyBpcyBlbmFi
bGVkIG9yIGRpc2FibGVkCiAgICAgUHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wgaXNQ
cml2YXRlQnJvd3NpbmdFbmFibGVkKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRleCAx
NWU3NjQ4ZGE2M2Y3YjM0OTIzZWQ5ODkzMDJmNDVlNTJkMTI0NzIwLi40YzU5ZGRhMzVhNzIwOTE5
ZjMwMGQ4ZGE4ZWZkMjMyMGZiOGZmZGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKQEAg
LTk1Myw4ICs5NTMsMjQgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6Y29udGVudHNTY2FsZUZhY3Rv
ckNoYW5nZWQoZmxvYXQgc2NhbGVGYWN0b3IpCiAjZW5kaWYKIH0KIAordm9pZCBOZXRzY2FwZVBs
dWdpbjo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKGJvb2wgc3RvcmFnZUJsb2NraW5nRW5h
YmxlZCkKK3sKKyAgICBpZiAobV9zdG9yYWdlQmxvY2tpbmdTdGF0ZSAhPSBzdG9yYWdlQmxvY2tp
bmdFbmFibGVkKSB7CisgICAgICAgIG1fc3RvcmFnZUJsb2NraW5nU3RhdGUgPSBzdG9yYWdlQmxv
Y2tpbmdFbmFibGVkOworICAgICAgICBlbmFjdFByaXZhdGVCcm93c2luZ1N0YXRlKCk7CisgICAg
fQorfQorCiB2b2lkIE5ldHNjYXBlUGx1Z2luOjpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQo
Ym9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKQogeworICAgIGlmIChtX3ByaXZhdGVCcm93c2lu
Z1N0YXRlICE9IHByaXZhdGVCcm93c2luZ0VuYWJsZWQpIHsKKyAgICAgICAgbV9wcml2YXRlQnJv
d3NpbmdTdGF0ZSA9IHByaXZhdGVCcm93c2luZ0VuYWJsZWQ7CisgICAgICAgIGVuYWN0UHJpdmF0
ZUJyb3dzaW5nU3RhdGUoKTsKKyAgICB9Cit9CisKK3ZvaWQgTmV0c2NhcGVQbHVnaW46OmVuYWN0
UHJpdmF0ZUJyb3dzaW5nU3RhdGUoKQorewogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CiAKICAg
ICAvLyBGcm9tIGh0dHBzOi8vd2lraS5tb3ppbGxhLm9yZy9QbHVnaW5zOlByaXZhdGVNb2RlCkBA
IC05NjIsNyArOTc4LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6cHJpdmF0ZUJyb3dzaW5nU3Rh
dGVDaGFuZ2VkKGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKICAgICAvLyAgIChhc3NpZ25l
ZCBlbnVtIHZhbHVlIDE4KSB3aXRoIGEgcG9pbnRlciB0byBhbiBOUEJvb2wgdmFsdWUgb24gYWxs
IGFwcGxpY2FibGUgaW5zdGFuY2VzLgogICAgIC8vICAgUGx1Z2lucyBzaG91bGQgY2hlY2sgdGhl
IGJvb2xlYW4gdmFsdWUgcG9pbnRlZCB0bywgbm90IHRoZSBwb2ludGVyIGl0c2VsZi4gCiAgICAg
Ly8gICBUaGUgdmFsdWUgd2lsbCBiZSB0cnVlIHdoZW4gcHJpdmF0ZSBtb2RlIGlzIG9uLgotICAg
IE5QQm9vbCB2YWx1ZSA9IHByaXZhdGVCcm93c2luZ0VuYWJsZWQ7CisgICAgTlBCb29sIHZhbHVl
ID0gbV9wcml2YXRlQnJvd3NpbmdTdGF0ZSB8fCBtX3N0b3JhZ2VCbG9ja2luZ1N0YXRlOwogICAg
IE5QUF9TZXRWYWx1ZShOUE5WcHJpdmF0ZU1vZGVCb29sLCAmdmFsdWUpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQ
bHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5oCmluZGV4IDVmOTNjNTc0NzY1ODE3ZThiYmNiOTExYmIzYzNjNGI1YzQ5YTU0
YmMuLmViMTQ0NjlmNDM0NTE0NGJjM2E1NWU3MDYxZjIyN2E0NTQ1MDg0OWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRz
Y2FwZVBsdWdpbi5oCkBAIC0yMjIsNiArMjIyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAg
dmlydHVhbCB2b2lkIGNvbnRlbnRzU2NhbGVGYWN0b3JDaGFuZ2VkKGZsb2F0KTsKKyAgICB2aXJ0
dWFsIHZvaWQgc3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKGJvb2wpOwogICAgIHZpcnR1YWwg
dm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCk7CiAgICAgdmlydHVhbCBib29s
IGdldEZvcm1WYWx1ZShTdHJpbmcmIGZvcm1WYWx1ZSk7CiAgICAgdmlydHVhbCBib29sIGhhbmRs
ZVNjcm9sbChXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFy
aXR5KTsKQEAgLTIzNyw2ICsyMzgsOCBAQCBwcml2YXRlOgogICAgIC8vIGNvbnZlcnRlZCAoaWYg
dGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCBpc24ndCBpbnZlcnRpYmxlKS4KICAgICBib29sIGNv
bnZlcnRGcm9tUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50SW5Sb290Vmll
d0Nvb3JkaW5hdGVzLCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnRJblBsdWdpbkNvb3JkaW5hdGVz
KTsKIAorICAgIHZvaWQgZW5hY3RQcml2YXRlQnJvd3NpbmdTdGF0ZSgpOworCiAjaWYgUExVR0lO
X0FSQ0hJVEVDVFVSRShXSU4pCiAgICAgc3RhdGljIEJPT0wgV0lOQVBJIGhvb2tlZFRyYWNrUG9w
dXBNZW51KEhNRU5VLCBVSU5UIHVGbGFncywgaW50IHgsIGludCB5LCBpbnQgblJlc2VydmVkLCBI
V05ELCBjb25zdCBSRUNUKik7CiAgICAgdm9pZCBzY2hlZHVsZVdpbmRvd2VkR2VvbWV0cnlVcGRh
dGUoKTsKQEAgLTMxMyw2ICszMTYsOSBAQCBwcml2YXRlOgogICAgIFRpbWVyTWFwIG1fdGltZXJz
OwogICAgIHVuc2lnbmVkIG1fbmV4dFRpbWVySUQ7CiAKKyAgICBib29sIG1fcHJpdmF0ZUJyb3dz
aW5nU3RhdGU7CisgICAgYm9vbCBtX3N0b3JhZ2VCbG9ja2luZ1N0YXRlOworCiAjaWYgUExVR0lO
X0FSQ0hJVEVDVFVSRShNQUMpCiAgICAgTlBEcmF3aW5nTW9kZWwgbV9kcmF3aW5nTW9kZWw7CiAg
ICAgTlBFdmVudE1vZGVsIG1fZXZlbnRNb2RlbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaAppbmRleCA5Y2NkODA0MDAz
N2U4MDA5MWY5ODU2YTNlZDM5MmMzNjZhMGFhZjMyLi5hYWRhNWVmODE1NWE2NTI4NGNkZTM2ZWIz
Njc4NmFiMDZkZDgwMGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL0J1aWx0SW5QREZWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5oCkBAIC0xMTMsNiArMTEzLDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3RpbmdNb2Rl
KSBPVkVSUklERTsKICNlbmRpZgogCisgICAgdmlydHVhbCB2b2lkIHN0b3JhZ2VCbG9ja2luZ1N0
YXRlQ2hhbmdlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVD
aGFuZ2VkKGJvb2wpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRGb3JtVmFsdWUoU3RyaW5nJiBmb3Jt
VmFsdWUpOwogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsRGly
ZWN0aW9uLCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3Lm1tIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5tbQppbmRleCBm
ZTdmMjU4YjBhNDlmMjllYzg2OWU0NmZjNjk1NzAxZDI2N2VlZGFlLi5kMzc2NWRlNjhkNTMwZjQ4
OTliMjMxNWU1ODA0MjlmNTI4ODgzODFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcubW0KQEAgLTY2MCw2ICs2NjAs
MTAgQEAgdm9pZCBCdWlsdEluUERGVmlldzo6c2V0TGF5ZXJIb3N0aW5nTW9kZShMYXllckhvc3Rp
bmdNb2RlKQogCiAjZW5kaWYKIAordm9pZCBCdWlsdEluUERGVmlldzo6c3RvcmFnZUJsb2NraW5n
U3RhdGVDaGFuZ2VkKGJvb2wpCit7Cit9CisKIHZvaWQgQnVpbHRJblBERlZpZXc6OnByaXZhdGVC
cm93c2luZ1N0YXRlQ2hhbmdlZChib29sKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbi5oCmluZGV4IGI5MTE3NGY5ZWI3YzI3ZWYzYjJmZWU4YjI0NDBhZjll
NDE4MTdjZWMuLmY4MzYzZGM5MGVjNjZlZDNkNGIxNTBjOWRhMmJjM2UzNjY2ZmU3YWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0tVUkwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbFR5cGVzLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5j
bHVkZSA8d3RmL1JldGFpblB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTIxOCw2
ICsyMTksOSBAQCBwdWJsaWM6CiAgICAgLy8gVGVsbHMgdGhlIHBsdWctaW4gYWJvdXQgc2NhbGUg
ZmFjdG9yIGNoYW5nZXMuCiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRzU2NhbGVGYWN0b3JDaGFu
Z2VkKGZsb2F0KSA9IDA7CiAKKyAgICAvLyBDYWxsZWQgd2hlbiB0aGUgc3RvcmFnZSBibG9ja2lu
ZyBwb2xpY3kgZm9yIHRoaXMgcGx1Zy1pbiBjaGFuZ2VzLgorICAgIHZpcnR1YWwgdm9pZCBzdG9y
YWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoYm9vbCkgPSAwOworCiAgICAgLy8gQ2FsbGVkIHdoZW4g
dGhlIHByaXZhdGUgYnJvd3Npbmcgc3RhdGUgZm9yIHRoaXMgcGx1Zy1pbiBjaGFuZ2VzLgogICAg
IHZpcnR1YWwgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCkgPSAwOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcApp
bmRleCBlMzgwZWVmOTRmMzU3ZTAyOTFlZWM4M2U2OTRjYmY5OGZkMGFkNDBhLi5kOWIwYzU2ZmQ1
ZDIxODZkZTgyZTIxODEyN2YxN2E2NDA0YzhhYTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKQEAgLTQ2MCw2ICs0NjAsMTEgQEAg
dm9pZCBQbHVnaW5Qcm94eTo6Y29udGVudHNTY2FsZUZhY3RvckNoYW5nZWQoZmxvYXQgc2NhbGVG
YWN0b3IpCiAgICAgZ2VvbWV0cnlEaWRDaGFuZ2UoKTsKIH0KIAordm9pZCBQbHVnaW5Qcm94eTo6
c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKGJvb2wgaXNTdG9yYWdlQmxvY2tpbmdFbmFibGVk
KQoreworICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVn
aW5Db250cm9sbGVyUHJveHk6OlN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZChpc1N0b3JhZ2VC
bG9ja2luZ0VuYWJsZWQpLCBtX3BsdWdpbkluc3RhbmNlSUQpOworfQorCiB2b2lkIFBsdWdpblBy
b3h5Ojpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCBpc1ByaXZhdGVCcm93c2luZ0Vu
YWJsZWQpCiB7CiAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6
OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6UHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGlzUHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IGMwY2ExMTZiMDdl
OTg0ZDdiMDA3NGRkOGU4MTYzMDVjZWZjMzViYjYuLjRiYmU0Njg2ZmZhNjBlNGVjMzQwNDI5YTdm
YTcyMDIzOWMwZGRiN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm94eS5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiUGx1Z2luLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9BZmZpbmVUcmFuc2Zvcm0uaD4KICNpbmNsdWRlIDxXZWJDb3JlL0lu
dFJlY3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAKICNpZiBQTEFU
Rk9STShNQUMpCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpAQCAtMTEyLDYgKzExMyw3IEBA
IHByaXZhdGU6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1NjYWxlRmFjdG9y
Q2hhbmdlZChmbG9hdCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hh
bmdlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2Vk
KGJvb2wpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRGb3JtVmFsdWUoU3RyaW5nJiBmb3JtVmFsdWUp
OwogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVTY3JvbGwoV2ViQ29yZTo6U2Nyb2xsRGlyZWN0aW9u
LCBXZWJDb3JlOjpTY3JvbGxHcmFudWxhcml0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggMGEwYzZiNjNkZDJiNjY3MzRiY2Jk
Mjc4MzJmZWQxNTg5YmE5ZWQxMi4uZDBiOGI0ZWI1NjA3ZWRhNzFmMDZiZWYzZWZlMDdiNzZhNTE1
ZjFhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcApAQCAtNTgxLDEzICs1ODEsMjEgQEAgSlNPYmplY3QqIFBsdWdpblZpZXc6OnNjcmlw
dE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogI2VuZGlmCiB9CiAKLXZvaWQg
UGx1Z2luVmlldzo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wgcHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCkKK3ZvaWQgUGx1Z2luVmlldzo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2Vk
KCkKIHsKICAgICAvLyBUaGUgcGx1Zy1pbiBjYW4gYmUgbnVsbCBoZXJlIGlmIGl0IGZhaWxlZCB0
byBpbml0aWFsaXplLgogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFwcml2YXRlQnJvd3NpbmdFbmFibGVkICYmICFmcmFt
ZSgpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NQbHVnaW5TdG9yYWdl
KGZyYW1lKCktPnRyZWUoKS0+dG9wKCktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQor
ICAgIGJvb2wgc3RvcmFnZUJsb2NraW5nUG9saWN5ID0gIWZyYW1lKCktPmRvY3VtZW50KCktPnNl
Y3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc1BsdWdpblN0b3JhZ2UoZnJhbWUoKS0+dHJlZSgpLT50
b3AoKS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisKKyAgICBtX3BsdWdpbi0+c3Rv
cmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKHN0b3JhZ2VCbG9ja2luZ1BvbGljeSk7Cit9CisKK3Zv
aWQgUGx1Z2luVmlldzo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wgcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCkKK3sKKyAgICAvLyBUaGUgcGx1Zy1pbiBjYW4gYmUgbnVsbCBoZXJlIGlm
IGl0IGZhaWxlZCB0byBpbml0aWFsaXplLgorICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFt
X3BsdWdpbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wbHVnaW4tPnByaXZhdGVCcm93c2lu
Z1N0YXRlQ2hhbmdlZChwcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IGQxZDk4NTM2MzM4Njg2YjM1
ZDlhNDg4OTkyYmIwYTM1Zjk2YmFmOWQuLjljYzI1N2E5ODA2NDQ1OTkyNzJjYmYyNjAwNjVkY2My
ZTM3YTJlODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuaApAQCAtMTA5LDYgKzEwOSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBQbGF0Zm9y
bUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Q7CiAjZW5kaWYKICAgICB2aXJ0dWFsIEpTQzo6
SlNPYmplY3QqIHNjcmlwdE9iamVjdChKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdmlydHVh
bCB2b2lkIHN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBw
cml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCk7CiAgICAgdmlydHVhbCBib29sIGdldEZv
cm1WYWx1ZShTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsKFdlYkNvcmU6OlNjcm9s
bERpcmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xsR3JhbnVsYXJpdHkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIu
ZGVmCmluZGV4IDhlNTYwOTFiNTg3MTI2NjY4YzBjODQwZWVhNmU1ZGYzMDlkMjUzNDIuLmVhMTY3
OGE1ZGI4M2M5OTU3MGI5MWUwMjY3ODU2ZjA1NGFkNGVjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5k
ZWYKQEAgLTIzMSw2ICsyMzEsNyBAQCBFWFBPUlRTCiAgICAgICAgID9zZXRTY3JvbGxPZmZzZXRG
cm9tSW50ZXJuYWxzQFNjcm9sbGFibGVBcmVhQFdlYkNvcmVAQFFBRVhBQlZJbnRQb2ludEAyQEBa
CiAgICAgICAgID9zZXRTZXJpZkZvbnRGYW1pbHlAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWEFCVkF0
b21pY1N0cmluZ0BXVEZAQFc0VVNjcmlwdENvZGVAQEBaCiAgICAgICAgID9zZXRTdGFuZGFyZEZv
bnRGYW1pbHlAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWEFCVkF0b21pY1N0cmluZ0BXVEZAQFc0VVNj
cmlwdENvZGVAQEBaCisgICAgICAgID9zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3lAU2V0dGluZ3NA
V2ViQ29yZUBAUUFFWFc0U3RvcmFnZUJsb2NraW5nUG9saWN5QFNlY3VyaXR5T3JpZ2luQDJAQFoK
ICAgICAgICAgP3NldFN1Z2dlc3RlZFZhbHVlQEhUTUxJbnB1dEVsZW1lbnRAV2ViQ29yZUBAUUFF
WEFCVlN0cmluZ0BXVEZAQEBaCiAgICAgICAgID9zZXRFZGl0aW5nVmFsdWVASFRNTElucHV0RWxl
bWVudEBXZWJDb3JlQEBRQUVYQUJWU3RyaW5nQFdURkBAQFoKICAgICAgICAgP3NldHRpbmdzQERv
Y3VtZW50QFdlYkNvcmVAQFFCRVBBVlNldHRpbmdzQDJAWFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9h
dXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVy
CmluZGV4IGE5MThjOGNiMjkwMTgyYjM5MWJhNmQyZjk5NmU4NWIyZTQwOGE4NDMuLjU0MWQ2NGNl
ZWE0NjYwOTJkNjJhYWRiYmY3NDBlNjZhMTlhOWQ4ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRv
dG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRl
cgpAQCAtMTUzLDYgKzE1Myw3IEBAIF9aTjdXZWJDb3JlOFNldHRpbmdzMjFzZXRTdGFuZGFyZEZv
bnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5nRTExVVNjcmlwdENvZGU7CiBfWk43V2ViQ29y
ZThTZXR0aW5nczIyc2V0U2Fuc1NlcmlmRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdF
MTFVU2NyaXB0Q29kZTsKIF9aTjdXZWJDb3JlOFNldHRpbmdzMjNzZXRQaWN0b2dyYXBoRm9udEZh
bWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZTsKIF9aTjdXZWJDb3JlOFNl
dHRpbmdzMjRzZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWRFYjsKK19aTjdXZWJDb3JlOFNldHRpbmdz
MjRzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3lFTlNfMTRTZWN1cml0eU9yaWdpbjIxU3RvcmFnZUJs
b2NraW5nUG9saWN5RTsKIF9aTjdXZWJDb3JlOFNldHRpbmdzMzdzZXRGaXhlZEVsZW1lbnRzTGF5
b3V0UmVsYXRpdmVUb0ZyYW1lRWI7CiBfWk43V2ViQ29yZTlGcmFtZVZpZXcxN3BhaW50Q29udHJv
bFRpbnRzRXY7CiBfWk43V2ViQ29yZTlGcmFtZVZpZXcxOXNjcm9sbEVsZW1lbnRUb1JlY3RFUE5T
XzdFbGVtZW50RVJLTlNfN0ludFJlY3RFOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGExODFkZjcyYWJiMmU1ODFkZjRkNzc3
NTkxM2Y2NzkzZjA0NzZiNGUuLjZhZjcxMjAzYTdjNjkzYWJiY2Y2MDcyZDM0NTRmNzM0NDAxODBm
NGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxMi0wOS0xMyAgSmVmZnJleSBQZmF1ICA8anBm
YXVAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IHRoaXJkLXBhcnR5IHN0b3JhZ2UgYmxvY2tp
bmcgc2V0dGluZyB0byBjaGFuZ2Ugd2hpbGUgYSBwYWdlIGlzIGxvYWRlZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3OTAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0ZWQgY29tYmluYXRpb25zIG9m
IGxvb3NlbmluZyBhbmQgc3RyZW5ndGhlbmluZyB0aGUgc3RvcmFnZSBibG9ja2luZyBwb2xpY3kg
b24gdmFyaW91cyB0eXBlcyBvZiBzdG9yYWdlLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5nLWNoYW5nZWQtbG9jYWwt
c3RvcmFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291
cmNlcy9pZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC1zaGFyZWQtd29ya2VyLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFt
ZS1mb3Itc3RvcmFnZS1ibG9ja2luZy1jaGFuZ2VkLXdlYnNxbC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtbG9jYWwt
c3RvcmFnZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJp
dHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1w
bHVnaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtcGx1Z2luLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wcml2YXRlLWJy
b3dzaW5nLXBsdWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMv
c2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wcml2YXRlLWJyb3dzaW5nLXBsdWdp
bi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxv
Y2tpbmctbG9vc2VuZWQtc2hhcmVkLXdvcmtlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1zaGFyZWQt
d29ya2VyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFn
ZS1ibG9ja2luZy1sb29zZW5lZC13ZWJzcWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtd2Vic3FsLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2lu
Zy1zdHJlbmd0aGVuZWQtbG9jYWwtc3RvcmFnZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtbG9j
YWwtc3RvcmFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0
b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXBsdWdpbi1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVu
ZWQtcGx1Z2luLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3Rv
cmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcHJpdmF0ZS1icm93c2luZy1wbHVnaW4tZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxv
Y2tpbmctc3RyZW5ndGhlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVu
ZWQtc2hhcmVkLXdvcmtlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtc2hhcmVkLXdvcmtlci5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tp
bmctc3RyZW5ndGhlbmVkLXdlYnNxbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtd2Vic3FsLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6
IFNraXAgc2hhcmVkIHdvcmtlciBhbmQgcGx1Z2luIHRlc3RzLgorICAgICAgICAqIHBsYXRmb3Jt
L21hYy13azIvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5l
ZC1wbHVnaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2sy
L2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcHJpdmF0
ZS1icm93c2luZy1wbHVnaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMi0wOS0wNiAgSmVm
ZnJleSBQZmF1ICA8anBmYXVAYXBwbGUuY29tPgogCiAgICAgICAgIEV4dGVuZCB0aGlyZC1wYXJ0
eSBzdG9yYWdlIGJsb2NraW5nIEFQSSB0byBvcHRpb25hbGx5IGFsbG93IGJsb2NraW5nIGFsbCBz
dG9yYWdlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291
cmNlcy9pZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC1sb2NhbC1zdG9yYWdlLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9pZnJhbWUtZm9y
LXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC1sb2NhbC1zdG9yYWdlLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTIwMzcxOTYwMjc2MzA4MGVmYmRjNjk2YTQyMGU4MDQwZjA4MGM3ZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1mb3It
c3RvcmFnZS1ibG9ja2luZy1jaGFuZ2VkLWxvY2FsLXN0b3JhZ2UuaHRtbApAQCAtMCwwICsxLDM1
IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisJ
dmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7CisJbm9kZS50ZXh0Q29udGVu
dCA9IG1lc3NhZ2U7CisJZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChub2RlKTsKK30KKword2lu
ZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworCXRyeSB7CisJCXZhciBsID0gd2luZG93LmxvY2Fs
U3RvcmFnZTsKKwkJbCA9IG51bGw7CisJCWxvZygnTm8gZXhjZXB0aW9uJyk7CisJfSBjYXRjaCAo
ZXhjZXB0aW9uKSB7CisJCWxvZyhleGNlcHRpb24ubmFtZSk7CisJfQorfQorCit3aW5kb3cub25t
ZXNzYWdlID0gZnVuY3Rpb24oZSkgeworCXRyeSB7CisJCXZhciBsID0gd2luZG93LmxvY2FsU3Rv
cmFnZTsKKwkJbCA9IG51bGw7CisJCWxvZygnTm8gZXhjZXB0aW9uJyk7CisJCXdpbmRvdy5wYXJl
bnQucG9zdE1lc3NhZ2UoJ05vIGV4Y2VwdGlvbicsICcqJyk7CisJfSBjYXRjaCAoZXhjZXB0aW9u
KSB7CisJCWxvZyhleGNlcHRpb24ubmFtZSk7CisJCXdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2Uo
ZXhjZXB0aW9uLm5hbWUsICcqJyk7CisJfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9ja2luZy1jaGFuZ2VkLXNoYXJl
ZC13b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2Vz
L2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9ja2luZy1jaGFuZ2VkLXNoYXJlZC13b3JrZXIuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zN2JhMTlkMTcwZWI0YTAwODcwNzljZDg3ZGI0NTk2YTA3NDQ4MmYzCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMv
aWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5nLWNoYW5nZWQtc2hhcmVkLXdvcmtlci5odG1sCkBA
IC0wLDAgKzEsNDEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1l
c3NhZ2UpIHsKKwl2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTsKKwlub2Rl
LnRleHRDb250ZW50ID0gbWVzc2FnZTsKKwlkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG5vZGUp
OworfQorCitmdW5jdGlvbiBjcmVhdGVXb3JrZXIoKSB7CisJdmFyIHdvcmtlciA9IG5ldyBTaGFy
ZWRXb3JrZXIoJ3NoYXJlZC13b3JrZXIuanMnLCAnU2hhcmVkV29ya2VyJyk7CisJd29ya2VyLnBv
cnQub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKKwkJbG9nKGV2ZW50LmRhdGEpOworCQl3
aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKGV2ZW50LmRhdGEsICcqJyk7CisJfQorCXdvcmtlci5w
b3J0LnN0YXJ0KCk7CisJd29ya2VyLnBvcnQucG9zdE1lc3NhZ2UoJ0Nvbm5lY3Rpb24gdGVzdCcp
OworfQorCit3aW5kb3cub25sb2FkID0gZnVuY3Rpb24oKSB7CisJdHJ5IHsKKwkJY3JlYXRlV29y
a2VyKGZhbHNlKTsKKwl9IGNhdGNoIChleGNlcHRpb24pIHsKKwkJbG9nKGV4Y2VwdGlvbi5uYW1l
KTsKKwkJd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZShleGNlcHRpb24ubmFtZSwgJyonKTsKKwl9
Cit9CisKK3dpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7CisJdHJ5IHsKKwkJY3JlYXRl
V29ya2VyKHRydWUpOworCX0gY2F0Y2ggKGV4Y2VwdGlvbikgeworCQlsb2coZXhjZXB0aW9uLm5h
bWUpOworCQl3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKGV4Y2VwdGlvbi5uYW1lLCAnKicpOwor
CX0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9pZnJhbWUt
Zm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC13ZWJzcWwuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9ja2luZy1j
aGFuZ2VkLXdlYnNxbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk0NTM4YmJiZTgwODgzODAwZmE2OTIzNmI5
ZGRhZjBlY2UzZGM3ODkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3Jlc291cmNlcy9pZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC13
ZWJzcWwuaHRtbApAQCAtMCwwICsxLDM1IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1
bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisJdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdwJyk7CisJbm9kZS50ZXh0Q29udGVudCA9IG1lc3NhZ2U7CisJZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZChub2RlKTsKK30KKword2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworCXRyeSB7
CisJCXZhciBzcWwgPSB3aW5kb3cub3BlbkRhdGFiYXNlKCd0ZXN0ZGInLCAnMS4wJywgJ1Rlc3Rp
bmcgZGF0YWJhc2UnLCA1MTIgKiAxMDI0KTsKKwkJc3FsID0gbnVsbDsKKwkJbG9nKCdObyBleGNl
cHRpb24nKTsKKwl9IGNhdGNoIChleGNlcHRpb24pIHsKKwkJbG9nKGV4Y2VwdGlvbi5uYW1lKTsK
Kwl9Cit9CisKK3dpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7CisJdHJ5IHsKKwkJdmFy
IHNxbCA9IHdpbmRvdy5vcGVuRGF0YWJhc2UoJ3Rlc3RkYicsICcxLjAnLCAnVGVzdGluZyBkYXRh
YmFzZScsIDUxMiAqIDEwMjQpOworCQlzcWwgPSBudWxsOworCQlsb2coJ05vIGV4Y2VwdGlvbicp
OworCQl3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKCdObyBleGNlcHRpb24nLCAnKicpOworCX0g
Y2F0Y2ggKGV4Y2VwdGlvbikgeworCQlsb2coZXhjZXB0aW9uLm5hbWUpOworCQl3aW5kb3cucGFy
ZW50LnBvc3RNZXNzYWdlKGV4Y2VwdGlvbi5uYW1lLCAnKicpOworCX0KK30KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtbG9jYWwtc3Rv
cmFnZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3Jh
Z2UtYmxvY2tpbmctbG9vc2VuZWQtbG9jYWwtc3RvcmFnZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYTNlYjkzMzE4NzgwM2VlNWU0Yjc3MzQzN2E2MDdmYTkzNzQ2N2NhMQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1s
b29zZW5lZC1sb2NhbC1zdG9yYWdlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEwIEBACitUaGlz
IGlmcmFtZSBzaG91bGQgcmV0dXJuIG9ubHkgb25lIHNlY3VyaXR5IGVycm9yOgorCisKKworLS0t
LS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0t
LQorU0VDVVJJVFlfRVJSCisKK05vIGV4Y2VwdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLWxvY2FsLXN0b3Jh
Z2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2lu
Zy1sb29zZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjU5ZGIwZTkwOTE3MDc3
NzcyZmFjZjk5NGM0ZTdkNTk3ZmE5ZGUxZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1sb2NhbC1zdG9y
YWdlLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKwl0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKwl0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKwl0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgp
OworfQorCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0
b3JhZ2VCbG9ja2luZ1BvbGljeSgnQmxvY2tBbGwnKTsKKworZnVuY3Rpb24gZGVjcmVtZW50KCkg
eworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikKKwkJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3Jh
Z2VCbG9ja2luZ1BvbGljeSgnQWxsb3dBbGwnKTsKKwlmb3IgKHZhciBpID0gMDsgaSA8IHdpbmRv
dy5mcmFtZXMubGVuZ3RoOyArK2kpCisJCXdpbmRvdy5mcmFtZXNbaV0ucG9zdE1lc3NhZ2UoJ2Js
b2NrZWQnLCAnKicpOworfQorCit3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CisJaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworCX0KK30K
Kzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQgcmV0dXJu
IG9ubHkgb25lIHNlY3VyaXR5IGVycm9yOjwvcD4KKzxpZnJhbWUgc3JjPSJodHRwOi8vMTI3LjAu
MC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9ja2luZy1j
aGFuZ2VkLWxvY2FsLXN0b3JhZ2UuaHRtbCIgb25sb2FkPSJkZWNyZW1lbnQoKSI+PC9pZnJhbWU+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtcGx1Z2luLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1w
bHVnaW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI5OGVlNGY4ZTg1MzdjNjY0ZTIyMmUzYjFl
Nzk1OTEwMjU2YTk2ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtcGx1Z2luLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDggQEAKK1RoaXMgaWZyYW1lIHNob3VsZCBub3QgaGF2ZSBwcml2YXRlIGJyb3dz
aW5nIGVuYWJsZWQ6CisKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEt
LWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXBsdWdpbi5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3Nl
bmVkLXBsdWdpbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiMGQyNGYyMmRhYTQwZTZjMTA1OTdjMDdlNTM1
Y2RiMzkzNjkzMDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtcGx1Z2luLmh0bWwKQEAgLTAsMCArMSwz
MSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
Kwl0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsK
Kwl0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworfQorCitpZiAod2luZG93LnRl
c3RSdW5uZXIpCisJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeSgn
QmxvY2tBbGwnKTsKKworZnVuY3Rpb24gZGVjcmVtZW50KCkgeworCWlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKwkJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeSgnQWxs
b3dBbGwnKTsKKwlmb3IgKHZhciBpID0gMDsgaSA8IHdpbmRvdy5mcmFtZXMubGVuZ3RoOyArK2kp
CisJCXdpbmRvdy5mcmFtZXNbaV0ucG9zdE1lc3NhZ2UoJ2Jsb2NrZWQnLCAnKicpOworfQorCit3
aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CisJaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworCX0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQgbm90IGhhdmUgcHJpdmF0ZSBicm93c2luZyBl
bmFibGVkOjwvcD4KKzxpZnJhbWUgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkv
cmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLXBsdWdpbi1hc3luYy5odG1sIiBvbmxv
YWQ9ImRlY3JlbWVudCgpIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5l
ZC1wcml2YXRlLWJyb3dzaW5nLXBsdWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtcHJpdmF0ZS1icm93c2lu
Zy1wbHVnaW4tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwOWU3YjZkZDY2NDYxZDIyYmI1ZTA4
YTYyYzY1MWQ1ZTViMzg4NjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtcHJpdmF0ZS1icm93c2luZy1w
bHVnaW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIGhh
dmUgcHJpdmF0ZSBicm93c2luZyBlbmFibGVkOgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEt
LWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQordHJ1ZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3Nl
bmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtcHJpdmF0ZS1icm93c2luZy1wbHVn
aW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi44ZmEzYzc4MTI1NGFjOWJlYWY1NDc3MWU2YjM0Y2M4NDg3MjQy
OWFiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9z
dG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLmh0bWwKQEAg
LTAsMCArMSwzMiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKwl0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKwl0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKwl0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworCWludGVybmFs
cy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0Jsb2NrQWxsJyk7Cit9CisKK2Z1
bmN0aW9uIGRlY3JlbWVudCgpIHsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwkJdGVzdFJ1
bm5lci5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKHRydWUpOworCQlpbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdBbGxvd0FsbCcpOworCX0KKwlmb3IgKHZhciBp
ID0gMDsgaSA8IHdpbmRvdy5mcmFtZXMubGVuZ3RoOyArK2kpCisJCXdpbmRvdy5mcmFtZXNbaV0u
cG9zdE1lc3NhZ2UoJ2Jsb2NrZWQnLCAnKicpOworfQorCit3aW5kb3cub25tZXNzYWdlID0gZnVu
Y3Rpb24oKSB7CisJaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJCXRlc3RSdW5uZXIubm90aWZ5
RG9uZSgpOworCQl0ZXN0UnVubmVyLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoZmFsc2UpOwor
CX0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQg
aGF2ZSBwcml2YXRlIGJyb3dzaW5nIGVuYWJsZWQ6PC9wPgorPGlmcmFtZSBzcmM9Imh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3It
cGx1Z2luLWFzeW5jLmh0bWwiIG9ubG9hZD0iZGVjcmVtZW50KCkiPjwvaWZyYW1lPgorPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9z
dG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXNoYXJlZC13b3JrZXItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXNo
YXJlZC13b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwMTJhMzBiOWMxYjliZGUwNzkz
MzA1NWYzODIwODEyZWRiOTViN2YKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtc2hhcmVkLXdvcmtlci1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIHJldHVybiBv
bmx5IG9uZSBzZWN1cml0eSBlcnJvcjoKKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFt
ZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK1NFQ1VSSVRZX0VSUgorCitDb25u
ZWN0ZWQgc3VjY2Vzc2Z1bGx5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtc2hhcmVkLXdvcmtlci5odG1sIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXNo
YXJlZC13b3JrZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wODU0YTQ4MmFlYzdkODZkOGNkZmVjMjBmNzVi
M2IyOGUzYzJmYjYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXNoYXJlZC13b3JrZXIuaHRtbApAQCAt
MCwwICsxLDMxIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworCXRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCXRlc3RSdW5uZXIuZHVtcEFz
VGV4dCgpOworCXRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikKKwlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5n
UG9saWN5KCdCbG9ja0FsbCcpOworCit3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CisJ
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJs
b2NraW5nUG9saWN5KCdBbGxvd0FsbCcpOworCWZvciAodmFyIGkgPSAwOyBpIDwgd2luZG93LmZy
YW1lcy5sZW5ndGg7ICsraSkKKwkJd2luZG93LmZyYW1lc1tpXS5wb3N0TWVzc2FnZSgnYmxvY2tl
ZCcsICcqJyk7CisKKwl3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CisJCWlmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworCQkJdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisJCX0KKwl9Cit9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyBpZnJhbWUgc2hvdWxkIHJldHVy
biBvbmx5IG9uZSBzZWN1cml0eSBlcnJvcjo8L3A+Cis8aWZyYW1lIHNyYz0iaHR0cDovLzEyNy4w
LjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9pZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmct
Y2hhbmdlZC1zaGFyZWQtd29ya2VyLmh0bWwiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2Nr
aW5nLWxvb3NlbmVkLXdlYnNxbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtd2Vic3FsLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hM2ViOTMzMTg3ODAzZWU1ZTRiNzczNDM3YTYwN2ZhOTM3NDY3Y2ExCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJs
b2NraW5nLWxvb3NlbmVkLXdlYnNxbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGhp
cyBpZnJhbWUgc2hvdWxkIHJldHVybiBvbmx5IG9uZSBzZWN1cml0eSBlcnJvcjoKKworCisKKy0t
LS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0t
LS0KK1NFQ1VSSVRZX0VSUgorCitObyBleGNlcHRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC13ZWJzcWwuaHRt
bCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29z
ZW5lZC13ZWJzcWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDJjM2IzY2FkYzBkMmZlYWZjMDRkZWU3ZWZi
YjYyZWU1NzY2OWExCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXdlYnNxbC5odG1sCkBAIC0wLDAgKzEs
MzEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7
CisJdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisJdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK30KKworaWYgKHdpbmRvdy50
ZXN0UnVubmVyKQorCWludGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3ko
J0Jsb2NrQWxsJyk7CisKK2Z1bmN0aW9uIGRlY3JlbWVudCgpIHsKKwlpZiAod2luZG93LnRlc3RS
dW5uZXIpCisJCWludGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0Fs
bG93QWxsJyk7CisJZm9yICh2YXIgaSA9IDA7IGkgPCB3aW5kb3cuZnJhbWVzLmxlbmd0aDsgKytp
KQorCQl3aW5kb3cuZnJhbWVzW2ldLnBvc3RNZXNzYWdlKCdibG9ja2VkJywgJyonKTsKK30KKwor
d2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKCkgeworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikg
eworCQl0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHA+VGhpcyBpZnJhbWUgc2hvdWxkIHJldHVybiBvbmx5IG9uZSBzZWN1cml0eSBl
cnJvcjo8L3A+Cis8aWZyYW1lIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jl
c291cmNlcy9pZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC13ZWJzcWwuaHRtbCIg
b25sb2FkPSJkZWNyZW1lbnQoKSI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3Ry
ZW5ndGhlbmVkLWxvY2FsLXN0b3JhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1sb2NhbC1zdG9yYWdl
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNDAwODNmZDZmNGY5Yjk1NGE3OTM0MzEwZDdhNTU0
NmQ0NmMyMzkwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1sb2NhbC1zdG9yYWdlLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDEwIEBACitUaGlzIGlmcmFtZSBzaG91bGQgcmV0dXJuIG9ubHkgb25l
IHNlY3VyaXR5IGVycm9yOgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAv
LzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorTm8gZXhjZXB0aW9uCisKK05vIGV4Y2VwdGlv
bgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJs
b2NraW5nLXN0cmVuZ3RoZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLWxvY2FsLXN0b3Jh
Z2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kNDlmNDFlOTVhZDZmNWMwZWRiZDM1NWY1N2Q4MzM0N2Y1NjBj
YmEyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9z
dG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWwKQEAgLTAsMCAr
MSwyOSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKwl0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKwl0ZXN0UnVubmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworfQorCitmdW5jdGlvbiBk
ZWNyZW1lbnQoKSB7CisJaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCQlpbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdCbG9ja0FsbCcpOworCWZvciAodmFyIGkgPSAw
OyBpIDwgd2luZG93LmZyYW1lcy5sZW5ndGg7ICsraSkKKwkJd2luZG93LmZyYW1lc1tpXS5wb3N0
TWVzc2FnZSgnYmxvY2tlZCcsICcqJyk7Cit9CisKK3dpbmRvdy5vbm1lc3NhZ2UgPSBmdW5jdGlv
bigpIHsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwkJaW50ZXJuYWxzLnNldHRpbmdzLnNl
dFN0b3JhZ2VCbG9ja2luZ1BvbGljeSgnQWxsb3dBbGwnKTsKKwkJdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7CisJfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaWZyYW1l
IHNob3VsZCByZXR1cm4gb25seSBvbmUgc2VjdXJpdHkgZXJyb3I6PC9wPgorPGlmcmFtZSBzcmM9
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9y
YWdlLWJsb2NraW5nLWNoYW5nZWQtbG9jYWwtc3RvcmFnZS5odG1sIiBvbmxvYWQ9ImRlY3JlbWVu
dCgpIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcGx1Z2lu
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1i
bG9ja2luZy1zdHJlbmd0aGVuZWQtcGx1Z2luLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NGQ4
ZWNlZmE3ZTM4NzEzZDQ0N2VjODQzYmVhMTIxNDQ0YTJjOGFlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3Ro
ZW5lZC1wbHVnaW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGhpcyBpZnJhbWUgc2hv
dWxkIGhhdmUgcHJpdmF0ZSBicm93c2luZyBlbmFibGVkOgorCisKKworLS0tLS0tLS0KK0ZyYW1l
OiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorZmFsc2UKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2lu
Zy1zdHJlbmd0aGVuZWQtcGx1Z2luLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXBsdWdpbi5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE5MGU2ODNmZDM1MGQ1ZTUzN2I3OWNiOWZhMzA2NDhkZjdiZDZiNzEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3Ry
ZW5ndGhlbmVkLXBsdWdpbi5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisJdGVzdFJ1bm5lci5kdW1wQ2hpbGRG
cmFtZXNBc1RleHQoKTsKK30KKworZnVuY3Rpb24gZGVjcmVtZW50KCkgeworCWlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKwkJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGlj
eSgnQmxvY2tBbGwnKTsKKwlmb3IgKHZhciBpID0gMDsgaSA8IHdpbmRvdy5mcmFtZXMubGVuZ3Ro
OyArK2kpCisJCXdpbmRvdy5mcmFtZXNbaV0ucG9zdE1lc3NhZ2UoJ2Jsb2NrZWQnLCAnKicpOwor
fQorCit3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CisJaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisJCWludGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0Fs
bG93QWxsJyk7CisJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworCX0KK30KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQgaGF2ZSBwcml2YXRlIGJyb3dz
aW5nIGVuYWJsZWQ6PC9wPgorPGlmcmFtZSBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1
cml0eS9yZXNvdXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3ItcGx1Z2luLWFzeW5jLmh0bWwi
IG9ubG9hZD0iZGVjcmVtZW50KCkiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0
cmVuZ3RoZW5lZC1wcml2YXRlLWJyb3dzaW5nLXBsdWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXBy
aXZhdGUtYnJvd3NpbmctcGx1Z2luLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45NGQ4ZWNlZmE3
ZTM4NzEzZDQ0N2VjODQzYmVhMTIxNDQ0YTJjOGFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1w
cml2YXRlLWJyb3dzaW5nLXBsdWdpbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUaGlz
IGlmcmFtZSBzaG91bGQgaGF2ZSBwcml2YXRlIGJyb3dzaW5nIGVuYWJsZWQ6CisKKworCistLS0t
LS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0t
CitmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9y
YWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wcml2YXRlLWJyb3dzaW5nLXBsdWdpbi5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3Ro
ZW5lZC1wcml2YXRlLWJyb3dzaW5nLXBsdWdpbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU4OWM5ODIyY2Nj
MTBhZmQxNTcxNWQzYjlmM2U1OTcxYjhkODZlODIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXBy
aXZhdGUtYnJvd3NpbmctcGx1Z2luLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwl0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKwl0ZXN0UnVubmVyLmR1bXBD
aGlsZEZyYW1lc0FzVGV4dCgpOworCXRlc3RSdW5uZXIuc2V0UHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCh0cnVlKTsKK30KKworZnVuY3Rpb24gZGVjcmVtZW50KCkgeworCWlmICh3aW5kb3cudGVzdFJ1
bm5lcikgeworCQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdC
bG9ja0FsbCcpOworCQl0ZXN0UnVubmVyLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQoZmFsc2Up
OworCX0KKwlmb3IgKHZhciBpID0gMDsgaSA8IHdpbmRvdy5mcmFtZXMubGVuZ3RoOyArK2kpCisJ
CXdpbmRvdy5mcmFtZXNbaV0ucG9zdE1lc3NhZ2UoJ2Jsb2NrZWQnLCAnKicpOworfQorCit3aW5k
b3cub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CisJaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJ
CWludGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0FsbG93QWxsJyk7
CisJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworCX0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQgaGF2ZSBwcml2YXRlIGJyb3dzaW5nIGVuYWJs
ZWQ6PC9wPgorPGlmcmFtZSBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNv
dXJjZXMvY3Jvc3Mtb3JpZ2luLWlmcmFtZS1mb3ItcGx1Z2luLWFzeW5jLmh0bWwiIG9ubG9hZD0i
ZGVjcmVtZW50KCkiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5l
ZC1zaGFyZWQtd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtc2hhcmVkLXdvcmtlci1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2ZhMTgxNDNmZTZiYzRmOTU1ZGVlZjZhZTI5ODg1NGQ1OGJlNmNi
NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3Rv
cmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtc2hhcmVkLXdvcmtlci1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwxMCBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIHJldHVybiBvbmx5IG9uZSBzZWN1cml0
eSBlcnJvcjoKKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJh
bWUwLS0+LS0+JworLS0tLS0tLS0KK0Nvbm5lY3RlZCBzdWNjZXNzZnVsbHkKKworU0VDVVJJVFlf
RVJSCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2Ut
YmxvY2tpbmctc3RyZW5ndGhlbmVkLXNoYXJlZC13b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtc2hhcmVkLXdv
cmtlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4ZjliOWUwYzNlNTc5MWI5YTUzY2RjMjk0ODVlNDRkNTI4
MjE1ODEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXNoYXJlZC13b3JrZXIuaHRtbApAQCAtMCww
ICsxLDI5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworCXRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCXRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworCXRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKK3dpbmRvdy5v
bm1lc3NhZ2UgPSBmdW5jdGlvbigpIHsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpCisJCWludGVy
bmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0Jsb2NrQWxsJyk7CisJZm9y
ICh2YXIgaSA9IDA7IGkgPCB3aW5kb3cuZnJhbWVzLmxlbmd0aDsgKytpKQorCQl3aW5kb3cuZnJh
bWVzW2ldLnBvc3RNZXNzYWdlKCdibG9ja2VkJywgJyonKTsKKworCXdpbmRvdy5vbm1lc3NhZ2Ug
PSBmdW5jdGlvbigpIHsKKwkJaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJCQlpbnRlcm5hbHMu
c2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdBbGxvd0FsbCcpOworCQkJdGVzdFJ1
bm5lci5ub3RpZnlEb25lKCk7CisJCX0KKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHA+VGhpcyBpZnJhbWUgc2hvdWxkIHJldHVybiBvbmx5IG9uZSBzZWN1cml0eSBlcnJvcjo8
L3A+Cis8aWZyYW1lIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNl
cy9pZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC1zaGFyZWQtd29ya2VyLmh0bWwi
PjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC13ZWJzcWwtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2Nr
aW5nLXN0cmVuZ3RoZW5lZC13ZWJzcWwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlNjYxODVj
M2Y0NTkxOWMzOWRmNjdiZTk4MzFkYjliNDdiOTUxY2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVk
LXdlYnNxbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGhpcyBpZnJhbWUgc2hvdWxk
IHJldHVybiBvbmx5IG9uZSBzZWN1cml0eSBlcnJvcjoKKworCisKKy0tLS0tLS0tCitGcmFtZTog
JzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK05vIGV4Y2VwdGlv
bgorCitTRUNVUklUWV9FUlIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtd2Vic3FsLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXdl
YnNxbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4ZWVmMTQ5ZTRhMTk0MDQ4NDk4YmYyYmMzNWY1NjQ1YWUz
NWM1ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXdlYnNxbC5odG1sCkBAIC0wLDAgKzEsMjkg
QEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJ
dGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisJ
dGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK30KKworZnVuY3Rpb24gZGVjcmVt
ZW50KCkgeworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikKKwkJaW50ZXJuYWxzLnNldHRpbmdzLnNl
dFN0b3JhZ2VCbG9ja2luZ1BvbGljeSgnQmxvY2tBbGwnKTsKKwlmb3IgKHZhciBpID0gMDsgaSA8
IHdpbmRvdy5mcmFtZXMubGVuZ3RoOyArK2kpCisJCXdpbmRvdy5mcmFtZXNbaV0ucG9zdE1lc3Nh
Z2UoJ2Jsb2NrZWQnLCAnKicpOworfQorCit3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7
CisJaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJCWludGVybmFscy5zZXR0aW5ncy5zZXRTdG9y
YWdlQmxvY2tpbmdQb2xpY3koJ0FsbG93QWxsJyk7CisJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworCX0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlmcmFtZSBzaG91
bGQgcmV0dXJuIG9ubHkgb25lIHNlY3VyaXR5IGVycm9yOjwvcD4KKzxpZnJhbWUgc3JjPSJodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFnZS1i
bG9ja2luZy1jaGFuZ2VkLXdlYnNxbC5odG1sIiBvbmxvYWQ9ImRlY3JlbWVudCgpIj48L2lmcmFt
ZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9U
ZXN0RXhwZWN0YXRpb25zCmluZGV4IDE2NWM1OTMwNzRiYmNmNmEwZDA1MWNjNWI4NGIyYjJkMmFi
NWZjODkuLmRmZTYyNDEzYjNkMmJmODRlOGRlOTYyNGIwY2FmNmZjNWM2YTEzMGEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTQxLDYg
KzU0MSw4IEBAIFdPTlRGSVggU0tJUCA6IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVudFNlY3Vy
aXR5UG9saWN5L3NoYXJlZC13b3JrZXItY29ubmVjdC1zCiBXT05URklYIFNLSVAgOiBodHRwL3Rl
c3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1zaGFyZWQtd29ya2VyLmh0bWwgPSBURVhUCiBXT05U
RklYIFNLSVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLW9yaWdpbi1zaGFyZWQtd29ya2Vy
LWFsbG93ZWQuaHRtbCA9IFRFWFQKIFdPTlRGSVggU0tJUCA6IGh0dHAvdGVzdHMvc2VjdXJpdHkv
c2FtZS1vcmlnaW4tc2hhcmVkLXdvcmtlci1ibG9ja2VkLmh0bWwgPSBURVhUCitXT05URklYIFNL
SVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtc2hhcmVk
LXdvcmtlci5odG1sID0gVEVYVAorV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy9zZWN1cml0eS9z
dG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1zaGFyZWQtd29ya2VyLmh0bWwgPSBURVhUCiBX
T05URklYIFNLSVAgOiBzdG9yYWdlL2luZGV4ZWRkYi9iYXNpY3Mtc2hhcmVkLXdvcmtlcnMuaHRt
bCA9IFBBU1MKIAogLy8gdGVzdF9zaGVsbCBkb2VzIG5vdCBzdXBwb3J0IG1lc3NhZ2UgcG9ydHMK
QEAgLTYxNSw2ICs2MTcsMTAgQEAgV09OVEZJWCBTS0lQIDogZmFzdC9kb20vZ2MtMTAuaHRtbCA9
IFBBU1MKIAogLy8gV2UgZG8gbm90IHVzZSBTYWZhcmkncyBwcml2YXRlIGJyb3dzaW5nIG1vZGUu
CiBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5L2Nyb3NzLWZyYW1lLWFjY2Vzcy1w
cml2YXRlLWJyb3dzaW5nLmh0bWwgPSBQQVNTCitXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtcGx1Z2luLmh0bWwgPSBQQVNTCitXT05U
RklYIFNLSVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQt
cHJpdmF0ZS1icm93c2luZy1wbHVnaW4uaHRtbCA9IFBBU1MKK1dPTlRGSVggU0tJUCA6IGh0dHAv
dGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcGx1Z2luLmh0bWwg
PSBQQVNTCitXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tp
bmctc3RyZW5ndGhlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLmh0bWwgPSBQQVNTCiBXT05U
RklYIFNLSVAgOiBwbHVnaW5zL3ByaXZhdGUtYnJvd3NpbmctbW9kZS5odG1sID0gUEFTUwogV09O
VEZJWCBTS0lQIDogcGx1Z2lucy9wcml2YXRlLWJyb3dzaW5nLW1vZGUtMi5odG1sID0gVEVYVAog
V09OVEZJWCBTS0lQIDogc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9wcml2YXRlLWJy
b3dzaW5nLWFmZmVjdHMtc3RvcmFnZS5odG1sID0gUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjLXdrMi9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmct
c3RyZW5ndGhlbmVkLXBsdWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMtd2syL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQt
cGx1Z2luLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDllN2I2ZGQ2NjQ2MWQyMmJiNWUwOGE2
MmM2NTFkNWU1YjM4ODY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMi9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVk
LXBsdWdpbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUaGlzIGlmcmFtZSBzaG91bGQg
aGF2ZSBwcml2YXRlIGJyb3dzaW5nIGVuYWJsZWQ6CisKKworCistLS0tLS0tLQorRnJhbWU6ICc8
IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCit0cnVlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3Rv
cmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcHJpdmF0ZS1icm93c2luZy1wbHVnaW4tZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9odHRwL3Rlc3RzL3NlY3VyaXR5
L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMDllN2I2ZGQ2NjQ2MWQyMmJiNWUwOGE2MmM2NTFkNWU1
YjM4ODY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXByaXZhdGUt
YnJvd3NpbmctcGx1Z2luLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1RoaXMgaWZyYW1l
IHNob3VsZCBoYXZlIHByaXZhdGUgYnJvd3NpbmcgZW5hYmxlZDoKKworCisKKy0tLS0tLS0tCitG
cmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK3RydWUK
ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAzZmJhMDVhYjM4NThjYzA1
YTY1ZGViYmNhMmE3ZjNiZDM3MDY5YzM4Li4yNjM1MmI4MTk3YTIzOTJlOTY2NDk0MzE1YjhhYTg1
MjgwNmRmMjM0IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTItMDktMTMgIEplZmZyZXkgUGZhdSAgPGpwZmF1QGFwcGxlLmNvbT4KKwor
ICAgICAgICBBbGxvdyB0aGlyZC1wYXJ0eSBzdG9yYWdlIGJsb2NraW5nIHNldHRpbmcgdG8gY2hh
bmdlIHdoaWxlIGEgcGFnZSBpcyBsb2FkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk1NzkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlIGV4cG9ydGVkIHN5bWJvbHMuCisKKyAgICAgICAgKiBT
b3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyOgorCiAyMDEyLTA5LTA3ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIGJveC1zaGFkb3cgY2F1c2Vz
IG92ZXJsYXkgc2Nyb2xsYmFycyB0byBiZSBpbiB0aGUgd3JvbmcgcG9zaXRpb24gd2hlbiBlbGVt
ZW50IGlzIGNvbXBvc2l0ZWQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164219</attachid>
            <date>2012-09-14 13:42:43 -0700</date>
            <delta_ts>2012-09-14 13:51:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95790-20120914134331.patch</filename>
            <type>text/plain</type>
            <size>55291</size>
            <attacher name="Vicki Pfau">jeffrey+webkit</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3OTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmYwMzNhNjBhMzU4MTRk
M2U4MzJmMWViYzM5NzBmYzRiNGQ4MjIyMS4uZTNiYmU5N2VhMjRhYmRkNDNiMDViMmNkNjkyYTAw
ZWM5N2I1OGIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA5LTE0ICBKZWZm
cmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdGhpcmQtcGFydHkg
c3RvcmFnZSBibG9ja2luZyBzZXR0aW5nIHRvIGNoYW5nZSB3aGlsZSBhIHBhZ2UgaXMgbG9hZGVk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTc5MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBpcGUgdGhy
b3VnaCBjaGFuZ2VzIHRvIHRoZSBzdG9yYWdlIGJsb2NraW5nIHBvbGljeSB0byBlYWNoIGRvY3Vt
ZW50IGFuZCBwbHVnaW4uCisKKyAgICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvc2VjdXJpdHkvc3Rv
cmFnZS1ibG9ja2luZy1sb29zZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWwKKyAgICAgICAgICAgICAg
IGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wbHVnaW4uaHRt
bAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxv
b3NlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAv
dGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1zaGFyZWQtd29ya2VyLmh0
bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1s
b29zZW5lZC13ZWJzcWwuaHRtbAorICAgICAgICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9z
dG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWwKKyAgICAgICAg
ICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQt
cGx1Z2luLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1i
bG9ja2luZy1zdHJlbmd0aGVuZWQtcHJpdmF0ZS1icm93c2luZy1wbHVnaW4uaHRtbAorICAgICAg
ICAgICAgICAgaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5l
ZC1zaGFyZWQtd29ya2VyLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkv
c3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtd2Vic3FsLmh0bWwKKworICAgICAgICAqIFdl
YkNvcmUuZXhwLmluOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6IFBpcGUgY2hhbmdlcyB0
aHJvdWdoIHRvIHRoZSBEb2N1bWVudCdzIFNlY3VyaXR5T3JpZ2luLgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoRG9jdW1lbnQpOgor
ICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDogQ2hlY2sgdG8gbWFrZSBzdXJlIGFjY2VzcyBp
cyBhbGxvd2VkIGJlZm9yZSByZXR1cm5pbmcgYSBjYWNoZWQgc3RvcmFnZSBhcmVhLgorICAgICAg
ICAoV2ViQ29yZTo6RE9NV2luZG93OjpzZXNzaW9uU3RvcmFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpET01XaW5kb3c6OmxvY2FsU3RvcmFnZSk6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OmNvbGxlY3RQbHVnaW5WaWV3cyk6IFJlZmFjdG9yZWQgb3V0
IGludG8gYSBmdW5jdGlvbi4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZTo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKTogUGlwZSBjaGFuZ2VzIHRocm91Z2gg
dG8gZWFjaCBQbHVnaW5WaWV3LgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6cHJpdmF0ZUJyb3dz
aW5nU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKyAgICAgICAgKFBhZ2Up
OgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGlu
Z3M6OnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeSk6IFRlbGwgUGFnZXMgYWJvdXQgY2hhbmdlcyB0
byB0aGUgc3RvcmFnZSBibG9ja2luZyBwb2xpY3kuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgIChTZXR0aW5ncyk6CisgICAgICAgICogcGx1
Z2lucy9QbHVnaW5WaWV3QmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlld0Jhc2U6
OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCk6CisKIDIwMTItMDktMDYgIEplZmZyZXkgUGZh
dSAgPGpwZmF1QGFwcGxlLmNvbT4KIAogICAgICAgICBFeHRlbmQgdGhpcmQtcGFydHkgc3RvcmFn
ZSBibG9ja2luZyBBUEkgdG8gb3B0aW9uYWxseSBhbGxvdyBibG9ja2luZyBhbGwgc3RvcmFnZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCmluZGV4IGFlZjc4ZjI2ZGNkNTFkOWVmZDUwOTg2MTliOTI2MDIwZjBjMmM0MWEuLjI1
ZTY1NWQ2MmU1NTgyZmI0MTE3NGQwNjMyZTMwYjI3NDYwZDc2YzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAxMi0wOS0xNCAgSmVmZnJleSBQZmF1ICA8anBmYXVAYXBwbGUuY29tPgor
CisgICAgICAgIEFsbG93IHRoaXJkLXBhcnR5IHN0b3JhZ2UgYmxvY2tpbmcgc2V0dGluZyB0byBj
aGFuZ2Ugd2hpbGUgYSBwYWdlIGlzIGxvYWRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU3OTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBJbmZvcm0gcGx1Z2lucyBhYm91dCBjaGFuZ2VzIHRvIHRoZSBz
dG9yYWdlIGJsb2NraW5nIHBvbGljeSBieSB3YXkgb2YgdGhlIHByaXZhdGUgYnJvd3NpbmcgZmVh
dHVyZS4KKworICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpzdG9yYWdlQmxvY2tp
bmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBQbHVnaW5Qcm9j
ZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAoUGx1Z2luQ29udHJvbGxlclBy
b3h5KToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNz
YWdlcy5pbjogQWRkIFdLMiBtZXNzYWdlIGZvciBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OnN0b3JhZ2VCbG9ja2luZ1N0YXRl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpOZXRzY2FwZVBs
dWdpbjo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TmV0
c2NhcGVQbHVnaW46OnVwZGF0ZU5QTlByaXZhdGVNb2RlKTogU2V0IHBsdWdpbidzIHByaXZhdGUg
YnJvd3NpbmcgaWYgZWl0aGVyIHByaXZhdGUgYnJvd3Npbmcgb3Igc3RvcmFnZSBibG9ja2luZyBp
cyBlbmFibGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2Fw
ZVBsdWdpbi5oOgorICAgICAgICAoTmV0c2NhcGVQbHVnaW4pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaDoKKyAgICAgICAgKEJ1aWx0SW5QREZWaWV3
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3Lm1tOiBU
cmVhdCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQgYXMgYSBuby1vcC4KKyAgICAgICAgKFdl
YktpdDo6QnVpbHRJblBERlZpZXc6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDogQWRk
IHB1cmUgdmlydHVhbCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQgbWV0aG9kLgorICAgICAg
ICAoUGx1Z2luKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFu
Z2VkKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5Lmg6CisgICAgICAgIChQbHVnaW5Qcm94eSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojpz
dG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgorICAgICAgICAoUGx1Z2luVmlldyk6
CisgICAgICAgICogd2luL1dlYktpdDIuZGVmOgorCiAyMDEyLTA5LTA2ICBKZWZmcmV5IFBmYXUg
IDxqcGZhdUBhcHBsZS5jb20+CiAKICAgICAgICAgRXh0ZW5kIHRoaXJkLXBhcnR5IHN0b3JhZ2Ug
YmxvY2tpbmcgQVBJIHRvIG9wdGlvbmFsbHkgYWxsb3cgYmxvY2tpbmcgYWxsIHN0b3JhZ2UKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5leHAuaW4KaW5kZXggYjQ3NjlmOTE4MjU0OTFkNDIzNzY2MTg4YmZjOTk5ZGViMmYz
MWU1MC4uNTQ4ZTU5MzUyNTA5NmUxYzM1NzdmZWQ2N2Q1NmU0Y2UwZGJkYjU2ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KQEAgLTg3OCw2ICs4NzgsNyBAQCBfX1pON1dlYkNvcmU4U2V0dGluZ3MyM3Nl
dFVzZXNFbmNvZGluZ0RldGVjdG9yRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI0c2V0QXBwbGlj
YXRpb25DaHJvbWVNb2RlRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI0c2V0RE5TUHJlZmV0Y2hp
bmdFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczI0c2V0TW9ja1Njcm9sbGJhcnNFbmFi
bGVkRWIKK19fWk43V2ViQ29yZThTZXR0aW5nczI0c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5RU5T
XzE0U2VjdXJpdHlPcmlnaW4yMVN0b3JhZ2VCbG9ja2luZ1BvbGljeUUKIF9fWk43V2ViQ29yZThT
ZXR0aW5nczI0c2V0VGV4dEFyZWFzQXJlUmVzaXphYmxlRWIKIF9fWk43V2ViQ29yZThTZXR0aW5n
czI1c2V0RGV2ZWxvcGVyRXh0cmFzRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyNXNl
dEZyYW1lRmxhdHRlbmluZ0VuYWJsZWRFYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggOTc4
MGYyNDZkYjcyNDc5ZTRmNDY0MzEzZGM2ODI0NzQxMmJiMjczNy4uYjlkNTUxYTY1NzllNDhmYjhh
ZDExYzlkNzIxNDIzNDhiMGVmNzYxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC00NTQx
LDYgKzQ1NDEsMTIgQEAgdm9pZCBEb2N1bWVudDo6dW5yZWdpc3RlckZvck1lZGlhVm9sdW1lQ2Fs
bGJhY2tzKEVsZW1lbnQqIGUpCiAgICAgbV9tZWRpYVZvbHVtZUNhbGxiYWNrRWxlbWVudHMucmVt
b3ZlKGUpOwogfQogCit2b2lkIERvY3VtZW50OjpzdG9yYWdlQmxvY2tpbmdTdGF0ZURpZENoYW5n
ZSgpCit7CisgICAgaWYgKFNldHRpbmdzKiBzZXR0aW5ncyA9IHRoaXMtPnNldHRpbmdzKCkpCisg
ICAgICAgIHNlY3VyaXR5T3JpZ2luKCktPnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShzZXR0aW5n
cy0+c3RvcmFnZUJsb2NraW5nUG9saWN5KCkpOworfQorCiB2b2lkIERvY3VtZW50Ojpwcml2YXRl
QnJvd3NpbmdTdGF0ZURpZENoYW5nZSgpIAogewogICAgIEhhc2hTZXQ8RWxlbWVudCo+OjppdGVy
YXRvciBlbmQgPSBtX3ByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZEVsZW1lbnRzLmVuZCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAppbmRleCBkYWZlMDRiZTMxNGE0YTdiNTAxMDU1Yzc1NWJhNTllZTA0
NmQ2MmQzLi40MTc3NjI1Mjk1ZjJjZjY0M2QzYjcyMTk3MWVkOTA1MGRlMjU1NWMxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaApAQCAtMTAxNiw2ICsxMDE2LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBy
ZWdpc3RlckZvclByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZENhbGxiYWNrcyhFbGVtZW50Kik7
CiAgICAgdm9pZCB1bnJlZ2lzdGVyRm9yUHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkQ2FsbGJh
Y2tzKEVsZW1lbnQqKTsKKyAgICB2b2lkIHN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKCk7
CiAgICAgdm9pZCBwcml2YXRlQnJvd3NpbmdTdGF0ZURpZENoYW5nZSgpOwogCiAgICAgdm9pZCBz
ZXRTaG91bGRDcmVhdGVSZW5kZXJlcnMoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
aW5kZXggZDc4N2E2NWJkNmQ4MGM1NTBmOGQxMmEwZDRmMTMxZjc4NjFkMTdhZC4uMjQ1MGI4NWM2
NTNjNzc0OGUxODc1ZGU2ODRlZmJhZDVhZGExYjE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmNwcApAQCAtNzM1LDggKzczNSw2IEBAIFN0b3JhZ2UqIERPTVdpbmRvdzo6c2Vzc2lvblN0b3Jh
Z2UoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3Bs
YXllZEluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKG1fc2Vzc2lvblN0b3Jh
Z2UpCi0gICAgICAgIHJldHVybiBtX3Nlc3Npb25TdG9yYWdlLmdldCgpOwogCiAgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQpAQCAt
NzQ3LDYgKzc0NSw5IEBAIFN0b3JhZ2UqIERPTVdpbmRvdzo6c2Vzc2lvblN0b3JhZ2UoRXhjZXB0
aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIGlmICht
X3Nlc3Npb25TdG9yYWdlKQorICAgICAgICByZXR1cm4gbV9zZXNzaW9uU3RvcmFnZS5nZXQoKTsK
KwogICAgIFBhZ2UqIHBhZ2UgPSBkb2N1bWVudC0+cGFnZSgpOwogICAgIGlmICghcGFnZSkKICAg
ICAgICAgcmV0dXJuIDA7CkBAIC03NjIsOCArNzYzLDYgQEAgU3RvcmFnZSogRE9NV2luZG93Ojps
b2NhbFN0b3JhZ2UoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAgICAgaWYgKCFpc0N1cnJl
bnRseURpc3BsYXllZEluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKG1fbG9j
YWxTdG9yYWdlKQotICAgICAgICByZXR1cm4gbV9sb2NhbFN0b3JhZ2UuZ2V0KCk7CiAKICAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQp
CkBAIC03NzQsNiArNzczLDkgQEAgU3RvcmFnZSogRE9NV2luZG93Ojpsb2NhbFN0b3JhZ2UoRXhj
ZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIGlm
IChtX2xvY2FsU3RvcmFnZSkKKyAgICAgICAgcmV0dXJuIG1fbG9jYWxTdG9yYWdlLmdldCgpOwor
CiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQogICAg
ICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IDI5ODM4MDhlYWNhYzMxMjA5NmUy
OWJhMWZkZjdjYTk4ZDMyM2QzNDcuLjJiOTIwMjI1NjRjZGMyMGIzZTIxYjhlMTllMDk3ZGYzMzgy
MGM4YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNTUsNyArNTUsNiBAQAogI2luY2x1ZGUgIlBh
Z2VHcm91cC5oIgogI2luY2x1ZGUgIlBsdWdpbkRhdGEuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3
LmgiCi0jaW5jbHVkZSAiUGx1Z2luVmlld0Jhc2UuaCIKICNpbmNsdWRlICJQb2ludGVyTG9ja0Nv
bnRyb2xsZXIuaCIKICNpbmNsdWRlICJQcm9ncmVzc1RyYWNrZXIuaCIKICNpbmNsdWRlICJSZW5k
ZXJBcmVuYS5oIgpAQCAtOTg4LDE2ICs5ODcsOCBAQCB2b2lkIFBhZ2U6OmRuc1ByZWZldGNoaW5n
U3RhdGVDaGFuZ2VkKCkKICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmluaXRETlNQcmVmZXRj
aCgpOwogfQogCi12b2lkIFBhZ2U6OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCgpCit2b2lk
IFBhZ2U6OmNvbGxlY3RQbHVnaW5WaWV3cyhWZWN0b3I8UmVmUHRyPFBsdWdpblZpZXdCYXNlPiwg
MzI+JiBwbHVnaW5WaWV3QmFzZXMpCiB7Ci0gICAgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVk
ID0gbV9zZXR0aW5ncy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwotCi0gICAgZm9yIChGcmFt
ZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJh
dmVyc2VOZXh0KCkpCi0gICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5wcml2YXRlQnJvd3NpbmdT
dGF0ZURpZENoYW5nZSgpOwotCi0gICAgLy8gQ29sbGVjdCB0aGUgUGx1Z2luVmlld3MgaW4gdG8g
YSB2ZWN0b3IgdG8gZW5zdXJlIHRoYXQgYWN0aW9uIHRoZSBwbHVnLWluIHRha2VzCi0gICAgLy8g
ZnJvbSBiZWxvdyBwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQgZG9lcyBub3QgYWZmZWN0IHRo
ZWlyIGxpZmV0aW1lLgotICAgIFZlY3RvcjxSZWZQdHI8UGx1Z2luVmlld0Jhc2U+LCAzMj4gcGx1
Z2luVmlld0Jhc2VzOwogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1l
OyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIEZyYW1l
VmlldyogdmlldyA9IGZyYW1lLT52aWV3KCk7CiAgICAgICAgIGlmICghdmlldykKQEAgLTEwMTMs
NiArMTAwNCwzMyBAQCB2b2lkIFBhZ2U6OnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCgpCiAg
ICAgICAgICAgICAgICAgcGx1Z2luVmlld0Jhc2VzLmFwcGVuZChzdGF0aWNfY2FzdDxQbHVnaW5W
aWV3QmFzZSo+KHdpZGdldCkpOwogICAgICAgICB9CiAgICAgfQorfQorCit2b2lkIFBhZ2U6OnN0
b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCgpCit7CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBt
YWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkp
CisgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zdG9yYWdlQmxvY2tpbmdTdGF0ZURpZENoYW5n
ZSgpOworCisgICAgLy8gQ29sbGVjdCB0aGUgUGx1Z2luVmlld3MgaW4gdG8gYSB2ZWN0b3IgdG8g
ZW5zdXJlIHRoYXQgYWN0aW9uIHRoZSBwbHVnLWluIHRha2VzCisgICAgLy8gZnJvbSBiZWxvdyBz
dG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQgZG9lcyBub3QgYWZmZWN0IHRoZWlyIGxpZmV0aW1l
LgorICAgIFZlY3RvcjxSZWZQdHI8UGx1Z2luVmlld0Jhc2U+LCAzMj4gcGx1Z2luVmlld0Jhc2Vz
OworICAgIGNvbGxlY3RQbHVnaW5WaWV3cyhwbHVnaW5WaWV3QmFzZXMpOworCisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBwbHVnaW5WaWV3QmFzZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHBs
dWdpblZpZXdCYXNlc1tpXS0+c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKCk7Cit9CisKK3Zv
aWQgUGFnZTo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKCkKK3sKKyAgICBib29sIHByaXZh
dGVCcm93c2luZ0VuYWJsZWQgPSBtX3NldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7
CisKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkt
PnByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCk7CisKKyAgICAvLyBDb2xsZWN0IHRoZSBQ
bHVnaW5WaWV3cyBpbiB0byBhIHZlY3RvciB0byBlbnN1cmUgdGhhdCBhY3Rpb24gdGhlIHBsdWct
aW4gdGFrZXMKKyAgICAvLyBmcm9tIGJlbG93IHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZCBk
b2VzIG5vdCBhZmZlY3QgdGhlaXIgbGlmZXRpbWUuCisgICAgVmVjdG9yPFJlZlB0cjxQbHVnaW5W
aWV3QmFzZT4sIDMyPiBwbHVnaW5WaWV3QmFzZXM7CisgICAgY29sbGVjdFBsdWdpblZpZXdzKHBs
dWdpblZpZXdCYXNlcyk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBsdWdpblZpZXdC
YXNlcy5zaXplKCk7ICsraSkKICAgICAgICAgcGx1Z2luVmlld0Jhc2VzW2ldLT5wcml2YXRlQnJv
d3NpbmdTdGF0ZUNoYW5nZWQocHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmlu
ZGV4IGEyMThkNWQ0Y2E1OWI1YjdhNDJkYWI0NGQ3YmVhNzQwZWU1ODM2ZTEuLjFkNTc0MGNkNzk4
ZTNkODg1MTcxMzFhMDI4YTkzMGRhMWJmMTFiZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC0yNyw2ICsy
Nyw3IEBACiAjaW5jbHVkZSAiUGFnZVZpc2liaWxpdHlTdGF0ZS5oIgogI2luY2x1ZGUgIlBhZ2lu
YXRpb24uaCIKICNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgorI2luY2x1ZGUgIlBsdWdpblZp
ZXdCYXNlLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUu
aCIKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgpAQCAtMjcxLDYgKzI3Miw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgY29uc3QgU3RyaW5nJiB1c2VyU3R5bGVTaGVldCgp
IGNvbnN0OwogCiAgICAgICAgIHZvaWQgZG5zUHJlZmV0Y2hpbmdTdGF0ZUNoYW5nZWQoKTsKKyAg
ICAgICAgdm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoKTsKICAgICAgICAgdm9pZCBw
cml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCBzZXRE
ZWJ1Z2dlckZvckFsbFBhZ2VzKEpTQzo6RGVidWdnZXIqKTsKQEAgLTM1MCw2ICszNTIsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0TWluaW11bVRpbWVySW50ZXJ2YWwo
ZG91YmxlKTsKICAgICAgICAgZG91YmxlIG1pbmltdW1UaW1lckludGVydmFsKCkgY29uc3Q7CiAK
KyAgICAgICAgdm9pZCBjb2xsZWN0UGx1Z2luVmlld3MoVmVjdG9yPFJlZlB0cjxQbHVnaW5WaWV3
QmFzZT4sIDMyPiYgcGx1Z2luVmlld0Jhc2VzKTsKKwogICAgICAgICBPd25QdHI8Q2hyb21lPiBt
X2Nocm9tZTsKICAgICAgICAgT3duUHRyPERyYWdDYXJldENvbnRyb2xsZXI+IG1fZHJhZ0NhcmV0
Q29udHJvbGxlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCBmMjUxNTBiNTE2YzM5
NjUzNWMzOGJlZmNhM2NiMmEyYTY4ZmVlYTBmLi42ZjFkM2ZhMDgxZjAxMzkzZjA5MmYxNDBmNTk5
NGY5NjgyZjE1YTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAtOTMxLDYgKzkzMSwx
NSBAQCB2b2lkIFNldHRpbmdzOjpzZXRMb2FkRGVmZXJyaW5nRW5hYmxlZChib29sIGVuYWJsZWQp
CiAgICAgbV9sb2FkRGVmZXJyaW5nRW5hYmxlZCA9IGVuYWJsZWQ7CiB9CiAKK3ZvaWQgU2V0dGlu
Z3M6OnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2Nr
aW5nUG9saWN5IGVuYWJsZWQpCit7CisgICAgaWYgKG1fc3RvcmFnZUJsb2NraW5nUG9saWN5ID09
IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3RvcmFnZUJsb2NraW5nUG9saWN5
ID0gZW5hYmxlZDsKKyAgICBtX3BhZ2UtPnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCgpOwor
fQorCiB2b2lkIFNldHRpbmdzOjpzZXRUaWxlZEJhY2tpbmdTdG9yZUVuYWJsZWQoYm9vbCBlbmFi
bGVkKQogewogICAgIG1fdGlsZWRCYWNraW5nU3RvcmVFbmFibGVkID0gZW5hYmxlZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuaAppbmRleCA2ZmEzYmMwMjRiOGI4YzJmOWFjYzBlZDAzZDI2MTlkNDY2NTMy
OTYzLi4zOWEwYTg1MDgzYzhmMGQ5OWRjMWJhMjhjNGFkOGE0YWYyYWI0NDJiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5oCkBAIC02MDIsNyArNjAyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIHNldFdpbmRvd0ZvY3VzUmVzdHJpY3RlZChib29sIHJlc3RyaWN0ZWQpIHsgbV93
aW5kb3dGb2N1c1Jlc3RyaWN0ZWQgPSByZXN0cmljdGVkOyB9CiAgICAgICAgIGJvb2wgd2luZG93
Rm9jdXNSZXN0cmljdGVkKCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3dGb2N1c1Jlc3RyaWN0ZWQ7
IH0KIAotICAgICAgICB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShTZWN1cml0eU9yaWdp
bjo6U3RvcmFnZUJsb2NraW5nUG9saWN5IHBvbGljeSkgeyBtX3N0b3JhZ2VCbG9ja2luZ1BvbGlj
eSA9IHBvbGljeTsgfQorICAgICAgICB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShTZWN1
cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5KTsKICAgICAgICAgU2VjdXJpdHlPcmln
aW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeSBzdG9yYWdlQmxvY2tpbmdQb2xpY3koKSBjb25zdCB7
IHJldHVybiBtX3N0b3JhZ2VCbG9ja2luZ1BvbGljeTsgfQogCiAgICAgICAgIHZvaWQgc2V0U2Ny
b2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlld0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvUGx1Z2luVmlld0Jhc2UuaAppbmRleCAzMTJkNTdjMDlkMzc4MzBiODYzYzhkMjgzOTMxZDdk
MTI3ZGQyMTY3Li5mYzdlOThlZmRiOTk2MzEyYjE3NWY0MzZiNjVjZDkxYzgzMGNkYWMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXdCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3QmFzZS5oCkBAIC00OSw2ICs0OSw3IEBAIHB1
YmxpYzoKICNlbmRpZgogCiAgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBzY3JpcHRPYmplY3Qo
SlNDOjpKU0dsb2JhbE9iamVjdCopIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3Rv
cmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHByaXZhdGVC
cm93c2luZ1N0YXRlQ2hhbmdlZChib29sKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgZ2V0Rm9ybVZh
bHVlKFN0cmluZyYpIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIHNjcm9sbChT
Y3JvbGxEaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5KSB7IHJldHVybiBmYWxzZTsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuY3BwCmluZGV4IDJhZDQxZGFhNWMyYThlNTgwOGZiYmMzM2I2MzM3NTUwNTk2ZDY3ZGMuLjMx
YTVkNjFhNjVhNjYwYTlkOTQ4M2FlMDBjMTNlYmQwOTQ0MDc2MDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAg
LTU2Myw2ICs1NjMsMTQgQEAgdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OmdldFBsdWdpblNj
cmlwdGFibGVOUE9iamVjdCh1aW50NjRfdCYgcGx1Z2luU2NyaXB0YWIKICAgICByZWxlYXNlTlBP
YmplY3QocGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0KTsKIH0KIAordm9pZCBQbHVnaW5Db250cm9s
bGVyUHJveHk6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZChib29sIGlzU3RvcmFnZUJsb2Nr
aW5nRW5hYmxlZCkKK3sKKyAgICBpZiAobV9zdG9yYWdlQmxvY2tpbmdFbmFibGVkICE9IGlzU3Rv
cmFnZUJsb2NraW5nRW5hYmxlZCkgeworICAgICAgICBtX3N0b3JhZ2VCbG9ja2luZ0VuYWJsZWQg
PSBpc1N0b3JhZ2VCbG9ja2luZ0VuYWJsZWQ7CisgICAgICAgIG1fcGx1Z2luLT5zdG9yYWdlQmxv
Y2tpbmdTdGF0ZUNoYW5nZWQobV9zdG9yYWdlQmxvY2tpbmdFbmFibGVkKTsKKyAgICB9Cit9CisK
IHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5Ojpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQo
Ym9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiB7CiAgICAgbV9pc1ByaXZhdGVCcm93c2lu
Z0VuYWJsZWQgPSBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAppbmRleCBhOWQzNWE2
NjNhNzE1NTcyNGRlYmU2MmNlYzczNjljZjNlMjA1NmNmLi5iNGE0MDY3M2VjNGM4OTEwYWJlYjdi
ZGExMGViNWNlMTQ4NTFlNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRl
ICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3Nh
Z2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9T
ZWN1cml0eU9yaWdpbi5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3Bh
Y2UgQ29yZUlQQyB7CkBAIC0xNTIsNiArMTUzLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0
ZUxheWVySG9zdGluZ0NvbnRleHQoTGF5ZXJIb3N0aW5nTW9kZSk7CiAjZW5kaWYKIAorICAgIHZv
aWQgc3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKGJvb2wpOwogICAgIHZvaWQgcHJpdmF0ZUJy
b3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wpOwogICAgIHZvaWQgZ2V0Rm9ybVZhbHVlKGJvb2wmIHJl
dHVyblZhbHVlLCBTdHJpbmcmIGZvcm1WYWx1ZSk7CiAKQEAgLTE2Myw2ICsxNjUsNyBAQCBwcml2
YXRlOgogICAgIHVpbnQ2NF90IG1fcGx1Z2luSW5zdGFuY2VJRDsKIAogICAgIFN0cmluZyBtX3Vz
ZXJBZ2VudDsKKyAgICBib29sIG1fc3RvcmFnZUJsb2NraW5nRW5hYmxlZDsKICAgICBib29sIG1f
aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkOwogICAgIGJvb2wgbV9pc0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdFbmFibGVkOwogICAgIGJvb2wgbV9pc0luaXRpYWxpemluZzsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggMzcxYmVlMjM3NzVkZGUwZmY3MjEwNDNiMzQ1MGNjYTYwNjVjOWRl
Yi4uZDdjMmQwMmIyYjEwNzYyY2UzNzc4YmI4ZGYwMmNkYzY5MjdjN2JkMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkubWVzc2FnZXMuaW4KQEAgLTEwNiw2ICsxMDYsOSBAQCBtZXNzYWdlcyAtPiBQbHVnaW5D
b250cm9sbGVyUHJveHkgewogICAgICMgUmV0dXJuIGEgc25hcHNob3Qgb2YgdGhlIHBsdWdpbgog
ICAgIFNuYXBzaG90KCkgLT4gKFdlYktpdDo6U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUgYmFja2lu
Z1N0b3JlSGFuZGxlKQogICAgIAorICAgICMgU2VudCB3aGVuIHN0b3JhZ2UgYmxvY2tpbmcgcG9s
aWN5IGNoYW5nZXMKKyAgICBTdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoYm9vbCBzdG9yYWdl
QmxvY2tpbmdFbmFibGVkKQorCiAgICAgIyBTZW50IHdoZW4gcHJpdmF0ZSBicm93c2luZyBpcyBl
bmFibGVkIG9yIGRpc2FibGVkCiAgICAgUHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wg
aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcAppbmRl
eCAxNWU3NjQ4ZGE2M2Y3YjM0OTIzZWQ5ODkzMDJmNDVlNTJkMTI0NzIwLi40OWM3MTgwYzNhOWU5
ZjU5YzFiNTk0MDZmNWI5NzMyODM0ZmI2YWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAK
QEAgLTk1Myw4ICs5NTMsMjQgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6Y29udGVudHNTY2FsZUZh
Y3RvckNoYW5nZWQoZmxvYXQgc2NhbGVGYWN0b3IpCiAjZW5kaWYKIH0KIAordm9pZCBOZXRzY2Fw
ZVBsdWdpbjo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKGJvb2wgc3RvcmFnZUJsb2NraW5n
RW5hYmxlZCkKK3sKKyAgICBpZiAobV9zdG9yYWdlQmxvY2tpbmdTdGF0ZSAhPSBzdG9yYWdlQmxv
Y2tpbmdFbmFibGVkKSB7CisgICAgICAgIG1fc3RvcmFnZUJsb2NraW5nU3RhdGUgPSBzdG9yYWdl
QmxvY2tpbmdFbmFibGVkOworICAgICAgICB1cGRhdGVOUE5Qcml2YXRlTW9kZSgpOworICAgIH0K
K30KKwogdm9pZCBOZXRzY2FwZVBsdWdpbjo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJv
b2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKIHsKKyAgICBpZiAobV9wcml2YXRlQnJvd3NpbmdT
dGF0ZSAhPSBwcml2YXRlQnJvd3NpbmdFbmFibGVkKSB7CisgICAgICAgIG1fcHJpdmF0ZUJyb3dz
aW5nU3RhdGUgPSBwcml2YXRlQnJvd3NpbmdFbmFibGVkOworICAgICAgICB1cGRhdGVOUE5Qcml2
YXRlTW9kZSgpOworICAgIH0KK30KKwordm9pZCBOZXRzY2FwZVBsdWdpbjo6dXBkYXRlTlBOUHJp
dmF0ZU1vZGUoKQorewogICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CiAKICAgICAvLyBGcm9tIGh0
dHBzOi8vd2lraS5tb3ppbGxhLm9yZy9QbHVnaW5zOlByaXZhdGVNb2RlCkBAIC05NjIsNyArOTc4
LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbjo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJv
b2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKICAgICAvLyAgIChhc3NpZ25lZCBlbnVtIHZhbHVl
IDE4KSB3aXRoIGEgcG9pbnRlciB0byBhbiBOUEJvb2wgdmFsdWUgb24gYWxsIGFwcGxpY2FibGUg
aW5zdGFuY2VzLgogICAgIC8vICAgUGx1Z2lucyBzaG91bGQgY2hlY2sgdGhlIGJvb2xlYW4gdmFs
dWUgcG9pbnRlZCB0bywgbm90IHRoZSBwb2ludGVyIGl0c2VsZi4gCiAgICAgLy8gICBUaGUgdmFs
dWUgd2lsbCBiZSB0cnVlIHdoZW4gcHJpdmF0ZSBtb2RlIGlzIG9uLgotICAgIE5QQm9vbCB2YWx1
ZSA9IHByaXZhdGVCcm93c2luZ0VuYWJsZWQ7CisgICAgTlBCb29sIHZhbHVlID0gbV9wcml2YXRl
QnJvd3NpbmdTdGF0ZSB8fCBtX3N0b3JhZ2VCbG9ja2luZ1N0YXRlOwogICAgIE5QUF9TZXRWYWx1
ZShOUE5WcHJpdmF0ZU1vZGVCb29sLCAmdmFsdWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5o
CmluZGV4IDVmOTNjNTc0NzY1ODE3ZThiYmNiOTExYmIzYzNjNGI1YzQ5YTU0YmMuLmZlYWY3NjEx
YWQ4MTQ5ZTk0N2M5OWU0ZjMxNTMzYWMzODRlNWI2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5o
CkBAIC0yMjIsNiArMjIyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lk
IGNvbnRlbnRzU2NhbGVGYWN0b3JDaGFuZ2VkKGZsb2F0KTsKKyAgICB2aXJ0dWFsIHZvaWQgc3Rv
cmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBwcml2YXRl
QnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCk7CiAgICAgdmlydHVhbCBib29sIGdldEZvcm1WYWx1
ZShTdHJpbmcmIGZvcm1WYWx1ZSk7CiAgICAgdmlydHVhbCBib29sIGhhbmRsZVNjcm9sbChXZWJD
b3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KTsKQEAgLTIz
Nyw2ICsyMzgsOCBAQCBwcml2YXRlOgogICAgIC8vIGNvbnZlcnRlZCAoaWYgdGhlIHRyYW5zZm9y
bWF0aW9uIG1hdHJpeCBpc24ndCBpbnZlcnRpYmxlKS4KICAgICBib29sIGNvbnZlcnRGcm9tUm9v
dFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50SW5Sb290Vmlld0Nvb3JkaW5hdGVz
LCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnRJblBsdWdpbkNvb3JkaW5hdGVzKTsKIAorICAgIHZv
aWQgdXBkYXRlTlBOUHJpdmF0ZU1vZGUoKTsKKwogI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoV0lO
KQogICAgIHN0YXRpYyBCT09MIFdJTkFQSSBob29rZWRUcmFja1BvcHVwTWVudShITUVOVSwgVUlO
VCB1RmxhZ3MsIGludCB4LCBpbnQgeSwgaW50IG5SZXNlcnZlZCwgSFdORCwgY29uc3QgUkVDVCop
OwogICAgIHZvaWQgc2NoZWR1bGVXaW5kb3dlZEdlb21ldHJ5VXBkYXRlKCk7CkBAIC0zMTMsNiAr
MzE2LDkgQEAgcHJpdmF0ZToKICAgICBUaW1lck1hcCBtX3RpbWVyczsKICAgICB1bnNpZ25lZCBt
X25leHRUaW1lcklEOwogCisgICAgYm9vbCBtX3ByaXZhdGVCcm93c2luZ1N0YXRlOworICAgIGJv
b2wgbV9zdG9yYWdlQmxvY2tpbmdTdGF0ZTsKKwogI2lmIFBMVUdJTl9BUkNISVRFQ1RVUkUoTUFD
KQogICAgIE5QRHJhd2luZ01vZGVsIG1fZHJhd2luZ01vZGVsOwogICAgIE5QRXZlbnRNb2RlbCBt
X2V2ZW50TW9kZWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL0J1aWx0SW5QREZWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL0J1aWx0SW5QREZWaWV3LmgKaW5kZXggOWNjZDgwNDAwMzdlODAwOTFmOTg1NmEzZWQz
OTJjMzY2YTBhYWYzMi4uYWFkYTVlZjgxNTVhNjUyODRjZGUzNmViMzY3ODZhYjA2ZGQ4MDBiYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdElu
UERGVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVp
bHRJblBERlZpZXcuaApAQCAtMTEzLDYgKzExMyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2
b2lkIHNldExheWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSkgT1ZFUlJJREU7CiAjZW5k
aWYKIAorICAgIHZpcnR1YWwgdm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoYm9vbCk7
CiAgICAgdmlydHVhbCB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sKTsKICAg
ICB2aXJ0dWFsIGJvb2wgZ2V0Rm9ybVZhbHVlKFN0cmluZyYgZm9ybVZhbHVlKTsKICAgICB2aXJ0
dWFsIGJvb2wgaGFuZGxlU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29yZTo6
U2Nyb2xsR3JhbnVsYXJpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcubW0KaW5kZXggZmU3ZjI1OGIwYTQ5ZjI5ZWM4
NjllNDZmYzY5NTcwMWQyNjdlZWRhZS4uZDM3NjVkZTY4ZDUzMGY0ODk5YjIzMTVlNTgwNDI5ZjUy
ODg4MzgxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BE
Ri9CdWlsdEluUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUERGL0J1aWx0SW5QREZWaWV3Lm1tCkBAIC02NjAsNiArNjYwLDEwIEBAIHZvaWQgQnVpbHRJ
blBERlZpZXc6OnNldExheWVySG9zdGluZ01vZGUoTGF5ZXJIb3N0aW5nTW9kZSkKIAogI2VuZGlm
CiAKK3ZvaWQgQnVpbHRJblBERlZpZXc6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZChib29s
KQoreworfQorCiB2b2lkIEJ1aWx0SW5QREZWaWV3Ojpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5n
ZWQoYm9vbCkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4u
aAppbmRleCBiOTExNzRmOWViN2MyN2VmM2IyZmVlOGIyNDQwYWY5ZTQxODE3Y2VjLi5mODM2M2Rj
OTBlYzY2ZWQzZDRiMTUwYzlkYTJiYzNlMzY2NmZlN2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8V2Vi
Q29yZS9HcmFwaGljc0xheWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9LVVJMLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmln
aW4uaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0yMTgsNiArMjE5LDkgQEAgcHVibGlj
OgogICAgIC8vIFRlbGxzIHRoZSBwbHVnLWluIGFib3V0IHNjYWxlIGZhY3RvciBjaGFuZ2VzLgog
ICAgIHZpcnR1YWwgdm9pZCBjb250ZW50c1NjYWxlRmFjdG9yQ2hhbmdlZChmbG9hdCkgPSAwOwog
CisgICAgLy8gQ2FsbGVkIHdoZW4gdGhlIHN0b3JhZ2UgYmxvY2tpbmcgcG9saWN5IGZvciB0aGlz
IHBsdWctaW4gY2hhbmdlcy4KKyAgICB2aXJ0dWFsIHZvaWQgc3RvcmFnZUJsb2NraW5nU3RhdGVD
aGFuZ2VkKGJvb2wpID0gMDsKKwogICAgIC8vIENhbGxlZCB3aGVuIHRoZSBwcml2YXRlIGJyb3dz
aW5nIHN0YXRlIGZvciB0aGlzIHBsdWctaW4gY2hhbmdlcy4KICAgICB2aXJ0dWFsIHZvaWQgcHJp
dmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggZTM4MGVlZjk0ZjM1
N2UwMjkxZWVjODNlNjk0Y2JmOThmZDBhZDQwYS4uZDliMGM1NmZkNWQyMTg2ZGU4MmUyMTgxMjdm
MTdhNjQwNGM4YWEyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkuY3BwCkBAIC00NjAsNiArNDYwLDExIEBAIHZvaWQgUGx1Z2luUHJveHk6
OmNvbnRlbnRzU2NhbGVGYWN0b3JDaGFuZ2VkKGZsb2F0IHNjYWxlRmFjdG9yKQogICAgIGdlb21l
dHJ5RGlkQ2hhbmdlKCk7CiB9CiAKK3ZvaWQgUGx1Z2luUHJveHk6OnN0b3JhZ2VCbG9ja2luZ1N0
YXRlQ2hhbmdlZChib29sIGlzU3RvcmFnZUJsb2NraW5nRW5hYmxlZCkKK3sKKyAgICBtX2Nvbm5l
Y3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5
OjpTdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoaXNTdG9yYWdlQmxvY2tpbmdFbmFibGVkKSwg
bV9wbHVnaW5JbnN0YW5jZUlEKTsKK30KKwogdm9pZCBQbHVnaW5Qcm94eTo6cHJpdmF0ZUJyb3dz
aW5nU3RhdGVDaGFuZ2VkKGJvb2wgaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKQogewogICAgIG1f
Y29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Db250cm9sbGVy
UHJveHk6OlByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChpc1ByaXZhdGVCcm93c2luZ0VuYWJs
ZWQpLCBtX3BsdWdpbkluc3RhbmNlSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJveHkuaAppbmRleCBjMGNhMTE2YjA3ZTk4NGQ3YjAwNzRkZDhlODE2
MzA1Y2VmYzM1YmI2Li40YmJlNDY4NmZmYTYwZTRlYzM0MDQyOWE3ZmE3MjAyMzljMGRkYjdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlBsdWdpbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUv
QWZmaW5lVHJhbnNmb3JtLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQogI2luY2x1
ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTExMiw2ICsxMTMsNyBAQCBwcml2YXRlOgogI2VuZGlm
CiAKICAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNTY2FsZUZhY3RvckNoYW5nZWQoZmxvYXQpOwor
ICAgIHZpcnR1YWwgdm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoYm9vbCk7CiAgICAg
dmlydHVhbCB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sKTsKICAgICB2aXJ0
dWFsIGJvb2wgZ2V0Rm9ybVZhbHVlKFN0cmluZyYgZm9ybVZhbHVlKTsKICAgICB2aXJ0dWFsIGJv
b2wgaGFuZGxlU2Nyb2xsKFdlYkNvcmU6OlNjcm9sbERpcmVjdGlvbiwgV2ViQ29yZTo6U2Nyb2xs
R3JhbnVsYXJpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblZpZXcuY3BwCmluZGV4IDBhMGM2YjYzZGQyYjY2NzM0YmNiZDI3ODMyZmVkMTU4OWJhOWVk
MTIuLmQwYjhiNGViNTYwN2VkYTcxZjA2YmVmM2VmZTA3Yjc2YTUxNWYxYTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTU4MSwx
MyArNTgxLDIxIEBAIEpTT2JqZWN0KiBQbHVnaW5WaWV3OjpzY3JpcHRPYmplY3QoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkKICNlbmRpZgogfQogCi12b2lkIFBsdWdpblZpZXc6OnByaXZh
dGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCit2b2lk
IFBsdWdpblZpZXc6OnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCgpCiB7CiAgICAgLy8gVGhl
IHBsdWctaW4gY2FuIGJlIG51bGwgaGVyZSBpZiBpdCBmYWlsZWQgdG8gaW5pdGlhbGl6ZS4KICAg
ICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmICghcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCAmJiAhZnJhbWUoKS0+ZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzUGx1Z2luU3RvcmFnZShmcmFtZSgpLT50cmVlKCkt
PnRvcCgpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkKKyAgICBib29sIHN0b3JhZ2VC
bG9ja2luZ1BvbGljeSA9ICFmcmFtZSgpLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5j
YW5BY2Nlc3NQbHVnaW5TdG9yYWdlKGZyYW1lKCktPnRyZWUoKS0+dG9wKCktPmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCkpOworCisgICAgbV9wbHVnaW4tPnN0b3JhZ2VCbG9ja2luZ1N0YXRl
Q2hhbmdlZChzdG9yYWdlQmxvY2tpbmdQb2xpY3kpOworfQorCit2b2lkIFBsdWdpblZpZXc6OnBy
aXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpCit7
CisgICAgLy8gVGhlIHBsdWctaW4gY2FuIGJlIG51bGwgaGVyZSBpZiBpdCBmYWlsZWQgdG8gaW5p
dGlhbGl6ZS4KKyAgICBpZiAoIW1faXNJbml0aWFsaXplZCB8fCAhbV9wbHVnaW4pCiAgICAgICAg
IHJldHVybjsKIAogICAgIG1fcGx1Z2luLT5wcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQocHJp
dmF0ZUJyb3dzaW5nRW5hYmxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuaAppbmRleCBkMWQ5ODUzNjMzODY4NmIzNWQ5YTQ4ODk5MmJiMGEzNWY5
NmJhZjlkLi45Y2MyNTdhOTgwNjQ0NTk5MjcyY2JmMjYwMDY1ZGNjMmUzN2EyZTgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTEwOSw2
ICsxMDksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1M
YXllcigpIGNvbnN0OwogI2VuZGlmCiAgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBzY3JpcHRP
YmplY3QoSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAgIHZpcnR1YWwgdm9pZCBzdG9yYWdlQmxv
Y2tpbmdTdGF0ZUNoYW5nZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcHJpdmF0ZUJyb3dzaW5nU3Rh
dGVDaGFuZ2VkKGJvb2wpOwogICAgIHZpcnR1YWwgYm9vbCBnZXRGb3JtVmFsdWUoU3RyaW5nJik7
CiAgICAgdmlydHVhbCBib29sIHNjcm9sbChXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNv
cmU6OlNjcm9sbEdyYW51bGFyaXR5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9X
ZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCA4ZTU2MDkx
YjU4NzEyNjY2OGMwYzg0MGVlYTZlNWRmMzA5ZDI1MzQyLi5lYTE2NzhhNWRiODNjOTk1NzBiOTFl
MDI2Nzg1NmYwNTRhZDRlY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0
Mi5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCkBAIC0yMzEsNiArMjMx
LDcgQEAgRVhQT1JUUwogICAgICAgICA/c2V0U2Nyb2xsT2Zmc2V0RnJvbUludGVybmFsc0BTY3Jv
bGxhYmxlQXJlYUBXZWJDb3JlQEBRQUVYQUJWSW50UG9pbnRAMkBAWgogICAgICAgICA/c2V0U2Vy
aWZGb250RmFtaWx5QFNldHRpbmdzQFdlYkNvcmVAQFFBRVhBQlZBdG9taWNTdHJpbmdAV1RGQEBX
NFVTY3JpcHRDb2RlQEBAWgogICAgICAgICA/c2V0U3RhbmRhcmRGb250RmFtaWx5QFNldHRpbmdz
QFdlYkNvcmVAQFFBRVhBQlZBdG9taWNTdHJpbmdAV1RGQEBXNFVTY3JpcHRDb2RlQEBAWgorICAg
ICAgICA/c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5QFNldHRpbmdzQFdlYkNvcmVAQFFBRVhXNFN0
b3JhZ2VCbG9ja2luZ1BvbGljeUBTZWN1cml0eU9yaWdpbkAyQEBaCiAgICAgICAgID9zZXRTdWdn
ZXN0ZWRWYWx1ZUBIVE1MSW5wdXRFbGVtZW50QFdlYkNvcmVAQFFBRVhBQlZTdHJpbmdAV1RGQEBA
WgogICAgICAgICA/c2V0RWRpdGluZ1ZhbHVlQEhUTUxJbnB1dEVsZW1lbnRAV2ViQ29yZUBAUUFF
WEFCVlN0cmluZ0BXVEZAQEBaCiAgICAgICAgID9zZXR0aW5nc0BEb2N1bWVudEBXZWJDb3JlQEBR
QkVQQVZTZXR0aW5nc0AyQFhaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMu
ZmlsdGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCBhOTE4YzhjYjI5
MDE4MmIzOTFiYTZkMmY5OTZlODViMmU0MDhhODQzLi41NDFkNjRjZWVhNDY2MDkyZDYyYWFkYmJm
NzQwZTY2YTE5YTlkOGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmls
dGVyCisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTE1Myw2ICsxNTMs
NyBAQCBfWk43V2ViQ29yZThTZXR0aW5nczIxc2V0U3RhbmRhcmRGb250RmFtaWx5RVJLTjNXVEYx
MkF0b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlOwogX1pON1dlYkNvcmU4U2V0dGluZ3MyMnNldFNh
bnNTZXJpZkZvbnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5nRTExVVNjcmlwdENvZGU7CiBf
Wk43V2ViQ29yZThTZXR0aW5nczIzc2V0UGljdG9ncmFwaEZvbnRGYW1pbHlFUktOM1dURjEyQXRv
bWljU3RyaW5nRTExVVNjcmlwdENvZGU7CiBfWk43V2ViQ29yZThTZXR0aW5nczI0c2V0TW9ja1Nj
cm9sbGJhcnNFbmFibGVkRWI7CitfWk43V2ViQ29yZThTZXR0aW5nczI0c2V0U3RvcmFnZUJsb2Nr
aW5nUG9saWN5RU5TXzE0U2VjdXJpdHlPcmlnaW4yMVN0b3JhZ2VCbG9ja2luZ1BvbGljeUU7CiBf
Wk43V2ViQ29yZThTZXR0aW5nczM3c2V0Rml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFt
ZUViOwogX1pON1dlYkNvcmU5RnJhbWVWaWV3MTdwYWludENvbnRyb2xUaW50c0V2OwogX1pON1dl
YkNvcmU5RnJhbWVWaWV3MTlzY3JvbGxFbGVtZW50VG9SZWN0RVBOU183RWxlbWVudEVSS05TXzdJ
bnRSZWN0RTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCBhMTgxZGY3MmFiYjJlNTgxZGY0ZDc3NzU5MTNmNjc5M2YwNDc2YjRl
Li5lODJjZmNmZTg2ODJkZTQyMTdlOWQyZmRlZDRkYjNjNDViZTU3NDJiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzkgQEAKKzIwMTItMDktMTQgIEplZmZyZXkgUGZhdSAgPGpwZmF1QGFwcGxlLmNvbT4KKwor
ICAgICAgICBBbGxvdyB0aGlyZC1wYXJ0eSBzdG9yYWdlIGJsb2NraW5nIHNldHRpbmcgdG8gY2hh
bmdlIHdoaWxlIGEgcGFnZSBpcyBsb2FkZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk1NzkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdGVkIGNvbWJpbmF0aW9ucyBvZiBsb29zZW5pbmcgYW5kIHN0
cmVuZ3RoZW5pbmcgdGhlIHN0b3JhZ2UgYmxvY2tpbmcgcG9saWN5IG9uIHZhcmlvdXMgdHlwZXMg
b2Ygc3RvcmFnZS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2lm
cmFtZS1mb3Itc3RvcmFnZS1ibG9ja2luZy1jaGFuZ2VkLWxvY2FsLXN0b3JhZ2UuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1z
dG9yYWdlLWJsb2NraW5nLWNoYW5nZWQtc2hhcmVkLXdvcmtlci5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9pZnJhbWUtZm9yLXN0b3JhZ2UtYmxv
Y2tpbmctY2hhbmdlZC13ZWJzcWwuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9z
ZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLWxvY2FsLXN0b3JhZ2UtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tp
bmctbG9vc2VuZWQtbG9jYWwtc3RvcmFnZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtcGx1Z2luLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5n
LWxvb3NlbmVkLXBsdWdpbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtcHJpdmF0ZS1icm93c2luZy1wbHVnaW4tZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2Ut
YmxvY2tpbmctbG9vc2VuZWQtcHJpdmF0ZS1icm93c2luZy1wbHVnaW4uaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXNo
YXJlZC13b3JrZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtc2hhcmVkLXdvcmtlci5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2Vu
ZWQtd2Vic3FsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1
cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXdlYnNxbC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLWxv
Y2FsLXN0b3JhZ2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3Nl
Y3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLWxvY2FsLXN0b3JhZ2UuaHRtbDog
QWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0
cmVuZ3RoZW5lZC1wbHVnaW4tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXBsdWdpbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3Ry
ZW5ndGhlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5l
ZC1wcml2YXRlLWJyb3dzaW5nLXBsdWdpbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXNoYXJlZC13b3JrZXIt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3Jh
Z2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXNoYXJlZC13b3JrZXIuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC13
ZWJzcWwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5
L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXdlYnNxbC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOiBTa2lwIHNoYXJlZCB3b3Jr
ZXIgYW5kIHBsdWdpbiB0ZXN0cy4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL2h0dHAvdGVz
dHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcGx1Z2luLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2lu
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTItMDktMDYgIEplZmZyZXkgUGZhdSAgPGpwZmF1
QGFwcGxlLmNvbT4KIAogICAgICAgICBFeHRlbmQgdGhpcmQtcGFydHkgc3RvcmFnZSBibG9ja2lu
ZyBBUEkgdG8gb3B0aW9uYWxseSBhbGxvdyBibG9ja2luZyBhbGwgc3RvcmFnZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1z
dG9yYWdlLWJsb2NraW5nLWNoYW5nZWQtbG9jYWwtc3RvcmFnZS5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5n
LWNoYW5nZWQtbG9jYWwtc3RvcmFnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyMDM3MTk2MDI3NjMwODBl
ZmJkYzY5NmE0MjBlODA0MGYwODBjN2QKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9pZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmct
Y2hhbmdlZC1sb2NhbC1zdG9yYWdlLmh0bWwKQEAgLTAsMCArMSwzNSBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2FnZSkgeworCXZhciBub2RlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgncCcpOworCW5vZGUudGV4dENvbnRlbnQgPSBtZXNzYWdlOworCWRv
Y3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobm9kZSk7Cit9CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5j
dGlvbigpIHsKKwl0cnkgeworCQl2YXIgbCA9IHdpbmRvdy5sb2NhbFN0b3JhZ2U7CisJCWwgPSBu
dWxsOworCQlsb2coJ05vIGV4Y2VwdGlvbicpOworCX0gY2F0Y2ggKGV4Y2VwdGlvbikgeworCQls
b2coZXhjZXB0aW9uLm5hbWUpOworCX0KK30KKword2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9u
KGUpIHsKKwl0cnkgeworCQl2YXIgbCA9IHdpbmRvdy5sb2NhbFN0b3JhZ2U7CisJCWwgPSBudWxs
OworCQlsb2coJ05vIGV4Y2VwdGlvbicpOworCQl3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKCdO
byBleGNlcHRpb24nLCAnKicpOworCX0gY2F0Y2ggKGV4Y2VwdGlvbikgeworCQlsb2coZXhjZXB0
aW9uLm5hbWUpOworCQl3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKGV4Y2VwdGlvbi5uYW1lLCAn
KicpOworCX0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9p
ZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC1zaGFyZWQtd29ya2VyLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3Jlc291cmNlcy9pZnJhbWUtZm9yLXN0b3Jh
Z2UtYmxvY2tpbmctY2hhbmdlZC1zaGFyZWQtd29ya2VyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzdiYTE5
ZDE3MGViNGEwMDg3MDc5Y2Q4N2RiNDU5NmEwNzQ0ODJmMwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFn
ZS1ibG9ja2luZy1jaGFuZ2VkLXNoYXJlZC13b3JrZXIuaHRtbApAQCAtMCwwICsxLDQxIEBACis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKSB7CisJdmFyIG5v
ZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwJyk7CisJbm9kZS50ZXh0Q29udGVudCA9IG1l
c3NhZ2U7CisJZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChub2RlKTsKK30KKworZnVuY3Rpb24g
Y3JlYXRlV29ya2VyKCkgeworCXZhciB3b3JrZXIgPSBuZXcgU2hhcmVkV29ya2VyKCdzaGFyZWQt
d29ya2VyLmpzJywgJ1NoYXJlZFdvcmtlcicpOworCXdvcmtlci5wb3J0Lm9ubWVzc2FnZSA9IGZ1
bmN0aW9uKGV2ZW50KSB7CisJCWxvZyhldmVudC5kYXRhKTsKKwkJd2luZG93LnBhcmVudC5wb3N0
TWVzc2FnZShldmVudC5kYXRhLCAnKicpOworCX0KKwl3b3JrZXIucG9ydC5zdGFydCgpOworCXdv
cmtlci5wb3J0LnBvc3RNZXNzYWdlKCdDb25uZWN0aW9uIHRlc3QnKTsKK30KKword2luZG93Lm9u
bG9hZCA9IGZ1bmN0aW9uKCkgeworCXRyeSB7CisJCWNyZWF0ZVdvcmtlcihmYWxzZSk7CisJfSBj
YXRjaCAoZXhjZXB0aW9uKSB7CisJCWxvZyhleGNlcHRpb24ubmFtZSk7CisJCXdpbmRvdy5wYXJl
bnQucG9zdE1lc3NhZ2UoZXhjZXB0aW9uLm5hbWUsICcqJyk7CisJfQorfQorCit3aW5kb3cub25t
ZXNzYWdlID0gZnVuY3Rpb24oZSkgeworCXRyeSB7CisJCWNyZWF0ZVdvcmtlcih0cnVlKTsKKwl9
IGNhdGNoIChleGNlcHRpb24pIHsKKwkJbG9nKGV4Y2VwdGlvbi5uYW1lKTsKKwkJd2luZG93LnBh
cmVudC5wb3N0TWVzc2FnZShleGNlcHRpb24ubmFtZSwgJyonKTsKKwl9Cit9Cis8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2Nr
aW5nLWNoYW5nZWQtd2Vic3FsLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3Jlc291cmNlcy9pZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC13ZWJzcWwuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45NDUzOGJiYmU4MDg4MzgwMGZhNjkyMzZiOWRkYWYwZWNlM2RjNzg5Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9yZXNvdXJj
ZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5nLWNoYW5nZWQtd2Vic3FsLmh0bWwKQEAgLTAs
MCArMSwzNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobWVzc2Fn
ZSkgeworCXZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOworCW5vZGUudGV4
dENvbnRlbnQgPSBtZXNzYWdlOworCWRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobm9kZSk7Cit9
CisKK3dpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKwl0cnkgeworCQl2YXIgc3FsID0gd2lu
ZG93Lm9wZW5EYXRhYmFzZSgndGVzdGRiJywgJzEuMCcsICdUZXN0aW5nIGRhdGFiYXNlJywgNTEy
ICogMTAyNCk7CisJCXNxbCA9IG51bGw7CisJCWxvZygnTm8gZXhjZXB0aW9uJyk7CisJfSBjYXRj
aCAoZXhjZXB0aW9uKSB7CisJCWxvZyhleGNlcHRpb24ubmFtZSk7CisJfQorfQorCit3aW5kb3cu
b25tZXNzYWdlID0gZnVuY3Rpb24oZSkgeworCXRyeSB7CisJCXZhciBzcWwgPSB3aW5kb3cub3Bl
bkRhdGFiYXNlKCd0ZXN0ZGInLCAnMS4wJywgJ1Rlc3RpbmcgZGF0YWJhc2UnLCA1MTIgKiAxMDI0
KTsKKwkJc3FsID0gbnVsbDsKKwkJbG9nKCdObyBleGNlcHRpb24nKTsKKwkJd2luZG93LnBhcmVu
dC5wb3N0TWVzc2FnZSgnTm8gZXhjZXB0aW9uJywgJyonKTsKKwl9IGNhdGNoIChleGNlcHRpb24p
IHsKKwkJbG9nKGV4Y2VwdGlvbi5uYW1lKTsKKwkJd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZShl
eGNlcHRpb24ubmFtZSwgJyonKTsKKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1
cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLWxvY2FsLXN0b3JhZ2UtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3Nl
bmVkLWxvY2FsLXN0b3JhZ2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmEzZWI5MzMxODc4MDNl
ZTVlNGI3NzM0MzdhNjA3ZmE5Mzc0NjdjYTEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtbG9jYWwtc3Rv
cmFnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIHJl
dHVybiBvbmx5IG9uZSBzZWN1cml0eSBlcnJvcjoKKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwh
LS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK1NFQ1VSSVRZX0VSUgor
CitObyBleGNlcHRpb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtbG9jYWwt
c3RvcmFnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1OWRiMGU5MDkxNzA3Nzc3MmZhY2Y5OTRjNGU3ZDU5
N2ZhOWRlMWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtbG9jYWwtc3RvcmFnZS5odG1sCkBAIC0wLDAg
KzEsMzEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisJdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisJdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK30KKworaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorCWludGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xp
Y3koJ0Jsb2NrQWxsJyk7CisKK2Z1bmN0aW9uIGRlY3JlbWVudCgpIHsKKwlpZiAod2luZG93LnRl
c3RSdW5uZXIpCisJCWludGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3ko
J0FsbG93QWxsJyk7CisJZm9yICh2YXIgaSA9IDA7IGkgPCB3aW5kb3cuZnJhbWVzLmxlbmd0aDsg
KytpKQorCQl3aW5kb3cuZnJhbWVzW2ldLnBvc3RNZXNzYWdlKCdibG9ja2VkJywgJyonKTsKK30K
Kword2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKCkgeworCWlmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworCQl0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHA+VGhpcyBpZnJhbWUgc2hvdWxkIHJldHVybiBvbmx5IG9uZSBzZWN1cml0
eSBlcnJvcjo8L3A+Cis8aWZyYW1lIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5
L3Jlc291cmNlcy9pZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC1sb2NhbC1zdG9y
YWdlLmh0bWwiIG9ubG9hZD0iZGVjcmVtZW50KCkiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJs
b2NraW5nLWxvb3NlbmVkLXBsdWdpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtcGx1Z2luLWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iOThlZTRmOGU4NTM3YzY2NGUyMjJlM2IxZTc5NTkxMDI1NmE5NmZlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdl
LWJsb2NraW5nLWxvb3NlbmVkLXBsdWdpbi1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitU
aGlzIGlmcmFtZSBzaG91bGQgbm90IGhhdmUgcHJpdmF0ZSBicm93c2luZyBlbmFibGVkOgorCisK
KworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCist
LS0tLS0tLQorZmFsc2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJp
dHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wbHVnaW4uaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wbHVnaW4uaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43YjBkMjRmMjJkYWE0MGU2YzEwNTk3YzA3ZTUzNWNkYjM5MzY5MzAxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJs
b2NraW5nLWxvb3NlbmVkLXBsdWdpbi5odG1sCkBAIC0wLDAgKzEsMzEgQEAKKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisJdGVzdFJ1bm5lci5kdW1w
Q2hpbGRGcmFtZXNBc1RleHQoKTsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCWludGVy
bmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0Jsb2NrQWxsJyk7CisKK2Z1
bmN0aW9uIGRlY3JlbWVudCgpIHsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpCisJCWludGVybmFs
cy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0FsbG93QWxsJyk7CisJZm9yICh2
YXIgaSA9IDA7IGkgPCB3aW5kb3cuZnJhbWVzLmxlbmd0aDsgKytpKQorCQl3aW5kb3cuZnJhbWVz
W2ldLnBvc3RNZXNzYWdlKCdibG9ja2VkJywgJyonKTsKK30KKword2luZG93Lm9ubWVzc2FnZSA9
IGZ1bmN0aW9uKCkgeworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCQl0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyBp
ZnJhbWUgc2hvdWxkIG5vdCBoYXZlIHByaXZhdGUgYnJvd3NpbmcgZW5hYmxlZDo8L3A+Cis8aWZy
YW1lIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAwL3NlY3VyaXR5L3Jlc291cmNlcy9jcm9zcy1v
cmlnaW4taWZyYW1lLWZvci1wbHVnaW4tYXN5bmMuaHRtbCIgb25sb2FkPSJkZWNyZW1lbnQoKSI+
PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtcHJpdmF0ZS1icm93c2lu
Zy1wbHVnaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9z
dG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMDllN2I2ZGQ2NjQ2MWQyMmJiNWUwOGE2MmM2NTFkNWU1YjM4ODY2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9y
YWdlLWJsb2NraW5nLWxvb3NlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDggQEAKK1RoaXMgaWZyYW1lIHNob3VsZCBoYXZlIHByaXZhdGUgYnJvd3Np
bmcgZW5hYmxlZDoKKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0t
ZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK3RydWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1wcml2YXRlLWJyb3dz
aW5nLXBsdWdpbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdl
LWJsb2NraW5nLWxvb3NlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uOGZhM2M3ODEyNTRhYzliZWFmNTQ3NzFlNmIzNGNjODQ4NzI0MjlhYgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1s
b29zZW5lZC1wcml2YXRlLWJyb3dzaW5nLXBsdWdpbi5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisJdGVzdFJ1
bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKKwlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3Rv
cmFnZUJsb2NraW5nUG9saWN5KCdCbG9ja0FsbCcpOworfQorCitmdW5jdGlvbiBkZWNyZW1lbnQo
KSB7CisJaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJCXRlc3RSdW5uZXIuc2V0UHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCh0cnVlKTsKKwkJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9j
a2luZ1BvbGljeSgnQWxsb3dBbGwnKTsKKwl9CisJZm9yICh2YXIgaSA9IDA7IGkgPCB3aW5kb3cu
ZnJhbWVzLmxlbmd0aDsgKytpKQorCQl3aW5kb3cuZnJhbWVzW2ldLnBvc3RNZXNzYWdlKCdibG9j
a2VkJywgJyonKTsKK30KKword2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKCkgeworCWlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworCQl0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKwkJdGVzdFJ1
bm5lci5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKTsKKwl9Cit9Cis8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyBpZnJhbWUgc2hvdWxkIGhhdmUgcHJpdmF0ZSBicm93
c2luZyBlbmFibGVkOjwvcD4KKzxpZnJhbWUgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2Vj
dXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdpbi1pZnJhbWUtZm9yLXBsdWdpbi1hc3luYy5odG1s
IiBvbmxvYWQ9ImRlY3JlbWVudCgpIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1s
b29zZW5lZC1zaGFyZWQtd29ya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1zaGFyZWQtd29ya2VyLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi45MDEyYTMwYjljMWI5YmRlMDc5MzMwNTVmMzgyMDgxMmVkYjk1
YjdmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9z
dG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXNoYXJlZC13b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTAgQEAKK1RoaXMgaWZyYW1lIHNob3VsZCByZXR1cm4gb25seSBvbmUgc2VjdXJpdHkg
ZXJyb3I6CisKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1l
MC0tPi0tPicKKy0tLS0tLS0tCitTRUNVUklUWV9FUlIKKworQ29ubmVjdGVkIHN1Y2Nlc3NmdWxs
eQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJs
b2NraW5nLWxvb3NlbmVkLXNoYXJlZC13b3JrZXIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC1zaGFyZWQtd29ya2VyLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDg1NGE0ODJhZWM3ZDg2ZDhjZGZlYzIwZjc1YjNiMjhlM2MyZmI2MgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1i
bG9ja2luZy1sb29zZW5lZC1zaGFyZWQtd29ya2VyLmh0bWwKQEAgLTAsMCArMSwzMSBAQAorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwl0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKwl0ZXN0UnVu
bmVyLmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworfQorCitpZiAod2luZG93LnRlc3RSdW5uZXIp
CisJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeSgnQmxvY2tBbGwn
KTsKKword2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKCkgeworCWlmICh3aW5kb3cudGVzdFJ1
bm5lcikKKwkJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeSgnQWxs
b3dBbGwnKTsKKwlmb3IgKHZhciBpID0gMDsgaSA8IHdpbmRvdy5mcmFtZXMubGVuZ3RoOyArK2kp
CisJCXdpbmRvdy5mcmFtZXNbaV0ucG9zdE1lc3NhZ2UoJ2Jsb2NrZWQnLCAnKicpOworCisJd2lu
ZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKCkgeworCQlpZiAod2luZG93LnRlc3RSdW5uZXIpIHsK
KwkJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworCQl9CisJfQorfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwPlRoaXMgaWZyYW1lIHNob3VsZCByZXR1cm4gb25seSBvbmUgc2VjdXJp
dHkgZXJyb3I6PC9wPgorPGlmcmFtZSBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0
eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9yYWdlLWJsb2NraW5nLWNoYW5nZWQtc2hhcmVkLXdv
cmtlci5odG1sIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC13ZWJz
cWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdl
LWJsb2NraW5nLWxvb3NlbmVkLXdlYnNxbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTNlYjkz
MzE4NzgwM2VlNWU0Yjc3MzQzN2E2MDdmYTkzNzQ2N2NhMQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1sb29zZW5lZC13
ZWJzcWwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgaWZyYW1lIHNob3VsZCBy
ZXR1cm4gb25seSBvbmUgc2VjdXJpdHkgZXJyb3I6CisKKworCistLS0tLS0tLQorRnJhbWU6ICc8
IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitTRUNVUklUWV9FUlIK
KworTm8gZXhjZXB0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtd2Vic3FsLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctbG9vc2VuZWQtd2Vic3FsLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZTAyYzNiM2NhZGMwZDJmZWFmYzA0ZGVlN2VmYmI2MmVlNTc2NjlhMQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1i
bG9ja2luZy1sb29zZW5lZC13ZWJzcWwuaHRtbApAQCAtMCwwICsxLDMxIEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCXRlc3RSdW5uZXIud2Fp
dFVudGlsRG9uZSgpOworCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCXRlc3RSdW5uZXIuZHVt
cENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKwlpbnRl
cm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdCbG9ja0FsbCcpOworCitm
dW5jdGlvbiBkZWNyZW1lbnQoKSB7CisJaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCQlpbnRlcm5h
bHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdBbGxvd0FsbCcpOworCWZvciAo
dmFyIGkgPSAwOyBpIDwgd2luZG93LmZyYW1lcy5sZW5ndGg7ICsraSkKKwkJd2luZG93LmZyYW1l
c1tpXS5wb3N0TWVzc2FnZSgnYmxvY2tlZCcsICcqJyk7Cit9CisKK3dpbmRvdy5vbm1lc3NhZ2Ug
PSBmdW5jdGlvbigpIHsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwkJdGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7CisJfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMg
aWZyYW1lIHNob3VsZCByZXR1cm4gb25seSBvbmUgc2VjdXJpdHkgZXJyb3I6PC9wPgorPGlmcmFt
ZSBzcmM9Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZv
ci1zdG9yYWdlLWJsb2NraW5nLWNoYW5nZWQtd2Vic3FsLmh0bWwiIG9ubG9hZD0iZGVjcmVtZW50
KCkiPjwvaWZyYW1lPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1sb2NhbC1z
dG9yYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3Rv
cmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtbG9jYWwtc3RvcmFnZS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uN2U2NjE4NWMzZjQ1OTE5YzM5ZGY2N2JlOTgzMWRiOWI0N2I5NTFjZAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9j
a2luZy1zdHJlbmd0aGVuZWQtbG9jYWwtc3RvcmFnZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
MCBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIHJldHVybiBvbmx5IG9uZSBzZWN1cml0eSBlcnJvcjoK
KworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+
JworLS0tLS0tLS0KK05vIGV4Y2VwdGlvbgorCitTRUNVUklUWV9FUlIKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVu
ZWQtbG9jYWwtc3RvcmFnZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9z
dG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1sb2NhbC1zdG9yYWdlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZDQ5ZjQxZTk1YWQ2ZjVjMGVkYmQzNTVmNTdkODMzNDdmNTYwY2JhMgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1z
dHJlbmd0aGVuZWQtbG9jYWwtc3RvcmFnZS5odG1sCkBAIC0wLDAgKzEsMjkgQEAKKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisJdGVzdFJ1bm5lci53
YWl0VW50aWxEb25lKCk7CisJdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisJdGVzdFJ1bm5lci5k
dW1wQ2hpbGRGcmFtZXNBc1RleHQoKTsKK30KKworZnVuY3Rpb24gZGVjcmVtZW50KCkgeworCWlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKwkJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9j
a2luZ1BvbGljeSgnQmxvY2tBbGwnKTsKKwlmb3IgKHZhciBpID0gMDsgaSA8IHdpbmRvdy5mcmFt
ZXMubGVuZ3RoOyArK2kpCisJCXdpbmRvdy5mcmFtZXNbaV0ucG9zdE1lc3NhZ2UoJ2Jsb2NrZWQn
LCAnKicpOworfQorCit3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CisJaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CisJCWludGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQ
b2xpY3koJ0FsbG93QWxsJyk7CisJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworCX0KK30KKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cD5UaGlzIGlmcmFtZSBzaG91bGQgcmV0dXJuIG9u
bHkgb25lIHNlY3VyaXR5IGVycm9yOjwvcD4KKzxpZnJhbWUgc3JjPSJodHRwOi8vMTI3LjAuMC4x
OjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2lmcmFtZS1mb3Itc3RvcmFnZS1ibG9ja2luZy1jaGFu
Z2VkLWxvY2FsLXN0b3JhZ2UuaHRtbCIgb25sb2FkPSJkZWNyZW1lbnQoKSI+PC9pZnJhbWU+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3Vy
aXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXBsdWdpbi1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhl
bmVkLXBsdWdpbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRkOGVjZWZhN2UzODcxM2Q0NDdl
Yzg0M2JlYTEyMTQ0NGEyYzhhZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcGx1Z2luLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1RoaXMgaWZyYW1lIHNob3VsZCBoYXZlIHByaXZhdGUg
YnJvd3NpbmcgZW5hYmxlZDoKKworCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBhdGgg
Ly88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK2ZhbHNlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXBs
dWdpbi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2Nr
aW5nLXN0cmVuZ3RoZW5lZC1wbHVnaW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xOTBlNjgzZmQzNTBkNWU1
MzdiNzljYjlmYTMwNjQ4ZGY3YmQ2YjcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wbHVnaW4u
aHRtbApAQCAtMCwwICsxLDI5IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworCXRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCXRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworCXRlc3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Cit9
CisKK2Z1bmN0aW9uIGRlY3JlbWVudCgpIHsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpCisJCWlu
dGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koJ0Jsb2NrQWxsJyk7CisJ
Zm9yICh2YXIgaSA9IDA7IGkgPCB3aW5kb3cuZnJhbWVzLmxlbmd0aDsgKytpKQorCQl3aW5kb3cu
ZnJhbWVzW2ldLnBvc3RNZXNzYWdlKCdibG9ja2VkJywgJyonKTsKK30KKword2luZG93Lm9ubWVz
c2FnZSA9IGZ1bmN0aW9uKCkgeworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCQlpbnRlcm5h
bHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdBbGxvd0FsbCcpOworCQl0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHA+VGhpcyBpZnJhbWUgc2hvdWxkIGhhdmUgcHJpdmF0ZSBicm93c2luZyBlbmFibGVkOjwvcD4K
KzxpZnJhbWUgc3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Ny
b3NzLW9yaWdpbi1pZnJhbWUtZm9yLXBsdWdpbi1hc3luYy5odG1sIiBvbmxvYWQ9ImRlY3JlbWVu
dCgpIj48L2lmcmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcHJpdmF0
ZS1icm93c2luZy1wbHVnaW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wcml2YXRlLWJyb3dzaW5nLXBs
dWdpbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTRkOGVjZWZhN2UzODcxM2Q0NDdlYzg0M2Jl
YTEyMTQ0NGEyYzhhZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcHJpdmF0ZS1icm93c2luZy1w
bHVnaW4tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOCBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIGhh
dmUgcHJpdmF0ZSBicm93c2luZyBlbmFibGVkOgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEt
LWZyYW1lUGF0aCAvLzwhLS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQorZmFsc2UKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJl
bmd0aGVuZWQtcHJpdmF0ZS1icm93c2luZy1wbHVnaW4uaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtcHJpdmF0ZS1icm93
c2luZy1wbHVnaW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODljOTgyMmNjYzEwYWZkMTU3MTVkM2I5ZjNl
NTk3MWI4ZDg2ZTgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wcml2YXRlLWJyb3dzaW5nLXBs
dWdpbi5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgoraWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisJdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisJdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisJdGVzdFJ1bm5lci5kdW1wQ2hpbGRGcmFtZXNBc1RleHQo
KTsKKwl0ZXN0UnVubmVyLnNldFByaXZhdGVCcm93c2luZ0VuYWJsZWQodHJ1ZSk7Cit9CisKK2Z1
bmN0aW9uIGRlY3JlbWVudCgpIHsKKwlpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwkJaW50ZXJu
YWxzLnNldHRpbmdzLnNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeSgnQmxvY2tBbGwnKTsKKwkJdGVz
dFJ1bm5lci5zZXRQcml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKTsKKwl9CisJZm9yICh2YXIg
aSA9IDA7IGkgPCB3aW5kb3cuZnJhbWVzLmxlbmd0aDsgKytpKQorCQl3aW5kb3cuZnJhbWVzW2ld
LnBvc3RNZXNzYWdlKCdibG9ja2VkJywgJyonKTsKK30KKword2luZG93Lm9ubWVzc2FnZSA9IGZ1
bmN0aW9uKCkgeworCWlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCQlpbnRlcm5hbHMuc2V0dGlu
Z3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KCdBbGxvd0FsbCcpOworCQl0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKKwl9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyBp
ZnJhbWUgc2hvdWxkIGhhdmUgcHJpdmF0ZSBicm93c2luZyBlbmFibGVkOjwvcD4KKzxpZnJhbWUg
c3JjPSJodHRwOi8vMTI3LjAuMC4xOjgwMDAvc2VjdXJpdHkvcmVzb3VyY2VzL2Nyb3NzLW9yaWdp
bi1pZnJhbWUtZm9yLXBsdWdpbi1hc3luYy5odG1sIiBvbmxvYWQ9ImRlY3JlbWVudCgpIj48L2lm
cmFtZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtc2hhcmVkLXdvcmtlci1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxv
Y2tpbmctc3RyZW5ndGhlbmVkLXNoYXJlZC13b3JrZXItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdmYTE4MTQzZmU2YmM0Zjk1NWRlZWY2YWUyOTg4NTRkNThiZTZjYjcKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3Ry
ZW5ndGhlbmVkLXNoYXJlZC13b3JrZXItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Ro
aXMgaWZyYW1lIHNob3VsZCByZXR1cm4gb25seSBvbmUgc2VjdXJpdHkgZXJyb3I6CisKKworCist
LS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0t
LS0tCitDb25uZWN0ZWQgc3VjY2Vzc2Z1bGx5CisKK1NFQ1VSSVRZX0VSUgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3Ro
ZW5lZC1zaGFyZWQtd29ya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5
L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXNoYXJlZC13b3JrZXIuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40OGY5YjllMGMzZTU3OTFiOWE1M2NkYzI5NDg1ZTQ0ZDUyODIxNTgxCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5n
LXN0cmVuZ3RoZW5lZC1zaGFyZWQtd29ya2VyLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKwl0ZXN0UnVubmVy
LndhaXRVbnRpbERvbmUoKTsKKwl0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKwl0ZXN0UnVubmVy
LmR1bXBDaGlsZEZyYW1lc0FzVGV4dCgpOworfQorCit3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rp
b24oKSB7CisJaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorCQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0
U3RvcmFnZUJsb2NraW5nUG9saWN5KCdCbG9ja0FsbCcpOworCWZvciAodmFyIGkgPSAwOyBpIDwg
d2luZG93LmZyYW1lcy5sZW5ndGg7ICsraSkKKwkJd2luZG93LmZyYW1lc1tpXS5wb3N0TWVzc2Fn
ZSgnYmxvY2tlZCcsICcqJyk7CisKKwl3aW5kb3cub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7CisJ
CWlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCQkJaW50ZXJuYWxzLnNldHRpbmdzLnNldFN0b3Jh
Z2VCbG9ja2luZ1BvbGljeSgnQWxsb3dBbGwnKTsKKwkJCXRlc3RSdW5uZXIubm90aWZ5RG9uZSgp
OworCQl9CisJfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPlRoaXMgaWZyYW1l
IHNob3VsZCByZXR1cm4gb25seSBvbmUgc2VjdXJpdHkgZXJyb3I6PC9wPgorPGlmcmFtZSBzcmM9
Imh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9zZWN1cml0eS9yZXNvdXJjZXMvaWZyYW1lLWZvci1zdG9y
YWdlLWJsb2NraW5nLWNoYW5nZWQtc2hhcmVkLXdvcmtlci5odG1sIj48L2lmcmFtZT4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkv
c3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQtd2Vic3FsLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1zdHJlbmd0aGVuZWQt
d2Vic3FsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZTY2MTg1YzNmNDU5MTljMzlkZjY3YmU5
ODMxZGI5YjQ3Yjk1MWNkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC13ZWJzcWwtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTAgQEAKK1RoaXMgaWZyYW1lIHNob3VsZCByZXR1cm4gb25seSBvbmUg
c2VjdXJpdHkgZXJyb3I6CisKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQYXRoIC8v
PCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitObyBleGNlcHRpb24KKworU0VDVVJJVFlfRVJS
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxv
Y2tpbmctc3RyZW5ndGhlbmVkLXdlYnNxbC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC13ZWJzcWwuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44OGVlZjE0OWU0YTE5NDA0ODQ5OGJmMmJjMzVmNTY0NWFlMzVjNWQzCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5n
LXN0cmVuZ3RoZW5lZC13ZWJzcWwuaHRtbApAQCAtMCwwICsxLDI5IEBACis8aHRtbD4KKzxoZWFk
PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworCXRlc3RSdW5uZXIud2FpdFVu
dGlsRG9uZSgpOworCXRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCXRlc3RSdW5uZXIuZHVtcENo
aWxkRnJhbWVzQXNUZXh0KCk7Cit9CisKK2Z1bmN0aW9uIGRlY3JlbWVudCgpIHsKKwlpZiAod2lu
ZG93LnRlc3RSdW5uZXIpCisJCWludGVybmFscy5zZXR0aW5ncy5zZXRTdG9yYWdlQmxvY2tpbmdQ
b2xpY3koJ0Jsb2NrQWxsJyk7CisJZm9yICh2YXIgaSA9IDA7IGkgPCB3aW5kb3cuZnJhbWVzLmxl
bmd0aDsgKytpKQorCQl3aW5kb3cuZnJhbWVzW2ldLnBvc3RNZXNzYWdlKCdibG9ja2VkJywgJyon
KTsKK30KKword2luZG93Lm9ubWVzc2FnZSA9IGZ1bmN0aW9uKCkgeworCWlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworCQlpbnRlcm5hbHMuc2V0dGluZ3Muc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5
KCdBbGxvd0FsbCcpOworCQl0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKwl9Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPHA+VGhpcyBpZnJhbWUgc2hvdWxkIHJldHVybiBvbmx5IG9u
ZSBzZWN1cml0eSBlcnJvcjo8L3A+Cis8aWZyYW1lIHNyYz0iaHR0cDovLzEyNy4wLjAuMTo4MDAw
L3NlY3VyaXR5L3Jlc291cmNlcy9pZnJhbWUtZm9yLXN0b3JhZ2UtYmxvY2tpbmctY2hhbmdlZC13
ZWJzcWwuaHRtbCIgb25sb2FkPSJkZWNyZW1lbnQoKSI+PC9pZnJhbWU+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpp
bmRleCAxNjVjNTkzMDc0YmJjZjZhMGQwNTFjYzViODRiMmIyZDJhYjVmYzg5Li5kZmU2MjQxM2Iz
ZDJiZjg0ZThkZTk2MjRiMGNhZjZmYzVjNmExMzBhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTU0MSw2ICs1NDEsOCBAQCBXT05URklY
IFNLSVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9zaGFyZWQt
d29ya2VyLWNvbm5lY3QtcwogV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy9zZWN1cml0eS9jcm9z
cy1vcmlnaW4tc2hhcmVkLXdvcmtlci5odG1sID0gVEVYVAogV09OVEZJWCBTS0lQIDogaHR0cC90
ZXN0cy9zZWN1cml0eS9jcm9zcy1vcmlnaW4tc2hhcmVkLXdvcmtlci1hbGxvd2VkLmh0bWwgPSBU
RVhUCiBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5L3NhbWUtb3JpZ2luLXNoYXJl
ZC13b3JrZXItYmxvY2tlZC5odG1sID0gVEVYVAorV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy9z
ZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXNoYXJlZC13b3JrZXIuaHRtbCA9IFRF
WFQKK1dPTlRGSVggU0tJUCA6IGh0dHAvdGVzdHMvc2VjdXJpdHkvc3RvcmFnZS1ibG9ja2luZy1z
dHJlbmd0aGVuZWQtc2hhcmVkLXdvcmtlci5odG1sID0gVEVYVAogV09OVEZJWCBTS0lQIDogc3Rv
cmFnZS9pbmRleGVkZGIvYmFzaWNzLXNoYXJlZC13b3JrZXJzLmh0bWwgPSBQQVNTCiAKIC8vIHRl
c3Rfc2hlbGwgZG9lcyBub3Qgc3VwcG9ydCBtZXNzYWdlIHBvcnRzCkBAIC02MTUsNiArNjE3LDEw
IEBAIFdPTlRGSVggU0tJUCA6IGZhc3QvZG9tL2djLTEwLmh0bWwgPSBQQVNTCiAKIC8vIFdlIGRv
IG5vdCB1c2UgU2FmYXJpJ3MgcHJpdmF0ZSBicm93c2luZyBtb2RlLgogV09OVEZJWCBTS0lQIDog
aHR0cC90ZXN0cy9zZWN1cml0eS9jcm9zcy1mcmFtZS1hY2Nlc3MtcHJpdmF0ZS1icm93c2luZy5o
dG1sID0gUEFTUworV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJs
b2NraW5nLWxvb3NlbmVkLXBsdWdpbi5odG1sID0gUEFTUworV09OVEZJWCBTS0lQIDogaHR0cC90
ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLWxvb3NlbmVkLXByaXZhdGUtYnJvd3Npbmct
cGx1Z2luLmh0bWwgPSBQQVNTCitXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5L3N0
b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXBsdWdpbi5odG1sID0gUEFTUworV09OVEZJWCBT
S0lQIDogaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1w
cml2YXRlLWJyb3dzaW5nLXBsdWdpbi5odG1sID0gUEFTUwogV09OVEZJWCBTS0lQIDogcGx1Z2lu
cy9wcml2YXRlLWJyb3dzaW5nLW1vZGUuaHRtbCA9IFBBU1MKIFdPTlRGSVggU0tJUCA6IHBsdWdp
bnMvcHJpdmF0ZS1icm93c2luZy1tb2RlLTIuaHRtbCA9IFRFWFQKIFdPTlRGSVggU0tJUCA6IHN0
b3JhZ2UvZG9tc3RvcmFnZS9sb2NhbHN0b3JhZ2UvcHJpdmF0ZS1icm93c2luZy1hZmZlY3RzLXN0
b3JhZ2UuaHRtbCA9IFBBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13
azIvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wbHVn
aW4tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9odHRwL3Rlc3Rz
L3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3RyZW5ndGhlbmVkLXBsdWdpbi1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMjA5ZTdiNmRkNjY0NjFkMjJiYjVlMDhhNjJjNjUxZDVlNWIzODg2Ngot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvaHR0cC90ZXN0
cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wbHVnaW4tZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsOCBAQAorVGhpcyBpZnJhbWUgc2hvdWxkIGhhdmUgcHJpdmF0ZSBicm93
c2luZyBlbmFibGVkOgorCisKKworLS0tLS0tLS0KK0ZyYW1lOiAnPCEtLWZyYW1lUGF0aCAvLzwh
LS1mcmFtZTAtLT4tLT4nCistLS0tLS0tLQordHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMi9odHRwL3Rlc3RzL3NlY3VyaXR5L3N0b3JhZ2UtYmxvY2tpbmctc3Ry
ZW5ndGhlbmVkLXByaXZhdGUtYnJvd3NpbmctcGx1Z2luLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvaHR0cC90ZXN0cy9zZWN1cml0eS9zdG9yYWdlLWJsb2NraW5n
LXN0cmVuZ3RoZW5lZC1wcml2YXRlLWJyb3dzaW5nLXBsdWdpbi1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMjA5ZTdiNmRkNjY0NjFkMjJiYjVlMDhhNjJjNjUxZDVlNWIzODg2NgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvaHR0cC90ZXN0cy9zZWN1cml0
eS9zdG9yYWdlLWJsb2NraW5nLXN0cmVuZ3RoZW5lZC1wcml2YXRlLWJyb3dzaW5nLXBsdWdpbi1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUaGlzIGlmcmFtZSBzaG91bGQgaGF2ZSBwcml2
YXRlIGJyb3dzaW5nIGVuYWJsZWQ6CisKKworCistLS0tLS0tLQorRnJhbWU6ICc8IS0tZnJhbWVQ
YXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCit0cnVlCmRpZmYgLS1naXQgYS9DaGFu
Z2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggM2ZiYTA1YWIzODU4Y2MwNWE2NWRlYmJjYTJhN2YzYmQz
NzA2OWMzOC4uOTMxODQyNDc2Y2Q2ZmM3MWVjYWM4Nzk3M2JlZDFmMzczYzU5YmM4ZCAxMDA2NDQK
LS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA5
LTE0ICBKZWZmcmV5IFBmYXUgIDxqcGZhdUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgdGhp
cmQtcGFydHkgc3RvcmFnZSBibG9ja2luZyBzZXR0aW5nIHRvIGNoYW5nZSB3aGlsZSBhIHBhZ2Ug
aXMgbG9hZGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NTc5MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZSBleHBvcnRlZCBzeW1ib2xzLgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9z
eW1ib2xzLmZpbHRlcjoKKwogMjAxMi0wOS0wNyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KIAogICAgICAgICBib3gtc2hhZG93IGNhdXNlcyBvdmVybGF5IHNjcm9sbGJh
cnMgdG8gYmUgaW4gdGhlIHdyb25nIHBvc2l0aW9uIHdoZW4gZWxlbWVudCBpcyBjb21wb3NpdGVk
Cg==
</data>
<flag name="review"
          id="175932"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>