<?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>211868</bug_id>
          
          <creation_ts>2020-05-13 16:17:31 -0700</creation_ts>
          <short_desc>[PlayStation] Add minimal WKView API to enable TestWebKitAPI</short_desc>
          <delta_ts>2020-05-21 17:13:34 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit 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>
          
          <blocked>211554</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</reporter>
          <assigned_to name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</assigned_to>
          <cc>achristensen</cc>
    
    <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>chris.reid</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>stephan.szabo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1652427</commentid>
    <comment_count>0</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2020-05-13 16:17:31 -0700</bug_when>
    <thetext>Add minimal WKView API to enable TestWebKitAPI</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1652443</commentid>
    <comment_count>1</comment_count>
      <attachid>399317</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2020-05-13 16:48:26 -0700</bug_when>
    <thetext>Created attachment 399317
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653795</commentid>
    <comment_count>2</comment_count>
      <attachid>399317</attachid>
    <who name="Stephan Szabo">stephan.szabo</who>
    <bug_when>2020-05-18 16:03:43 -0700</bug_when>
    <thetext>Comment on attachment 399317
Patch

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

&gt; Tools/TestWebKitAPI/playstation/PlatformUtilitiesPlayStation.cpp:43
&gt; +    snprintf(url, sizeof(url), &quot;file:///host/%s/%s.%s&quot;, TEST_WEBKIT_RESOURCES_DIR, resource, extension);

Minor possible issue: If the host-side path + name isn&apos;t limited to the windows 260-characters, then it seems like if the path to the file on the host is within a small amount of the target&apos;s PATH_MAX this could truncate since the file:// is added to it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653952</commentid>
    <comment_count>3</comment_count>
      <attachid>399722</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2020-05-19 01:20:59 -0700</bug_when>
    <thetext>Created attachment 399722
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1653954</commentid>
    <comment_count>4</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2020-05-19 01:22:13 -0700</bug_when>
    <thetext>(In reply to Stephan Szabo from comment #2)
&gt; Comment on attachment 399317 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=399317&amp;action=review
&gt; 
&gt; &gt; Tools/TestWebKitAPI/playstation/PlatformUtilitiesPlayStation.cpp:43
&gt; &gt; +    snprintf(url, sizeof(url), &quot;file:///host/%s/%s.%s&quot;, TEST_WEBKIT_RESOURCES_DIR, resource, extension);
&gt; 
&gt; Minor possible issue: If the host-side path + name isn&apos;t limited to the
&gt; windows 260-characters, then it seems like if the path to the file on the
&gt; host is within a small amount of the target&apos;s PATH_MAX this could truncate
&gt; since the file:// is added to it.

Thanks. Addressed by increasing the buffer size.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654046</commentid>
    <comment_count>5</comment_count>
      <attachid>399722</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-19 10:05:14 -0700</bug_when>
    <thetext>Comment on attachment 399722
Patch

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

&gt; Source/WebKit/NetworkProcess/EntryPoint/playstation/NetworkProcessMain.cpp:47
&gt; +    (dlopen(&quot;libcrypto&quot;, RTLD_NOW) &amp;&amp; dlopen(&quot;libssl&quot;, RTLD_NOW)) || dlopen(&quot;LibreSSL&quot;, RTLD_NOW);
&gt; +    dlopen(&quot;libcurl&quot;, RTLD_NOW);
&gt; +    dlopen(&quot;libicu&quot;, RTLD_NOW);
&gt; +    dlopen(&quot;libSceNKWebKitRequirements&quot;, RTLD_NOW);
&gt; +    dlopen(&quot;libJavaScriptCore&quot;, RTLD_NOW);
&gt; +    dlopen(&quot;libWebKit&quot;, RTLD_NOW);

Do you want to do anything if any of these fail?  I&apos;d recommend printing what happened and exiting.  They all seem quite required.

&gt; Source/WebKit/Shared/API/c/playstation/WKEventPlayStation.h:75
&gt; +WK_INLINE WKKeyboardEvent WKKeyboardEventMake(WKEventType type, WKInputType inputType, const char* text, uint32_t length, const char* keyIdentifier, int32_t virtualKeyCode, int32_t caretOffset, uint32_t attributes, uint32_t modifiers)

I don&apos;t see a good reason for this to be inline.  Let&apos;s just make a cpp file for these.  That way you&apos;ll benefit from having an API.

&gt; Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.h:186
&gt; +    int32_t m_userId { -1 };

What&apos;s this?  Is it necessary?  Could we remove it?  Could it be Optional&lt;something&gt;?

&gt; Source/WebKit/UIProcess/API/C/playstation/WKAPICastPlayStation.h:37
&gt; +WK_ADD_API_MAPPING(WKViewRef, WebView)

WKView is the name of an API we are trying to remove.  What&apos;s wrong with WKPageRef?

&gt; Source/WebKit/UIProcess/API/playstation/WebView.cpp:42
&gt; +using namespace WebCore;

&apos;This should be inside of a scope.  We&apos;ve worked hard to remove unscoped &quot;using&quot; statements like this.

&gt; Source/WebKit/UIProcess/API/playstation/WebView.cpp:51
&gt; +WebView::WebView(const API::PageConfiguration&amp; conf)

This whole class feels like an unnecessary wrapper of WebPageProxy.  Also &quot;WebView&quot; is the name of a legacy API we&apos;re trying to remove.

&gt; Source/WebKit/WebProcess/EntryPoint/playstation/WebProcessMain.cpp:42
&gt; +    dlopen(&quot;libpng16&quot;, RTLD_NOW);

ditto.  You&apos;ll probably want some error logging if these are missing.

&gt; Source/WebKit/WebProcess/InjectedBundle/playstation/InjectedBundlePlayStation.cpp:33
&gt; +using namespace WebCore;

ditto.  scoped using.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654099</commentid>
    <comment_count>6</comment_count>
      <attachid>399722</attachid>
    <who name="Christopher Reid">chris.reid</who>
    <bug_when>2020-05-19 11:36:22 -0700</bug_when>
    <thetext>Comment on attachment 399722
Patch

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

&gt; Source/WebKit/UIProcess/API/C/playstation/WKContextConfigurationPlayStation.cpp:54
&gt; +void WKContextConfigurationSetCookieStoragePath(WKContextConfigurationRef configuration, WKStringRef cookieStoragePath)

Would this be able to move to WKWebSiteDataStoreConfiguration?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654229</commentid>
    <comment_count>7</comment_count>
      <attachid>399722</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-19 16:42:27 -0700</bug_when>
    <thetext>Comment on attachment 399722
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/C/playstation/WKContextConfigurationPlayStation.cpp:54
&gt;&gt; +void WKContextConfigurationSetCookieStoragePath(WKContextConfigurationRef configuration, WKStringRef cookieStoragePath)
&gt; 
&gt; Would this be able to move to WKWebSiteDataStoreConfiguration?

Yes.  This should not go on the WKContextConfigurationRef.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654389</commentid>
    <comment_count>8</comment_count>
      <attachid>399831</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2020-05-20 05:42:13 -0700</bug_when>
    <thetext>Created attachment 399831
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654391</commentid>
    <comment_count>9</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2020-05-20 05:57:28 -0700</bug_when>
    <thetext>Thank you for the review!

(In reply to Alex Christensen from comment #5)
&gt; &gt; +    dlopen(&quot;libWebKit&quot;, RTLD_NOW);
&gt; 
&gt; Do you want to do anything if any of these fail?  I&apos;d recommend printing
&gt; what happened and exiting.  They all seem quite required.

Yes, I added loadLibraryOrExit() for that.
 
&gt; &gt; Source/WebKit/Shared/API/c/playstation/WKEventPlayStation.h:75
&gt; &gt; +WK_INLINE WKKeyboardEvent WKKeyboardEventMake(WKEventType type, WKInputType inputType, const char* text, uint32_t length, const char* keyIdentifier, int32_t virtualKeyCode, int32_t caretOffset, uint32_t attributes, uint32_t modifiers)
&gt; 
&gt; I don&apos;t see a good reason for this to be inline.  Let&apos;s just make a cpp file
&gt; for these.  That way you&apos;ll benefit from having an API.

Added WKEventPlayStation.cpp.
 
&gt; &gt; Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.h:186
&gt; &gt; +    int32_t m_userId { -1 };
&gt; 
&gt; What&apos;s this?  Is it necessary?  Could we remove it?  Could it be
&gt; Optional&lt;something&gt;?

This user ID is for the platform process launcher API but there was a
missing link. I should have implemented WebProcessPool::platformInitialize()
to copy ProcessPoolConfiguration&apos;s userId.


&gt; &gt; Source/WebKit/UIProcess/API/C/playstation/WKAPICastPlayStation.h:37
&gt; &gt; +WK_ADD_API_MAPPING(WKViewRef, WebView)
&gt; 
&gt; WKView is the name of an API we are trying to remove.  What&apos;s wrong with
&gt; WKPageRef?

I see. Moved functions to WKPagePrivatePlayStation, except WKViewCreate() and WKViewGetPage()

&gt; &gt; Source/WebKit/UIProcess/API/playstation/WebView.cpp:42
&gt; &gt; +using namespace WebCore;
&gt; 
&gt; &apos;This should be inside of a scope.  We&apos;ve worked hard to remove unscoped
&gt; &quot;using&quot; statements like this.

Addressed.

&gt; &gt; Source/WebKit/UIProcess/API/playstation/WebView.cpp:51
&gt; &gt; +WebView::WebView(const API::PageConfiguration&amp; conf)
&gt; 
&gt; This whole class feels like an unnecessary wrapper of WebPageProxy.  Also
&gt; &quot;WebView&quot; is the name of a legacy API we&apos;re trying to remove.

Removed unnecessary wrapper functions and added PageClientImpl instead.
Also Webview.h and cpp have been moved to UIProcess/playstation since we don&apos;t intend to expose this class as an API.

&gt; 
&gt; &gt; Source/WebKit/WebProcess/EntryPoint/playstation/WebProcessMain.cpp:42
&gt; &gt; +    dlopen(&quot;libpng16&quot;, RTLD_NOW);
&gt; 
&gt; ditto.  You&apos;ll probably want some error logging if these are missing.

Addressed.

&gt; &gt; Source/WebKit/WebProcess/InjectedBundle/playstation/InjectedBundlePlayStation.cpp:33
&gt; &gt; +using namespace WebCore;
&gt; 
&gt; ditto.  scoped using.

Addressed.



&gt; &gt; +void WKContextConfigurationSetCookieStoragePath(WKContextConfigurationRef configuration, WKStringRef cookieStoragePath)
&gt; 
&gt; Would this be able to move to WKWebSiteDataStoreConfiguration?

I removed CookieStoragePath stuff from the patch for now. This will be added
to WKWebSiteDataStoreConfiguration (or somewhere else) with relevant implementation in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654581</commentid>
    <comment_count>10</comment_count>
      <attachid>399831</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-20 12:24:57 -0700</bug_when>
    <thetext>Comment on attachment 399831
Patch

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

better

&gt; Source/WebKit/UIProcess/API/C/playstation/WKContextConfigurationPlayStation.cpp:58
&gt; +    using namespace WebKit;

This seems excessive just to avoid WebKit:: on one line.

&gt; Source/WebKit/UIProcess/API/C/playstation/WKContextConfigurationPlayStation.h:41
&gt; +WK_EXPORT void WKContextConfigurationSetUserId(WKContextConfigurationRef configuration, int32_t userId);

I&apos;m not convinced this should be on the context.  Why not the page?  What exactly is the user id?  why is it signed?

&gt; Source/WebKit/UIProcess/API/C/playstation/WKPagePrivatePlayStation.h:35
&gt; +WK_EXPORT void WKPageSetSize(WKPageRef page, WKSize size);

Let&apos;s not add this if it&apos;s not implemented.

&gt; Source/WebKit/UIProcess/API/C/playstation/WKView.cpp:33
&gt; +WKViewRef WKViewCreate(WKPageConfigurationRef configuration)

I&apos;m not crazy about having &quot;WKView&quot; be the base of this name, but it is WKViewRef, so that might not be the end of the world.

&gt; Source/WebKit/UIProcess/playstation/WebView.cpp:41
&gt; +RefPtr&lt;WebView&gt; WebView::create(const API::PageConfiguration&amp; configuration)

Could we name this something other than &quot;WebView&quot;?  PlayStationWebView maybe?  That way it&apos;ll get less confused with our other classes named WebView.

&gt; Source/WebKit/UIProcess/playstation/WebView.h:41
&gt; +class WebView : public API::ObjectImpl&lt;API::Object::Type::View&gt; {

Having a API::Object::Type::View and API::Object::Type::Page being separate objects is something we want to merge into one object once we can, so this may substantially change shape in the future.  I&apos;m ok with adding this for now, but be aware that this will need to change in the next few years.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654760</commentid>
    <comment_count>11</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2020-05-20 17:52:59 -0700</bug_when>
    <thetext>&gt; I&apos;m not convinced this should be on the context.  Why not the page?  What exactly is the user id?  why is it signed?

This is because the PlayStation platform API to launch process takes a int32_t used ID as well as an executable path.

&gt; Could we name this something other than &quot;WebView&quot;?  PlayStationWebView maybe?  That way it&apos;ll get less confused with our other classes named WebView.

Sure. I&apos;ll rename it.

&gt; Let&apos;s not add this if it&apos;s not implemented.

OK. We&apos;ll add it later with actual implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654809</commentid>
    <comment_count>12</comment_count>
      <attachid>399937</attachid>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2020-05-20 23:34:54 -0700</bug_when>
    <thetext>Created attachment 399937
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654820</commentid>
    <comment_count>13</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2020-05-21 00:01:30 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #10)
Source/WebKit/UIProcess/API/C/playstation/WKContextConfigurationPlayStation.cpp:58
&gt; &gt; +    using namespace WebKit;
&gt; 
&gt; This seems excessive just to avoid WebKit:: on one line.

Fixed.
 
&gt; &gt; Source/WebKit/UIProcess/API/C/playstation/WKView.cpp:33
&gt; &gt; +WKViewRef WKViewCreate(WKPageConfigurationRef configuration)
&gt; 
&gt; I&apos;m not crazy about having &quot;WKView&quot; be the base of this name, but it is
&gt; WKViewRef, so that might not be the end of the world.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/playstation/WebView.h:41
&gt; &gt; +class WebView : public API::ObjectImpl&lt;API::Object::Type::View&gt; {
&gt; 
&gt; Having a API::Object::Type::View and API::Object::Type::Page being separate
&gt; objects is something we want to merge into one object once we can, so this
&gt; may substantially change shape in the future.  I&apos;m ok with adding this for
&gt; now, but be aware that this will need to change in the next few years.

Seems like some object has to retain the ownership of a PageClient implementation and it&apos;s PlayStationWebView so let us use WKView for now. We&apos;ll keep WKView API as tiny as possible for the change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655036</commentid>
    <comment_count>14</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-21 12:52:46 -0700</bug_when>
    <thetext>Committed r262022: &lt;https://trac.webkit.org/changeset/262022&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399937.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655037</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-21 12:53:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/63505919&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1655162</commentid>
    <comment_count>16</comment_count>
    <who name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</who>
    <bug_when>2020-05-21 17:13:34 -0700</bug_when>
    <thetext>Thanks so much for the reviews!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399317</attachid>
            <date>2020-05-13 16:48:26 -0700</date>
            <delta_ts>2020-05-19 01:20:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211868-20200514084824.patch</filename>
            <type>text/plain</type>
            <size>77866</size>
            <attacher name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY5NmI0NDRkMzAwNzY4YTFiMWY4MGVm
MmU1NGM2Mzc2NmY5ZDc1ODcuLjJiYTRhY2NhYWJhZmEwYzRhMjhjYTRkMzdkYzY0NjQxMDNmYWJm
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDUtMTQgIFlvc2hpYWtpIEppdHN1a2F3YSAg
PHlvc2hpYWtpLmppdHN1a2F3YUBzb255LmNvbT4KKworICAgICAgICBbUGxheVN0YXRpb25dIEFk
ZCBtaW5pbWFsIFdLVmlldyBBUEkgdG8gZW5hYmxlIFRlc3RXZWJLaXRBUEkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTg2OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBtaW5pbWFsIFdLVmlldyBB
UEkgdG8gZW5hYmxlIFRlc3RXZWJLaXRBUEkKKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybVBsYXlT
dGF0aW9uLmNtYWtlOgorICAgICAgICBMaW5rIGxpYmMgYXMgYSBzeXN0ZW0gbGlicmFyeS4KKwog
MjAyMC0wNS0xMiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAg
ICAgICAgRml4IGV4aXN0aW5nIHVzYWdlIG9mIGZpbmFsL292ZXJyaWRlL3ZpcnR1YWwgaW4gSlND
IGFuZCBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5OWY0YWRjZDNkN2VhOTllZjRlODNlY2Y2ZDE2MWUwNjg4
YjE5ZmUwLi5lMDQ5NTdkZWE1OGU0NzQ4ZTJjNzE4ZDA5ODBiNGE1N2VlZjZmOTkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDUtMTQgIFlvc2hpYWtpIEppdHN1a2F3YSAgPHlv
c2hpYWtpLmppdHN1a2F3YUBzb255LmNvbT4KKworICAgICAgICBbUGxheVN0YXRpb25dIEFkZCBt
aW5pbWFsIFdLVmlldyBBUEkgdG8gZW5hYmxlIFRlc3RXZWJLaXRBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTg2OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBtaW5pbWFsIFdLVmlldyBBUEkg
dG8gZW5hYmxlIFRlc3RXZWJLaXRBUEkKKworICAgICAgICAqIFBsYXRmb3JtUGxheVN0YXRpb24u
Y21ha2U6CisgICAgICAgIEFkZCBXZWJLaXRSZXF1aXJlbWVudHMgbGlicmFyeSB0byBXZWJDb3Jl
X0NvcHlTaGFyZWRMaWJzLgorCiAyMDIwLTA1LTEyICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRh
bnphcm9AZ25vbWUub3JnPgogCiAgICAgICAgIC1XYXR0cmlidXRlIHdhcm5pbmcgaW4gQnJlYWtM
aW5lcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggMTVhMWZhOWFiNGI1ODk4ZjQxYzc5Njk2Zjc3YjE0ZjYwMzA4
NTliYi4uYzEwNGY3ZGNlM2E2ZWI0ZWI0MGJhNGNhZWY3NTdiYjRmZmI3ZGUxMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMzYgQEAKKzIwMjAtMDUtMTQgIFlvc2hpYWtpIEppdHN1a2F3YSAgPHlvc2hp
YWtpLmppdHN1a2F3YUBzb255LmNvbT4KKworICAgICAgICBbUGxheVN0YXRpb25dIEFkZCBtaW5p
bWFsIFdLVmlldyBBUEkgdG8gZW5hYmxlIFRlc3RXZWJLaXRBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTg2OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBtaW5pbWFsIFdLVmlldyBBUEkgdG8g
ZW5hYmxlIFRlc3RXZWJLaXRBUEkKKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9u
Lmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjpwbGF0Zm9ybUludmFsaWRhdGUpOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgQWRkIFNvY2tldE1vbml0b3IgdG8gbW9uaXRv
ciByZWNlaXZlZCBtZXNzYWdlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb246OmNvcHkpOgorICAgICAgICBBZGQgUGxheVN0YXRpb24gc3BlY2lmaWMgbWVtYmVyczog
V2ViUHJvY2VzcyBhbmQgTmV0d29ya1Byb2Nlc3MgcGF0aHMsCisgICAgICAgIGNvb2tpZSBzdG9y
YWdlIHBhdGgsIGFuZCB1c2VyIElELgorCisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL1By
b2Nlc3NMYXVuY2hlci5oOgorICAgICAgICBBZGQgUGxheVN0YXRpb24gc3BlY2lmaWMgbWVtYmVy
czogUHJvY2VzcyBwYXRoIGFuZCB1c2VyIElELgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
RW50cnlQb2ludC9wbGF5c3RhdGlvbi9OZXR3b3JrUHJvY2Vzc01haW4uY3BwOiBDb3BpZWQgZnJv
bSBUb29sc1xUZXN0V2ViS2l0QVBJXHBsYXlzdGF0aW9uXFBsYXRmb3JtVXRpbGl0aWVzUGxheVN0
YXRpb24uY3BwLgorICAgICAgICAobWFpbik6CisgICAgICAgICogUGxhdGZvcm1QbGF5U3RhdGlv
bi5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvcGxheXN0YXRpb24vV0tFdmVudFBsYXlT
dGF0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9X
S0FQSUNhc3RQbGF5U3RhdGlvbi5oOgorICAgICAgICAoV2ViS2l0Ojp0b0FQSTw+KToKKyAgICAg
ICAgKFdlYktpdDo6dG9JbXBsPD4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9wbGF5c3Rh
dGlvbi9XS0NvbnRleHRDb25maWd1cmF0aW9uUGxheVN0YXRpb24uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRXZWJQcm9jZXNzUGF0aCk6CisgICAgICAgIChX
S0NvbnRleHRDb25maWd1cmF0aW9uQ29weVdlYlByb2Nlc3NQYXRoKToKKyAgICAgICAgKFdLQ29u
dGV4dENvbmZpZ3VyYXRpb25TZXROZXR3b3JrUHJvY2Vzc1BhdGgpOgorICAgICAgICAoV0tDb250
ZXh0Q29uZmlndXJhdGlvbkNvcHlOZXR3b3JrUHJvY2Vzc1BhdGgpOgorICAgICAgICAoV0tDb250
ZXh0Q29uZmlndXJhdGlvblNldENvb2tpZVN0b3JhZ2VQYXRoKToKKyAgICAgICAgKFdLQ29udGV4
dENvbmZpZ3VyYXRpb25Db3B5Q29va2llU3RvcmFnZVBhdGgpOgorICAgICAgICAoV0tDb250ZXh0
Q29uZmlndXJhdGlvblNldFVzZXJJZCk6CisgICAgICAgIChXS0NvbnRleHRDb25maWd1cmF0aW9u
R2V0VXNlcklkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tDb250
ZXh0Q29uZmlndXJhdGlvblBsYXlTdGF0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZVxXZWJLaXRc
VUlQcm9jZXNzXEFQSVxDXHBsYXlzdGF0aW9uXFdLVmlldy5oLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9wbGF5c3RhdGlvbi9XS1ZpZXcuY3BwOiBBZGRlZC4KKyAgICAgICAgKHRvRmxvYXRT
aXplKToKKyAgICAgICAgKFdLVmlld0NyZWF0ZSk6CisgICAgICAgIChXS1ZpZXdHZXRQYWdlKToK
KyAgICAgICAgKFdLVmlld1NldFNpemUpOgorICAgICAgICAoV0tWaWV3SGFuZGxlS2V5Ym9hcmRF
dmVudCk6CisgICAgICAgIChXS1ZpZXdIYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKFdLVmll
d0hhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlv
bi9XS1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3BsYXlzdGF0aW9uL1dlYlZpZXcu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlldzo6V2ViVmlldyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6On5X
ZWJWaWV3KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6c2V0U2l6ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXc6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6aGFu
ZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmNyZWF0ZURyYXdpbmdB
cmVhUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpzZXRWaWV3TmVlZHNEaXNwbGF5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6cmVxdWVzdFNjcm9sbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXc6OnZpZXdTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXc6OnZpZXdTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6aXNWaWV3V2luZG93
QWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6aXNWaWV3Rm9jdXNlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXc6OmlzVmlld1Zpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3Ojppc1ZpZXdJbldpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OnByb2Nl
c3NEaWRFeGl0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6ZGlkUmVsYXVuY2hQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6cGFnZUNsb3NlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXc6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlldzo6dG9vbFRpcENoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpkaWRDb21t
aXRMb2FkRm9yTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6aGFuZGxlRG93
bmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6ZGlkQ2hhbmdlQ29udGVu
dFNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpzZXRDdXJzb3IpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3OjpzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3OjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3OjpyZWdpc3RlckVkaXRDb21tYW5kKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlldzo6Y2xlYXJBbGxFZGl0Q29tbWFuZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3OjpjYW5VbmRvUmVkbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmV4ZWN1dGVVbmRv
UmVkbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OndoZWVsRXZlbnRXYXNOb3RIYW5kbGVk
QnlXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6Y29udmVydFRvRGV2aWNlU3Bh
Y2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojpjb252ZXJ0VG9Vc2VyU3BhY2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3OjpzY3JlZW5Ub1Jvb3RWaWV3KToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlldzo6cm9vdFZpZXdUb1NjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6
OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
dzo6cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3Ojpkb25lV2l0aEtleUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6Y3JlYXRl
UG9wdXBNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjplbnRlckFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6ZXhpdEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6dXBkYXRl
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojpm
dWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6
ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3OjpuYXZpZ2F0aW9uR2VzdHVyZURpZEJlZ2luKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlldzo6bmF2aWdhdGlvbkdlc3R1cmVXaWxsRW5kKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlldzo6bmF2aWdhdGlvbkdlc3R1cmVEaWRFbmQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3Ojp3aWxsUmVjb3JkTmF2aWdhdGlvblNuYXBzaG90KToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlldzo6ZGlkUmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXc6OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvck1haW5GcmFt
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmRpZEZpbmlzaExvYWRGb3JNYWluRnJhbWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpkaWRGYWlsTG9hZEZvck1haW5GcmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JNYWlu
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpkaWRDaGFuZ2VCYWNrZ3JvdW5kQ29s
b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojppc1BsYXlpbmdBdWRpb1dpbGxDaGFuZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojppc1BsYXlpbmdBdWRpb0RpZENoYW5nZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OnJlZlZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3OjpkZXJlZlZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpkaWRSZXN0b3JlU2Ny
b2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojp1c2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6cmVxdWVzdERPTVBhc3Rl
QWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3BsYXlzdGF0aW9uL1dlYlZpZXcuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OnBhZ2UpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9MYXVuY2hlci9wbGF5c3RhdGlvbi9Qcm9jZXNzTGF1bmNoZXJQbGF5U3RhdGlvbi5jcHA6
CisgICAgICAgIChXZWJLaXQ6OmRlZmF1bHRQcm9jZXNzUGF0aCk6CisgICAgICAgIChXZWJLaXQ6
OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nl
c3NMYXVuY2hlcjo6dGVybWluYXRlUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NM
YXVuY2hlcjo6cGxhdGZvcm1JbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9FbnRyeVBvaW50L3BsYXlzdGF0aW9uL1dlYlByb2Nlc3NNYWluLmNwcDog
Q29waWVkIGZyb20gVG9vbHNcVGVzdFdlYktpdEFQSVxwbGF5c3RhdGlvblxQbGF0Zm9ybVV0aWxp
dGllc1BsYXlTdGF0aW9uLmNwcC4KKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvcGxheXN0YXRpb24vSW5qZWN0ZWRCdW5kbGVQbGF5U3RhdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKToKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnNldEJ1bmRsZVBhcmFtZXRlcik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZTo6Y3JlYXRlKToKKwogMjAyMC0wNS0xMiAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmV3
b3JrIGRyYWcgYW5kIGRyb3AgaGFuZGxpbmcgaW4gcHJlcGFyYXRpb24gZm9yIEdUSzQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UgYi9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCmluZGV4IDlhZjY4MmQxZDk0NTczOTA1
ZTI5MjUwYWE0Y2U1MjBmOTliMDhmZjUuLjMwMTYwOGY3MzU1MzM4ZWM1OWYyNWI3YjI5YWRlYjFi
NmZkY2VmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtUGxheVN0YXRpb24u
Y21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQpAQCAt
MTgsNyArMTgsNiBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogKQogCiBsaXN0KEFQUEVORCBX
VEZfTElCUkFSSUVTCi0gICAgJHtDX1NURF9MSUJSQVJZfQogICAgICR7S0VSTkVMX0xJQlJBUll9
CiAgICAgVGhyZWFkczo6VGhyZWFkcwogKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1QbGF5U3RhdGlvbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRp
b24uY21ha2UKaW5kZXggNDA1NzdmZDExOTNiY2IzZjI4MmNlM2U5YWE3MzIzMTMwZTExY2M4OS4u
NDViNmM0OTcwZDhhYzRjMzQ2ZTQ3MjkwZGY0MTA0ZDkwNzIzZjRjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCkBAIC05Niw1ICs5Niw2IEBAIFBMQVlTVEFUSU9O
X0NPUFlfU0hBUkVEX0xJQlJBUklFUyhXZWJDb3JlX0NvcHlTaGFyZWRMaWJzCiAgICAgICAgICR7
SlBFR19MSUJSQVJJRVN9CiAgICAgICAgICR7T1BFTlNTTF9MSUJSQVJJRVN9CiAgICAgICAgICR7
UE5HX0xJQlJBUklFU30KKyAgICAgICAgJHtXZWJLaXRSZXF1aXJlbWVudHNfTElCUkFSWX0KICAg
ICAgICAgJHtXZWJQX0xJQlJBUklFU30KICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRW50cnlQb2ludC9wbGF5c3RhdGlvbi9OZXR3b3JrUHJvY2Vzc01haW4uY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L3BsYXlzdGF0aW9uL05l
dHdvcmtQcm9jZXNzTWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzQ5ZDRjMTQzYjhkYTQxMTA1ZTQ1NzA4
Yjc0MGFjNjllMzljNzQ0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRW50cnlQb2ludC9wbGF5c3RhdGlvbi9OZXR3b3JrUHJvY2Vzc01haW4uY3BwCkBA
IC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2
ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWFpbi5oIgorCisjaW5jbHVkZSA8ZGxmY24uaD4KKyNpbmNs
dWRlIDxwcm9jZXNzLWluaXRpYWxpemF0aW9uL25rLW5ldHdvcmtwcm9jZXNzLmg+CisjaW5jbHVk
ZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKwor
aW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIGlmIChhcmdjIDwgMikgewor
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVuZXhwZWN0ZWQgYXJndW1lbnQgY291bnQgJWRcbiIs
IGFyZ2MpOworICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CisgICAgfQorCisgICAgKGRsb3Bl
bigibGliY3J5cHRvIiwgUlRMRF9OT1cpICYmIGRsb3BlbigibGlic3NsIiwgUlRMRF9OT1cpKSB8
fCBkbG9wZW4oIkxpYnJlU1NMIiwgUlRMRF9OT1cpOworICAgIGRsb3BlbigibGliY3VybCIsIFJU
TERfTk9XKTsKKyAgICBkbG9wZW4oImxpYmljdSIsIFJUTERfTk9XKTsKKyAgICBkbG9wZW4oImxp
YlNjZU5LV2ViS2l0UmVxdWlyZW1lbnRzIiwgUlRMRF9OT1cpOworICAgIGRsb3BlbigibGliSmF2
YVNjcmlwdENvcmUiLCBSVExEX05PVyk7CisgICAgZGxvcGVuKCJsaWJXZWJLaXQiLCBSVExEX05P
Vyk7CisKKyAgICBjaGFyKiBjb3JlUHJvY2Vzc0lkZW50aWZpZXIgPSBhcmd2WzFdOworCisgICAg
Y2hhciBjb25uZWN0aW9uSWRlbnRpZmllclsxNl07CisgICAgc25wcmludGYoY29ubmVjdGlvbklk
ZW50aWZpZXIsIHNpemVvZihjb25uZWN0aW9uSWRlbnRpZmllciksICIlZCIsIFBsYXlTdGF0aW9u
OjpnZXRDb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKworICAgIGNoYXIgcHJvZ3JhbVtdID0gImR1
bW15IjsKKyAgICBjaGFyKiBpbnRlcm5hbEFyZ3ZbXSA9IHsKKyAgICAgICAgcHJvZ3JhbSwKKyAg
ICAgICAgY29yZVByb2Nlc3NJZGVudGlmaWVyLAorICAgICAgICBjb25uZWN0aW9uSWRlbnRpZmll
ciwKKyAgICAgICAgMAorICAgIH07CisgICAgcmV0dXJuIFdlYktpdDo6TmV0d29ya1Byb2Nlc3NN
YWluKHNpemVvZihpbnRlcm5hbEFyZ3YpIC8gc2l6ZW9mKGNoYXIqKSwgaW50ZXJuYWxBcmd2KTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAppbmRleCA4NTkxNWY4YmJh
ZTAwNTMxMWQ4NDI3MzFkZDVmODE1NThhOTFmZDNhLi5mMWFkMDEwMDRmM2M2ZDg1NDdiNDhkMGU2
MjA1YWE1ODQwM2RlZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5o
CkBAIC00MDksNiArNDA5LDkgQEAgcHJpdmF0ZToKICAgICBHU29ja2V0TW9uaXRvciBtX3JlYWRT
b2NrZXRNb25pdG9yOwogICAgIEdTb2NrZXRNb25pdG9yIG1fd3JpdGVTb2NrZXRNb25pdG9yOwog
I2VuZGlmCisjaWYgUExBVEZPUk0oUExBWVNUQVRJT04pCisgICAgUmVmUHRyPFdURjo6VGhyZWFk
PiBtX3NvY2tldE1vbml0b3I7CisjZW5kaWYKICNlbGlmIE9TKERBUldJTikKICAgICAvLyBDYWxs
ZWQgb24gdGhlIGNvbm5lY3Rpb24gcXVldWUuCiAgICAgdm9pZCByZWNlaXZlU291cmNlRXZlbnRI
YW5kbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nv
bm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVj
dGlvblVuaXguY3BwCmluZGV4IGRjMDMwNGM5YWYwNWQzMzNmZDJlMmJiMjgwZDI2YzMwODM2YTky
OTMuLjc2ZGMyM2YwNGMyNmVlODU1OWIwOTBkMTM3NGEzNmFiMGQwMDUxMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCkBAIC0x
MjAsNiArMTIwLDEzIEBAIHZvaWQgQ29ubmVjdGlvbjo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKICAg
ICBtX3dyaXRlU29ja2V0TW9uaXRvci5zdG9wKCk7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFBM
QVlTVEFUSU9OKQorICAgIGlmIChtX3NvY2tldE1vbml0b3IpIHsKKyAgICAgICAgbV9zb2NrZXRN
b25pdG9yLT5kZXRhY2goKTsKKyAgICAgICAgbV9zb2NrZXRNb25pdG9yID0gbnVsbHB0cjsKKyAg
ICB9CisjZW5kaWYKKwogICAgIG1fc29ja2V0RGVzY3JpcHRvciA9IC0xOwogICAgIG1faXNDb25u
ZWN0ZWQgPSBmYWxzZTsKIH0KQEAgLTM2MSw2ICszNjgsMjcgQEAgYm9vbCBDb25uZWN0aW9uOjpv
cGVuKCkKICAgICB9KTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oUExBWVNUQVRJT04pCisgICAg
bV9zb2NrZXRNb25pdG9yID0gVGhyZWFkOjpjcmVhdGUoIlNvY2tldE1vbml0b3IiLCBbcHJvdGVj
dGVkVGhpc10geworICAgICAgICB7CisgICAgICAgICAgICBpbnQgZmQ7CisgICAgICAgICAgICB3
aGlsZSAoKGZkID0gcHJvdGVjdGVkVGhpcy0+bV9zb2NrZXREZXNjcmlwdG9yKSAhPSAtMSkgewor
ICAgICAgICAgICAgICAgIGludCBtYXhGZCA9IGZkOworICAgICAgICAgICAgICAgIGZkX3NldCBm
ZFNldDsKKyAgICAgICAgICAgICAgICBGRF9aRVJPKCZmZFNldCk7CisgICAgICAgICAgICAgICAg
RkRfU0VUKGZkLCAmZmRTZXQpOworCisgICAgICAgICAgICAgICAgaWYgKC0xICE9IHNlbGVjdCht
YXhGZCArIDEsICZmZFNldCwgMCwgMCwgMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEZE
X0lTU0VUKGZkLCAmZmRTZXQpKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhp
cy0+cmVhZHlSZWFkSGFuZGxlcigpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KworICAgICAgICB9CisgICAgfSk7CisgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKwogICAgIC8v
IFNjaGVkdWxlIGEgY2FsbCB0byByZWFkeVJlYWRIYW5kbGVyLiBEYXRhIG1heSBoYXZlIGFycml2
ZWQgYmVmb3JlIGluc3RhbGxhdGlvbiBvZiB0aGUgc2lnbmFsIGhhbmRsZXIuCiAgICAgbV9jb25u
ZWN0aW9uUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzXSB7CiAgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPnJlYWR5UmVhZEhhbmRsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm1QbGF5U3RhdGlvbi5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1QbGF5U3RhdGlv
bi5jbWFrZQppbmRleCAzYTRmMTU2MzQyYmJlNmRiNGVhMDM0ZGNhZTFjZmNkMmIxNmEwZWIxLi5l
ZDllOWUzNjJmMDA2ZTkyZGZkOTgzYWE3YzZmODc5MDgwZTIyZjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCkBAIC0xLDkgKzEsMyBAQAotc2V0KFdlYktpdF9PVVRQ
VVRfTkFNRSBTY2VXZWJLaXQpCi1zZXQoV2ViUHJvY2Vzc19PVVRQVVRfTkFNRSBXZWJLaXRXZWJQ
cm9jZXNzKQotc2V0KE5ldHdvcmtQcm9jZXNzX09VVFBVVF9OQU1FIFdlYktpdE5ldHdvcmtQcm9j
ZXNzKQotc2V0KEdQVVByb2Nlc3NfT1VUUFVUX05BTUUgV2ViS2l0R1BVUHJvY2VzcykKLXNldChQ
bHVnaW5Qcm9jZXNzX09VVFBVVF9OQU1FIFdlYktpdFBsdWdpblByb2Nlc3MpCi0KIGluY2x1ZGUo
SGVhZGVycy5jbWFrZSkKIAogYWRkX2RlZmluaXRpb25zKC1EQlVJTERJTkdfV0VCS0lUKQpAQCAt
MTEsMTEgKzUsMTEgQEAgYWRkX2RlZmluaXRpb25zKC1EQlVJTERJTkdfV0VCS0lUKQogc2V0KFdl
YktpdF9VU0VfUFJFRklYX0hFQURFUiBPTikKIAogbGlzdChBUFBFTkQgV2ViUHJvY2Vzc19TT1VS
Q0VTCi0gICAgV2ViUHJvY2Vzcy9FbnRyeVBvaW50L3VuaXgvV2ViUHJvY2Vzc01haW4uY3BwCisg
ICAgV2ViUHJvY2Vzcy9FbnRyeVBvaW50L3BsYXlzdGF0aW9uL1dlYlByb2Nlc3NNYWluLmNwcAog
KQogCiBsaXN0KEFQUEVORCBOZXR3b3JrUHJvY2Vzc19TT1VSQ0VTCi0gICAgTmV0d29ya1Byb2Nl
c3MvRW50cnlQb2ludC91bml4L05ldHdvcmtQcm9jZXNzTWFpbi5jcHAKKyAgICBOZXR3b3JrUHJv
Y2Vzcy9FbnRyeVBvaW50L3BsYXlzdGF0aW9uL05ldHdvcmtQcm9jZXNzTWFpbi5jcHAKICkKIAog
bGlzdChBUFBFTkQgR1BVUHJvY2Vzc19TT1VSQ0VTCkBAIC05MCw2ICs4NCwxMSBAQCBsaXN0KEFQ
UEVORCBXZWJLaXRfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLUHJvdGVjdGlv
blNwYWNlQ3VybC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvY3VybC9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWZDdXJsLmNwcAogCisgICAgVUlQcm9jZXNzL0FQSS9DL3BsYXlzdGF0aW9uL1dLQ29udGV4
dENvbmZpZ3VyYXRpb25QbGF5U3RhdGlvbi5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0MvcGxheXN0
YXRpb24vV0tWaWV3LmNwcAorCisgICAgVUlQcm9jZXNzL0FQSS9wbGF5c3RhdGlvbi9XZWJWaWV3
LmNwcAorCiAgICAgVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Np
b25DYWlyby5jcHAKIAogICAgIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdB
cmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcApAQCAtMTM3LDYgKzEzNiw3IEBAIGxpc3Qo
QVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQ
cm9jZXNzL0FQSS9DL2NhaXJvIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9j
dXJsIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbiIKKyAg
ICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3BsYXlzdGF0aW9uIgogICAgICIke1dFQktJ
VF9ESVJ9L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzIgogICAgICIke1dFQktJVF9ESVJ9
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvY3VybCIKICAgICAiJHtXRUJLSVRfRElSfS9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcyIKQEAgLTE1MCwxMCArMTUwLDEyIEBA
IGxpc3QoQVBQRU5EIFdlYktpdF9QVUJMSUNfRlJBTUVXT1JLX0hFQURFUlMKICAgICBTaGFyZWQv
QVBJL2MvY3VybC9XS0NlcnRpZmljYXRlSW5mb0N1cmwuaAogCiAgICAgU2hhcmVkL0FQSS9jL3Bs
YXlzdGF0aW9uL1dLQmFzZVBsYXlTdGF0aW9uLmgKKyAgICBTaGFyZWQvQVBJL2MvcGxheXN0YXRp
b24vV0tFdmVudFBsYXlTdGF0aW9uLmgKIAogICAgIFVJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLUHJv
dGVjdGlvblNwYWNlQ3VybC5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmQ3VybC5oCiAKKyAgICBVSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tDb250
ZXh0Q29uZmlndXJhdGlvblBsYXlTdGF0aW9uLmgKICAgICBVSVByb2Nlc3MvQVBJL0MvcGxheXN0
YXRpb24vV0tWaWV3LmgKICkKIApAQCAtMTYzLDQgKzE2NSw1IEBAIGxpc3QoQVBQRU5EIFdlYktp
dF9QVUJMSUNfRlJBTUVXT1JLX0hFQURFUlMKIGxpc3QoQVBQRU5EIFdlYktpdF9QUklWQVRFX0xJ
QlJBUklFUwogICAgICQ8VEFSR0VUX09CSkVDVFM6UEFMPgogICAgICQ8VEFSR0VUX09CSkVDVFM6
V2ViQ29yZT4KKyAgICBXZWJLaXRSZXF1aXJlbWVudHM6OlByb2Nlc3NMYXVuY2hlcgogKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvcGxheXN0YXRpb24vV0tFdmVudFBs
YXlTdGF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9wbGF5c3RhdGlvbi9XS0V2
ZW50UGxheVN0YXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZmQzZWVjMjVhZThmNjRkMjBjY2YxZGUzMzYy
ZWUxNzljNGFhODExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvcGxheXN0YXRpb24vV0tFdmVudFBsYXlTdGF0aW9uLmgKQEAgLTAsMCArMSwxNDYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IElu
Yy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+
CisjaW5jbHVkZSA8V2ViS2l0L1dLRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tHZW9tZXRy
eS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK2VudW0g
eworICAgIGtXS0V2ZW50Tm9UeXBlID0gLTEsCisKKyAgICAvLyBXZWJNb3VzZUV2ZW50CisgICAg
a1dLRXZlbnRNb3VzZURvd24sCisgICAga1dLRXZlbnRNb3VzZVVwLAorICAgIGtXS0V2ZW50TW91
c2VNb3ZlLAorICAgIGtXS0V2ZW50TW91c2VGb3JjZUNoYW5nZWQsCisgICAga1dLRXZlbnRNb3Vz
ZUZvcmNlRG93biwKKyAgICBrV0tFdmVudE1vdXNlRm9yY2VVcCwKKworICAgIC8vIFdlYldoZWVs
RXZlbnQKKyAgICBrV0tFdmVudFdoZWVsLAorCisgICAgLy8gV2ViS2V5Ym9hcmRFdmVudAorICAg
IGtXS0V2ZW50S2V5RG93biwKKyAgICBrV0tFdmVudEtleVVwCit9OwordHlwZWRlZiBpbnQzMl90
IFdLRXZlbnRUeXBlOworCitzdHJ1Y3QgV0tLZXlib2FyZEV2ZW50IHsKKyAgICBXS0V2ZW50VHlw
ZSB0eXBlOworICAgIGNvbnN0IGNoYXIqIHRleHQ7CisgICAgaW50MzJfdCBsZW5ndGg7CisgICAg
Y29uc3QgY2hhcioga2V5SWRlbnRpZmllcjsKKyAgICB1aW50MzJfdCBtb2RpZmllcnM7CisgICAg
aW50MzJfdCB2aXJ0dWFsS2V5Q29kZTsKKyAgICBpbnQzMl90IGNhcmV0T2Zmc2V0OworfTsKK3R5
cGVkZWYgc3RydWN0IFdLS2V5Ym9hcmRFdmVudCBXS0tleWJvYXJkRXZlbnQ7CisKK2VudW0gewor
ICAgIGtXS0lucHV0VHlwZU5vcm1hbCwKKyAgICBrV0tJbnB1dFR5cGVTZXRDb21wb3NpdGlvbiwK
KyAgICBrV0tJbnB1dFR5cGVDb25maXJtQ29tcG9zaXRpb24sCisgICAga1dLSW5wdXRUeXBlQ2Fu
Y2VsQ29tcG9zaXRpb24sCit9OwordHlwZWRlZiB1aW50OF90IFdLSW5wdXRUeXBlOworCitXS19J
TkxJTkUgV0tLZXlib2FyZEV2ZW50IFdLS2V5Ym9hcmRFdmVudE1ha2UoV0tFdmVudFR5cGUgdHlw
ZSwgV0tJbnB1dFR5cGUgaW5wdXRUeXBlLCBjb25zdCBjaGFyKiB0ZXh0LCB1aW50MzJfdCBsZW5n
dGgsIGNvbnN0IGNoYXIqIGtleUlkZW50aWZpZXIsIGludDMyX3QgdmlydHVhbEtleUNvZGUsIGlu
dDMyX3QgY2FyZXRPZmZzZXQsIHVpbnQzMl90IGF0dHJpYnV0ZXMsIHVpbnQzMl90IG1vZGlmaWVy
cykKK3sKKyAgICBXS0tleWJvYXJkRXZlbnQga2V5Ym9hcmRFdmVudDsKKyAgICBrZXlib2FyZEV2
ZW50LnR5cGUgPSB0eXBlOworICAgIGtleWJvYXJkRXZlbnQudmlydHVhbEtleUNvZGUgPSB2aXJ0
dWFsS2V5Q29kZTsKKyAgICBrZXlib2FyZEV2ZW50Lm1vZGlmaWVycyA9IG1vZGlmaWVyczsKKyAg
ICBrZXlib2FyZEV2ZW50LmNhcmV0T2Zmc2V0ID0gY2FyZXRPZmZzZXQ7CisKKyAgICAvLyBzZWUg
aHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLyNrZXlzLUlNRQorICAgIGlm
IChpbnB1dFR5cGUgPT0ga1dLSW5wdXRUeXBlU2V0Q29tcG9zaXRpb24pCisgICAgICAgIGtleWJv
YXJkRXZlbnQua2V5SWRlbnRpZmllciA9ICJDb252ZXJ0IjsKKyAgICBlbHNlIGlmIChpbnB1dFR5
cGUgPT0ga1dLSW5wdXRUeXBlQ29uZmlybUNvbXBvc2l0aW9uKQorICAgICAgICBrZXlib2FyZEV2
ZW50LmtleUlkZW50aWZpZXIgPSAiQWNjZXB0IjsKKyAgICBlbHNlIGlmIChpbnB1dFR5cGUgPT0g
a1dLSW5wdXRUeXBlQ2FuY2VsQ29tcG9zaXRpb24pCisgICAgICAgIGtleWJvYXJkRXZlbnQua2V5
SWRlbnRpZmllciA9ICJDYW5jZWwiOworICAgIGVsc2UKKyAgICAgICAga2V5Ym9hcmRFdmVudC5r
ZXlJZGVudGlmaWVyID0ga2V5SWRlbnRpZmllcjsKKworICAgIGlmIChsZW5ndGggPiAwKSB7Cisg
ICAgICAgIGtleWJvYXJkRXZlbnQudGV4dCA9IHRleHQ7CisgICAgICAgIGtleWJvYXJkRXZlbnQu
bGVuZ3RoID0gbGVuZ3RoOworICAgIH0gZWxzZSB7CisgICAgICAgIGtleWJvYXJkRXZlbnQudGV4
dCA9IG51bGxwdHI7CisgICAgICAgIGtleWJvYXJkRXZlbnQubGVuZ3RoID0gMDsKKyAgICB9CisK
KyAgICByZXR1cm4ga2V5Ym9hcmRFdmVudDsKK30KKworc3RydWN0IFdLTW91c2VFdmVudCB7Cisg
ICAgV0tFdmVudFR5cGUgdHlwZTsKKyAgICBXS0V2ZW50TW91c2VCdXR0b24gYnV0dG9uOworICAg
IFdLUG9pbnQgcG9zaXRpb247CisgICAgaW50MzJfdCBjbGlja0NvdW50OworICAgIHVpbnQzMl90
IG1vZGlmaWVyczsKK307Cit0eXBlZGVmIHN0cnVjdCBXS01vdXNlRXZlbnQgV0tNb3VzZUV2ZW50
OworCitXS19JTkxJTkUgV0tNb3VzZUV2ZW50IFdLTW91c2VFdmVudE1ha2UoV0tFdmVudFR5cGUg
dHlwZSwgV0tFdmVudE1vdXNlQnV0dG9uIGJ1dHRvbiwgV0tQb2ludCBwb3NpdGlvbiwgaW50MzJf
dCBjbGlja0NvdW50LCB1aW50MzJfdCBtb2RpZmllcnMpCit7CisgICAgV0tNb3VzZUV2ZW50IG1v
dXNlRXZlbnQ7CisgICAgbW91c2VFdmVudC50eXBlID0gdHlwZTsKKyAgICBtb3VzZUV2ZW50LmJ1
dHRvbiA9IGJ1dHRvbjsKKyAgICBtb3VzZUV2ZW50LnBvc2l0aW9uID0gcG9zaXRpb247CisgICAg
bW91c2VFdmVudC5jbGlja0NvdW50ID0gY2xpY2tDb3VudDsKKyAgICBtb3VzZUV2ZW50Lm1vZGlm
aWVycyA9IG1vZGlmaWVyczsKKyAgICByZXR1cm4gbW91c2VFdmVudDsKK30KKworc3RydWN0IFdL
V2hlZWxFdmVudCB7CisgICAgV0tFdmVudFR5cGUgdHlwZTsKKyAgICBXS1BvaW50IHBvc2l0aW9u
OworICAgIFdLU2l6ZSBkZWx0YTsKKyAgICBXS1NpemUgd2hlZWxUaWNrczsKKyAgICB1aW50MzJf
dCBtb2RpZmllcnM7Cit9OwordHlwZWRlZiBzdHJ1Y3QgV0tXaGVlbEV2ZW50IFdLV2hlZWxFdmVu
dDsKKworV0tfSU5MSU5FIFdLV2hlZWxFdmVudCBXS1doZWVsRXZlbnRNYWtlKFdLRXZlbnRUeXBl
IHR5cGUsIFdLUG9pbnQgcG9zaXRpb24sIFdLU2l6ZSBkZWx0YSwgV0tTaXplIHdoZWVsVGlja3Ms
IHVpbnQzMl90IG1vZGlmaWVycykKK3sKKyAgICBXS1doZWVsRXZlbnQgd2hlZWxFdmVudDsKKyAg
ICB3aGVlbEV2ZW50LnR5cGUgPSB0eXBlOworICAgIHdoZWVsRXZlbnQucG9zaXRpb24gPSBwb3Np
dGlvbjsKKyAgICB3aGVlbEV2ZW50LmRlbHRhID0gZGVsdGE7CisgICAgd2hlZWxFdmVudC53aGVl
bFRpY2tzID0gd2hlZWxUaWNrczsKKyAgICB3aGVlbEV2ZW50Lm1vZGlmaWVycyA9IG1vZGlmaWVy
czsKKyAgICByZXR1cm4gd2hlZWxFdmVudDsKK30KKworI2lmZGVmIF9fY3BsdXNwbHVzCit9Cisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggYTY1ZjA2NmY5ODEzZThmNTQ2NzNjOGYz
MzQ4ODUzYzE3YTZkZjYwZC4uNGZiNWU2MmY5OGZhZDNhODcwNDBhNTMzNTAzYjhhY2QxZDQwOTg4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKQEAgLTcxLDcgKzcxLDEyIEBAIFJlZjxQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSgpCiAjaWYg
UExBVEZPUk0oR1RLKSAmJiAhVVNFKEdUSzQpCiAgICAgY29weS0+bV91c2VTeXN0ZW1BcHBlYXJh
bmNlRm9yU2Nyb2xsYmFycyA9IG1fdXNlU3lzdGVtQXBwZWFyYW5jZUZvclNjcm9sbGJhcnM7CiAj
ZW5kaWYKLQorI2lmIFBMQVRGT1JNKFBMQVlTVEFUSU9OKQorICAgIGNvcHktPm1fd2ViUHJvY2Vz
c1BhdGggPSB0aGlzLT5tX3dlYlByb2Nlc3NQYXRoOworICAgIGNvcHktPm1fbmV0d29ya1Byb2Nl
c3NQYXRoID0gdGhpcy0+bV9uZXR3b3JrUHJvY2Vzc1BhdGg7CisgICAgY29weS0+bV9jb29raWVT
dG9yYWdlUGF0aCA9IHRoaXMtPm1fY29va2llU3RvcmFnZVBhdGg7CisgICAgY29weS0+bV91c2Vy
SWQgPSB0aGlzLT5tX3VzZXJJZDsKKyNlbmRpZgogICAgIHJldHVybiBjb3B5OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmgKaW5kZXggZWNiZjI0NTVhMWUxMDJiNTk2MjQ0ZjE0OWU4NmVmM2ZmYzY4Yjdk
Mi4uMzNmMjYwNDI0N2U2ZDE2MGFhN2E2NTEyYTE3ZDUxM2ZlOTU2MjY0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uaApAQCAtMTM2LDYgKzEzNiwyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VTeXN0
ZW1BcHBlYXJhbmNlRm9yU2Nyb2xsYmFycyhib29sIHVzZVN5c3RlbUFwcGVhcmFuY2VGb3JTY3Jv
bGxiYXJzKSB7IG1fdXNlU3lzdGVtQXBwZWFyYW5jZUZvclNjcm9sbGJhcnMgPSB1c2VTeXN0ZW1B
cHBlYXJhbmNlRm9yU2Nyb2xsYmFyczsgfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShQTEFZU1RB
VElPTikKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgd2ViUHJvY2Vzc1BhdGgoKSBjb25zdCB7IHJl
dHVybiBtX3dlYlByb2Nlc3NQYXRoOyB9CisgICAgdm9pZCBzZXRXZWJQcm9jZXNzUGF0aChjb25z
dCBXVEY6OlN0cmluZyYgd2ViUHJvY2Vzc1BhdGgpIHsgbV93ZWJQcm9jZXNzUGF0aCA9IHdlYlBy
b2Nlc3NQYXRoOyB9CisKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgbmV0d29ya1Byb2Nlc3NQYXRo
KCkgY29uc3QgeyByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzc1BhdGg7IH0KKyAgICB2b2lkIHNldE5l
dHdvcmtQcm9jZXNzUGF0aChjb25zdCBXVEY6OlN0cmluZyYgbmV0d29ya1Byb2Nlc3NQYXRoKSB7
IG1fbmV0d29ya1Byb2Nlc3NQYXRoID0gbmV0d29ya1Byb2Nlc3NQYXRoOyB9CisKKyAgICBjb25z
dCBXVEY6OlN0cmluZyYgY29va2llU3RvcmFnZVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2Nvb2tp
ZVN0b3JhZ2VQYXRoOyB9CisgICAgdm9pZCBzZXRDb29raWVTdG9yYWdlUGF0aChjb25zdCBXVEY6
OlN0cmluZyYgY29va2llU3RvcmFnZVBhdGgpIHsgbV9jb29raWVTdG9yYWdlUGF0aCA9IGNvb2tp
ZVN0b3JhZ2VQYXRoOyB9CisKKyAgICBpbnQzMl90IHVzZXJJZCgpIGNvbnN0IHsgcmV0dXJuIG1f
dXNlcklkOyB9CisgICAgdm9pZCBzZXRVc2VySWQoY29uc3QgaW50MzJfdCB1c2VySWQpIHsgbV91
c2VySWQgPSB1c2VySWQ7IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdURjo6U3RyaW5nIG1f
aW5qZWN0ZWRCdW5kbGVQYXRoOwogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9jdXN0b21DbGFz
c2VzRm9yUGFyYW1ldGVyQ29kZXI7CkBAIC0xNjUsNiArMTc5LDEyIEBAIHByaXZhdGU6CiAjaWYg
UExBVEZPUk0oR1RLKSAmJiAhVVNFKEdUSzQpCiAgICAgYm9vbCBtX3VzZVN5c3RlbUFwcGVhcmFu
Y2VGb3JTY3JvbGxiYXJzIHsgZmFsc2UgfTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFBMQVlTVEFU
SU9OKQorICAgIFdURjo6U3RyaW5nIG1fd2ViUHJvY2Vzc1BhdGg7CisgICAgV1RGOjpTdHJpbmcg
bV9uZXR3b3JrUHJvY2Vzc1BhdGg7CisgICAgV1RGOjpTdHJpbmcgbV9jb29raWVTdG9yYWdlUGF0
aDsKKyAgICBpbnQzMl90IG1fdXNlcklkIHsgLTEgfTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5
c3RhdGlvbi9XS0FQSUNhc3RQbGF5U3RhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvcGxheXN0YXRpb24vV0tBUElDYXN0UGxheVN0YXRpb24uaAppbmRleCAyMmVmZDg1ZDFi
YTc3ODc2OGM1MGFiMTg5ZTk3OTJjNzQwN2U4ODRjLi5iNWQ1MTBlN2NhNDM0YWNjODdkMDdjNzI5
Zjg3OWE2OWRiZWNkMGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9wbGF5c3RhdGlvbi9XS0FQSUNhc3RQbGF5U3RhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL3BsYXlzdGF0aW9uL1dLQVBJQ2FzdFBsYXlTdGF0aW9uLmgKQEAgLTMw
LDQgKzMwLDI0IEBACiAjZXJyb3IgIlBsZWFzZSAjaW5jbHVkZSBcIldLQVBJQ2FzdC5oXCIgaW5z
dGVhZCBvZiB0aGlzIGZpbGUgZGlyZWN0bHkuIgogI2VuZGlmCiAKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJWaWV3OworCitXS19BRERfQVBJX01BUFBJTkcoV0tWaWV3UmVmLCBXZWJW
aWV3KQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgV0tWaWV3UmVmIHRvQVBJPD4oV2ViVmlldyogdmll
dykKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXS1ZpZXdSZWY+KHN0YXRpY19jYXN0
PHZvaWQqPih2aWV3KSk7Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSBXZWJWaWV3KiB0b0ltcGw8
PihXS1ZpZXdSZWYgdmlldykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViVmlldyo+KHN0
YXRpY19jYXN0PHZvaWQqPihjb25zdF9jYXN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PHR5
cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8V0tWaWV3UmVmPjo6dHlwZT46OnR5cGUqPih2aWV3
KSkpOworfQorCit9CisKICNlbmRpZiAvKiBXS0FQSUNhc3RQbGF5U3RhdGlvbl9oICovCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9XS0NvbnRl
eHRDb25maWd1cmF0aW9uUGxheVN0YXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvcGxheXN0YXRpb24vV0tDb250ZXh0Q29uZmlndXJhdGlvblBsYXlTdGF0aW9uLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ODE0MmQxZDEwMWUyZGJmZDE3MjJhNmY3Zjk2NzQwODg2NGU5YmFkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24v
V0tDb250ZXh0Q29uZmlndXJhdGlvblBsYXlTdGF0aW9uLmNwcApAQCAtMCwwICsxLDcyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJ
bmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0NvbnRleHRD
b25maWd1cmF0aW9uUGxheVN0YXRpb24uaCIKKworI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OworCit2b2lkIFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRXZWJQcm9jZXNzUGF0aChX
S0NvbnRleHRDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLU3RyaW5nUmVmIHdlYlBy
b2Nlc3NQYXRoKQoreworICAgIHRvSW1wbChjb25maWd1cmF0aW9uKS0+c2V0V2ViUHJvY2Vzc1Bh
dGgodG9JbXBsKHdlYlByb2Nlc3NQYXRoKS0+c3RyaW5nKCkpOworfQorCitXS1N0cmluZ1JlZiBX
S0NvbnRleHRDb25maWd1cmF0aW9uQ29weVdlYlByb2Nlc3NQYXRoKFdLQ29udGV4dENvbmZpZ3Vy
YXRpb25SZWYgY29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBs
KGNvbmZpZ3VyYXRpb24pLT53ZWJQcm9jZXNzUGF0aCgpKTsKK30KKwordm9pZCBXS0NvbnRleHRD
b25maWd1cmF0aW9uU2V0TmV0d29ya1Byb2Nlc3NQYXRoKFdLQ29udGV4dENvbmZpZ3VyYXRpb25S
ZWYgY29uZmlndXJhdGlvbiwgV0tTdHJpbmdSZWYgbmV0d29ya1Byb2Nlc3NQYXRoKQoreworICAg
IHRvSW1wbChjb25maWd1cmF0aW9uKS0+c2V0TmV0d29ya1Byb2Nlc3NQYXRoKHRvSW1wbChuZXR3
b3JrUHJvY2Vzc1BhdGgpLT5zdHJpbmcoKSk7Cit9CisKK1dLU3RyaW5nUmVmIFdLQ29udGV4dENv
bmZpZ3VyYXRpb25Db3B5TmV0d29ya1Byb2Nlc3NQYXRoKFdLQ29udGV4dENvbmZpZ3VyYXRpb25S
ZWYgY29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGNvbmZp
Z3VyYXRpb24pLT5uZXR3b3JrUHJvY2Vzc1BhdGgoKSk7Cit9CisKK3ZvaWQgV0tDb250ZXh0Q29u
ZmlndXJhdGlvblNldENvb2tpZVN0b3JhZ2VQYXRoKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYg
Y29uZmlndXJhdGlvbiwgV0tTdHJpbmdSZWYgY29va2llU3RvcmFnZVBhdGgpCit7CisgICAgdG9J
bXBsKGNvbmZpZ3VyYXRpb24pLT5zZXRDb29raWVTdG9yYWdlUGF0aCh0b0ltcGwoY29va2llU3Rv
cmFnZVBhdGgpLT5zdHJpbmcoKSk7Cit9CisKK1dLU3RyaW5nUmVmIFdLQ29udGV4dENvbmZpZ3Vy
YXRpb25Db3B5Q29va2llU3RvcmFnZVBhdGgoV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb25m
aWd1cmF0aW9uKQoreworICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoY29uZmlndXJhdGlv
biktPmNvb2tpZVN0b3JhZ2VQYXRoKCkpOworfQorCit2b2lkIFdLQ29udGV4dENvbmZpZ3VyYXRp
b25TZXRVc2VySWQoV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBpbnQz
Ml90IHVzZXJJZCkKK3sKKyAgICB0b0ltcGwoY29uZmlndXJhdGlvbiktPnNldFVzZXJJZCh1c2Vy
SWQpOworfQorCitpbnQzMl90IFdLQ29udGV4dENvbmZpZ3VyYXRpb25HZXRVc2VySWQoV0tDb250
ZXh0Q29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uKQoreworICAgIHJldHVybiB0b0ltcGwo
Y29uZmlndXJhdGlvbiktPnVzZXJJZCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tDb250ZXh0Q29uZmlndXJhdGlvblBsYXlTdGF0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9XS0NvbnRl
eHRDb25maWd1cmF0aW9uUGxheVN0YXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTUzOTQ2NDYxMTM1MDU2
ZThlM2FlMzBkYTkzNDhkOTQxMDlhNWRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tDb250ZXh0Q29uZmlndXJhdGlvblBsYXlT
dGF0aW9uLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255
IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tDb250ZXh0
Q29uZmlndXJhdGlvblJlZi5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgewor
I2VuZGlmCisKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRXZWJQcm9j
ZXNzUGF0aChXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLU3RyaW5n
UmVmIHdlYlByb2Nlc3NQYXRoKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0NvbnRleHRDb25m
aWd1cmF0aW9uQ29weVdlYlByb2Nlc3NQYXRoKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29u
ZmlndXJhdGlvbik7CisKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRO
ZXR3b3JrUHJvY2Vzc1BhdGgoV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9u
LCBXS1N0cmluZ1JlZiBuZXR3b3JrUHJvY2Vzc1BhdGgpOworV0tfRVhQT1JUIFdLU3RyaW5nUmVm
IFdLQ29udGV4dENvbmZpZ3VyYXRpb25Db3B5TmV0d29ya1Byb2Nlc3NQYXRoKFdLQ29udGV4dENv
bmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CisKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4
dENvbmZpZ3VyYXRpb25TZXRDb29raWVTdG9yYWdlUGF0aChXS0NvbnRleHRDb25maWd1cmF0aW9u
UmVmIGNvbmZpZ3VyYXRpb24sIFdLU3RyaW5nUmVmIGNvb2tpZVN0b3JhZ2VQYXRoKTsKK1dLX0VY
UE9SVCBXS1N0cmluZ1JlZiBXS0NvbnRleHRDb25maWd1cmF0aW9uQ29weUNvb2tpZVN0b3JhZ2VQ
YXRoKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CisKK1dLX0VYUE9S
VCB2b2lkIFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRVc2VySWQoV0tDb250ZXh0Q29uZmlndXJh
dGlvblJlZiBjb25maWd1cmF0aW9uLCBpbnQzMl90IHVzZXJJZCk7CitXS19FWFBPUlQgaW50MzJf
dCBXS0NvbnRleHRDb25maWd1cmF0aW9uR2V0VXNlcklkKFdLQ29udGV4dENvbmZpZ3VyYXRpb25S
ZWYgY29uZmlndXJhdGlvbik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9XS1ZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tWaWV3LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zNmM2Njc2MGNkNWVlMWJhOTExYTE1YjIwODNkYzAxNzdmYzQ4MDZlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRp
b24vV0tWaWV3LmNwcApAQCAtMCwwICsxLDE1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tWaWV3LmgiCisKKyNpbmNsdWRlICJBUElBcnJheS5o
IgorI2luY2x1ZGUgIkFQSUNsaWVudC5oIgorI2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9u
LmgiCisjaW5jbHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIk5hdGl2
ZVdlYk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCisjaW5j
bHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0LmgiCisjaW5jbHVk
ZSAiV2ViRXZlbnRGYWN0b3J5LmgiCisjaW5jbHVkZSAiV2ViVmlldy5oIgorI2luY2x1ZGUgPHdw
ZS93cGUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OworCitXZWJDb3JlOjpGbG9hdFNpemUgdG9GbG9hdFNpemUoV0tTaXplIHNpemUpCit7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0U2l6ZShzaXplLndpZHRoLCBzaXplLmhlaWdodCk7Cit9
CisKK1dLVmlld1JlZiBXS1ZpZXdDcmVhdGUoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1
cmF0aW9uKQoreworICAgIHJldHVybiB0b0FQSShXZWJWaWV3OjpjcmVhdGUoKnRvSW1wbChjb25m
aWd1cmF0aW9uKSkubGVha1JlZigpKTsKK30KKworV0tQYWdlUmVmIFdLVmlld0dldFBhZ2UoV0tW
aWV3UmVmIHZpZXdSZWYpCit7CisgICAgcmV0dXJuIHRvQVBJKCZ0b0ltcGwodmlld1JlZiktPnBh
Z2UoKSk7Cit9CisKK3ZvaWQgV0tWaWV3U2V0U2l6ZShXS1ZpZXdSZWYgdmlldywgV0tTaXplIHNp
emUpCit7CisgICAgdG9JbXBsKHZpZXcpLT5zZXRTaXplKHRvSW50U2l6ZShzaXplKSk7Cit9CisK
K3ZvaWQgV0tWaWV3SGFuZGxlS2V5Ym9hcmRFdmVudChXS1ZpZXdSZWYgdmlldywgV0tLZXlib2Fy
ZEV2ZW50IGV2ZW50KQoreworICAgIHdwZV9pbnB1dF9rZXlib2FyZF9ldmVudCB3cGVFdmVudDsK
KyAgICB3cGVFdmVudC50aW1lID0gMDsKKyAgICB3cGVFdmVudC5rZXlfY29kZSA9IGV2ZW50LnZp
cnR1YWxLZXlDb2RlOworICAgIHdwZUV2ZW50LmhhcmR3YXJlX2tleV9jb2RlID0gZXZlbnQudmly
dHVhbEtleUNvZGU7CisgICAgd3BlRXZlbnQubW9kaWZpZXJzID0gMDsgLy8gVE9ETzogSGFuZGxl
IG1vZGlmaWVycy4KKyAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKKyAgICBjYXNlIGtXS0V2ZW50
S2V5RG93bjoKKyAgICAgICAgd3BlRXZlbnQucHJlc3NlZCA9IHRydWU7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2Uga1dLRXZlbnRLZXlVcDoKKyAgICAgICAgd3BlRXZlbnQucHJlc3NlZCA9IGZh
bHNlOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5hdGl2ZVdlYktleWJvYXJk
RXZlbnQ6OkhhbmRsZWRCeUlucHV0TWV0aG9kIGhhbmRsZWRCeUlucHV0TWV0aG9kID0gTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudDo6SGFuZGxlZEJ5SW5wdXRNZXRob2Q6Ok5vOworICAgIE9wdGlvbmFs
PFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4+IHByZWVkaXRVbmRlcmxpbmVz
OworICAgIE9wdGlvbmFsPEVkaXRpbmdSYW5nZT4gcHJlZWRpdFNlbGVjdGlvblJhbmdlOworICAg
IHRvSW1wbCh2aWV3KS0+aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRpdmVXZWJLZXlib2FyZEV2ZW50
KCZ3cGVFdmVudCwgIiIsIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBXVEZNb3ZlKHByZWVkaXRVbmRl
cmxpbmVzKSwgV1RGTW92ZShwcmVlZGl0U2VsZWN0aW9uUmFuZ2UpKSk7Cit9CisKK3ZvaWQgV0tW
aWV3SGFuZGxlTW91c2VFdmVudChXS1ZpZXdSZWYgdmlldywgV0tNb3VzZUV2ZW50IGV2ZW50KQor
eworICAgIHdwZV9pbnB1dF9wb2ludGVyX2V2ZW50IHdwZUV2ZW50OworCisgICAgc3dpdGNoIChl
dmVudC50eXBlKSB7CisgICAgY2FzZSBrV0tFdmVudE1vdXNlRG93bjoKKyAgICBjYXNlIGtXS0V2
ZW50TW91c2VVcDoKKyAgICAgICAgd3BlRXZlbnQudHlwZSA9IHdwZV9pbnB1dF9wb2ludGVyX2V2
ZW50X3R5cGVfYnV0dG9uOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtXS0V2ZW50TW91c2VN
b3ZlOgorICAgICAgICB3cGVFdmVudC50eXBlID0gd3BlX2lucHV0X3BvaW50ZXJfZXZlbnRfdHlw
ZV9tb3Rpb247CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3dpdGNoIChldmVu
dC5idXR0b24pIHsKKyAgICBjYXNlIGtXS0V2ZW50TW91c2VCdXR0b25MZWZ0QnV0dG9uOgorICAg
ICAgICB3cGVFdmVudC5idXR0b24gPSAxOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtXS0V2
ZW50TW91c2VCdXR0b25NaWRkbGVCdXR0b246CisgICAgICAgIHdwZUV2ZW50LmJ1dHRvbiA9IDM7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2Uga1dLRXZlbnRNb3VzZUJ1dHRvblJpZ2h0QnV0dG9u
OgorICAgICAgICB3cGVFdmVudC5idXR0b24gPSAyOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IGtXS0V2ZW50TW91c2VCdXR0b25Ob0J1dHRvbjoKKyAgICAgICAgd3BlRXZlbnQuYnV0dG9uID0g
MDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgd3BlRXZlbnQudGltZSA9IDA7Cisg
ICAgd3BlRXZlbnQueCA9IGV2ZW50LnBvc2l0aW9uLng7CisgICAgd3BlRXZlbnQueSA9IGV2ZW50
LnBvc2l0aW9uLnk7CisgICAgd3BlRXZlbnQuc3RhdGUgPSAwOworICAgIHdwZUV2ZW50Lm1vZGlm
aWVycyA9IDA7IC8vIFRPRE86IEhhbmRsZSBtb2RpZmllcnMuCisKKyAgICBjb25zdCBmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvciA9IDE7CisKKyAgICB0b0ltcGwodmlldyktPmhhbmRsZU1vdXNlRXZl
bnQoTmF0aXZlV2ViTW91c2VFdmVudCgmd3BlRXZlbnQsIGRldmljZVNjYWxlRmFjdG9yKSk7Cit9
CisKK3ZvaWQgV0tWaWV3SGFuZGxlV2hlZWxFdmVudChXS1ZpZXdSZWYgdmlldywgV0tXaGVlbEV2
ZW50IGV2ZW50KQoreworICAgIHdwZV9pbnB1dF9heGlzXzJkX2V2ZW50IHdwZUV2ZW50OworICAg
IHdwZUV2ZW50LmJhc2UudHlwZSA9ICh3cGVfaW5wdXRfYXhpc19ldmVudF90eXBlKSh3cGVfaW5w
dXRfYXhpc19ldmVudF90eXBlX21vdGlvbl9zbW9vdGggfCB3cGVfaW5wdXRfYXhpc19ldmVudF90
eXBlX21hc2tfMmQpOworICAgIHdwZUV2ZW50LmJhc2UudGltZSA9IDA7CisgICAgd3BlRXZlbnQu
YmFzZS54ID0gZXZlbnQucG9zaXRpb24ueDsKKyAgICB3cGVFdmVudC5iYXNlLnkgPSBldmVudC5w
b3NpdGlvbi55OworICAgIHdwZUV2ZW50LmJhc2UuYXhpcyA9IDA7CisgICAgd3BlRXZlbnQuYmFz
ZS52YWx1ZSA9IDA7CisgICAgd3BlRXZlbnQuYmFzZS5tb2RpZmllcnMgPSAwOyAvLyBUT0RPOiBI
YW5kbGUgbW9kaWZpZXJzLgorICAgIHdwZUV2ZW50LnhfYXhpcyA9IGV2ZW50LmRlbHRhLndpZHRo
OworICAgIHdwZUV2ZW50LnhfYXhpcyA9IGV2ZW50LmRlbHRhLmhlaWdodDsKKworICAgIGNvbnN0
IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMTsKKworICAgIHRvSW1wbCh2aWV3KS0+aGFuZGxl
V2hlZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KCZ3cGVFdmVudC5iYXNlLCBkZXZpY2VTY2Fs
ZUZhY3RvciwgV2ViV2hlZWxFdmVudDo6UGhhc2U6OlBoYXNlTm9uZSwgV2ViV2hlZWxFdmVudDo6
UGhhc2U6OlBoYXNlTm9uZSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvcGxheXN0YXRpb24vV0tWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9wbGF5c3RhdGlvbi9XS1ZpZXcuaAppbmRleCAzMjQ2NzNiMjk0MWY3M2VlOTRiMjI1MzA4
M2QzMWQwMTg0NjUzODdhLi5iOTdjYTk1MDcyNWQ2N2EyMDk2ZjNhMzQxM2M3YTI5OWExZGRjMGMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9X
S1ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9X
S1ZpZXcuaApAQCAtMjcsMTEgKzI3LDIxIEBACiAjZGVmaW5lIFdLVmlld19oCiAKICNpbmNsdWRl
IDxXZWJLaXQvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLRXZlbnRQbGF5U3RhdGlvbi5o
PgogCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKK1dLX0VYUE9S
VCBXS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJh
dGlvbik7CitXS19FWFBPUlQgV0tQYWdlUmVmIFdLVmlld0dldFBhZ2UoV0tWaWV3UmVmIHZpZXcp
OworCitXS19FWFBPUlQgdm9pZCBXS1ZpZXdTZXRTaXplKFdLVmlld1JlZiB2aWV3LCBXS1NpemUg
c2l6ZSk7CisKK1dLX0VYUE9SVCB2b2lkIFdLVmlld0hhbmRsZUtleWJvYXJkRXZlbnQoV0tWaWV3
UmVmIHZpZXcsIFdLS2V5Ym9hcmRFdmVudCk7CitXS19FWFBPUlQgdm9pZCBXS1ZpZXdIYW5kbGVN
b3VzZUV2ZW50KFdLVmlld1JlZiB2aWV3LCBXS01vdXNlRXZlbnQpOworV0tfRVhQT1JUIHZvaWQg
V0tWaWV3SGFuZGxlV2hlZWxFdmVudChXS1ZpZXdSZWYgdmlldywgV0tXaGVlbEV2ZW50KTsKKwog
I2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9wbGF5c3RhdGlvbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9wbGF5c3RhdGlvbi9XZWJWaWV3LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTVhMzc3MTdm
YjQxZDYxY2M0YWUzNDliYWU3NzQ1MTQ0OWFkYmY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3BsYXlzdGF0aW9uL1dlYlZpZXcuY3BwCkBAIC0wLDAgKzEs
MzM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0
YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJWaWV3LmgiCisKKyNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUg
IkRyYXdpbmdBcmVhUHJveHkuaCIKKyNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0
ZWRHcmFwaGljcy5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKKyNpbmNs
dWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVu
dC5oIgorI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQb29s
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9ET01QYXN0ZUFjY2Vzcy5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0V2ZW50UGxheVN0YXRpb24u
aD4KKyNpbmNsdWRlIDxjYWlyby5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1JlZlB0cjxXZWJWaWV3PiBXZWJWaWV3OjpjcmVhdGUoY29uc3Qg
QVBJOjpQYWdlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJWaWV3KGNvbmZpZ3VyYXRpb24pKTsKK30KKworV2ViVmlldzo6V2ViVmll
dyhjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBjb25mKQoreworICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IGNvbmYuY29weSgpOworICAgIGF1dG8qIHBvb2wgPSBjb25maWd1cmF0aW9uLT5w
cm9jZXNzUG9vbCgpOworICAgIG1fcGFnZVByb3h5ID0gcG9vbC0+Y3JlYXRlV2ViUGFnZSgqdGhp
cywgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CisKKyAgICBtX3BhZ2VQcm94eS0+aW5pdGlhbGl6
ZVdlYlBhZ2UoKTsKK30KKworV2ViVmlldzo6fldlYlZpZXcoKQoreworfQorCit2b2lkIFdlYlZp
ZXc6OnNldFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKK3sKK30KKwordm9pZCBX
ZWJWaWV3OjpoYW5kbGVLZXlib2FyZEV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQm
IGV2ZW50KQoreworICAgIG1fcGFnZVByb3h5LT5oYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50KTsK
K30KKwordm9pZCBXZWJWaWV3OjpoYW5kbGVNb3VzZUV2ZW50KGNvbnN0IE5hdGl2ZVdlYk1vdXNl
RXZlbnQmIGV2ZW50KQoreworICAgIG1fcGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KGV2ZW50
KTsKK30KKwordm9pZCBXZWJWaWV3OjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IE5hdGl2ZVdlYldo
ZWVsRXZlbnQmIGV2ZW50KQoreworICAgIG1fcGFnZVByb3h5LT5oYW5kbGVXaGVlbEV2ZW50KGV2
ZW50KTsKK30KKworc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+IFdlYlZpZXc6OmNy
ZWF0ZURyYXdpbmdBcmVhUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzUHJveHkpCit7Cisg
ICAgcmV0dXJuIFdURjo6bWFrZVVuaXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFw
aGljcz4ocGFnZSgpLCBwcm9jZXNzUHJveHkpOworfQorCit2b2lkIFdlYlZpZXc6OnNldFZpZXdO
ZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6UmVnaW9uJiByZWdpb24pCit7Cit9CisKK3ZvaWQg
V2ViVmlldzo6cmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBzY3JvbGxQ
b3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNjcm9sbE9yaWdpbikKK3sKK30KKwor
V2ViQ29yZTo6RmxvYXRQb2ludCBXZWJWaWV3Ojp2aWV3U2Nyb2xsUG9zaXRpb24oKQoreworICAg
IHJldHVybiBXZWJDb3JlOjpGbG9hdFBvaW50IHsgfTsKK30KKworV2ViQ29yZTo6SW50U2l6ZSBX
ZWJWaWV3Ojp2aWV3U2l6ZSgpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OkludFNpemUgeyB9Owor
fQorCitib29sIFdlYlZpZXc6OmlzVmlld1dpbmRvd0FjdGl2ZSgpCit7CisgICAgcmV0dXJuIG1f
YWN0aXZlOworfQorCitib29sIFdlYlZpZXc6OmlzVmlld0ZvY3VzZWQoKQoreworICAgIHJldHVy
biBtX2ZvY3VzZWQ7Cit9CisKK2Jvb2wgV2ViVmlldzo6aXNWaWV3VmlzaWJsZSgpCit7CisgICAg
cmV0dXJuIG1fdmlzaWJsZTsKK30KKworYm9vbCBXZWJWaWV3Ojppc1ZpZXdJbldpbmRvdygpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJW
aWV3Ojpwcm9jZXNzRGlkRXhpdCgpCit7Cit9CisKK3ZvaWQgV2ViVmlldzo6ZGlkUmVsYXVuY2hQ
cm9jZXNzKCkKK3sKK30KK3ZvaWQgV2ViVmlldzo6cGFnZUNsb3NlZCgpCit7Cit9CisKK3ZvaWQg
V2ViVmlldzo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQoreworfQorCit2b2lkIFdlYlZpZXc6OnRv
b2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7Cit9CisKK3ZvaWQg
V2ViVmlldzo6ZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBib29sIHVzZUN1c3RvbUNvbnRlbnRQcm92aWRlcikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIFdlYlZpZXc6OmhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5
JikKK3sKK30KKwordm9pZCBXZWJWaWV3OjpkaWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBzaXplKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
V2ViVmlldzo6c2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYgY3Vyc29yKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgV2ViVmlldzo6c2V0Q3Vyc29ySGlkZGVuVW50
aWxNb3VzZU1vdmVzKGJvb2wpCit7Cit9CisKK3ZvaWQgV2ViVmlldzo6ZGlkQ2hhbmdlVmlld3Bv
cnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYgYXR0cmlidXRl
cykKK3sKK30KKwordm9pZCBXZWJWaWV3OjpyZWdpc3RlckVkaXRDb21tYW5kKFJlZjxXZWJFZGl0
Q29tbWFuZFByb3h5PiYmLCBVbmRvT3JSZWRvKQoreworfQorCit2b2lkIFdlYlZpZXc6OmNsZWFy
QWxsRWRpdENvbW1hbmRzKCkKK3sKK30KKworYm9vbCBXZWJWaWV3OjpjYW5VbmRvUmVkbyhVbmRv
T3JSZWRvKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJWaWV3OjpleGVjdXRl
VW5kb1JlZG8oVW5kb09yUmVkbykKK3sKK30KKwordm9pZCBXZWJWaWV3Ojp3aGVlbEV2ZW50V2Fz
Tm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JikKK3sKK30KKwor
V2ViQ29yZTo6RmxvYXRSZWN0IFdlYlZpZXc6OmNvbnZlcnRUb0RldmljZVNwYWNlKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICByZXR1cm4gcmVjdDsKK30KKworV2ViQ29y
ZTo6RmxvYXRSZWN0IFdlYlZpZXc6OmNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIHJlY3QpCit7CisgICAgcmV0dXJuIHJlY3Q7Cit9CisKK1dlYkNvcmU6OkludFBv
aW50IFdlYlZpZXc6OnNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBv
aW50KQoreworICAgIHJldHVybiBwb2ludDsKK30KKworV2ViQ29yZTo6SW50UmVjdCBXZWJWaWV3
Ojpyb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCit7CisgICAg
cmV0dXJuIHJlY3Q7Cit9CisKK1dlYkNvcmU6OkludFBvaW50IFdlYlZpZXc6OmFjY2Vzc2liaWxp
dHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCkKK3sKKyAg
ICByZXR1cm4gc2NyZWVuVG9Sb290Vmlldyhwb2ludCk7Cit9CisKK1dlYkNvcmU6OkludFJlY3Qg
V2ViVmlldzo6cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgcmVjdCkKK3sKKyAgICByZXR1cm4gcm9vdFZpZXdUb1NjcmVlbihyZWN0KTsgICAgCit9
CisKK3ZvaWQgV2ViVmlldzo6ZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50JiBldmVudCwgYm9vbCB3YXNFdmVudEhhbmRsZWQpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKworUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBXZWJWaWV3OjpjcmVhdGVQb3B1
cE1lbnVQcm94eShXZWJQYWdlUHJveHkmICBwYWdlUHJveHkpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4geyB9OworfQorCit2b2lkIFdlYlZpZXc6OmVudGVyQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFdlYlZpZXc6OmV4aXRBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJW
aWV3Ojp1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250
ZXh0JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCisjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQorV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCYgV2ViVmlldzo6ZnVsbFNj
cmVlbk1hbmFnZXJQcm94eUNsaWVudCgpCit7CisgICAgcmV0dXJuICooV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eUNsaWVudCopdGhpczsKK30KKyNlbmRpZgorCisvLyBDdXN0b20gcmVwcmVzZW50
YXRpb25zLgordm9pZCBXZWJWaWV3OjpkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRl
bnRQcm92aWRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmKQoreworfQorCit2b2lkIFdlYlZpZXc6Om5hdmlnYXRpb25HZXN0dXJlRGlk
QmVnaW4oKQoreworfQorCit2b2lkIFdlYlZpZXc6Om5hdmlnYXRpb25HZXN0dXJlV2lsbEVuZChi
b29sIHdpbGxOYXZpZ2F0ZSwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpCit7Cit9CisKK3ZvaWQg
V2ViVmlldzo6bmF2aWdhdGlvbkdlc3R1cmVEaWRFbmQoYm9vbCB3aWxsTmF2aWdhdGUsIFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0mKQoreworfQorCit2b2lkIFdlYlZpZXc6Om5hdmlnYXRpb25HZXN0
dXJlRGlkRW5kKCkKK3sKK30KKwordm9pZCBXZWJWaWV3Ojp3aWxsUmVjb3JkTmF2aWdhdGlvblNu
YXBzaG90KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKQoreworfQorCit2b2lkIFdlYlZpZXc6OmRp
ZFJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3QoKQoreworfQorCit2b2lkIFdlYlZpZXc6
OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvck1haW5GcmFtZSgpCit7Cit9CisKK3Zv
aWQgV2ViVmlldzo6ZGlkRmluaXNoTG9hZEZvck1haW5GcmFtZSgpCit7Cit9CisKK3ZvaWQgV2Vi
Vmlldzo6ZGlkRmFpbExvYWRGb3JNYWluRnJhbWUoKQoreworfQorCit2b2lkIFdlYlZpZXc6OmRp
ZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JNYWluRnJhbWUoU2FtZURvY3VtZW50TmF2aWdhdGlv
blR5cGUpCit7Cit9CisKK3ZvaWQgV2ViVmlldzo6ZGlkQ2hhbmdlQmFja2dyb3VuZENvbG9yKCkK
K3sKK30KKwordm9pZCBXZWJWaWV3Ojppc1BsYXlpbmdBdWRpb1dpbGxDaGFuZ2UoKQoreworfQor
Cit2b2lkIFdlYlZpZXc6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCkKK3sKK30KKwordm9pZCBX
ZWJWaWV3OjpyZWZWaWV3KCkKK3sKK30KKwordm9pZCBXZWJWaWV3OjpkZXJlZlZpZXcoKQorewor
fQorCit2b2lkIFdlYlZpZXc6OmRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCit7Cit9CisKK1dl
YkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gV2ViVmlldzo6dXNlckludGVyZmFj
ZUxheW91dERpcmVjdGlvbigpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb246OkxUUjsKK30KKwordm9pZCBXZWJWaWV3OjpyZXF1ZXN0RE9NUGFzdGVB
Y2Nlc3MoY29uc3QgSW50UmVjdCYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25z
ZTo6RGVuaWVkRm9yR2VzdHVyZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3BsYXlzdGF0aW9uL1dlYlZpZXcuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9wbGF5c3RhdGlvbi9XZWJWaWV3LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2Q5MWMxZWU1NjFiYzNmMzZmODVmODFmYTA2NzBjNjRlMjU1MmEyNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9wbGF5c3RhdGlvbi9XZWJWaWV3
LmgKQEAgLTAsMCArMSwxODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRl
cmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCisjaW5jbHVkZSAi
UGFnZUxvYWRTdGF0ZS5oIgorI2luY2x1ZGUgIldLVmlldy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eS5oIgorI2luY2x1ZGUgPFdlYktpdC9XS0V2ZW50UGxheVN0YXRpb24uaD4KKworI2lmIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkKKyNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
LmgiCisjZW5kaWYKKworbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBWaWV3Q2xpZW50OworY2xhc3Mg
Vmlld1BvcHVwTWVudUNsaWVudDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIENv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZTsKK2NsYXNzIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ7Citj
bGFzcyBOYXRpdmVXZWJNb3VzZUV2ZW50OworY2xhc3MgTmF0aXZlV2ViV2hlZWxFdmVudDsKK2Ns
YXNzIFdlYlBvcHVwTWVudVByb3h5UGxheVN0YXRpb247CitzdHJ1Y3QgV2ViUG9wdXBJdGVtOwor
CitjbGFzcyBXZWJWaWV3IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlw
ZTo6Vmlldz4KKyAgICAsIHB1YmxpYyBQYWdlQ2xpZW50CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQorICAgICwgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudAorI2VuZGlmCit7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxX
ZWJWaWV3PiBjcmVhdGUoY29uc3QgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiYpOworICAgIHZpcnR1
YWwgfldlYlZpZXcoKTsKKworICAgIFdlYlBhZ2VQcm94eSYgcGFnZSgpIHsgcmV0dXJuICptX3Bh
Z2VQcm94eTsgfQorCisgICAgdm9pZCBzZXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsK
KworICAgIHZvaWQgaGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2
ZW50Jik7CisgICAgdm9pZCBoYW5kbGVNb3VzZUV2ZW50KGNvbnN0IE5hdGl2ZVdlYk1vdXNlRXZl
bnQmKTsKKyAgICB2b2lkIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVu
dCYpOworCitwcml2YXRlOgorICAgIFdlYlZpZXcoY29uc3QgQVBJOjpQYWdlQ29uZmlndXJhdGlv
biYpOworCisgICAgLy8gQ3JlYXRlIGEgbmV3IGRyYXdpbmcgYXJlYSBwcm94eSBmb3IgdGhlIGdp
dmVuIHBhZ2UuCisgICAgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+IGNyZWF0ZURy
YXdpbmdBcmVhUHJveHkoV2ViUHJvY2Vzc1Byb3h5Jikgb3ZlcnJpZGU7CisKKyAgICAvLyBUZWxs
IHRoZSB2aWV3IHRvIGludmFsaWRhdGUgdGhlIGdpdmVuIHJlZ2lvbi4gVGhlIHJlZ2lvbiBpcyBp
biB2aWV3IGNvb3JkaW5hdGVzLgorICAgIHZvaWQgc2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBX
ZWJDb3JlOjpSZWdpb24mKSBvdmVycmlkZTsKKworICAgIC8vIFRlbGwgdGhlIHZpZXcgdG8gc2Ny
b2xsIHRvIHRoZSBnaXZlbiBwb3NpdGlvbiwgYW5kIHdoZXRoZXIgdGhpcyB3YXMgYSBwcm9ncmFt
bWF0aWMgc2Nyb2xsLgorICAgIHZvaWQgcmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpGbG9h
dFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNjcm9sbE9y
aWdpbikgb3ZlcnJpZGU7CisKKyAgICAvLyBSZXR1cm4gdGhlIGN1cnJlbnQgc2Nyb2xsIHBvc2l0
aW9uIChub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgYXMgdGhlIFdlYkNvcmUgc2Nyb2xsIHBvc2l0
aW9uLCBiZWNhdXNlIG9mIHNjYWxpbmcsIGluc2V0cyBldGMuKQorICAgIFdlYkNvcmU6OkZsb2F0
UG9pbnQgdmlld1Njcm9sbFBvc2l0aW9uKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBSZXR1cm4gdGhl
IHNpemUgb2YgdGhlIHZpZXcgdGhlIHBhZ2UgaXMgYXNzb2NpYXRlZCB3aXRoLgorICAgIFdlYkNv
cmU6OkludFNpemUgdmlld1NpemUoKSBvdmVycmlkZTsKKworICAgIC8vIFJldHVybiB3aGV0aGVy
IHRoZSB2aWV3J3MgY29udGFpbmluZyB3aW5kb3cgaXMgYWN0aXZlLgorICAgIGJvb2wgaXNWaWV3
V2luZG93QWN0aXZlKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBSZXR1cm4gd2hldGhlciB0aGUgdmll
dyBpcyBmb2N1c2VkLgorICAgIGJvb2wgaXNWaWV3Rm9jdXNlZCgpIG92ZXJyaWRlOworCisgICAg
Ly8gUmV0dXJuIHdoZXRoZXIgdGhlIHZpZXcgaXMgdmlzaWJsZS4KKyAgICBib29sIGlzVmlld1Zp
c2libGUoKSBvdmVycmlkZTsKKworICAgIC8vIFJldHVybiB3aGV0aGVyIHRoZSB2aWV3IGlzIGlu
IGEgd2luZG93LgorICAgIGJvb2wgaXNWaWV3SW5XaW5kb3coKSBvdmVycmlkZTsKKworICAgIHZv
aWQgcHJvY2Vzc0RpZEV4aXQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlbGF1bmNoUHJvY2Vz
cygpIG92ZXJyaWRlOworICAgIHZvaWQgcGFnZUNsb3NlZCgpIG92ZXJyaWRlOworCisgICAgdm9p
ZCBwcmVmZXJlbmNlc0RpZENoYW5nZSgpIG92ZXJyaWRlOworCisgICAgdm9pZCB0b29sVGlwQ2hh
bmdlZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKworICAgIHZvaWQg
ZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHVz
ZUN1c3RvbUNvbnRlbnRQcm92aWRlcikgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGhhbmRsZURvd25s
b2FkUmVxdWVzdChEb3dubG9hZFByb3h5Jikgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGRpZENoYW5n
ZUNvbnRlbnRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKKworICAgIHZv
aWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYpIG92ZXJyaWRlOworICAgIHZvaWQg
c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmli
dXRlcyYpIG92ZXJyaWRlOworCisgICAgdm9pZCByZWdpc3RlckVkaXRDb21tYW5kKFJlZjxXZWJF
ZGl0Q29tbWFuZFByb3h5PiYmLCBVbmRvT3JSZWRvKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsZWFy
QWxsRWRpdENvbW1hbmRzKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5VbmRvUmVkbyhVbmRvT3JS
ZWRvKSBvdmVycmlkZTsKKyAgICB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhVbmRvT3JSZWRvKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHdoZWVsRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNvbnN0IE5h
dGl2ZVdlYldoZWVsRXZlbnQmKSBvdmVycmlkZTsKKworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBj
b252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsK
KyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvVXNlclNwYWNlKGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblRvUm9v
dFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpJ
bnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRl
OworICAgIFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50Jikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6SW50UmVjdCBy
b290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3Zl
cnJpZGU7CisKKyAgICB2b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKSBvdmVycmlkZTsKKworICAgIFJlZlB0cjxX
ZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Jikgb3Zl
cnJpZGU7CisKKyAgICB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3Qg
TGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRlOworICAgIHZvaWQgZXhpdEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7CisKKyAgICAvLyBB
dXhpbGlhcnkgQ2xpZW50IENyZWF0aW9uCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAg
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQmIGZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlD
bGllbnQoKSBvdmVycmlkZTsKKyNlbmRpZgorCisgICAgLy8gQ3VzdG9tIHJlcHJlc2VudGF0aW9u
cy4KKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVy
KGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYpIG92ZXJyaWRlOworCisgICAgdm9pZCBuYXZpZ2F0aW9uR2VzdHVyZURpZEJlZ2luKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBuYXZpZ2F0aW9uR2VzdHVyZVdpbGxFbmQoYm9vbCB3aWxsTmF2aWdh
dGUsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKSBvdmVycmlkZTsKKyAgICB2b2lkIG5hdmlnYXRp
b25HZXN0dXJlRGlkRW5kKGJvb2wgd2lsbE5hdmlnYXRlLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBuYXZpZ2F0aW9uR2VzdHVyZURpZEVuZCgpIG92ZXJyaWRl
OworICAgIHZvaWQgd2lsbFJlY29yZE5hdmlnYXRpb25TbmFwc2hvdChXZWJCYWNrRm9yd2FyZExp
c3RJdGVtJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNu
YXBzaG90KCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dEZvck1haW5GcmFtZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvck1h
aW5GcmFtZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRmFpbExvYWRGb3JNYWluRnJhbWUoKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JNYWluRnJhbWUo
U2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUpIG92ZXJyaWRlOworCisgICAgdm9pZCBkaWRDaGFu
Z2VCYWNrZ3JvdW5kQ29sb3IoKSBvdmVycmlkZTsKKyAgICB2b2lkIGlzUGxheWluZ0F1ZGlvV2ls
bENoYW5nZSgpIG92ZXJyaWRlOworICAgIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKSBv
dmVycmlkZTsKKworICAgIHZvaWQgcmVmVmlldygpIG92ZXJyaWRlOworICAgIHZvaWQgZGVyZWZW
aWV3KCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpIG92
ZXJyaWRlOworCisgICAgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB1c2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHJlcXVlc3RE
T01QYXN0ZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgU3RyaW5nJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlKT4mJikg
ZmluYWw7CisKKyAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBtX3BhZ2VQcm94eTsKKworICAgIGJv
b2wgbV9mb2N1c2VkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fYWN0aXZlIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1fdmlzaWJsZSB7IGZhbHNlIH07CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQor
ICAgIGJvb2wgbV9pc0Z1bGxTY3JlZW4geyBmYWxzZSB9OworI2VuZGlmCisKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1
bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hl
ci9Qcm9jZXNzTGF1bmNoZXIuaAppbmRleCA3NmE5MDRiNmMzZDk1ZTkyMDZkMDkxNzcwNmQ2NzJk
OGQ3MTYyMWZjLi4yMjUxMDkzM2VmMGM2MzYxMjdiMjE2OWU3OTdlMjA3MmJkZmJlMDc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIu
aApAQCAtODQsNiArODQsMTEgQEAgcHVibGljOgogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkK
ICAgICAgICAgU3RyaW5nIHByb2Nlc3NDbWRQcmVmaXg7CiAjZW5kaWYKKyNlbmRpZgorCisjaWYg
UExBVEZPUk0oUExBWVNUQVRJT04pCisgICAgICAgIFN0cmluZyBwcm9jZXNzUGF0aDsKKyAgICAg
ICAgaW50MzJfdCB1c2VySWQgeyAtMSB9OwogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvcGxheXN0YXRpb24vUHJvY2Vzc0xhdW5j
aGVyUGxheVN0YXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvcGxh
eXN0YXRpb24vUHJvY2Vzc0xhdW5jaGVyUGxheVN0YXRpb24uY3BwCmluZGV4IDU0ZTYxMGRjZmM0
YTcyNzlmMTdhYmE3ZGVkMWQwYjgzZTI3OGQ5MWEuLmJlYjA3OTUzYTFiOGEyNWIzMjhhN2ZiM2Vi
NWM2OTI4NGI2NTY2Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5j
aGVyL3BsYXlzdGF0aW9uL1Byb2Nlc3NMYXVuY2hlclBsYXlTdGF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9wbGF5c3RhdGlvbi9Qcm9jZXNzTGF1bmNoZXJQ
bGF5U3RhdGlvbi5jcHAKQEAgLTI5LDE4ICsyOSw4MCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgogCisjaW5jbHVkZSA8cHJvY2Vzcy1sYXVuY2hl
ci5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKKyNkZWZpbmUgTUFLRV9QUk9DRVNTX1BBVEgoeCkgIi9hcHAwLyIg
I3ggIlByb2Nlc3Muc2VsZiIKK3N0YXRpYyBjb25zdCBjaGFyKiBkZWZhdWx0UHJvY2Vzc1BhdGgo
UHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlwZSBwcm9jZXNzVHlwZSkKK3sKKyAgICBzd2l0Y2gg
KHByb2Nlc3NUeXBlKSB7CisgICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpO
ZXR3b3JrOgorICAgICAgICByZXR1cm4gTUFLRV9QUk9DRVNTX1BBVEgoTmV0d29yayk7CisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIGNhc2UgUHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlw
ZTo6R1BVOgorICAgICAgICByZXR1cm4gTUFLRV9QUk9DRVNTX1BBVEgoR1BVKTsKKyNlbmRpZgor
ICAgIGNhc2UgUHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlwZTo6V2ViOgorICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBNQUtFX1BST0NFU1NfUEFUSChXZWIpOworICAgIH0KK30KKwogdm9p
ZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogeworICAgIElQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllciBzZXJ2ZXJJZGVudGlmaWVyOworICAgIElQQzo6Q29ubmVjdGlvbjo6U29j
a2V0UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5l
Y3Rpb24oSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uT3B0aW9uczo6U2V0Q2xvZXhlY09uU2Vy
dmVyKTsKKworICAgIGludCBzZW5kQnVmU2l6ZSA9IDMyICogMTAyNDsKKyAgICBzZXRzb2Nrb3B0
KHNvY2tldFBhaXIuc2VydmVyLCBTT0xfU09DS0VULCBTT19TTkRCVUYsICZzZW5kQnVmU2l6ZSwg
NCk7CisgICAgc2V0c29ja29wdChzb2NrZXRQYWlyLmNsaWVudCwgU09MX1NPQ0tFVCwgU09fU05E
QlVGLCAmc2VuZEJ1ZlNpemUsIDQpOworCisgICAgaW50IHJlY3ZCdWZTaXplID0gMzIgKiAxMDI0
OworICAgIHNldHNvY2tvcHQoc29ja2V0UGFpci5zZXJ2ZXIsIFNPTF9TT0NLRVQsIFNPX1JDVkJV
RiwgJnJlY3ZCdWZTaXplLCA0KTsKKyAgICBzZXRzb2Nrb3B0KHNvY2tldFBhaXIuY2xpZW50LCBT
T0xfU09DS0VULCBTT19SQ1ZCVUYsICZyZWN2QnVmU2l6ZSwgNCk7CisKKyAgICBjaGFyIGNvcmVQ
cm9jZXNzSWRlbnRpZmllclN0cmluZ1sxNl07CisgICAgc25wcmludGYoY29yZVByb2Nlc3NJZGVu
dGlmaWVyU3RyaW5nLCBzaXplb2YgY29yZVByb2Nlc3NJZGVudGlmaWVyU3RyaW5nLCAiJWxkIiwg
bV9sYXVuY2hPcHRpb25zLnByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCkpOworCisgICAgY2hh
ciogYXJndltdID0geworICAgICAgICBjb3JlUHJvY2Vzc0lkZW50aWZpZXJTdHJpbmcsCisgICAg
ICAgIG51bGxwdHIKKyAgICB9OworCisgICAgUGxheVN0YXRpb246OkxhdW5jaFBhcmFtIHBhcmFt
IHsgc29ja2V0UGFpci5jbGllbnQsIG1fbGF1bmNoT3B0aW9ucy51c2VySWQgfTsKKyAgICBpbnQz
Ml90IGFwcExvY2FsUGlkID0gUGxheVN0YXRpb246OmxhdW5jaFByb2Nlc3MoCisgICAgICAgICFt
X2xhdW5jaE9wdGlvbnMucHJvY2Vzc1BhdGguaXNFbXB0eSgpID8gbV9sYXVuY2hPcHRpb25zLnBy
b2Nlc3NQYXRoLnV0ZjgoKS5kYXRhKCkgOiBkZWZhdWx0UHJvY2Vzc1BhdGgobV9sYXVuY2hPcHRp
b25zLnByb2Nlc3NUeXBlKSwKKyAgICAgICAgYXJndiwgcGFyYW0pOworICAgIGlmIChhcHBMb2Nh
bFBpZCA8IDApIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFp
bGVkIHRvIGxhdW5jaCBwcm9jZXNzLiBlcnI9MHglMDh4IHBhdGg9JXNcbiIsIGFwcExvY2FsUGlk
LCBtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1BhdGgudXRmOCgpLmRhdGEoKSk7CisjZW5kaWYKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjbG9zZShzb2NrZXRQYWlyLmNsaWVudCk7CisgICAg
c2VydmVySWRlbnRpZmllciA9IHNvY2tldFBhaXIuc2VydmVyOworCisgICAgLy8gV2UndmUgZmlu
aXNoZWQgbGF1bmNoaW5nIHRoZSBwcm9jZXNzLCBtZXNzYWdlIGJhY2sgdG8gdGhlIG1haW4gcnVu
IGxvb3AuCisgICAgUmVmUHRyPFByb2Nlc3NMYXVuY2hlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
KyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goWz1dIHsKKyAgICAgICAgcHJvdGVjdGVkVGhp
cy0+ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcyhhcHBMb2NhbFBpZCwgc2VydmVySWRlbnRpZmll
cik7CisgICAgfSk7CiB9CiAKIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjp0ZXJtaW5hdGVQcm9jZXNz
KCkKIHsKKyAgICBpZiAoIW1fcHJvY2Vzc0lkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFBsYXlTdGF0aW9uOjp0ZXJtaW5hdGVQcm9jZXNzKG1fcHJvY2Vzc0lkZW50aWZpZXIpOwog
fQogCiB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKIHsKKyAgICBt
X3Byb2Nlc3NJZGVudGlmaWVyID0gMDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAppbmRleCAzNmY3YzQ1ZjBiZGFhNTJiNWQ4ZjExMDJhYTM4YjZlNzlhNWQ2ODQwLi41
ZTk4Mjk0NzAyOWVlNzVjN2QzNWNiZTc2MTE0MTMzMTM2ZWJkZmY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAK
QEAgLTEwOSw2ICsxMDksMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hP
cHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmMKICAgICAgICAgcHJv
Y2Vzc1Bvb2woKS5zZXRTaG91bGRNYWtlTmV4dE5ldHdvcmtQcm9jZXNzTGF1bmNoRmFpbEZvclRl
c3RpbmcoZmFsc2UpOwogICAgICAgICBsYXVuY2hPcHRpb25zLnNob3VsZE1ha2VQcm9jZXNzTGF1
bmNoRmFpbEZvclRlc3RpbmcgPSB0cnVlOwogICAgIH0KKworI2lmIFBMQVRGT1JNKFBMQVlTVEFU
SU9OKQorICAgIGxhdW5jaE9wdGlvbnMucHJvY2Vzc1BhdGggPSBtX3Byb2Nlc3NQb29sLm5ldHdv
cmtQcm9jZXNzUGF0aCgpOworICAgIGxhdW5jaE9wdGlvbnMudXNlcklkID0gbV9wcm9jZXNzUG9v
bC51c2VySWQoKTsKKyNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNvbm5l
Y3Rpb25XaWxsT3BlbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCAxOTM4ZjVhMGFmZThmY2JmOThjNjNlMWU1
MTAyYWVhYjc3YzNjY2UwLi5jMTZiMjI5MWU2ZDk2ZDdhYTE4ZjA1YzNhOTZlNjNkMjBkNWQzNGFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTUzNiw2ICs1
MzYsMTIgQEAgcHVibGljOgogICAgIHZvaWQgbm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGNvbnN0
IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgT3B0aW9uYWw8U3RyaW5n
PiYgZW5jb2RlZFZhbHVlKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oUExBWVNUQVRJT04pCisg
ICAgY29uc3QgU3RyaW5nJiB3ZWJQcm9jZXNzUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2
ZWRQYXRocy53ZWJQcm9jZXNzUGF0aDsgfQorICAgIGNvbnN0IFN0cmluZyYgbmV0d29ya1Byb2Nl
c3NQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZFBhdGhzLm5ldHdvcmtQcm9jZXNzUGF0
aDsgfQorICAgIGludDMyX3QgdXNlcklkKCkgY29uc3QgeyByZXR1cm4gbV91c2VySWQ7IH0KKyNl
bmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKQEAgLTc2
Myw2ICs3NjksMTEgQEAgcHJpdmF0ZToKICAgICAgICAgU3RyaW5nIGNvbnRhaW5lclRlbXBvcmFy
eURpcmVjdG9yeTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oUExBWVNUQVRJT04pCisgICAgICAg
IFN0cmluZyB3ZWJQcm9jZXNzUGF0aDsKKyAgICAgICAgU3RyaW5nIG5ldHdvcmtQcm9jZXNzUGF0
aDsKKyNlbmRpZgorCiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxXZWJQcm9jZXNz
U2FuZGJveEV4dGVuc2lvblBhdGhzOwogICAgIH07CiAgICAgUGF0aHMgbV9yZXNvbHZlZFBhdGhz
OwpAQCAtODAwLDYgKzgxMSwxMCBAQCBwcml2YXRlOgogICAgIH07CiAgICAgT3B0aW9uYWw8QXVk
aWJsZU1lZGlhQWN0aXZpdHk+IG1fYXVkaWJsZU1lZGlhQWN0aXZpdHk7CiAKKyNpZiBQTEFURk9S
TShQTEFZU1RBVElPTikKKyAgICBpbnQzMl90IG1fdXNlcklkIHsgLTEgfTsKKyNlbmRpZgorCiAj
aWYgUExBVEZPUk0oSU9TKQogICAgIC8vIEZJWE1FOiBEZWxheWVkIHByb2Nlc3MgbGF1bmNoIGlz
IGN1cnJlbnRseSBkaXNhYmxlZCBvbiBpT1MgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgKHJkYXI6
Ly9wcm9ibGVtLzQ5MDc0MTMxKS4KICAgICBib29sIG1faXNEZWxheWVkV2ViUHJvY2Vzc0xhdW5j
aERpc2FibGVkIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKaW5kZXggZTdhOGNkY2IzMzczNTFlM2Y5ZGViMjNlOGZkYTcwYTlmOTM0ZjljZC4u
Y2M0MzU5YTdhY2M5OTk1OTUwNjZiNGFmYzk2ZDdjZDVhNDc5MDQ2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0zMzIsNiArMzMyLDExIEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1
bmNoT3B0aW9ucyYgbGF1bmNoT3B0CiAgICAgaWYgKGlzUHJld2FybWVkKCkpCiAgICAgICAgIGxh
dW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKCJpcy1wcmV3YXJtZWQiX3Ms
ICIxIl9zKTsKIAorI2lmIFBMQVRGT1JNKFBMQVlTVEFUSU9OKQorICAgIGxhdW5jaE9wdGlvbnMu
cHJvY2Vzc1BhdGggPSBtX3Byb2Nlc3NQb29sLT53ZWJQcm9jZXNzUGF0aCgpOworICAgIGxhdW5j
aE9wdGlvbnMudXNlcklkID0gbV9wcm9jZXNzUG9vbC0+dXNlcklkKCk7CisjZW5kaWYKKwogICAg
IGlmIChwcm9jZXNzUG9vbCgpLnNob3VsZE1ha2VOZXh0V2ViUHJvY2Vzc0xhdW5jaEZhaWxGb3JU
ZXN0aW5nKCkpIHsKICAgICAgICAgcHJvY2Vzc1Bvb2woKS5zZXRTaG91bGRNYWtlTmV4dFdlYlBy
b2Nlc3NMYXVuY2hGYWlsRm9yVGVzdGluZyhmYWxzZSk7CiAgICAgICAgIGxhdW5jaE9wdGlvbnMu
c2hvdWxkTWFrZVByb2Nlc3NMYXVuY2hGYWlsRm9yVGVzdGluZyA9IHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRW50cnlQb2ludC9wbGF5c3RhdGlvbi9XZWJQcm9j
ZXNzTWFpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRW50cnlQb2ludC9wbGF5c3Rh
dGlvbi9XZWJQcm9jZXNzTWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWNjMGVhN2ZjZmMwOTRlMzc3OTY4
YmQ0Njg4Y2Y1ZTg5ZTkyMDAxMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9FbnRyeVBvaW50L3BsYXlzdGF0aW9uL1dlYlByb2Nlc3NNYWluLmNwcApAQCAtMCww
ICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50
ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJQcm9jZXNzTWFpbi5oIgorCisjaW5jbHVkZSA8ZGxmY24uaD4KKyNpbmNsdWRlIDxwcm9j
ZXNzLWluaXRpYWxpemF0aW9uL25rLXdlYnByb2Nlc3MuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgor
I2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCitpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgaWYgKGFyZ2MgPCAyKSB7CisgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiVW5leHBlY3RlZCBhcmd1bWVudCBjb3VudCAlZFxuIiwgYXJnYyk7CisgICAg
ICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKyAgICB9CisKKyAgICBkbG9wZW4oImxpYnBuZzE2Iiwg
UlRMRF9OT1cpOworICAgIGRsb3BlbigibGliaWN1IiwgUlRMRF9OT1cpOworICAgIGRsb3Blbigi
bGliZnJlZXR5cGUiLCBSVExEX05PVyk7CisgICAgZGxvcGVuKCJsaWJmb250Y29uZmlnIiwgUlRM
RF9OT1cpOworICAgIGRsb3BlbigibGliaGFyZmJ1enoiLCBSVExEX05PVyk7CisgICAgZGxvcGVu
KCJsaWJjYWlybyIsIFJUTERfTk9XKTsKKyAgICBkbG9wZW4oImxpYlNjZU5LV2ViS2l0UmVxdWly
ZW1lbnRzIiwgUlRMRF9OT1cpOworICAgIGRsb3BlbigibGliSmF2YVNjcmlwdENvcmUiLCBSVExE
X05PVyk7CisgICAgZGxvcGVuKCJsaWJXZWJLaXQiLCBSVExEX05PVyk7CisKKyAgICBjaGFyKiBj
b3JlUHJvY2Vzc0lkZW50aWZpZXIgPSBhcmd2WzFdOworCisgICAgY2hhciBjb25uZWN0aW9uSWRl
bnRpZmllclsxNl07CisgICAgc25wcmludGYoY29ubmVjdGlvbklkZW50aWZpZXIsIHNpemVvZihj
b25uZWN0aW9uSWRlbnRpZmllciksICIlZCIsIFBsYXlTdGF0aW9uOjpnZXRDb25uZWN0aW9uSWRl
bnRpZmllcigpKTsKKworICAgIGNoYXIgcHJvZ3JhbVtdID0gImR1bW15IjsKKyAgICBjaGFyKiBp
bnRlcm5hbEFyZ3ZbXSA9IHsKKyAgICAgICAgcHJvZ3JhbSwKKyAgICAgICAgY29yZVByb2Nlc3NJ
ZGVudGlmaWVyLAorICAgICAgICBjb25uZWN0aW9uSWRlbnRpZmllciwKKyAgICAgICAgMAorICAg
IH07CisgICAgcmV0dXJuIFdlYktpdDo6V2ViUHJvY2Vzc01haW4oc2l6ZW9mKGludGVybmFsQXJn
dikgLyBzaXplb2YoY2hhciopLCBpbnRlcm5hbEFyZ3YpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL3BsYXlzdGF0aW9uL0luamVjdGVkQnVu
ZGxlUGxheVN0YXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL3BsYXlzdGF0aW9uL0luamVjdGVkQnVuZGxlUGxheVN0YXRpb24uY3BwCmluZGV4IDRiZmUw
MmNlMmRiOTJkODgyZTMyNDdmZjhhNGE2MTBhZWJlYmE0YTMuLmVlMDJkZGIwNjMyYTk4YmNjNjk0
MTUzMWEzYzRhOWFmNWZiMTEzZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9wbGF5c3RhdGlvbi9JbmplY3RlZEJ1bmRsZVBsYXlTdGF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvcGxheXN0YXRp
b24vSW5qZWN0ZWRCdW5kbGVQbGF5U3RhdGlvbi5jcHAKQEAgLTI2LDE1ICsyNiwzNSBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCiAKKyNpbmNsdWRl
ICJXS0J1bmRsZUFQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0J1bmRsZUluaXRpYWxpemUuaCIKKyNp
bmNsdWRlICJsaWJyYXJ5LWJ1bmRsZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3Vz
aW5nIG5hbWVzcGFjZSBXVEY7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1ib29sIEluamVjdGVk
QnVuZGxlOjppbml0aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmLCBB
UEk6Ok9iamVjdCogaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkKK2Jvb2wgSW5qZWN0ZWRCdW5kbGU6
OmluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVy
cywgQVBJOjpPYmplY3QqIGluaXRpYWxpemF0aW9uVXNlckRhdGEpCiB7Ci0gICAgcmV0dXJuIGZh
bHNlOworICAgIGF1dG8gYnVuZGxlID0gTGlicmFyeUJ1bmRsZTo6Y3JlYXRlKG1fcGF0aC51dGY4
KCkuZGF0YSgpKTsKKyAgICBtX3BsYXRmb3JtQnVuZGxlID0gYnVuZGxlOworICAgIGlmICghbV9w
bGF0Zm9ybUJ1bmRsZSkgeworICAgICAgICBwcmludGYoIlBsYXlTdGF0aW9uOjpCdW5kbGU6OmNy
ZWF0ZSBmYWlsZWRcbiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIFdLQnVu
ZGxlSW5pdGlhbGl6ZUZ1bmN0aW9uUHRyIGluaXRpYWxpemVGdW5jdGlvbiA9IHJlaW50ZXJwcmV0
X2Nhc3Q8V0tCdW5kbGVJbml0aWFsaXplRnVuY3Rpb25QdHI+KGJ1bmRsZS0+cmVzb2x2ZSgiV0tC
dW5kbGVJbml0aWFsaXplIikpOworICAgIGlmICghaW5pdGlhbGl6ZUZ1bmN0aW9uKSB7CisgICAg
ICAgIHByaW50ZigiUGxheVN0YXRpb246OkJ1bmRsZTo6cmVzb2x2ZSBmYWlsZWRcbiIpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGluaXRpYWxpemVGdW5jdGlvbih0b0FQSSh0
aGlzKSwgdG9BUEkoaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkpOworICAgIHJldHVybiB0cnVlOwog
fQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRCdW5kbGVQYXJhbWV0ZXIoV1RGOjpTdHJpbmcg
Y29uc3QmLCBJUEM6OkRhdGFSZWZlcmVuY2UgY29uc3QmKQogeworCiB9CiAKIHZvaWQgSW5qZWN0
ZWRCdW5kbGU6OnNldEJ1bmRsZVBhcmFtZXRlcnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVk
U3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRl
ZFN1cmZhY2UuY3BwCmluZGV4IDEzMzA2NzFmNGEyOTgzMmE0MWYxZTgyNzAwNzIyNGEwNmY4ZjJh
YjUuLmE4NGVlYTQyYmQ2NDI1NTJmYmFiZDMyZDIzYWU4NTRiYjI4YmJhMzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRTdXJmYWNl
LmNwcApAQCAtNTgsNyArNTgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNl
PiBBY2NlbGVyYXRlZFN1cmZhY2U6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlLAogICAgIGlmIChQ
bGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5
OjpUeXBlOjpYMTEpCiAgICAgICAgIHJldHVybiBBY2NlbGVyYXRlZFN1cmZhY2VYMTE6OmNyZWF0
ZSh3ZWJQYWdlLCBjbGllbnQpOwogI2VuZGlmCi0jaWYgVVNFKExJQldQRSkKKyNpZiBVU0UoV1BF
X1JFTkRFUkVSKQogICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBl
KCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXUEUpCiAgICAgICAgIHJldHVybiBBY2NlbGVy
YXRlZFN1cmZhY2VMaWJXUEU6OmNyZWF0ZSh3ZWJQYWdlLCBjbGllbnQpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1BsYXlTdGF0aW9uLmNtYWtlIGIvU291cmNlL2Nt
YWtlL09wdGlvbnNQbGF5U3RhdGlvbi5jbWFrZQppbmRleCA5ZWE2ODBlMDQyOTc4M2E3ZDZlZDUz
ZWQxMGIzZTllNjJhNzdmMTJiLi42YWM4MDU1ZTI0NjZhNmUxMTlmMTNiZTY5NjBiMWI2ZTZkNTRm
ZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1BsYXlTdGF0aW9uLmNtYWtlCisr
KyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zUGxheVN0YXRpb24uY21ha2UKQEAgLTU5LDYgKzU5LDEw
IEBAIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9UTFNfREVCVUcgIkVuYWJsZSBUTFMga2V5
IGxvZyBzdXBwb3J0IiBQUklWQVRFIE9GRikKICMgUmVlbmFibGUgYWZ0ZXIgdXBkYXRpbmcgZm9u
dGNvbmZpZwogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZBUklBVElP
Tl9GT05UUyBQUklWQVRFIE9GRikKIAorIyBFbmFibGUgaW4gdGhlIGZ1dHVyZQorV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJIFBSSVZBVEUgT0ZG
KQorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0NPTlRFWFRfTUVOVVMg
UFJJVkFURSBPRkYpCisKICMgTm8gc3VwcG9ydCBwbGFubmVkCiBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfRlRQRElSIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0dFT0xPQ0FUSU9OIFBSSVZBVEUgT0ZGKQpAQCAtMTAz
LDYgKzEwNywxNiBAQCBsaXN0KEFQUEVORCBDTUFLRV9QUkVGSVhfUEFUSCAke1dFQktJVF9MSUJS
QVJJRVNfRElSfSkKIAogZmluZF9saWJyYXJ5KENfU1REX0xJQlJBUlkgYykKIGZpbmRfbGlicmFy
eShLRVJORUxfTElCUkFSWSBrZXJuZWwpCitmaW5kX3BhY2thZ2UoV2ViS2l0UmVxdWlyZW1lbnRz
IFJFUVVJUkVECisgICAgQ09NUE9ORU5UUworICAgICAgICBKUEVHCisgICAgICAgIExpYlBTTAor
ICAgICAgICBMaWJYbWwyCisgICAgICAgIFByb2Nlc3NMYXVuY2hlcgorICAgICAgICBTUUxpdGUz
CisgICAgICAgIFpMSUIKKyAgICAgICAgbGlid3BlCispCiAKIGZpbmRfcGFja2FnZShDYWlybyBS
RVFVSVJFRCkKIGZpbmRfcGFja2FnZShDVVJMIFJFUVVJUkVEKQpAQCAtMTExLDE2ICsxMjUsMTcg
QEAgZmluZF9wYWNrYWdlKEZvbnRjb25maWcgUkVRVUlSRUQpCiBmaW5kX3BhY2thZ2UoRnJlZXR5
cGUgUkVRVUlSRUQpCiBmaW5kX3BhY2thZ2UoSGFyZkJ1enogUkVRVUlSRUQgQ09NUE9ORU5UUyBJ
Q1UpCiBmaW5kX3BhY2thZ2UoSUNVIDYwLjIgUkVRVUlSRUQgQ09NUE9ORU5UUyBkYXRhIGkxOG4g
dWMpCi1maW5kX3BhY2thZ2UoSlBFRyBSRVFVSVJFRCkKLWZpbmRfcGFja2FnZShMaWJQU0wgUkVR
VUlSRUQpCi1maW5kX3BhY2thZ2UoTGliWG1sMiBSRVFVSVJFRCkKIGZpbmRfcGFja2FnZShPcGVu
U1NMIFJFUVVJUkVEKQogZmluZF9wYWNrYWdlKFBORyBSRVFVSVJFRCkKLWZpbmRfcGFja2FnZShT
UUxpdGUzIFJFUVVJUkVEKQogZmluZF9wYWNrYWdlKFRocmVhZHMgUkVRVUlSRUQpCiBmaW5kX3Bh
Y2thZ2UoV2ViUCBSRVFVSVJFRCBDT01QT05FTlRTIGRlbXV4KQotZmluZF9wYWNrYWdlKFdQRSBS
RVFVSVJFRCkKLWZpbmRfcGFja2FnZShaTElCIFJFUVVJUkVEKQorCitzZXQoQ01BS0VfQ19TVEFO
REFSRF9MSUJSQVJJRVMKKyAgICAiJHtDTUFLRV9DX1NUQU5EQVJEX0xJQlJBUklFU30gJHtDX1NU
RF9MSUJSQVJZfSIKKyAgKQorc2V0KENNQUtFX0NYWF9TVEFOREFSRF9MSUJSQVJJRVMKKyAgICAi
JHtDTUFLRV9DWFhfU1RBTkRBUkRfTElCUkFSSUVTfSAke0NfU1REX0xJQlJBUll9IgorICApCiAK
ICMgVE9ETzogQWRkIGEgY2hlY2sgZm9yIEhBVkVfUlNBX1BTUyBmb3Igc3VwcG9ydCBvZiBDcnlw
dG9BbGdvcml0aG1SU0FfUFNTCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDY2MzUKQEAgLTEzMyw3ICsxNDgsNyBAQCBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChV
U0VfRlJFRVRZUEUgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfSEFSRkJVWlogT04p
CiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfTElCV1BFIE9OKQogU0VUX0FORF9FWFBPU0Vf
VE9fQlVJTEQoVVNFX09QRU5TU0wgT04pCi1TRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfV1BF
X1JFTkRFUkVSIE9OKQorU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1dQRV9SRU5ERVJFUiBP
RkYpCiAKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9JTlNQRUNUT1JfU09DS0VUX1NFUlZF
UiAke0VOQUJMRV9SRU1PVEVfSU5TUEVDVE9SfSkKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVT
RV9VTklYX0RPTUFJTl9TT0NLRVRTIE9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE2YzY5OWI5ZTk5NDU3MGJhMGJiNjQ5OWJiOTc4Y2JkOGU3
OGJiYzEuLjNjM2M3NTY3NjNmZjYwMTYxODU5ZTdhNTNmMWQxOWUzYjNmNTVjOGUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBA
QAorMjAyMC0wNS0xNCAgWW9zaGlha2kgSml0c3VrYXdhICA8eW9zaGlha2kuaml0c3VrYXdhQHNv
bnkuY29tPgorCisgICAgICAgIFtQbGF5U3RhdGlvbl0gQWRkIG1pbmltYWwgV0tWaWV3IEFQSSB0
byBlbmFibGUgVGVzdFdlYktpdEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjExODY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIG1pbmltYWwgV0tWaWV3IEFQSSB0byBlbmFibGUgVGVzdFdlYktp
dEFQSQorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtl
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3Lmg6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9wbGF5c3RhdGlvbi9QbGF0Zm9ybVV0aWxpdGllc1BsYXlTdGF0aW9uLmNw
cDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUluamVjdGVkQnVuZGxlUGF0
aCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9wbGF5c3RhdGlvbi9QbGF0Zm9ybVdlYlZpZXdQbGF5
U3RhdGlvbi5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQbGF0Zm9ybVdlYlZpZXc6OlBs
YXRmb3JtV2ViVmlldyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQbGF0Zm9ybVdlYlZpZXc6
On5QbGF0Zm9ybVdlYlZpZXcpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGxhdGZvcm1XZWJW
aWV3Ojppbml0aWFsaXplKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlBsYXRmb3JtV2ViVmll
dzo6cmVzaXplVG8pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGxhdGZvcm1XZWJWaWV3Ojpw
YWdlIGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlBsYXRmb3JtV2ViVmlldzo6c2lt
dWxhdGVTcGFjZWJhcktleVByZXNzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlBsYXRmb3Jt
V2ViVmlldzo6c2ltdWxhdGVNb3VzZU1vdmUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGxh
dGZvcm1XZWJWaWV3OjpzaW11bGF0ZVJpZ2h0Q2xpY2spOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6UGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZUJ1dHRvbkNsaWNrKToKKyAgICAgICAgQWRkIFBs
YXlTdGF0aW9uIFBsYXRmb3JtIHN1cHBvcnQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdC9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICBVc2UgdGhlIHNhbWUgZXhwZWN0ZWQgZGVmYXVsdCBmb250IHByZWZlcmVu
Y2VzIGFzIEdUSydzLiAKKwogMjAyMC0wNS0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtpT1MgU2ltdWxhdG9yXSBUZXN0V2ViS2l0QVBJ
Ll9XS0Rvd25sb2FkLlJlc3VtZSBpcyBhIGZsYWt5IGNyYXNoCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKaW5kZXggODk4NDI2N2NkYjk3OWIxMzI5ODQy
MmU4NTQ5Yzc3MjQ3M2E2NTBhMi4uYTRkZjE5NzQ2YjM4MGZkOWU2M2E1ODlhY2UzMjBkNjBhOWVm
YTI3MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVBsYXlTdGF0aW9u
LmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFr
ZQpAQCAtNDgsNiArNDgsMTIgQEAgaWYgKEVOQUJMRV9XRUJLSVQpCiAgICAgICAgIHBsYXlzdGF0
aW9uL1BsYXRmb3JtVXRpbGl0aWVzUGxheVN0YXRpb24uY3BwCiAgICAgICAgIHBsYXlzdGF0aW9u
L1BsYXRmb3JtV2ViVmlld1BsYXlTdGF0aW9uLmNwcAogICAgICkKKworICAgICMgRXhjbHVkZSB0
ZXN0cyB3aGljaCBkb24ndCBmaW5pc2guCisgICAgbGlzdChSRU1PVkVfSVRFTSBUZXN0V2ViS2l0
X1NPVVJDRVMKKyAgICAgICAgVGVzdHMvV2ViS2l0L0ZvcmNlUmVwYWludC5jcHAKKyAgICAgICAg
VGVzdHMvV2ViS2l0L0dlb2xvY2F0aW9uLmNwcAorICAgICkKIGVuZGlmICgpCiAKIApAQCAtNTUs
MyArNjEsNyBAQCBlbmRpZiAoKQogaWYgKCR7Q01BS0VfR0VORVJBVE9SfSBNQVRDSEVTICJWaXN1
YWwgU3R1ZGlvIikKICAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoVGVzdFdURiBUZXN0V2ViQ29y
ZSBUZXN0V2ViS2l0IFBST1BFUlRJRVMgVlNfREVCVUdHRVJfV09SS0lOR19ESVJFQ1RPUlkgIiR7
Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfSIpCiBlbmRpZiAoKQorCithZGRfZGVmaW5p
dGlvbnMoCisgICAgLURURVNUX1dFQktJVF9SRVNPVVJDRVNfRElSPVwiJHtUT09MU19ESVJ9L1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0XCIKKykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvUGxhdGZvcm1XZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2Vi
Vmlldy5oCmluZGV4IDc3Y2YxODY5YTU1ZjU2YWRjMTVlNTFjOWNkYzVmNTdjMzhlOTVlMTYuLmQ4
MjY1ZDJiOWUwNmNhNzdmNmZjM2Y2NTliN2MyY2I2YWQ1ZjNhNWQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybVdlYlZpZXcuaApAQCAtNjAsNyArNjAsNyBAQCB0eXBlZGVmIFdQRVRvb2xpbmdC
YWNrZW5kczo6SGVhZGxlc3NWaWV3QmFja2VuZCAqUGxhdGZvcm1XaW5kb3c7CiB0eXBlZGVmIFdL
Vmlld1JlZiBQbGF0Zm9ybVdLVmlldzsKIHR5cGVkZWYgSFdORCBQbGF0Zm9ybVdpbmRvdzsKICNl
bGlmIFBMQVRGT1JNKFBMQVlTVEFUSU9OKQotdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybVdLVmlldzsK
K3R5cGVkZWYgV0tWaWV3UmVmIFBsYXRmb3JtV0tWaWV3OwogdHlwZWRlZiB2b2lkKiBQbGF0Zm9y
bVdpbmRvdzsKICNlbmRpZgogdHlwZWRlZiB1aW50MzJfdCBXS0V2ZW50TW9kaWZpZXJzOwpAQCAt
ODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaW11bGF0ZUFsdEtleVByZXNzKCk7CiAg
ICAgdm9pZCBzaW11bGF0ZVJpZ2h0Q2xpY2sodW5zaWduZWQgeCwgdW5zaWduZWQgeSk7CiAgICAg
dm9pZCBzaW11bGF0ZU1vdXNlTW92ZSh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCBXS0V2ZW50TW9k
aWZpZXJzID0gMCk7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExB
VEZPUk0oUExBWVNUQVRJT04pCiAgICAgdm9pZCBzaW11bGF0ZUJ1dHRvbkNsaWNrKFdLRXZlbnRN
b3VzZUJ1dHRvbiwgdW5zaWduZWQgeCwgdW5zaWduZWQgeSwgV0tFdmVudE1vZGlmaWVycyk7CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvV0tQ
cmVmZXJlbmNlcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XS1ByZWZl
cmVuY2VzLmNwcAppbmRleCAyOGUzMjMwMmI4NzNhOThhNDFhYjczYzIyYTE0YzczN2Q2MGZhMzZl
Li5jNTY1MDRiZjQ5YzFhNDgyNmI4MDg3MjY0MWQ0ZGVmZjdjZmRkMDI0IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XS1ByZWZlcmVuY2VzLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XS1ByZWZlcmVuY2VzLmNwcApAQCAtNDQs
NyArNDQsNyBAQCBURVNUKFdlYktpdCwgV0tQcmVmZXJlbmNlc0Jhc2ljKQogCiBURVNUKFdlYktp
dCwgV0tQcmVmZXJlbmNlc0RlZmF1bHRzKQogewotI2lmIFBMQVRGT1JNKEdUSykKKyNpZiBQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKFBMQVlTVEFUSU9OKQogICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBleHBlY3RlZFN0YW5kYXJkRm9udEZhbWlseSA9ICJUaW1lcyI7CiAgICAgc3RhdGljIGNvbnN0
IGNoYXIqIGV4cGVjdGVkRml4ZWRGb250RmFtaWx5ID0gIkNvdXJpZXIgTmV3IjsKICAgICBzdGF0
aWMgY29uc3QgY2hhciogZXhwZWN0ZWRTZXJpZkZvbnRGYW1pbHkgPSAiVGltZXMiOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9wbGF5c3RhdGlvbi9QbGF0Zm9ybVV0aWxpdGllc1Bs
YXlTdGF0aW9uLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvcGxheXN0YXRpb24vUGxhdGZvcm1V
dGlsaXRpZXNQbGF5U3RhdGlvbi5jcHAKaW5kZXggZDdiMjc2YzNhMjc0NGY0OGVlMDU3ZDYyMzBi
YmRkOTQ1NDU3NDZhNy4uODhlMTUwY2MzNmQ2ZGNhNDc4M2VkYTBiNzg0ODU0ZmJhZTUwOTUwOCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9wbGF5c3RhdGlvbi9QbGF0Zm9ybVV0aWxp
dGllc1BsYXlTdGF0aW9uLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3BsYXlzdGF0aW9u
L1BsYXRmb3JtVXRpbGl0aWVzUGxheVN0YXRpb24uY3BwCkBAIC0zNCwxNCArMzQsMTQgQEAgbmFt
ZXNwYWNlIFV0aWwgewogCiBXS1N0cmluZ1JlZiBjcmVhdGVJbmplY3RlZEJ1bmRsZVBhdGgoKQog
ewotICAgIHJldHVybiBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiaW5qZWN0ZWRidW5k
bGUiKTsKKyAgICByZXR1cm4gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIi9hcHAwL2xp
YlRlc3RXZWJLaXRBUElJbmplY3RlZEJ1bmRsZS5zcHJ4Iik7CiB9CiAKIFdLVVJMUmVmIGNyZWF0
ZVVSTEZvclJlc291cmNlKGNvbnN0IGNoYXIqIHJlc291cmNlLCBjb25zdCBjaGFyKiBleHRlbnNp
b24pCiB7Ci0gICAgU3RyaW5nIGZpbGVuYW1lID0gbWFrZVN0cmluZyhyZXNvdXJjZSwgJy4nLCBl
eHRlbnNpb24pOwotICAgIGF1dG8gdXJsID0gVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRo
KGZpbGVuYW1lKTsKLSAgICByZXR1cm4gV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcodXJsLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGNoYXIgdXJsW1BBVEhfTUFYXTsKKyAgICBzbnBy
aW50Zih1cmwsIHNpemVvZih1cmwpLCAiZmlsZTovLy9ob3N0LyVzLyVzLiVzIiwgVEVTVF9XRUJL
SVRfUkVTT1VSQ0VTX0RJUiwgcmVzb3VyY2UsIGV4dGVuc2lvbik7CisgICAgcmV0dXJuIFdLVVJM
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKHVybCk7CiB9CiAKIFdLVVJMUmVmIFVSTEZvck5vbkV4aXN0
ZW50UmVzb3VyY2UoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9wbGF5c3RhdGlv
bi9QbGF0Zm9ybVdlYlZpZXdQbGF5U3RhdGlvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3Bs
YXlzdGF0aW9uL1BsYXRmb3JtV2ViVmlld1BsYXlTdGF0aW9uLmNwcAppbmRleCA3MmExMjQwNjJj
NWQ2MzBmMzYwNjVmZTAwMDJiMTZmNWZlZGI3NDAxLi5mYThlNDg2MGMyMTc1M2FjMTdlOGRhNmZl
NzJlYWI3OThiOTBmMzdmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL3BsYXlzdGF0
aW9uL1BsYXRmb3JtV2ViVmlld1BsYXlTdGF0aW9uLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL3BsYXlzdGF0aW9uL1BsYXRmb3JtV2ViVmlld1BsYXlTdGF0aW9uLmNwcApAQCAtMjYsNTUg
KzI2LDc5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3
LmgiCiAKLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKyNpbmNsdWRlIDxLZXlib2FyZEV2ZW50
cy5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0NvbnRleHRDb25maWd1cmF0aW9uUGxheVN0YXRpb24u
aD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oPgorI2luY2x1ZGUg
PFdlYktpdC9XS1JldGFpblB0ci5oPgorI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQyX0MuaD4KIAot
UGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91
cFJlZikKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKK1BsYXRmb3JtV2ViVmlldzo6UGxhdGZv
cm1XZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3Jv
dXBSZWYpCiB7Ci19CisgICAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gY29u
ZmlndXJhdGlvbiA9IGFkb3B0V0soV0tQYWdlQ29uZmlndXJhdGlvbkNyZWF0ZSgpKTsKKyAgICBX
S1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4dChjb25maWd1cmF0aW9uLmdldCgpLCBjb250ZXh0
UmVmKTsKKyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0UGFnZUdyb3VwKGNvbmZpZ3VyYXRpb24u
Z2V0KCksIHBhZ2VHcm91cFJlZik7CiAKLVBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3
KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYpCi17CisgICAgaW5pdGlhbGl6ZShjb25maWd1cmF0aW9u
LmdldCgpKTsKIH0KIAotUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlUmVm
KQorUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJl
ZiBjb25maWd1cmF0aW9uKQogeworICAgIGluaXRpYWxpemUoY29uZmlndXJhdGlvbik7CiB9CiAK
LVBsYXRmb3JtV2ViVmlldzo6flBsYXRmb3JtV2ViVmlldygpCitQbGF0Zm9ybVdlYlZpZXc6OlBs
YXRmb3JtV2ViVmlldyhXS1BhZ2VSZWYgcmVsYXRlZFBhZ2UpCiB7CisgICAgV0tSZXRhaW5QdHI8
V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gY29uZmlndXJhdGlvbiA9IGFkb3B0V0soV0tQYWdlQ29u
ZmlndXJhdGlvbkNyZWF0ZSgpKTsKKyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4dChj
b25maWd1cmF0aW9uLmdldCgpLCBXS1BhZ2VHZXRDb250ZXh0KHJlbGF0ZWRQYWdlKSk7CisgICAg
V0tQYWdlQ29uZmlndXJhdGlvblNldFBhZ2VHcm91cChjb25maWd1cmF0aW9uLmdldCgpLCBXS1Bh
Z2VHZXRQYWdlR3JvdXAocmVsYXRlZFBhZ2UpKTsKKyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0
UmVsYXRlZFBhZ2UoY29uZmlndXJhdGlvbi5nZXQoKSwgcmVsYXRlZFBhZ2UpOworCisgICAgaW5p
dGlhbGl6ZShjb25maWd1cmF0aW9uLmdldCgpKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVdlYlZpZXc6
OmluaXRpYWxpemUoV0tQYWdlQ29uZmlndXJhdGlvblJlZikKK1BsYXRmb3JtV2ViVmlldzo6flBs
YXRmb3JtV2ViVmlldygpCiB7CisgICAgV0tQYWdlQ2xvc2UocGFnZSgpKTsKKyAgICBXS1JlbGVh
c2UobV92aWV3KTsKIH0KIAotV0tQYWdlUmVmIFBsYXRmb3JtV2ViVmlldzo6cGFnZSgpIGNvbnN0
Cit2b2lkIFBsYXRmb3JtV2ViVmlldzo6aW5pdGlhbGl6ZShXS1BhZ2VDb25maWd1cmF0aW9uUmVm
IGNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgbV92aWV3ID0gV0tW
aWV3Q3JlYXRlKGNvbmZpZ3VyYXRpb24pOworICAgIHJlc2l6ZVRvKDgwMCwgNjAwKTsKIH0KIAot
dm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnJlc2l6ZVRvKHVuc2lnbmVkLCB1bnNpZ25lZCkKK3ZvaWQg
UGxhdGZvcm1XZWJWaWV3OjpyZXNpemVUbyh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0
KQogeworICAgIFdLVmlld1NldFNpemUobV92aWV3LCBXS1NpemVNYWtlKHdpZHRoLCBoZWlnaHQp
KTsKIH0KIAotdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmZvY3VzKCkKK1dLUGFnZVJlZiBQbGF0Zm9y
bVdlYlZpZXc6OnBhZ2UoKSBjb25zdAogeworICAgIHJldHVybiBXS1ZpZXdHZXRQYWdlKG1fdmll
dyk7CiB9CiAKIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZVNwYWNlYmFyS2V5UHJlc3Mo
KQogeworICAgIFdLVmlld0hhbmRsZUtleWJvYXJkRXZlbnQobV92aWV3LCBXS0tleWJvYXJkRXZl
bnRNYWtlKGtXS0V2ZW50S2V5RG93biwga1dLSW5wdXRUeXBlTm9ybWFsLCAiICIsIDEsIGtleUlk
ZW50aWZpZXJGb3JLZXlDb2RlKDB4MjApLCAweDIwLCAtMSwgMCwgMCkpOworICAgIFdLVmlld0hh
bmRsZUtleWJvYXJkRXZlbnQobV92aWV3LCBXS0tleWJvYXJkRXZlbnRNYWtlKGtXS0V2ZW50S2V5
VXAsIGtXS0lucHV0VHlwZU5vcm1hbCwgIiAiLCAxLCBrZXlJZGVudGlmaWVyRm9yS2V5Q29kZSgw
eDIwKSwgMHgyMCwgLTEsIDAsIDApKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVs
YXRlQWx0S2V5UHJlc3MoKQordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlTW91c2VNb3Zl
KHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzKQogewor
ICAgIFdLVmlld0hhbmRsZU1vdXNlRXZlbnQobV92aWV3LCBXS01vdXNlRXZlbnRNYWtlKGtXS0V2
ZW50TW91c2VNb3ZlLCBrV0tFdmVudE1vdXNlQnV0dG9uTm9CdXR0b24sIFdLUG9pbnRNYWtlKHgs
IHkpLCAwLCBtb2RpZmllcnMpKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRl
TW91c2VNb3ZlKHVuc2lnbmVkLCB1bnNpZ25lZCwgV0tFdmVudE1vZGlmaWVycykKK3ZvaWQgUGxh
dGZvcm1XZWJWaWV3OjpzaW11bGF0ZVJpZ2h0Q2xpY2sodW5zaWduZWQgeCwgdW5zaWduZWQgeSkK
IHsKKyAgICBzaW11bGF0ZUJ1dHRvbkNsaWNrKGtXS0V2ZW50TW91c2VCdXR0b25SaWdodEJ1dHRv
biwgeCwgeSwgMCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZVJpZ2h0Q2xp
Y2sodW5zaWduZWQsIHVuc2lnbmVkKQordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlQnV0
dG9uQ2xpY2soV0tFdmVudE1vdXNlQnV0dG9uIGJ1dHRvbiwgdW5zaWduZWQgeCwgdW5zaWduZWQg
eSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMpCiB7CisgICAgV0tWaWV3SGFuZGxlTW91c2VF
dmVudChtX3ZpZXcsIFdLTW91c2VFdmVudE1ha2Uoa1dLRXZlbnRNb3VzZURvd24sIGJ1dHRvbiwg
V0tQb2ludE1ha2UoeCwgeSksIDAsIG1vZGlmaWVycykpOworICAgIFdLVmlld0hhbmRsZU1vdXNl
RXZlbnQobV92aWV3LCBXS01vdXNlRXZlbnRNYWtlKGtXS0V2ZW50TW91c2VVcCwgYnV0dG9uLCBX
S1BvaW50TWFrZSh4LCB5KSwgMCwgbW9kaWZpZXJzKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxYjZh
MGNhOTZlZGE4YjVkNGI2NjVjZmYwNmZmNDBjYjc5YzdiMTBiLi43NGI3ZmI5NWFlNDliMDcwNTg4
ODJhNGJiYzJkM2E0ODIyZDM4ODZlIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDUtMTQgIFlvc2hpYWtpIEppdHN1a2F3YSAgPHlv
c2hpYWtpLmppdHN1a2F3YUBzb255LmNvbT4KKworICAgICAgICBbUGxheVN0YXRpb25dIEFkZCBt
aW5pbWFsIFdLVmlldyBBUEkgdG8gZW5hYmxlIFRlc3RXZWJLaXRBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTg2OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBtaW5pbWFsIFdLVmlldyBBUEkg
dG8gZW5hYmxlIFRlc3RXZWJLaXRBUEkKKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25z
UGxheVN0YXRpb24uY21ha2U6CisgICAgICAgIERpc2FibGUgRnVsbFNjcmVlbiBBUEkgYW5kIENv
bnRleHRNZW51cworCiAyMDIwLTA1LTEwICBCYXN1a2UgU3V6dWtpICA8YmFzdWtlLnN1enVraUBz
b255LmNvbT4KIAogICAgICAgICBBZGQgRU5BQkxFX1BFUklPRElDX01FTU9SWV9NT05JVE9SIGZs
YWcuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399722</attachid>
            <date>2020-05-19 01:20:59 -0700</date>
            <delta_ts>2020-05-20 05:42:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211868-20200519172057.patch</filename>
            <type>text/plain</type>
            <size>77923</size>
            <attacher name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY5NmI0NDRkMzAwNzY4YTFiMWY4MGVm
MmU1NGM2Mzc2NmY5ZDc1ODcuLjJiYTRhY2NhYWJhZmEwYzRhMjhjYTRkMzdkYzY0NjQxMDNmYWJm
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDUtMTQgIFlvc2hpYWtpIEppdHN1a2F3YSAg
PHlvc2hpYWtpLmppdHN1a2F3YUBzb255LmNvbT4KKworICAgICAgICBbUGxheVN0YXRpb25dIEFk
ZCBtaW5pbWFsIFdLVmlldyBBUEkgdG8gZW5hYmxlIFRlc3RXZWJLaXRBUEkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTg2OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBtaW5pbWFsIFdLVmlldyBB
UEkgdG8gZW5hYmxlIFRlc3RXZWJLaXRBUEkKKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybVBsYXlT
dGF0aW9uLmNtYWtlOgorICAgICAgICBMaW5rIGxpYmMgYXMgYSBzeXN0ZW0gbGlicmFyeS4KKwog
MjAyMC0wNS0xMiAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAg
ICAgICAgRml4IGV4aXN0aW5nIHVzYWdlIG9mIGZpbmFsL292ZXJyaWRlL3ZpcnR1YWwgaW4gSlND
IGFuZCBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5OWY0YWRjZDNkN2VhOTllZjRlODNlY2Y2ZDE2MWUwNjg4
YjE5ZmUwLi5lMDQ5NTdkZWE1OGU0NzQ4ZTJjNzE4ZDA5ODBiNGE1N2VlZjZmOTkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDUtMTQgIFlvc2hpYWtpIEppdHN1a2F3YSAgPHlv
c2hpYWtpLmppdHN1a2F3YUBzb255LmNvbT4KKworICAgICAgICBbUGxheVN0YXRpb25dIEFkZCBt
aW5pbWFsIFdLVmlldyBBUEkgdG8gZW5hYmxlIFRlc3RXZWJLaXRBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTg2OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBtaW5pbWFsIFdLVmlldyBBUEkg
dG8gZW5hYmxlIFRlc3RXZWJLaXRBUEkKKworICAgICAgICAqIFBsYXRmb3JtUGxheVN0YXRpb24u
Y21ha2U6CisgICAgICAgIEFkZCBXZWJLaXRSZXF1aXJlbWVudHMgbGlicmFyeSB0byBXZWJDb3Jl
X0NvcHlTaGFyZWRMaWJzLgorCiAyMDIwLTA1LTEyICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRh
bnphcm9AZ25vbWUub3JnPgogCiAgICAgICAgIC1XYXR0cmlidXRlIHdhcm5pbmcgaW4gQnJlYWtM
aW5lcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKaW5kZXggMTVhMWZhOWFiNGI1ODk4ZjQxYzc5Njk2Zjc3YjE0ZjYwMzA4
NTliYi4uYzEwNGY3ZGNlM2E2ZWI0ZWI0MGJhNGNhZWY3NTdiYjRmZmI3ZGUxMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMzYgQEAKKzIwMjAtMDUtMTQgIFlvc2hpYWtpIEppdHN1a2F3YSAgPHlvc2hp
YWtpLmppdHN1a2F3YUBzb255LmNvbT4KKworICAgICAgICBbUGxheVN0YXRpb25dIEFkZCBtaW5p
bWFsIFdLVmlldyBBUEkgdG8gZW5hYmxlIFRlc3RXZWJLaXRBUEkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTg2OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBtaW5pbWFsIFdLVmlldyBBUEkgdG8g
ZW5hYmxlIFRlc3RXZWJLaXRBUEkKKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9u
Lmg6CisgICAgICAgICogUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwOgorICAg
ICAgICAoSVBDOjpDb25uZWN0aW9uOjpwbGF0Zm9ybUludmFsaWRhdGUpOgorICAgICAgICAoSVBD
OjpDb25uZWN0aW9uOjpvcGVuKToKKyAgICAgICAgQWRkIFNvY2tldE1vbml0b3IgdG8gbW9uaXRv
ciByZWNlaXZlZCBtZXNzYWdlcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb246OmNvcHkpOgorICAgICAgICBBZGQgUGxheVN0YXRpb24gc3BlY2lmaWMgbWVtYmVyczog
V2ViUHJvY2VzcyBhbmQgTmV0d29ya1Byb2Nlc3MgcGF0aHMsCisgICAgICAgIGNvb2tpZSBzdG9y
YWdlIHBhdGgsIGFuZCB1c2VyIElELgorCisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL1By
b2Nlc3NMYXVuY2hlci5oOgorICAgICAgICBBZGQgUGxheVN0YXRpb24gc3BlY2lmaWMgbWVtYmVy
czogUHJvY2VzcyBwYXRoIGFuZCB1c2VyIElELgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
RW50cnlQb2ludC9wbGF5c3RhdGlvbi9OZXR3b3JrUHJvY2Vzc01haW4uY3BwOiBDb3BpZWQgZnJv
bSBUb29sc1xUZXN0V2ViS2l0QVBJXHBsYXlzdGF0aW9uXFBsYXRmb3JtVXRpbGl0aWVzUGxheVN0
YXRpb24uY3BwLgorICAgICAgICAobWFpbik6CisgICAgICAgICogUGxhdGZvcm1QbGF5U3RhdGlv
bi5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvcGxheXN0YXRpb24vV0tFdmVudFBsYXlT
dGF0aW9uLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9X
S0FQSUNhc3RQbGF5U3RhdGlvbi5oOgorICAgICAgICAoV2ViS2l0Ojp0b0FQSTw+KToKKyAgICAg
ICAgKFdlYktpdDo6dG9JbXBsPD4pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9wbGF5c3Rh
dGlvbi9XS0NvbnRleHRDb25maWd1cmF0aW9uUGxheVN0YXRpb24uY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRXZWJQcm9jZXNzUGF0aCk6CisgICAgICAgIChX
S0NvbnRleHRDb25maWd1cmF0aW9uQ29weVdlYlByb2Nlc3NQYXRoKToKKyAgICAgICAgKFdLQ29u
dGV4dENvbmZpZ3VyYXRpb25TZXROZXR3b3JrUHJvY2Vzc1BhdGgpOgorICAgICAgICAoV0tDb250
ZXh0Q29uZmlndXJhdGlvbkNvcHlOZXR3b3JrUHJvY2Vzc1BhdGgpOgorICAgICAgICAoV0tDb250
ZXh0Q29uZmlndXJhdGlvblNldENvb2tpZVN0b3JhZ2VQYXRoKToKKyAgICAgICAgKFdLQ29udGV4
dENvbmZpZ3VyYXRpb25Db3B5Q29va2llU3RvcmFnZVBhdGgpOgorICAgICAgICAoV0tDb250ZXh0
Q29uZmlndXJhdGlvblNldFVzZXJJZCk6CisgICAgICAgIChXS0NvbnRleHRDb25maWd1cmF0aW9u
R2V0VXNlcklkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tDb250
ZXh0Q29uZmlndXJhdGlvblBsYXlTdGF0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZVxXZWJLaXRc
VUlQcm9jZXNzXEFQSVxDXHBsYXlzdGF0aW9uXFdLVmlldy5oLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9wbGF5c3RhdGlvbi9XS1ZpZXcuY3BwOiBBZGRlZC4KKyAgICAgICAgKHRvRmxvYXRT
aXplKToKKyAgICAgICAgKFdLVmlld0NyZWF0ZSk6CisgICAgICAgIChXS1ZpZXdHZXRQYWdlKToK
KyAgICAgICAgKFdLVmlld1NldFNpemUpOgorICAgICAgICAoV0tWaWV3SGFuZGxlS2V5Ym9hcmRF
dmVudCk6CisgICAgICAgIChXS1ZpZXdIYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKFdLVmll
d0hhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlv
bi9XS1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3BsYXlzdGF0aW9uL1dlYlZpZXcu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVmlldzo6V2ViVmlldyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6On5X
ZWJWaWV3KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6c2V0U2l6ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXc6OmhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6aGFu
ZGxlV2hlZWxFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmNyZWF0ZURyYXdpbmdB
cmVhUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpzZXRWaWV3TmVlZHNEaXNwbGF5
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6cmVxdWVzdFNjcm9sbCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXc6OnZpZXdTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXc6OnZpZXdTaXplKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6aXNWaWV3V2luZG93
QWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6aXNWaWV3Rm9jdXNlZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXc6OmlzVmlld1Zpc2libGUpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3Ojppc1ZpZXdJbldpbmRvdyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OnByb2Nl
c3NEaWRFeGl0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6ZGlkUmVsYXVuY2hQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6cGFnZUNsb3NlZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXc6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlldzo6dG9vbFRpcENoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpkaWRDb21t
aXRMb2FkRm9yTWFpbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6aGFuZGxlRG93
bmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6ZGlkQ2hhbmdlQ29udGVu
dFNpemUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpzZXRDdXJzb3IpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3OjpzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3OjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3OjpyZWdpc3RlckVkaXRDb21tYW5kKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlldzo6Y2xlYXJBbGxFZGl0Q29tbWFuZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3OjpjYW5VbmRvUmVkbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmV4ZWN1dGVVbmRv
UmVkbyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OndoZWVsRXZlbnRXYXNOb3RIYW5kbGVk
QnlXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6Y29udmVydFRvRGV2aWNlU3Bh
Y2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojpjb252ZXJ0VG9Vc2VyU3BhY2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3OjpzY3JlZW5Ub1Jvb3RWaWV3KToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlldzo6cm9vdFZpZXdUb1NjcmVlbik6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6
OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
dzo6cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3Ojpkb25lV2l0aEtleUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6Y3JlYXRl
UG9wdXBNZW51UHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjplbnRlckFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6ZXhpdEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6dXBkYXRl
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojpm
dWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6
ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3OjpuYXZpZ2F0aW9uR2VzdHVyZURpZEJlZ2luKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlldzo6bmF2aWdhdGlvbkdlc3R1cmVXaWxsRW5kKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVmlldzo6bmF2aWdhdGlvbkdlc3R1cmVEaWRFbmQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3Ojp3aWxsUmVjb3JkTmF2aWdhdGlvblNuYXBzaG90KToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlldzo6ZGlkUmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFwc2hvdCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXc6OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvck1haW5GcmFt
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmRpZEZpbmlzaExvYWRGb3JNYWluRnJhbWUp
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpkaWRGYWlsTG9hZEZvck1haW5GcmFtZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JNYWlu
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpkaWRDaGFuZ2VCYWNrZ3JvdW5kQ29s
b3IpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojppc1BsYXlpbmdBdWRpb1dpbGxDaGFuZ2Up
OgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojppc1BsYXlpbmdBdWRpb0RpZENoYW5nZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OnJlZlZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3OjpkZXJlZlZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpkaWRSZXN0b3JlU2Ny
b2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojp1c2VySW50ZXJmYWNlTGF5
b3V0RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6cmVxdWVzdERPTVBhc3Rl
QWNjZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3BsYXlzdGF0aW9uL1dlYlZpZXcuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OnBhZ2UpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9MYXVuY2hlci9wbGF5c3RhdGlvbi9Qcm9jZXNzTGF1bmNoZXJQbGF5U3RhdGlvbi5jcHA6
CisgICAgICAgIChXZWJLaXQ6OmRlZmF1bHRQcm9jZXNzUGF0aCk6CisgICAgICAgIChXZWJLaXQ6
OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nl
c3NMYXVuY2hlcjo6dGVybWluYXRlUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NM
YXVuY2hlcjo6cGxhdGZvcm1JbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nl
c3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9FbnRyeVBvaW50L3BsYXlzdGF0aW9uL1dlYlByb2Nlc3NNYWluLmNwcDog
Q29waWVkIGZyb20gVG9vbHNcVGVzdFdlYktpdEFQSVxwbGF5c3RhdGlvblxQbGF0Zm9ybVV0aWxp
dGllc1BsYXlTdGF0aW9uLmNwcC4KKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvcGxheXN0YXRpb24vSW5qZWN0ZWRCdW5kbGVQbGF5U3RhdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKToKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnNldEJ1bmRsZVBhcmFtZXRlcik6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkFjY2VsZXJhdGVkU3VyZmFjZTo6Y3JlYXRlKToKKwogMjAyMC0wNS0xMiAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmV3
b3JrIGRyYWcgYW5kIGRyb3AgaGFuZGxpbmcgaW4gcHJlcGFyYXRpb24gZm9yIEdUSzQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UgYi9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCmluZGV4IDlhZjY4MmQxZDk0NTczOTA1
ZTI5MjUwYWE0Y2U1MjBmOTliMDhmZjUuLjMwMTYwOGY3MzU1MzM4ZWM1OWYyNWI3YjI5YWRlYjFi
NmZkY2VmMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1BsYXRmb3JtUGxheVN0YXRpb24u
Y21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQpAQCAt
MTgsNyArMTgsNiBAQCBsaXN0KEFQUEVORCBXVEZfU09VUkNFUwogKQogCiBsaXN0KEFQUEVORCBX
VEZfTElCUkFSSUVTCi0gICAgJHtDX1NURF9MSUJSQVJZfQogICAgICR7S0VSTkVMX0xJQlJBUll9
CiAgICAgVGhyZWFkczo6VGhyZWFkcwogKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1QbGF5U3RhdGlvbi5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRp
b24uY21ha2UKaW5kZXggNDA1NzdmZDExOTNiY2IzZjI4MmNlM2U5YWE3MzIzMTMwZTExY2M4OS4u
NDViNmM0OTcwZDhhYzRjMzQ2ZTQ3MjkwZGY0MTA0ZDkwNzIzZjRjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCkBAIC05Niw1ICs5Niw2IEBAIFBMQVlTVEFUSU9O
X0NPUFlfU0hBUkVEX0xJQlJBUklFUyhXZWJDb3JlX0NvcHlTaGFyZWRMaWJzCiAgICAgICAgICR7
SlBFR19MSUJSQVJJRVN9CiAgICAgICAgICR7T1BFTlNTTF9MSUJSQVJJRVN9CiAgICAgICAgICR7
UE5HX0xJQlJBUklFU30KKyAgICAgICAgJHtXZWJLaXRSZXF1aXJlbWVudHNfTElCUkFSWX0KICAg
ICAgICAgJHtXZWJQX0xJQlJBUklFU30KICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvRW50cnlQb2ludC9wbGF5c3RhdGlvbi9OZXR3b3JrUHJvY2Vzc01haW4uY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9FbnRyeVBvaW50L3BsYXlzdGF0aW9uL05l
dHdvcmtQcm9jZXNzTWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzQ5ZDRjMTQzYjhkYTQxMTA1ZTQ1NzA4
Yjc0MGFjNjllMzljNzQ0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRW50cnlQb2ludC9wbGF5c3RhdGlvbi9OZXR3b3JrUHJvY2Vzc01haW4uY3BwCkBA
IC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2
ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWFpbi5oIgorCisjaW5jbHVkZSA8ZGxmY24uaD4KKyNpbmNs
dWRlIDxwcm9jZXNzLWluaXRpYWxpemF0aW9uL25rLW5ldHdvcmtwcm9jZXNzLmg+CisjaW5jbHVk
ZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKwor
aW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQoreworICAgIGlmIChhcmdjIDwgMikgewor
ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlVuZXhwZWN0ZWQgYXJndW1lbnQgY291bnQgJWRcbiIs
IGFyZ2MpOworICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CisgICAgfQorCisgICAgKGRsb3Bl
bigibGliY3J5cHRvIiwgUlRMRF9OT1cpICYmIGRsb3BlbigibGlic3NsIiwgUlRMRF9OT1cpKSB8
fCBkbG9wZW4oIkxpYnJlU1NMIiwgUlRMRF9OT1cpOworICAgIGRsb3BlbigibGliY3VybCIsIFJU
TERfTk9XKTsKKyAgICBkbG9wZW4oImxpYmljdSIsIFJUTERfTk9XKTsKKyAgICBkbG9wZW4oImxp
YlNjZU5LV2ViS2l0UmVxdWlyZW1lbnRzIiwgUlRMRF9OT1cpOworICAgIGRsb3BlbigibGliSmF2
YVNjcmlwdENvcmUiLCBSVExEX05PVyk7CisgICAgZGxvcGVuKCJsaWJXZWJLaXQiLCBSVExEX05P
Vyk7CisKKyAgICBjaGFyKiBjb3JlUHJvY2Vzc0lkZW50aWZpZXIgPSBhcmd2WzFdOworCisgICAg
Y2hhciBjb25uZWN0aW9uSWRlbnRpZmllclsxNl07CisgICAgc25wcmludGYoY29ubmVjdGlvbklk
ZW50aWZpZXIsIHNpemVvZihjb25uZWN0aW9uSWRlbnRpZmllciksICIlZCIsIFBsYXlTdGF0aW9u
OjpnZXRDb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKworICAgIGNoYXIgcHJvZ3JhbVtdID0gImR1
bW15IjsKKyAgICBjaGFyKiBpbnRlcm5hbEFyZ3ZbXSA9IHsKKyAgICAgICAgcHJvZ3JhbSwKKyAg
ICAgICAgY29yZVByb2Nlc3NJZGVudGlmaWVyLAorICAgICAgICBjb25uZWN0aW9uSWRlbnRpZmll
ciwKKyAgICAgICAgMAorICAgIH07CisgICAgcmV0dXJuIFdlYktpdDo6TmV0d29ya1Byb2Nlc3NN
YWluKHNpemVvZihpbnRlcm5hbEFyZ3YpIC8gc2l6ZW9mKGNoYXIqKSwgaW50ZXJuYWxBcmd2KTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaAppbmRleCA4NTkxNWY4YmJh
ZTAwNTMxMWQ4NDI3MzFkZDVmODE1NThhOTFmZDNhLi5mMWFkMDEwMDRmM2M2ZDg1NDdiNDhkMGU2
MjA1YWE1ODQwM2RlZmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9D
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5o
CkBAIC00MDksNiArNDA5LDkgQEAgcHJpdmF0ZToKICAgICBHU29ja2V0TW9uaXRvciBtX3JlYWRT
b2NrZXRNb25pdG9yOwogICAgIEdTb2NrZXRNb25pdG9yIG1fd3JpdGVTb2NrZXRNb25pdG9yOwog
I2VuZGlmCisjaWYgUExBVEZPUk0oUExBWVNUQVRJT04pCisgICAgUmVmUHRyPFdURjo6VGhyZWFk
PiBtX3NvY2tldE1vbml0b3I7CisjZW5kaWYKICNlbGlmIE9TKERBUldJTikKICAgICAvLyBDYWxs
ZWQgb24gdGhlIGNvbm5lY3Rpb24gcXVldWUuCiAgICAgdm9pZCByZWNlaXZlU291cmNlRXZlbnRI
YW5kbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nv
bm5lY3Rpb25Vbml4LmNwcCBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVj
dGlvblVuaXguY3BwCmluZGV4IGRjMDMwNGM5YWYwNWQzMzNmZDJlMmJiMjgwZDI2YzMwODM2YTky
OTMuLjc2ZGMyM2YwNGMyNmVlODU1OWIwOTBkMTM3NGEzNmFiMGQwMDUxMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwCkBAIC0x
MjAsNiArMTIwLDEzIEBAIHZvaWQgQ29ubmVjdGlvbjo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKICAg
ICBtX3dyaXRlU29ja2V0TW9uaXRvci5zdG9wKCk7CiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKFBM
QVlTVEFUSU9OKQorICAgIGlmIChtX3NvY2tldE1vbml0b3IpIHsKKyAgICAgICAgbV9zb2NrZXRN
b25pdG9yLT5kZXRhY2goKTsKKyAgICAgICAgbV9zb2NrZXRNb25pdG9yID0gbnVsbHB0cjsKKyAg
ICB9CisjZW5kaWYKKwogICAgIG1fc29ja2V0RGVzY3JpcHRvciA9IC0xOwogICAgIG1faXNDb25u
ZWN0ZWQgPSBmYWxzZTsKIH0KQEAgLTM2MSw2ICszNjgsMjcgQEAgYm9vbCBDb25uZWN0aW9uOjpv
cGVuKCkKICAgICB9KTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oUExBWVNUQVRJT04pCisgICAg
bV9zb2NrZXRNb25pdG9yID0gVGhyZWFkOjpjcmVhdGUoIlNvY2tldE1vbml0b3IiLCBbcHJvdGVj
dGVkVGhpc10geworICAgICAgICB7CisgICAgICAgICAgICBpbnQgZmQ7CisgICAgICAgICAgICB3
aGlsZSAoKGZkID0gcHJvdGVjdGVkVGhpcy0+bV9zb2NrZXREZXNjcmlwdG9yKSAhPSAtMSkgewor
ICAgICAgICAgICAgICAgIGludCBtYXhGZCA9IGZkOworICAgICAgICAgICAgICAgIGZkX3NldCBm
ZFNldDsKKyAgICAgICAgICAgICAgICBGRF9aRVJPKCZmZFNldCk7CisgICAgICAgICAgICAgICAg
RkRfU0VUKGZkLCAmZmRTZXQpOworCisgICAgICAgICAgICAgICAgaWYgKC0xICE9IHNlbGVjdCht
YXhGZCArIDEsICZmZFNldCwgMCwgMCwgMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKEZE
X0lTU0VUKGZkLCAmZmRTZXQpKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhp
cy0+cmVhZHlSZWFkSGFuZGxlcigpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KworICAgICAgICB9CisgICAgfSk7CisgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKwogICAgIC8v
IFNjaGVkdWxlIGEgY2FsbCB0byByZWFkeVJlYWRIYW5kbGVyLiBEYXRhIG1heSBoYXZlIGFycml2
ZWQgYmVmb3JlIGluc3RhbGxhdGlvbiBvZiB0aGUgc2lnbmFsIGhhbmRsZXIuCiAgICAgbV9jb25u
ZWN0aW9uUXVldWUtPmRpc3BhdGNoKFtwcm90ZWN0ZWRUaGlzXSB7CiAgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPnJlYWR5UmVhZEhhbmRsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxh
dGZvcm1QbGF5U3RhdGlvbi5jbWFrZSBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1QbGF5U3RhdGlv
bi5jbWFrZQppbmRleCAzYTRmMTU2MzQyYmJlNmRiNGVhMDM0ZGNhZTFjZmNkMmIxNmEwZWIxLi5l
ZDllOWUzNjJmMDA2ZTkyZGZkOTgzYWE3YzZmODc5MDgwZTIyZjAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKKysrIGIvU291cmNlL1dlYktpdC9Q
bGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCkBAIC0xLDkgKzEsMyBAQAotc2V0KFdlYktpdF9PVVRQ
VVRfTkFNRSBTY2VXZWJLaXQpCi1zZXQoV2ViUHJvY2Vzc19PVVRQVVRfTkFNRSBXZWJLaXRXZWJQ
cm9jZXNzKQotc2V0KE5ldHdvcmtQcm9jZXNzX09VVFBVVF9OQU1FIFdlYktpdE5ldHdvcmtQcm9j
ZXNzKQotc2V0KEdQVVByb2Nlc3NfT1VUUFVUX05BTUUgV2ViS2l0R1BVUHJvY2VzcykKLXNldChQ
bHVnaW5Qcm9jZXNzX09VVFBVVF9OQU1FIFdlYktpdFBsdWdpblByb2Nlc3MpCi0KIGluY2x1ZGUo
SGVhZGVycy5jbWFrZSkKIAogYWRkX2RlZmluaXRpb25zKC1EQlVJTERJTkdfV0VCS0lUKQpAQCAt
MTEsMTEgKzUsMTEgQEAgYWRkX2RlZmluaXRpb25zKC1EQlVJTERJTkdfV0VCS0lUKQogc2V0KFdl
YktpdF9VU0VfUFJFRklYX0hFQURFUiBPTikKIAogbGlzdChBUFBFTkQgV2ViUHJvY2Vzc19TT1VS
Q0VTCi0gICAgV2ViUHJvY2Vzcy9FbnRyeVBvaW50L3VuaXgvV2ViUHJvY2Vzc01haW4uY3BwCisg
ICAgV2ViUHJvY2Vzcy9FbnRyeVBvaW50L3BsYXlzdGF0aW9uL1dlYlByb2Nlc3NNYWluLmNwcAog
KQogCiBsaXN0KEFQUEVORCBOZXR3b3JrUHJvY2Vzc19TT1VSQ0VTCi0gICAgTmV0d29ya1Byb2Nl
c3MvRW50cnlQb2ludC91bml4L05ldHdvcmtQcm9jZXNzTWFpbi5jcHAKKyAgICBOZXR3b3JrUHJv
Y2Vzcy9FbnRyeVBvaW50L3BsYXlzdGF0aW9uL05ldHdvcmtQcm9jZXNzTWFpbi5jcHAKICkKIAog
bGlzdChBUFBFTkQgR1BVUHJvY2Vzc19TT1VSQ0VTCkBAIC05MCw2ICs4NCwxMSBAQCBsaXN0KEFQ
UEVORCBXZWJLaXRfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLUHJvdGVjdGlv
blNwYWNlQ3VybC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvY3VybC9XS1dlYnNpdGVEYXRhU3Rv
cmVSZWZDdXJsLmNwcAogCisgICAgVUlQcm9jZXNzL0FQSS9DL3BsYXlzdGF0aW9uL1dLQ29udGV4
dENvbmZpZ3VyYXRpb25QbGF5U3RhdGlvbi5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0MvcGxheXN0
YXRpb24vV0tWaWV3LmNwcAorCisgICAgVUlQcm9jZXNzL0FQSS9wbGF5c3RhdGlvbi9XZWJWaWV3
LmNwcAorCiAgICAgVUlQcm9jZXNzL0F1dG9tYXRpb24vY2Fpcm8vV2ViQXV0b21hdGlvblNlc3Np
b25DYWlyby5jcHAKIAogICAgIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0RyYXdpbmdB
cmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmNwcApAQCAtMTM3LDYgKzEzNiw3IEBAIGxpc3Qo
QVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7V0VCS0lUX0RJUn0vVUlQ
cm9jZXNzL0FQSS9DL2NhaXJvIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9j
dXJsIgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbiIKKyAg
ICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQVBJL3BsYXlzdGF0aW9uIgogICAgICIke1dFQktJ
VF9ESVJ9L1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzIgogICAgICIke1dFQktJVF9ESVJ9
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvY3VybCIKICAgICAiJHtXRUJLSVRfRElSfS9XZWJQ
cm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcyIKQEAgLTE1MCwxMCArMTUwLDEyIEBA
IGxpc3QoQVBQRU5EIFdlYktpdF9QVUJMSUNfRlJBTUVXT1JLX0hFQURFUlMKICAgICBTaGFyZWQv
QVBJL2MvY3VybC9XS0NlcnRpZmljYXRlSW5mb0N1cmwuaAogCiAgICAgU2hhcmVkL0FQSS9jL3Bs
YXlzdGF0aW9uL1dLQmFzZVBsYXlTdGF0aW9uLmgKKyAgICBTaGFyZWQvQVBJL2MvcGxheXN0YXRp
b24vV0tFdmVudFBsYXlTdGF0aW9uLmgKIAogICAgIFVJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLUHJv
dGVjdGlvblNwYWNlQ3VybC5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL2N1cmwvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmQ3VybC5oCiAKKyAgICBVSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tDb250
ZXh0Q29uZmlndXJhdGlvblBsYXlTdGF0aW9uLmgKICAgICBVSVByb2Nlc3MvQVBJL0MvcGxheXN0
YXRpb24vV0tWaWV3LmgKICkKIApAQCAtMTYzLDQgKzE2NSw1IEBAIGxpc3QoQVBQRU5EIFdlYktp
dF9QVUJMSUNfRlJBTUVXT1JLX0hFQURFUlMKIGxpc3QoQVBQRU5EIFdlYktpdF9QUklWQVRFX0xJ
QlJBUklFUwogICAgICQ8VEFSR0VUX09CSkVDVFM6UEFMPgogICAgICQ8VEFSR0VUX09CSkVDVFM6
V2ViQ29yZT4KKyAgICBXZWJLaXRSZXF1aXJlbWVudHM6OlByb2Nlc3NMYXVuY2hlcgogKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvcGxheXN0YXRpb24vV0tFdmVudFBs
YXlTdGF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9wbGF5c3RhdGlvbi9XS0V2
ZW50UGxheVN0YXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZmQzZWVjMjVhZThmNjRkMjBjY2YxZGUzMzYy
ZWUxNzljNGFhODExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvcGxheXN0YXRpb24vV0tFdmVudFBsYXlTdGF0aW9uLmgKQEAgLTAsMCArMSwxNDYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IElu
Yy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+
CisjaW5jbHVkZSA8V2ViS2l0L1dLRXZlbnQuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tHZW9tZXRy
eS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK2VudW0g
eworICAgIGtXS0V2ZW50Tm9UeXBlID0gLTEsCisKKyAgICAvLyBXZWJNb3VzZUV2ZW50CisgICAg
a1dLRXZlbnRNb3VzZURvd24sCisgICAga1dLRXZlbnRNb3VzZVVwLAorICAgIGtXS0V2ZW50TW91
c2VNb3ZlLAorICAgIGtXS0V2ZW50TW91c2VGb3JjZUNoYW5nZWQsCisgICAga1dLRXZlbnRNb3Vz
ZUZvcmNlRG93biwKKyAgICBrV0tFdmVudE1vdXNlRm9yY2VVcCwKKworICAgIC8vIFdlYldoZWVs
RXZlbnQKKyAgICBrV0tFdmVudFdoZWVsLAorCisgICAgLy8gV2ViS2V5Ym9hcmRFdmVudAorICAg
IGtXS0V2ZW50S2V5RG93biwKKyAgICBrV0tFdmVudEtleVVwCit9OwordHlwZWRlZiBpbnQzMl90
IFdLRXZlbnRUeXBlOworCitzdHJ1Y3QgV0tLZXlib2FyZEV2ZW50IHsKKyAgICBXS0V2ZW50VHlw
ZSB0eXBlOworICAgIGNvbnN0IGNoYXIqIHRleHQ7CisgICAgaW50MzJfdCBsZW5ndGg7CisgICAg
Y29uc3QgY2hhcioga2V5SWRlbnRpZmllcjsKKyAgICB1aW50MzJfdCBtb2RpZmllcnM7CisgICAg
aW50MzJfdCB2aXJ0dWFsS2V5Q29kZTsKKyAgICBpbnQzMl90IGNhcmV0T2Zmc2V0OworfTsKK3R5
cGVkZWYgc3RydWN0IFdLS2V5Ym9hcmRFdmVudCBXS0tleWJvYXJkRXZlbnQ7CisKK2VudW0gewor
ICAgIGtXS0lucHV0VHlwZU5vcm1hbCwKKyAgICBrV0tJbnB1dFR5cGVTZXRDb21wb3NpdGlvbiwK
KyAgICBrV0tJbnB1dFR5cGVDb25maXJtQ29tcG9zaXRpb24sCisgICAga1dLSW5wdXRUeXBlQ2Fu
Y2VsQ29tcG9zaXRpb24sCit9OwordHlwZWRlZiB1aW50OF90IFdLSW5wdXRUeXBlOworCitXS19J
TkxJTkUgV0tLZXlib2FyZEV2ZW50IFdLS2V5Ym9hcmRFdmVudE1ha2UoV0tFdmVudFR5cGUgdHlw
ZSwgV0tJbnB1dFR5cGUgaW5wdXRUeXBlLCBjb25zdCBjaGFyKiB0ZXh0LCB1aW50MzJfdCBsZW5n
dGgsIGNvbnN0IGNoYXIqIGtleUlkZW50aWZpZXIsIGludDMyX3QgdmlydHVhbEtleUNvZGUsIGlu
dDMyX3QgY2FyZXRPZmZzZXQsIHVpbnQzMl90IGF0dHJpYnV0ZXMsIHVpbnQzMl90IG1vZGlmaWVy
cykKK3sKKyAgICBXS0tleWJvYXJkRXZlbnQga2V5Ym9hcmRFdmVudDsKKyAgICBrZXlib2FyZEV2
ZW50LnR5cGUgPSB0eXBlOworICAgIGtleWJvYXJkRXZlbnQudmlydHVhbEtleUNvZGUgPSB2aXJ0
dWFsS2V5Q29kZTsKKyAgICBrZXlib2FyZEV2ZW50Lm1vZGlmaWVycyA9IG1vZGlmaWVyczsKKyAg
ICBrZXlib2FyZEV2ZW50LmNhcmV0T2Zmc2V0ID0gY2FyZXRPZmZzZXQ7CisKKyAgICAvLyBzZWUg
aHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLyNrZXlzLUlNRQorICAgIGlm
IChpbnB1dFR5cGUgPT0ga1dLSW5wdXRUeXBlU2V0Q29tcG9zaXRpb24pCisgICAgICAgIGtleWJv
YXJkRXZlbnQua2V5SWRlbnRpZmllciA9ICJDb252ZXJ0IjsKKyAgICBlbHNlIGlmIChpbnB1dFR5
cGUgPT0ga1dLSW5wdXRUeXBlQ29uZmlybUNvbXBvc2l0aW9uKQorICAgICAgICBrZXlib2FyZEV2
ZW50LmtleUlkZW50aWZpZXIgPSAiQWNjZXB0IjsKKyAgICBlbHNlIGlmIChpbnB1dFR5cGUgPT0g
a1dLSW5wdXRUeXBlQ2FuY2VsQ29tcG9zaXRpb24pCisgICAgICAgIGtleWJvYXJkRXZlbnQua2V5
SWRlbnRpZmllciA9ICJDYW5jZWwiOworICAgIGVsc2UKKyAgICAgICAga2V5Ym9hcmRFdmVudC5r
ZXlJZGVudGlmaWVyID0ga2V5SWRlbnRpZmllcjsKKworICAgIGlmIChsZW5ndGggPiAwKSB7Cisg
ICAgICAgIGtleWJvYXJkRXZlbnQudGV4dCA9IHRleHQ7CisgICAgICAgIGtleWJvYXJkRXZlbnQu
bGVuZ3RoID0gbGVuZ3RoOworICAgIH0gZWxzZSB7CisgICAgICAgIGtleWJvYXJkRXZlbnQudGV4
dCA9IG51bGxwdHI7CisgICAgICAgIGtleWJvYXJkRXZlbnQubGVuZ3RoID0gMDsKKyAgICB9CisK
KyAgICByZXR1cm4ga2V5Ym9hcmRFdmVudDsKK30KKworc3RydWN0IFdLTW91c2VFdmVudCB7Cisg
ICAgV0tFdmVudFR5cGUgdHlwZTsKKyAgICBXS0V2ZW50TW91c2VCdXR0b24gYnV0dG9uOworICAg
IFdLUG9pbnQgcG9zaXRpb247CisgICAgaW50MzJfdCBjbGlja0NvdW50OworICAgIHVpbnQzMl90
IG1vZGlmaWVyczsKK307Cit0eXBlZGVmIHN0cnVjdCBXS01vdXNlRXZlbnQgV0tNb3VzZUV2ZW50
OworCitXS19JTkxJTkUgV0tNb3VzZUV2ZW50IFdLTW91c2VFdmVudE1ha2UoV0tFdmVudFR5cGUg
dHlwZSwgV0tFdmVudE1vdXNlQnV0dG9uIGJ1dHRvbiwgV0tQb2ludCBwb3NpdGlvbiwgaW50MzJf
dCBjbGlja0NvdW50LCB1aW50MzJfdCBtb2RpZmllcnMpCit7CisgICAgV0tNb3VzZUV2ZW50IG1v
dXNlRXZlbnQ7CisgICAgbW91c2VFdmVudC50eXBlID0gdHlwZTsKKyAgICBtb3VzZUV2ZW50LmJ1
dHRvbiA9IGJ1dHRvbjsKKyAgICBtb3VzZUV2ZW50LnBvc2l0aW9uID0gcG9zaXRpb247CisgICAg
bW91c2VFdmVudC5jbGlja0NvdW50ID0gY2xpY2tDb3VudDsKKyAgICBtb3VzZUV2ZW50Lm1vZGlm
aWVycyA9IG1vZGlmaWVyczsKKyAgICByZXR1cm4gbW91c2VFdmVudDsKK30KKworc3RydWN0IFdL
V2hlZWxFdmVudCB7CisgICAgV0tFdmVudFR5cGUgdHlwZTsKKyAgICBXS1BvaW50IHBvc2l0aW9u
OworICAgIFdLU2l6ZSBkZWx0YTsKKyAgICBXS1NpemUgd2hlZWxUaWNrczsKKyAgICB1aW50MzJf
dCBtb2RpZmllcnM7Cit9OwordHlwZWRlZiBzdHJ1Y3QgV0tXaGVlbEV2ZW50IFdLV2hlZWxFdmVu
dDsKKworV0tfSU5MSU5FIFdLV2hlZWxFdmVudCBXS1doZWVsRXZlbnRNYWtlKFdLRXZlbnRUeXBl
IHR5cGUsIFdLUG9pbnQgcG9zaXRpb24sIFdLU2l6ZSBkZWx0YSwgV0tTaXplIHdoZWVsVGlja3Ms
IHVpbnQzMl90IG1vZGlmaWVycykKK3sKKyAgICBXS1doZWVsRXZlbnQgd2hlZWxFdmVudDsKKyAg
ICB3aGVlbEV2ZW50LnR5cGUgPSB0eXBlOworICAgIHdoZWVsRXZlbnQucG9zaXRpb24gPSBwb3Np
dGlvbjsKKyAgICB3aGVlbEV2ZW50LmRlbHRhID0gZGVsdGE7CisgICAgd2hlZWxFdmVudC53aGVl
bFRpY2tzID0gd2hlZWxUaWNrczsKKyAgICB3aGVlbEV2ZW50Lm1vZGlmaWVycyA9IG1vZGlmaWVy
czsKKyAgICByZXR1cm4gd2hlZWxFdmVudDsKK30KKworI2lmZGVmIF9fY3BsdXNwbHVzCit9Cisj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggYTY1ZjA2NmY5ODEzZThmNTQ2NzNjOGYz
MzQ4ODUzYzE3YTZkZjYwZC4uNGZiNWU2MmY5OGZhZDNhODcwNDBhNTMzNTAzYjhhY2QxZDQwOTg4
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKQEAgLTcxLDcgKzcxLDEyIEBAIFJlZjxQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSgpCiAjaWYg
UExBVEZPUk0oR1RLKSAmJiAhVVNFKEdUSzQpCiAgICAgY29weS0+bV91c2VTeXN0ZW1BcHBlYXJh
bmNlRm9yU2Nyb2xsYmFycyA9IG1fdXNlU3lzdGVtQXBwZWFyYW5jZUZvclNjcm9sbGJhcnM7CiAj
ZW5kaWYKLQorI2lmIFBMQVRGT1JNKFBMQVlTVEFUSU9OKQorICAgIGNvcHktPm1fd2ViUHJvY2Vz
c1BhdGggPSB0aGlzLT5tX3dlYlByb2Nlc3NQYXRoOworICAgIGNvcHktPm1fbmV0d29ya1Byb2Nl
c3NQYXRoID0gdGhpcy0+bV9uZXR3b3JrUHJvY2Vzc1BhdGg7CisgICAgY29weS0+bV9jb29raWVT
dG9yYWdlUGF0aCA9IHRoaXMtPm1fY29va2llU3RvcmFnZVBhdGg7CisgICAgY29weS0+bV91c2Vy
SWQgPSB0aGlzLT5tX3VzZXJJZDsKKyNlbmRpZgogICAgIHJldHVybiBjb3B5OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmgKaW5kZXggZWNiZjI0NTVhMWUxMDJiNTk2MjQ0ZjE0OWU4NmVmM2ZmYzY4Yjdk
Mi4uMzNmMjYwNDI0N2U2ZDE2MGFhN2E2NTEyYTE3ZDUxM2ZlOTU2MjY0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uaApAQCAtMTM2LDYgKzEzNiwyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VTeXN0
ZW1BcHBlYXJhbmNlRm9yU2Nyb2xsYmFycyhib29sIHVzZVN5c3RlbUFwcGVhcmFuY2VGb3JTY3Jv
bGxiYXJzKSB7IG1fdXNlU3lzdGVtQXBwZWFyYW5jZUZvclNjcm9sbGJhcnMgPSB1c2VTeXN0ZW1B
cHBlYXJhbmNlRm9yU2Nyb2xsYmFyczsgfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShQTEFZU1RB
VElPTikKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgd2ViUHJvY2Vzc1BhdGgoKSBjb25zdCB7IHJl
dHVybiBtX3dlYlByb2Nlc3NQYXRoOyB9CisgICAgdm9pZCBzZXRXZWJQcm9jZXNzUGF0aChjb25z
dCBXVEY6OlN0cmluZyYgd2ViUHJvY2Vzc1BhdGgpIHsgbV93ZWJQcm9jZXNzUGF0aCA9IHdlYlBy
b2Nlc3NQYXRoOyB9CisKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgbmV0d29ya1Byb2Nlc3NQYXRo
KCkgY29uc3QgeyByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzc1BhdGg7IH0KKyAgICB2b2lkIHNldE5l
dHdvcmtQcm9jZXNzUGF0aChjb25zdCBXVEY6OlN0cmluZyYgbmV0d29ya1Byb2Nlc3NQYXRoKSB7
IG1fbmV0d29ya1Byb2Nlc3NQYXRoID0gbmV0d29ya1Byb2Nlc3NQYXRoOyB9CisKKyAgICBjb25z
dCBXVEY6OlN0cmluZyYgY29va2llU3RvcmFnZVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2Nvb2tp
ZVN0b3JhZ2VQYXRoOyB9CisgICAgdm9pZCBzZXRDb29raWVTdG9yYWdlUGF0aChjb25zdCBXVEY6
OlN0cmluZyYgY29va2llU3RvcmFnZVBhdGgpIHsgbV9jb29raWVTdG9yYWdlUGF0aCA9IGNvb2tp
ZVN0b3JhZ2VQYXRoOyB9CisKKyAgICBpbnQzMl90IHVzZXJJZCgpIGNvbnN0IHsgcmV0dXJuIG1f
dXNlcklkOyB9CisgICAgdm9pZCBzZXRVc2VySWQoY29uc3QgaW50MzJfdCB1c2VySWQpIHsgbV91
c2VySWQgPSB1c2VySWQ7IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdURjo6U3RyaW5nIG1f
aW5qZWN0ZWRCdW5kbGVQYXRoOwogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9jdXN0b21DbGFz
c2VzRm9yUGFyYW1ldGVyQ29kZXI7CkBAIC0xNjUsNiArMTc5LDEyIEBAIHByaXZhdGU6CiAjaWYg
UExBVEZPUk0oR1RLKSAmJiAhVVNFKEdUSzQpCiAgICAgYm9vbCBtX3VzZVN5c3RlbUFwcGVhcmFu
Y2VGb3JTY3JvbGxiYXJzIHsgZmFsc2UgfTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFBMQVlTVEFU
SU9OKQorICAgIFdURjo6U3RyaW5nIG1fd2ViUHJvY2Vzc1BhdGg7CisgICAgV1RGOjpTdHJpbmcg
bV9uZXR3b3JrUHJvY2Vzc1BhdGg7CisgICAgV1RGOjpTdHJpbmcgbV9jb29raWVTdG9yYWdlUGF0
aDsKKyAgICBpbnQzMl90IG1fdXNlcklkIHsgLTEgfTsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1l
c3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5
c3RhdGlvbi9XS0FQSUNhc3RQbGF5U3RhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvcGxheXN0YXRpb24vV0tBUElDYXN0UGxheVN0YXRpb24uaAppbmRleCAyMmVmZDg1ZDFi
YTc3ODc2OGM1MGFiMTg5ZTk3OTJjNzQwN2U4ODRjLi5iNWQ1MTBlN2NhNDM0YWNjODdkMDdjNzI5
Zjg3OWE2OWRiZWNkMGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9wbGF5c3RhdGlvbi9XS0FQSUNhc3RQbGF5U3RhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL3BsYXlzdGF0aW9uL1dLQVBJQ2FzdFBsYXlTdGF0aW9uLmgKQEAgLTMw
LDQgKzMwLDI0IEBACiAjZXJyb3IgIlBsZWFzZSAjaW5jbHVkZSBcIldLQVBJQ2FzdC5oXCIgaW5z
dGVhZCBvZiB0aGlzIGZpbGUgZGlyZWN0bHkuIgogI2VuZGlmCiAKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJWaWV3OworCitXS19BRERfQVBJX01BUFBJTkcoV0tWaWV3UmVmLCBXZWJW
aWV3KQorCit0ZW1wbGF0ZTw+CitpbmxpbmUgV0tWaWV3UmVmIHRvQVBJPD4oV2ViVmlldyogdmll
dykKK3sKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxXS1ZpZXdSZWY+KHN0YXRpY19jYXN0
PHZvaWQqPih2aWV3KSk7Cit9CisKK3RlbXBsYXRlPD4KK2lubGluZSBXZWJWaWV3KiB0b0ltcGw8
PihXS1ZpZXdSZWYgdmlldykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViVmlldyo+KHN0
YXRpY19jYXN0PHZvaWQqPihjb25zdF9jYXN0PHR5cGVuYW1lIHN0ZDo6cmVtb3ZlX2NvbnN0PHR5
cGVuYW1lIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8V0tWaWV3UmVmPjo6dHlwZT46OnR5cGUqPih2aWV3
KSkpOworfQorCit9CisKICNlbmRpZiAvKiBXS0FQSUNhc3RQbGF5U3RhdGlvbl9oICovCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9XS0NvbnRl
eHRDb25maWd1cmF0aW9uUGxheVN0YXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvcGxheXN0YXRpb24vV0tDb250ZXh0Q29uZmlndXJhdGlvblBsYXlTdGF0aW9uLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40ODE0MmQxZDEwMWUyZGJmZDE3MjJhNmY3Zjk2NzQwODg2NGU5YmFkCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24v
V0tDb250ZXh0Q29uZmlndXJhdGlvblBsYXlTdGF0aW9uLmNwcApAQCAtMCwwICsxLDcyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJ
bmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0NvbnRleHRD
b25maWd1cmF0aW9uUGxheVN0YXRpb24uaCIKKworI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OworCit2b2lkIFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRXZWJQcm9jZXNzUGF0aChX
S0NvbnRleHRDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLU3RyaW5nUmVmIHdlYlBy
b2Nlc3NQYXRoKQoreworICAgIHRvSW1wbChjb25maWd1cmF0aW9uKS0+c2V0V2ViUHJvY2Vzc1Bh
dGgodG9JbXBsKHdlYlByb2Nlc3NQYXRoKS0+c3RyaW5nKCkpOworfQorCitXS1N0cmluZ1JlZiBX
S0NvbnRleHRDb25maWd1cmF0aW9uQ29weVdlYlByb2Nlc3NQYXRoKFdLQ29udGV4dENvbmZpZ3Vy
YXRpb25SZWYgY29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBs
KGNvbmZpZ3VyYXRpb24pLT53ZWJQcm9jZXNzUGF0aCgpKTsKK30KKwordm9pZCBXS0NvbnRleHRD
b25maWd1cmF0aW9uU2V0TmV0d29ya1Byb2Nlc3NQYXRoKFdLQ29udGV4dENvbmZpZ3VyYXRpb25S
ZWYgY29uZmlndXJhdGlvbiwgV0tTdHJpbmdSZWYgbmV0d29ya1Byb2Nlc3NQYXRoKQoreworICAg
IHRvSW1wbChjb25maWd1cmF0aW9uKS0+c2V0TmV0d29ya1Byb2Nlc3NQYXRoKHRvSW1wbChuZXR3
b3JrUHJvY2Vzc1BhdGgpLT5zdHJpbmcoKSk7Cit9CisKK1dLU3RyaW5nUmVmIFdLQ29udGV4dENv
bmZpZ3VyYXRpb25Db3B5TmV0d29ya1Byb2Nlc3NQYXRoKFdLQ29udGV4dENvbmZpZ3VyYXRpb25S
ZWYgY29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGNvbmZp
Z3VyYXRpb24pLT5uZXR3b3JrUHJvY2Vzc1BhdGgoKSk7Cit9CisKK3ZvaWQgV0tDb250ZXh0Q29u
ZmlndXJhdGlvblNldENvb2tpZVN0b3JhZ2VQYXRoKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYg
Y29uZmlndXJhdGlvbiwgV0tTdHJpbmdSZWYgY29va2llU3RvcmFnZVBhdGgpCit7CisgICAgdG9J
bXBsKGNvbmZpZ3VyYXRpb24pLT5zZXRDb29raWVTdG9yYWdlUGF0aCh0b0ltcGwoY29va2llU3Rv
cmFnZVBhdGgpLT5zdHJpbmcoKSk7Cit9CisKK1dLU3RyaW5nUmVmIFdLQ29udGV4dENvbmZpZ3Vy
YXRpb25Db3B5Q29va2llU3RvcmFnZVBhdGgoV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb25m
aWd1cmF0aW9uKQoreworICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoY29uZmlndXJhdGlv
biktPmNvb2tpZVN0b3JhZ2VQYXRoKCkpOworfQorCit2b2lkIFdLQ29udGV4dENvbmZpZ3VyYXRp
b25TZXRVc2VySWQoV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBpbnQz
Ml90IHVzZXJJZCkKK3sKKyAgICB0b0ltcGwoY29uZmlndXJhdGlvbiktPnNldFVzZXJJZCh1c2Vy
SWQpOworfQorCitpbnQzMl90IFdLQ29udGV4dENvbmZpZ3VyYXRpb25HZXRVc2VySWQoV0tDb250
ZXh0Q29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uKQoreworICAgIHJldHVybiB0b0ltcGwo
Y29uZmlndXJhdGlvbiktPnVzZXJJZCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tDb250ZXh0Q29uZmlndXJhdGlvblBsYXlTdGF0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9XS0NvbnRl
eHRDb25maWd1cmF0aW9uUGxheVN0YXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTUzOTQ2NDYxMTM1MDU2
ZThlM2FlMzBkYTkzNDhkOTQxMDlhNWRhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tDb250ZXh0Q29uZmlndXJhdGlvblBsYXlT
dGF0aW9uLmgKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255
IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tDb250ZXh0
Q29uZmlndXJhdGlvblJlZi5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgewor
I2VuZGlmCisKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRXZWJQcm9j
ZXNzUGF0aChXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLU3RyaW5n
UmVmIHdlYlByb2Nlc3NQYXRoKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0NvbnRleHRDb25m
aWd1cmF0aW9uQ29weVdlYlByb2Nlc3NQYXRoKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29u
ZmlndXJhdGlvbik7CisKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRO
ZXR3b3JrUHJvY2Vzc1BhdGgoV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9u
LCBXS1N0cmluZ1JlZiBuZXR3b3JrUHJvY2Vzc1BhdGgpOworV0tfRVhQT1JUIFdLU3RyaW5nUmVm
IFdLQ29udGV4dENvbmZpZ3VyYXRpb25Db3B5TmV0d29ya1Byb2Nlc3NQYXRoKFdLQ29udGV4dENv
bmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CisKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4
dENvbmZpZ3VyYXRpb25TZXRDb29raWVTdG9yYWdlUGF0aChXS0NvbnRleHRDb25maWd1cmF0aW9u
UmVmIGNvbmZpZ3VyYXRpb24sIFdLU3RyaW5nUmVmIGNvb2tpZVN0b3JhZ2VQYXRoKTsKK1dLX0VY
UE9SVCBXS1N0cmluZ1JlZiBXS0NvbnRleHRDb25maWd1cmF0aW9uQ29weUNvb2tpZVN0b3JhZ2VQ
YXRoKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CisKK1dLX0VYUE9S
VCB2b2lkIFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRVc2VySWQoV0tDb250ZXh0Q29uZmlndXJh
dGlvblJlZiBjb25maWd1cmF0aW9uLCBpbnQzMl90IHVzZXJJZCk7CitXS19FWFBPUlQgaW50MzJf
dCBXS0NvbnRleHRDb25maWd1cmF0aW9uR2V0VXNlcklkKFdLQ29udGV4dENvbmZpZ3VyYXRpb25S
ZWYgY29uZmlndXJhdGlvbik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9XS1ZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tWaWV3LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zNmM2Njc2MGNkNWVlMWJhOTExYTE1YjIwODNkYzAxNzdmYzQ4MDZlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRp
b24vV0tWaWV3LmNwcApAQCAtMCwwICsxLDE1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tWaWV3LmgiCisKKyNpbmNsdWRlICJBUElBcnJheS5o
IgorI2luY2x1ZGUgIkFQSUNsaWVudC5oIgorI2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9u
LmgiCisjaW5jbHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIk5hdGl2
ZVdlYk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCisjaW5j
bHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0LmgiCisjaW5jbHVk
ZSAiV2ViRXZlbnRGYWN0b3J5LmgiCisjaW5jbHVkZSAiV2ViVmlldy5oIgorI2luY2x1ZGUgPHdw
ZS93cGUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OworCitXZWJDb3JlOjpGbG9hdFNpemUgdG9GbG9hdFNpemUoV0tTaXplIHNpemUpCit7Cisg
ICAgcmV0dXJuIFdlYkNvcmU6OkZsb2F0U2l6ZShzaXplLndpZHRoLCBzaXplLmhlaWdodCk7Cit9
CisKK1dLVmlld1JlZiBXS1ZpZXdDcmVhdGUoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1
cmF0aW9uKQoreworICAgIHJldHVybiB0b0FQSShXZWJWaWV3OjpjcmVhdGUoKnRvSW1wbChjb25m
aWd1cmF0aW9uKSkubGVha1JlZigpKTsKK30KKworV0tQYWdlUmVmIFdLVmlld0dldFBhZ2UoV0tW
aWV3UmVmIHZpZXdSZWYpCit7CisgICAgcmV0dXJuIHRvQVBJKCZ0b0ltcGwodmlld1JlZiktPnBh
Z2UoKSk7Cit9CisKK3ZvaWQgV0tWaWV3U2V0U2l6ZShXS1ZpZXdSZWYgdmlldywgV0tTaXplIHNp
emUpCit7CisgICAgdG9JbXBsKHZpZXcpLT5zZXRTaXplKHRvSW50U2l6ZShzaXplKSk7Cit9CisK
K3ZvaWQgV0tWaWV3SGFuZGxlS2V5Ym9hcmRFdmVudChXS1ZpZXdSZWYgdmlldywgV0tLZXlib2Fy
ZEV2ZW50IGV2ZW50KQoreworICAgIHdwZV9pbnB1dF9rZXlib2FyZF9ldmVudCB3cGVFdmVudDsK
KyAgICB3cGVFdmVudC50aW1lID0gMDsKKyAgICB3cGVFdmVudC5rZXlfY29kZSA9IGV2ZW50LnZp
cnR1YWxLZXlDb2RlOworICAgIHdwZUV2ZW50LmhhcmR3YXJlX2tleV9jb2RlID0gZXZlbnQudmly
dHVhbEtleUNvZGU7CisgICAgd3BlRXZlbnQubW9kaWZpZXJzID0gMDsgLy8gVE9ETzogSGFuZGxl
IG1vZGlmaWVycy4KKyAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKKyAgICBjYXNlIGtXS0V2ZW50
S2V5RG93bjoKKyAgICAgICAgd3BlRXZlbnQucHJlc3NlZCA9IHRydWU7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2Uga1dLRXZlbnRLZXlVcDoKKyAgICAgICAgd3BlRXZlbnQucHJlc3NlZCA9IGZh
bHNlOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5hdGl2ZVdlYktleWJvYXJk
RXZlbnQ6OkhhbmRsZWRCeUlucHV0TWV0aG9kIGhhbmRsZWRCeUlucHV0TWV0aG9kID0gTmF0aXZl
V2ViS2V5Ym9hcmRFdmVudDo6SGFuZGxlZEJ5SW5wdXRNZXRob2Q6Ok5vOworICAgIE9wdGlvbmFs
PFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4+IHByZWVkaXRVbmRlcmxpbmVz
OworICAgIE9wdGlvbmFsPEVkaXRpbmdSYW5nZT4gcHJlZWRpdFNlbGVjdGlvblJhbmdlOworICAg
IHRvSW1wbCh2aWV3KS0+aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRpdmVXZWJLZXlib2FyZEV2ZW50
KCZ3cGVFdmVudCwgIiIsIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBXVEZNb3ZlKHByZWVkaXRVbmRl
cmxpbmVzKSwgV1RGTW92ZShwcmVlZGl0U2VsZWN0aW9uUmFuZ2UpKSk7Cit9CisKK3ZvaWQgV0tW
aWV3SGFuZGxlTW91c2VFdmVudChXS1ZpZXdSZWYgdmlldywgV0tNb3VzZUV2ZW50IGV2ZW50KQor
eworICAgIHdwZV9pbnB1dF9wb2ludGVyX2V2ZW50IHdwZUV2ZW50OworCisgICAgc3dpdGNoIChl
dmVudC50eXBlKSB7CisgICAgY2FzZSBrV0tFdmVudE1vdXNlRG93bjoKKyAgICBjYXNlIGtXS0V2
ZW50TW91c2VVcDoKKyAgICAgICAgd3BlRXZlbnQudHlwZSA9IHdwZV9pbnB1dF9wb2ludGVyX2V2
ZW50X3R5cGVfYnV0dG9uOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtXS0V2ZW50TW91c2VN
b3ZlOgorICAgICAgICB3cGVFdmVudC50eXBlID0gd3BlX2lucHV0X3BvaW50ZXJfZXZlbnRfdHlw
ZV9tb3Rpb247CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3dpdGNoIChldmVu
dC5idXR0b24pIHsKKyAgICBjYXNlIGtXS0V2ZW50TW91c2VCdXR0b25MZWZ0QnV0dG9uOgorICAg
ICAgICB3cGVFdmVudC5idXR0b24gPSAxOworICAgICAgICBicmVhazsKKyAgICBjYXNlIGtXS0V2
ZW50TW91c2VCdXR0b25NaWRkbGVCdXR0b246CisgICAgICAgIHdwZUV2ZW50LmJ1dHRvbiA9IDM7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2Uga1dLRXZlbnRNb3VzZUJ1dHRvblJpZ2h0QnV0dG9u
OgorICAgICAgICB3cGVFdmVudC5idXR0b24gPSAyOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IGtXS0V2ZW50TW91c2VCdXR0b25Ob0J1dHRvbjoKKyAgICAgICAgd3BlRXZlbnQuYnV0dG9uID0g
MDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgd3BlRXZlbnQudGltZSA9IDA7Cisg
ICAgd3BlRXZlbnQueCA9IGV2ZW50LnBvc2l0aW9uLng7CisgICAgd3BlRXZlbnQueSA9IGV2ZW50
LnBvc2l0aW9uLnk7CisgICAgd3BlRXZlbnQuc3RhdGUgPSAwOworICAgIHdwZUV2ZW50Lm1vZGlm
aWVycyA9IDA7IC8vIFRPRE86IEhhbmRsZSBtb2RpZmllcnMuCisKKyAgICBjb25zdCBmbG9hdCBk
ZXZpY2VTY2FsZUZhY3RvciA9IDE7CisKKyAgICB0b0ltcGwodmlldyktPmhhbmRsZU1vdXNlRXZl
bnQoTmF0aXZlV2ViTW91c2VFdmVudCgmd3BlRXZlbnQsIGRldmljZVNjYWxlRmFjdG9yKSk7Cit9
CisKK3ZvaWQgV0tWaWV3SGFuZGxlV2hlZWxFdmVudChXS1ZpZXdSZWYgdmlldywgV0tXaGVlbEV2
ZW50IGV2ZW50KQoreworICAgIHdwZV9pbnB1dF9heGlzXzJkX2V2ZW50IHdwZUV2ZW50OworICAg
IHdwZUV2ZW50LmJhc2UudHlwZSA9ICh3cGVfaW5wdXRfYXhpc19ldmVudF90eXBlKSh3cGVfaW5w
dXRfYXhpc19ldmVudF90eXBlX21vdGlvbl9zbW9vdGggfCB3cGVfaW5wdXRfYXhpc19ldmVudF90
eXBlX21hc2tfMmQpOworICAgIHdwZUV2ZW50LmJhc2UudGltZSA9IDA7CisgICAgd3BlRXZlbnQu
YmFzZS54ID0gZXZlbnQucG9zaXRpb24ueDsKKyAgICB3cGVFdmVudC5iYXNlLnkgPSBldmVudC5w
b3NpdGlvbi55OworICAgIHdwZUV2ZW50LmJhc2UuYXhpcyA9IDA7CisgICAgd3BlRXZlbnQuYmFz
ZS52YWx1ZSA9IDA7CisgICAgd3BlRXZlbnQuYmFzZS5tb2RpZmllcnMgPSAwOyAvLyBUT0RPOiBI
YW5kbGUgbW9kaWZpZXJzLgorICAgIHdwZUV2ZW50LnhfYXhpcyA9IGV2ZW50LmRlbHRhLndpZHRo
OworICAgIHdwZUV2ZW50LnhfYXhpcyA9IGV2ZW50LmRlbHRhLmhlaWdodDsKKworICAgIGNvbnN0
IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMTsKKworICAgIHRvSW1wbCh2aWV3KS0+aGFuZGxl
V2hlZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KCZ3cGVFdmVudC5iYXNlLCBkZXZpY2VTY2Fs
ZUZhY3RvciwgV2ViV2hlZWxFdmVudDo6UGhhc2U6OlBoYXNlTm9uZSwgV2ViV2hlZWxFdmVudDo6
UGhhc2U6OlBoYXNlTm9uZSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvcGxheXN0YXRpb24vV0tWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9wbGF5c3RhdGlvbi9XS1ZpZXcuaAppbmRleCAzMjQ2NzNiMjk0MWY3M2VlOTRiMjI1MzA4
M2QzMWQwMTg0NjUzODdhLi5iOTdjYTk1MDcyNWQ2N2EyMDk2ZjNhMzQxM2M3YTI5OWExZGRjMGMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9X
S1ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9X
S1ZpZXcuaApAQCAtMjcsMTEgKzI3LDIxIEBACiAjZGVmaW5lIFdLVmlld19oCiAKICNpbmNsdWRl
IDxXZWJLaXQvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLRXZlbnRQbGF5U3RhdGlvbi5o
PgogCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKK1dLX0VYUE9S
VCBXS1ZpZXdSZWYgV0tWaWV3Q3JlYXRlKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJh
dGlvbik7CitXS19FWFBPUlQgV0tQYWdlUmVmIFdLVmlld0dldFBhZ2UoV0tWaWV3UmVmIHZpZXcp
OworCitXS19FWFBPUlQgdm9pZCBXS1ZpZXdTZXRTaXplKFdLVmlld1JlZiB2aWV3LCBXS1NpemUg
c2l6ZSk7CisKK1dLX0VYUE9SVCB2b2lkIFdLVmlld0hhbmRsZUtleWJvYXJkRXZlbnQoV0tWaWV3
UmVmIHZpZXcsIFdLS2V5Ym9hcmRFdmVudCk7CitXS19FWFBPUlQgdm9pZCBXS1ZpZXdIYW5kbGVN
b3VzZUV2ZW50KFdLVmlld1JlZiB2aWV3LCBXS01vdXNlRXZlbnQpOworV0tfRVhQT1JUIHZvaWQg
V0tWaWV3SGFuZGxlV2hlZWxFdmVudChXS1ZpZXdSZWYgdmlldywgV0tXaGVlbEV2ZW50KTsKKwog
I2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9wbGF5c3RhdGlvbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9wbGF5c3RhdGlvbi9XZWJWaWV3LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MTVhMzc3MTdm
YjQxZDYxY2M0YWUzNDliYWU3NzQ1MTQ0OWFkYmY4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL3BsYXlzdGF0aW9uL1dlYlZpZXcuY3BwCkBAIC0wLDAgKzEs
MzM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0
YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJWaWV3LmgiCisKKyNpbmNsdWRlICJBUElQYWdlQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUg
IkRyYXdpbmdBcmVhUHJveHkuaCIKKyNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0
ZWRHcmFwaGljcy5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYktleWJvYXJkRXZlbnQuaCIKKyNpbmNs
dWRlICJOYXRpdmVXZWJNb3VzZUV2ZW50LmgiCisjaW5jbHVkZSAiTmF0aXZlV2ViV2hlZWxFdmVu
dC5oIgorI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgorI2luY2x1ZGUgIldlYlByb2Nlc3NQb29s
LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9BY3Rpdml0eVN0YXRlLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9ET01QYXN0ZUFjY2Vzcy5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0V2ZW50UGxheVN0YXRpb24u
aD4KKyNpbmNsdWRlIDxjYWlyby5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1JlZlB0cjxXZWJWaWV3PiBXZWJWaWV3OjpjcmVhdGUoY29uc3Qg
QVBJOjpQYWdlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJWaWV3KGNvbmZpZ3VyYXRpb24pKTsKK30KKworV2ViVmlldzo6V2ViVmll
dyhjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBjb25mKQoreworICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IGNvbmYuY29weSgpOworICAgIGF1dG8qIHBvb2wgPSBjb25maWd1cmF0aW9uLT5w
cm9jZXNzUG9vbCgpOworICAgIG1fcGFnZVByb3h5ID0gcG9vbC0+Y3JlYXRlV2ViUGFnZSgqdGhp
cywgV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CisKKyAgICBtX3BhZ2VQcm94eS0+aW5pdGlhbGl6
ZVdlYlBhZ2UoKTsKK30KKworV2ViVmlldzo6fldlYlZpZXcoKQoreworfQorCit2b2lkIFdlYlZp
ZXc6OnNldFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKK3sKK30KKwordm9pZCBX
ZWJWaWV3OjpoYW5kbGVLZXlib2FyZEV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQm
IGV2ZW50KQoreworICAgIG1fcGFnZVByb3h5LT5oYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50KTsK
K30KKwordm9pZCBXZWJWaWV3OjpoYW5kbGVNb3VzZUV2ZW50KGNvbnN0IE5hdGl2ZVdlYk1vdXNl
RXZlbnQmIGV2ZW50KQoreworICAgIG1fcGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KGV2ZW50
KTsKK30KKwordm9pZCBXZWJWaWV3OjpoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IE5hdGl2ZVdlYldo
ZWVsRXZlbnQmIGV2ZW50KQoreworICAgIG1fcGFnZVByb3h5LT5oYW5kbGVXaGVlbEV2ZW50KGV2
ZW50KTsKK30KKworc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+IFdlYlZpZXc6OmNy
ZWF0ZURyYXdpbmdBcmVhUHJveHkoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzUHJveHkpCit7Cisg
ICAgcmV0dXJuIFdURjo6bWFrZVVuaXF1ZTxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFw
aGljcz4ocGFnZSgpLCBwcm9jZXNzUHJveHkpOworfQorCit2b2lkIFdlYlZpZXc6OnNldFZpZXdO
ZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6UmVnaW9uJiByZWdpb24pCit7Cit9CisKK3ZvaWQg
V2ViVmlldzo6cmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBzY3JvbGxQ
b3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNjcm9sbE9yaWdpbikKK3sKK30KKwor
V2ViQ29yZTo6RmxvYXRQb2ludCBXZWJWaWV3Ojp2aWV3U2Nyb2xsUG9zaXRpb24oKQoreworICAg
IHJldHVybiBXZWJDb3JlOjpGbG9hdFBvaW50IHsgfTsKK30KKworV2ViQ29yZTo6SW50U2l6ZSBX
ZWJWaWV3Ojp2aWV3U2l6ZSgpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OkludFNpemUgeyB9Owor
fQorCitib29sIFdlYlZpZXc6OmlzVmlld1dpbmRvd0FjdGl2ZSgpCit7CisgICAgcmV0dXJuIG1f
YWN0aXZlOworfQorCitib29sIFdlYlZpZXc6OmlzVmlld0ZvY3VzZWQoKQoreworICAgIHJldHVy
biBtX2ZvY3VzZWQ7Cit9CisKK2Jvb2wgV2ViVmlldzo6aXNWaWV3VmlzaWJsZSgpCit7CisgICAg
cmV0dXJuIG1fdmlzaWJsZTsKK30KKworYm9vbCBXZWJWaWV3Ojppc1ZpZXdJbldpbmRvdygpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBXZWJW
aWV3Ojpwcm9jZXNzRGlkRXhpdCgpCit7Cit9CisKK3ZvaWQgV2ViVmlldzo6ZGlkUmVsYXVuY2hQ
cm9jZXNzKCkKK3sKK30KK3ZvaWQgV2ViVmlldzo6cGFnZUNsb3NlZCgpCit7Cit9CisKK3ZvaWQg
V2ViVmlldzo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQoreworfQorCit2b2lkIFdlYlZpZXc6OnRv
b2xUaXBDaGFuZ2VkKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpCit7Cit9CisKK3ZvaWQg
V2ViVmlldzo6ZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBib29sIHVzZUN1c3RvbUNvbnRlbnRQcm92aWRlcikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworfQorCit2b2lkIFdlYlZpZXc6OmhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5
JikKK3sKK30KKwordm9pZCBXZWJWaWV3OjpkaWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBzaXplKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
V2ViVmlldzo6c2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYgY3Vyc29yKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgV2ViVmlldzo6c2V0Q3Vyc29ySGlkZGVuVW50
aWxNb3VzZU1vdmVzKGJvb2wpCit7Cit9CisKK3ZvaWQgV2ViVmlldzo6ZGlkQ2hhbmdlVmlld3Bv
cnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYgYXR0cmlidXRl
cykKK3sKK30KKwordm9pZCBXZWJWaWV3OjpyZWdpc3RlckVkaXRDb21tYW5kKFJlZjxXZWJFZGl0
Q29tbWFuZFByb3h5PiYmLCBVbmRvT3JSZWRvKQoreworfQorCit2b2lkIFdlYlZpZXc6OmNsZWFy
QWxsRWRpdENvbW1hbmRzKCkKK3sKK30KKworYm9vbCBXZWJWaWV3OjpjYW5VbmRvUmVkbyhVbmRv
T3JSZWRvKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBXZWJWaWV3OjpleGVjdXRl
VW5kb1JlZG8oVW5kb09yUmVkbykKK3sKK30KKwordm9pZCBXZWJWaWV3Ojp3aGVlbEV2ZW50V2Fz
Tm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JikKK3sKK30KKwor
V2ViQ29yZTo6RmxvYXRSZWN0IFdlYlZpZXc6OmNvbnZlcnRUb0RldmljZVNwYWNlKGNvbnN0IFdl
YkNvcmU6OkZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICByZXR1cm4gcmVjdDsKK30KKworV2ViQ29y
ZTo6RmxvYXRSZWN0IFdlYlZpZXc6OmNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBXZWJDb3JlOjpG
bG9hdFJlY3QmIHJlY3QpCit7CisgICAgcmV0dXJuIHJlY3Q7Cit9CisKK1dlYkNvcmU6OkludFBv
aW50IFdlYlZpZXc6OnNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBv
aW50KQoreworICAgIHJldHVybiBwb2ludDsKK30KKworV2ViQ29yZTo6SW50UmVjdCBXZWJWaWV3
Ojpyb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QpCit7CisgICAg
cmV0dXJuIHJlY3Q7Cit9CisKK1dlYkNvcmU6OkludFBvaW50IFdlYlZpZXc6OmFjY2Vzc2liaWxp
dHlTY3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCkKK3sKKyAg
ICByZXR1cm4gc2NyZWVuVG9Sb290Vmlldyhwb2ludCk7Cit9CisKK1dlYkNvcmU6OkludFJlY3Qg
V2ViVmlldzo6cm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgcmVjdCkKK3sKKyAgICByZXR1cm4gcm9vdFZpZXdUb1NjcmVlbihyZWN0KTsgICAgCit9
CisKK3ZvaWQgV2ViVmlldzo6ZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50JiBldmVudCwgYm9vbCB3YXNFdmVudEhhbmRsZWQpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKworUmVmUHRyPFdlYlBvcHVwTWVudVByb3h5PiBXZWJWaWV3OjpjcmVhdGVQb3B1
cE1lbnVQcm94eShXZWJQYWdlUHJveHkmICBwYWdlUHJveHkpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4geyB9OworfQorCit2b2lkIFdlYlZpZXc6OmVudGVyQWNjZWxlcmF0
ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFdlYlZpZXc6OmV4aXRBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJW
aWV3Ojp1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250
ZXh0JikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCisjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQorV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCYgV2ViVmlldzo6ZnVsbFNj
cmVlbk1hbmFnZXJQcm94eUNsaWVudCgpCit7CisgICAgcmV0dXJuICooV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eUNsaWVudCopdGhpczsKK30KKyNlbmRpZgorCisvLyBDdXN0b20gcmVwcmVzZW50
YXRpb25zLgordm9pZCBXZWJWaWV3OjpkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRl
bnRQcm92aWRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmKQoreworfQorCit2b2lkIFdlYlZpZXc6Om5hdmlnYXRpb25HZXN0dXJlRGlk
QmVnaW4oKQoreworfQorCit2b2lkIFdlYlZpZXc6Om5hdmlnYXRpb25HZXN0dXJlV2lsbEVuZChi
b29sIHdpbGxOYXZpZ2F0ZSwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpCit7Cit9CisKK3ZvaWQg
V2ViVmlldzo6bmF2aWdhdGlvbkdlc3R1cmVEaWRFbmQoYm9vbCB3aWxsTmF2aWdhdGUsIFdlYkJh
Y2tGb3J3YXJkTGlzdEl0ZW0mKQoreworfQorCit2b2lkIFdlYlZpZXc6Om5hdmlnYXRpb25HZXN0
dXJlRGlkRW5kKCkKK3sKK30KKwordm9pZCBXZWJWaWV3Ojp3aWxsUmVjb3JkTmF2aWdhdGlvblNu
YXBzaG90KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKQoreworfQorCit2b2lkIFdlYlZpZXc6OmRp
ZFJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3QoKQoreworfQorCit2b2lkIFdlYlZpZXc6
OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvck1haW5GcmFtZSgpCit7Cit9CisKK3Zv
aWQgV2ViVmlldzo6ZGlkRmluaXNoTG9hZEZvck1haW5GcmFtZSgpCit7Cit9CisKK3ZvaWQgV2Vi
Vmlldzo6ZGlkRmFpbExvYWRGb3JNYWluRnJhbWUoKQoreworfQorCit2b2lkIFdlYlZpZXc6OmRp
ZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JNYWluRnJhbWUoU2FtZURvY3VtZW50TmF2aWdhdGlv
blR5cGUpCit7Cit9CisKK3ZvaWQgV2ViVmlldzo6ZGlkQ2hhbmdlQmFja2dyb3VuZENvbG9yKCkK
K3sKK30KKwordm9pZCBXZWJWaWV3Ojppc1BsYXlpbmdBdWRpb1dpbGxDaGFuZ2UoKQoreworfQor
Cit2b2lkIFdlYlZpZXc6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCkKK3sKK30KKwordm9pZCBX
ZWJWaWV3OjpyZWZWaWV3KCkKK3sKK30KKwordm9pZCBXZWJWaWV3OjpkZXJlZlZpZXcoKQorewor
fQorCit2b2lkIFdlYlZpZXc6OmRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpCit7Cit9CisKK1dl
YkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24gV2ViVmlldzo6dXNlckludGVyZmFj
ZUxheW91dERpcmVjdGlvbigpCit7CisgICAgcmV0dXJuIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VM
YXlvdXREaXJlY3Rpb246OkxUUjsKK30KKwordm9pZCBXZWJWaWV3OjpyZXF1ZXN0RE9NUGFzdGVB
Y2Nlc3MoY29uc3QgSW50UmVjdCYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25zZSk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNwb25z
ZTo6RGVuaWVkRm9yR2VzdHVyZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL3BsYXlzdGF0aW9uL1dlYlZpZXcuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9wbGF5c3RhdGlvbi9XZWJWaWV3LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uY2Q5MWMxZWU1NjFiYzNmMzZmODVmODFmYTA2NzBjNjRlMjU1MmEyNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9wbGF5c3RhdGlvbi9XZWJWaWV3
LmgKQEAgLTAsMCArMSwxODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRl
cmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCisjaW5jbHVkZSAi
UGFnZUxvYWRTdGF0ZS5oIgorI2luY2x1ZGUgIldLVmlldy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eS5oIgorI2luY2x1ZGUgPFdlYktpdC9XS0V2ZW50UGxheVN0YXRpb24uaD4KKworI2lmIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkKKyNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
LmgiCisjZW5kaWYKKworbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBWaWV3Q2xpZW50OworY2xhc3Mg
Vmlld1BvcHVwTWVudUNsaWVudDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIENv
b3JkaW5hdGVkR3JhcGhpY3NTY2VuZTsKK2NsYXNzIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ7Citj
bGFzcyBOYXRpdmVXZWJNb3VzZUV2ZW50OworY2xhc3MgTmF0aXZlV2ViV2hlZWxFdmVudDsKK2Ns
YXNzIFdlYlBvcHVwTWVudVByb3h5UGxheVN0YXRpb247CitzdHJ1Y3QgV2ViUG9wdXBJdGVtOwor
CitjbGFzcyBXZWJWaWV3IDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlw
ZTo6Vmlldz4KKyAgICAsIHB1YmxpYyBQYWdlQ2xpZW50CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQorICAgICwgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudAorI2VuZGlmCit7Cisg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFJlZlB0cjxX
ZWJWaWV3PiBjcmVhdGUoY29uc3QgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiYpOworICAgIHZpcnR1
YWwgfldlYlZpZXcoKTsKKworICAgIFdlYlBhZ2VQcm94eSYgcGFnZSgpIHsgcmV0dXJuICptX3Bh
Z2VQcm94eTsgfQorCisgICAgdm9pZCBzZXRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsK
KworICAgIHZvaWQgaGFuZGxlS2V5Ym9hcmRFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2FyZEV2
ZW50Jik7CisgICAgdm9pZCBoYW5kbGVNb3VzZUV2ZW50KGNvbnN0IE5hdGl2ZVdlYk1vdXNlRXZl
bnQmKTsKKyAgICB2b2lkIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVu
dCYpOworCitwcml2YXRlOgorICAgIFdlYlZpZXcoY29uc3QgQVBJOjpQYWdlQ29uZmlndXJhdGlv
biYpOworCisgICAgLy8gQ3JlYXRlIGEgbmV3IGRyYXdpbmcgYXJlYSBwcm94eSBmb3IgdGhlIGdp
dmVuIHBhZ2UuCisgICAgc3RkOjp1bmlxdWVfcHRyPERyYXdpbmdBcmVhUHJveHk+IGNyZWF0ZURy
YXdpbmdBcmVhUHJveHkoV2ViUHJvY2Vzc1Byb3h5Jikgb3ZlcnJpZGU7CisKKyAgICAvLyBUZWxs
IHRoZSB2aWV3IHRvIGludmFsaWRhdGUgdGhlIGdpdmVuIHJlZ2lvbi4gVGhlIHJlZ2lvbiBpcyBp
biB2aWV3IGNvb3JkaW5hdGVzLgorICAgIHZvaWQgc2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBX
ZWJDb3JlOjpSZWdpb24mKSBvdmVycmlkZTsKKworICAgIC8vIFRlbGwgdGhlIHZpZXcgdG8gc2Ny
b2xsIHRvIHRoZSBnaXZlbiBwb3NpdGlvbiwgYW5kIHdoZXRoZXIgdGhpcyB3YXMgYSBwcm9ncmFt
bWF0aWMgc2Nyb2xsLgorICAgIHZvaWQgcmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpGbG9h
dFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHNjcm9sbE9y
aWdpbikgb3ZlcnJpZGU7CisKKyAgICAvLyBSZXR1cm4gdGhlIGN1cnJlbnQgc2Nyb2xsIHBvc2l0
aW9uIChub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgYXMgdGhlIFdlYkNvcmUgc2Nyb2xsIHBvc2l0
aW9uLCBiZWNhdXNlIG9mIHNjYWxpbmcsIGluc2V0cyBldGMuKQorICAgIFdlYkNvcmU6OkZsb2F0
UG9pbnQgdmlld1Njcm9sbFBvc2l0aW9uKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBSZXR1cm4gdGhl
IHNpemUgb2YgdGhlIHZpZXcgdGhlIHBhZ2UgaXMgYXNzb2NpYXRlZCB3aXRoLgorICAgIFdlYkNv
cmU6OkludFNpemUgdmlld1NpemUoKSBvdmVycmlkZTsKKworICAgIC8vIFJldHVybiB3aGV0aGVy
IHRoZSB2aWV3J3MgY29udGFpbmluZyB3aW5kb3cgaXMgYWN0aXZlLgorICAgIGJvb2wgaXNWaWV3
V2luZG93QWN0aXZlKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBSZXR1cm4gd2hldGhlciB0aGUgdmll
dyBpcyBmb2N1c2VkLgorICAgIGJvb2wgaXNWaWV3Rm9jdXNlZCgpIG92ZXJyaWRlOworCisgICAg
Ly8gUmV0dXJuIHdoZXRoZXIgdGhlIHZpZXcgaXMgdmlzaWJsZS4KKyAgICBib29sIGlzVmlld1Zp
c2libGUoKSBvdmVycmlkZTsKKworICAgIC8vIFJldHVybiB3aGV0aGVyIHRoZSB2aWV3IGlzIGlu
IGEgd2luZG93LgorICAgIGJvb2wgaXNWaWV3SW5XaW5kb3coKSBvdmVycmlkZTsKKworICAgIHZv
aWQgcHJvY2Vzc0RpZEV4aXQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZFJlbGF1bmNoUHJvY2Vz
cygpIG92ZXJyaWRlOworICAgIHZvaWQgcGFnZUNsb3NlZCgpIG92ZXJyaWRlOworCisgICAgdm9p
ZCBwcmVmZXJlbmNlc0RpZENoYW5nZSgpIG92ZXJyaWRlOworCisgICAgdm9pZCB0b29sVGlwQ2hh
bmdlZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKworICAgIHZvaWQg
ZGlkQ29tbWl0TG9hZEZvck1haW5GcmFtZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBib29sIHVz
ZUN1c3RvbUNvbnRlbnRQcm92aWRlcikgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGhhbmRsZURvd25s
b2FkUmVxdWVzdChEb3dubG9hZFByb3h5Jikgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGRpZENoYW5n
ZUNvbnRlbnRTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKSBvdmVycmlkZTsKKworICAgIHZv
aWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYpIG92ZXJyaWRlOworICAgIHZvaWQg
c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wpIG92ZXJyaWRlOworICAgIHZvaWQg
ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmli
dXRlcyYpIG92ZXJyaWRlOworCisgICAgdm9pZCByZWdpc3RlckVkaXRDb21tYW5kKFJlZjxXZWJF
ZGl0Q29tbWFuZFByb3h5PiYmLCBVbmRvT3JSZWRvKSBvdmVycmlkZTsKKyAgICB2b2lkIGNsZWFy
QWxsRWRpdENvbW1hbmRzKCkgb3ZlcnJpZGU7CisgICAgYm9vbCBjYW5VbmRvUmVkbyhVbmRvT3JS
ZWRvKSBvdmVycmlkZTsKKyAgICB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhVbmRvT3JSZWRvKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHdoZWVsRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNvbnN0IE5h
dGl2ZVdlYldoZWVsRXZlbnQmKSBvdmVycmlkZTsKKworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBj
b252ZXJ0VG9EZXZpY2VTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsK
KyAgICBXZWJDb3JlOjpGbG9hdFJlY3QgY29udmVydFRvVXNlclNwYWNlKGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblRvUm9v
dFZpZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpJ
bnRSZWN0IHJvb3RWaWV3VG9TY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpIG92ZXJyaWRl
OworICAgIFdlYkNvcmU6OkludFBvaW50IGFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KGNv
bnN0IFdlYkNvcmU6OkludFBvaW50Jikgb3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6SW50UmVjdCBy
b290Vmlld1RvQWNjZXNzaWJpbGl0eVNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikgb3Zl
cnJpZGU7CisKKyAgICB2b2lkIGRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9h
cmRFdmVudCYsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKSBvdmVycmlkZTsKKworICAgIFJlZlB0cjxX
ZWJQb3B1cE1lbnVQcm94eT4gY3JlYXRlUG9wdXBNZW51UHJveHkoV2ViUGFnZVByb3h5Jikgb3Zl
cnJpZGU7CisKKyAgICB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3Qg
TGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRlOworICAgIHZvaWQgZXhpdEFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdNb2RlKCkgb3ZlcnJpZGU7CisgICAgdm9pZCB1cGRhdGVBY2NlbGVyYXRlZENvbXBv
c2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJpZGU7CisKKyAgICAvLyBB
dXhpbGlhcnkgQ2xpZW50IENyZWF0aW9uCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAg
IFdlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlDbGllbnQmIGZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlD
bGllbnQoKSBvdmVycmlkZTsKKyNlbmRpZgorCisgICAgLy8gQ3VzdG9tIHJlcHJlc2VudGF0aW9u
cy4KKyAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdEYXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVy
KGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5j
ZSYpIG92ZXJyaWRlOworCisgICAgdm9pZCBuYXZpZ2F0aW9uR2VzdHVyZURpZEJlZ2luKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBuYXZpZ2F0aW9uR2VzdHVyZVdpbGxFbmQoYm9vbCB3aWxsTmF2aWdh
dGUsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKSBvdmVycmlkZTsKKyAgICB2b2lkIG5hdmlnYXRp
b25HZXN0dXJlRGlkRW5kKGJvb2wgd2lsbE5hdmlnYXRlLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVt
Jikgb3ZlcnJpZGU7CisgICAgdm9pZCBuYXZpZ2F0aW9uR2VzdHVyZURpZEVuZCgpIG92ZXJyaWRl
OworICAgIHZvaWQgd2lsbFJlY29yZE5hdmlnYXRpb25TbmFwc2hvdChXZWJCYWNrRm9yd2FyZExp
c3RJdGVtJikgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNu
YXBzaG90KCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dEZvck1haW5GcmFtZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRmluaXNoTG9hZEZvck1h
aW5GcmFtZSgpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkRmFpbExvYWRGb3JNYWluRnJhbWUoKSBv
dmVycmlkZTsKKyAgICB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JNYWluRnJhbWUo
U2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUpIG92ZXJyaWRlOworCisgICAgdm9pZCBkaWRDaGFu
Z2VCYWNrZ3JvdW5kQ29sb3IoKSBvdmVycmlkZTsKKyAgICB2b2lkIGlzUGxheWluZ0F1ZGlvV2ls
bENoYW5nZSgpIG92ZXJyaWRlOworICAgIHZvaWQgaXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKSBv
dmVycmlkZTsKKworICAgIHZvaWQgcmVmVmlldygpIG92ZXJyaWRlOworICAgIHZvaWQgZGVyZWZW
aWV3KCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIGRpZFJlc3RvcmVTY3JvbGxQb3NpdGlvbigpIG92
ZXJyaWRlOworCisgICAgV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbiB1c2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHJlcXVlc3RE
T01QYXN0ZUFjY2Vzcyhjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgY29uc3QgU3RyaW5nJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpET01QYXN0ZUFjY2Vzc1Jlc3BvbnNlKT4mJikg
ZmluYWw7CisKKyAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBtX3BhZ2VQcm94eTsKKworICAgIGJv
b2wgbV9mb2N1c2VkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fYWN0aXZlIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1fdmlzaWJsZSB7IGZhbHNlIH07CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQor
ICAgIGJvb2wgbV9pc0Z1bGxTY3JlZW4geyBmYWxzZSB9OworI2VuZGlmCisKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1
bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hl
ci9Qcm9jZXNzTGF1bmNoZXIuaAppbmRleCA3NmE5MDRiNmMzZDk1ZTkyMDZkMDkxNzcwNmQ2NzJk
OGQ3MTYyMWZjLi4yMjUxMDkzM2VmMGM2MzYxMjdiMjE2OWU3OTdlMjA3MmJkZmJlMDc2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIu
aApAQCAtODQsNiArODQsMTEgQEAgcHVibGljOgogI2lmIEVOQUJMRShERVZFTE9QRVJfTU9ERSkK
ICAgICAgICAgU3RyaW5nIHByb2Nlc3NDbWRQcmVmaXg7CiAjZW5kaWYKKyNlbmRpZgorCisjaWYg
UExBVEZPUk0oUExBWVNUQVRJT04pCisgICAgICAgIFN0cmluZyBwcm9jZXNzUGF0aDsKKyAgICAg
ICAgaW50MzJfdCB1c2VySWQgeyAtMSB9OwogI2VuZGlmCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvcGxheXN0YXRpb24vUHJvY2Vzc0xhdW5j
aGVyUGxheVN0YXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvcGxh
eXN0YXRpb24vUHJvY2Vzc0xhdW5jaGVyUGxheVN0YXRpb24uY3BwCmluZGV4IDU0ZTYxMGRjZmM0
YTcyNzlmMTdhYmE3ZGVkMWQwYjgzZTI3OGQ5MWEuLmJlYjA3OTUzYTFiOGEyNWIzMjhhN2ZiM2Vi
NWM2OTI4NGI2NTY2Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5j
aGVyL3BsYXlzdGF0aW9uL1Byb2Nlc3NMYXVuY2hlclBsYXlTdGF0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9wbGF5c3RhdGlvbi9Qcm9jZXNzTGF1bmNoZXJQ
bGF5U3RhdGlvbi5jcHAKQEAgLTI5LDE4ICsyOSw4MCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgogCisjaW5jbHVkZSA8cHJvY2Vzcy1sYXVuY2hl
ci5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKKyNkZWZpbmUgTUFLRV9QUk9DRVNTX1BBVEgoeCkgIi9hcHAwLyIg
I3ggIlByb2Nlc3Muc2VsZiIKK3N0YXRpYyBjb25zdCBjaGFyKiBkZWZhdWx0UHJvY2Vzc1BhdGgo
UHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlwZSBwcm9jZXNzVHlwZSkKK3sKKyAgICBzd2l0Y2gg
KHByb2Nlc3NUeXBlKSB7CisgICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6OlByb2Nlc3NUeXBlOjpO
ZXR3b3JrOgorICAgICAgICByZXR1cm4gTUFLRV9QUk9DRVNTX1BBVEgoTmV0d29yayk7CisjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIGNhc2UgUHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlw
ZTo6R1BVOgorICAgICAgICByZXR1cm4gTUFLRV9QUk9DRVNTX1BBVEgoR1BVKTsKKyNlbmRpZgor
ICAgIGNhc2UgUHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlwZTo6V2ViOgorICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiBNQUtFX1BST0NFU1NfUEFUSChXZWIpOworICAgIH0KK30KKwogdm9p
ZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogeworICAgIElQQzo6Q29ubmVjdGlv
bjo6SWRlbnRpZmllciBzZXJ2ZXJJZGVudGlmaWVyOworICAgIElQQzo6Q29ubmVjdGlvbjo6U29j
a2V0UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVQbGF0Zm9ybUNvbm5l
Y3Rpb24oSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uT3B0aW9uczo6U2V0Q2xvZXhlY09uU2Vy
dmVyKTsKKworICAgIGludCBzZW5kQnVmU2l6ZSA9IDMyICogMTAyNDsKKyAgICBzZXRzb2Nrb3B0
KHNvY2tldFBhaXIuc2VydmVyLCBTT0xfU09DS0VULCBTT19TTkRCVUYsICZzZW5kQnVmU2l6ZSwg
NCk7CisgICAgc2V0c29ja29wdChzb2NrZXRQYWlyLmNsaWVudCwgU09MX1NPQ0tFVCwgU09fU05E
QlVGLCAmc2VuZEJ1ZlNpemUsIDQpOworCisgICAgaW50IHJlY3ZCdWZTaXplID0gMzIgKiAxMDI0
OworICAgIHNldHNvY2tvcHQoc29ja2V0UGFpci5zZXJ2ZXIsIFNPTF9TT0NLRVQsIFNPX1JDVkJV
RiwgJnJlY3ZCdWZTaXplLCA0KTsKKyAgICBzZXRzb2Nrb3B0KHNvY2tldFBhaXIuY2xpZW50LCBT
T0xfU09DS0VULCBTT19SQ1ZCVUYsICZyZWN2QnVmU2l6ZSwgNCk7CisKKyAgICBjaGFyIGNvcmVQ
cm9jZXNzSWRlbnRpZmllclN0cmluZ1sxNl07CisgICAgc25wcmludGYoY29yZVByb2Nlc3NJZGVu
dGlmaWVyU3RyaW5nLCBzaXplb2YgY29yZVByb2Nlc3NJZGVudGlmaWVyU3RyaW5nLCAiJWxkIiwg
bV9sYXVuY2hPcHRpb25zLnByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0KCkpOworCisgICAgY2hh
ciogYXJndltdID0geworICAgICAgICBjb3JlUHJvY2Vzc0lkZW50aWZpZXJTdHJpbmcsCisgICAg
ICAgIG51bGxwdHIKKyAgICB9OworCisgICAgUGxheVN0YXRpb246OkxhdW5jaFBhcmFtIHBhcmFt
IHsgc29ja2V0UGFpci5jbGllbnQsIG1fbGF1bmNoT3B0aW9ucy51c2VySWQgfTsKKyAgICBpbnQz
Ml90IGFwcExvY2FsUGlkID0gUGxheVN0YXRpb246OmxhdW5jaFByb2Nlc3MoCisgICAgICAgICFt
X2xhdW5jaE9wdGlvbnMucHJvY2Vzc1BhdGguaXNFbXB0eSgpID8gbV9sYXVuY2hPcHRpb25zLnBy
b2Nlc3NQYXRoLnV0ZjgoKS5kYXRhKCkgOiBkZWZhdWx0UHJvY2Vzc1BhdGgobV9sYXVuY2hPcHRp
b25zLnByb2Nlc3NUeXBlKSwKKyAgICAgICAgYXJndiwgcGFyYW0pOworICAgIGlmIChhcHBMb2Nh
bFBpZCA8IDApIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFp
bGVkIHRvIGxhdW5jaCBwcm9jZXNzLiBlcnI9MHglMDh4IHBhdGg9JXNcbiIsIGFwcExvY2FsUGlk
LCBtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1BhdGgudXRmOCgpLmRhdGEoKSk7CisjZW5kaWYKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjbG9zZShzb2NrZXRQYWlyLmNsaWVudCk7CisgICAg
c2VydmVySWRlbnRpZmllciA9IHNvY2tldFBhaXIuc2VydmVyOworCisgICAgLy8gV2UndmUgZmlu
aXNoZWQgbGF1bmNoaW5nIHRoZSBwcm9jZXNzLCBtZXNzYWdlIGJhY2sgdG8gdGhlIG1haW4gcnVu
IGxvb3AuCisgICAgUmVmUHRyPFByb2Nlc3NMYXVuY2hlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
KyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goWz1dIHsKKyAgICAgICAgcHJvdGVjdGVkVGhp
cy0+ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcyhhcHBMb2NhbFBpZCwgc2VydmVySWRlbnRpZmll
cik7CisgICAgfSk7CiB9CiAKIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjp0ZXJtaW5hdGVQcm9jZXNz
KCkKIHsKKyAgICBpZiAoIW1fcHJvY2Vzc0lkZW50aWZpZXIpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFBsYXlTdGF0aW9uOjp0ZXJtaW5hdGVQcm9jZXNzKG1fcHJvY2Vzc0lkZW50aWZpZXIpOwog
fQogCiB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6cGxhdGZvcm1JbnZhbGlkYXRlKCkKIHsKKyAgICBt
X3Byb2Nlc3NJZGVudGlmaWVyID0gMDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1By
b3h5LmNwcAppbmRleCAzNmY3YzQ1ZjBiZGFhNTJiNWQ4ZjExMDJhYTM4YjZlNzlhNWQ2ODQwLi41
ZTk4Mjk0NzAyOWVlNzVjN2QzNWNiZTc2MTE0MTMzMTM2ZWJkZmY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAK
QEAgLTEwOSw2ICsxMDksMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hP
cHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmMKICAgICAgICAgcHJv
Y2Vzc1Bvb2woKS5zZXRTaG91bGRNYWtlTmV4dE5ldHdvcmtQcm9jZXNzTGF1bmNoRmFpbEZvclRl
c3RpbmcoZmFsc2UpOwogICAgICAgICBsYXVuY2hPcHRpb25zLnNob3VsZE1ha2VQcm9jZXNzTGF1
bmNoRmFpbEZvclRlc3RpbmcgPSB0cnVlOwogICAgIH0KKworI2lmIFBMQVRGT1JNKFBMQVlTVEFU
SU9OKQorICAgIGxhdW5jaE9wdGlvbnMucHJvY2Vzc1BhdGggPSBtX3Byb2Nlc3NQb29sLm5ldHdv
cmtQcm9jZXNzUGF0aCgpOworICAgIGxhdW5jaE9wdGlvbnMudXNlcklkID0gbV9wcm9jZXNzUG9v
bC51c2VySWQoKTsKKyNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmNvbm5l
Y3Rpb25XaWxsT3BlbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCAxOTM4ZjVhMGFmZThmY2JmOThjNjNlMWU1
MTAyYWVhYjc3YzNjY2UwLi5jMTZiMjI5MWU2ZDk2ZDdhYTE4ZjA1YzNhOTZlNjNkMjBkNWQzNGFm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTUzNiw2ICs1
MzYsMTIgQEAgcHVibGljOgogICAgIHZvaWQgbm90aWZ5UHJlZmVyZW5jZXNDaGFuZ2VkKGNvbnN0
IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgT3B0aW9uYWw8U3RyaW5n
PiYgZW5jb2RlZFZhbHVlKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oUExBWVNUQVRJT04pCisg
ICAgY29uc3QgU3RyaW5nJiB3ZWJQcm9jZXNzUGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2
ZWRQYXRocy53ZWJQcm9jZXNzUGF0aDsgfQorICAgIGNvbnN0IFN0cmluZyYgbmV0d29ya1Byb2Nl
c3NQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZFBhdGhzLm5ldHdvcmtQcm9jZXNzUGF0
aDsgfQorICAgIGludDMyX3QgdXNlcklkKCkgY29uc3QgeyByZXR1cm4gbV91c2VySWQ7IH0KKyNl
bmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKCk7CiAKQEAgLTc2
Myw2ICs3NjksMTEgQEAgcHJpdmF0ZToKICAgICAgICAgU3RyaW5nIGNvbnRhaW5lclRlbXBvcmFy
eURpcmVjdG9yeTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oUExBWVNUQVRJT04pCisgICAgICAg
IFN0cmluZyB3ZWJQcm9jZXNzUGF0aDsKKyAgICAgICAgU3RyaW5nIG5ldHdvcmtQcm9jZXNzUGF0
aDsKKyNlbmRpZgorCiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0aW9uYWxXZWJQcm9jZXNz
U2FuZGJveEV4dGVuc2lvblBhdGhzOwogICAgIH07CiAgICAgUGF0aHMgbV9yZXNvbHZlZFBhdGhz
OwpAQCAtODAwLDYgKzgxMSwxMCBAQCBwcml2YXRlOgogICAgIH07CiAgICAgT3B0aW9uYWw8QXVk
aWJsZU1lZGlhQWN0aXZpdHk+IG1fYXVkaWJsZU1lZGlhQWN0aXZpdHk7CiAKKyNpZiBQTEFURk9S
TShQTEFZU1RBVElPTikKKyAgICBpbnQzMl90IG1fdXNlcklkIHsgLTEgfTsKKyNlbmRpZgorCiAj
aWYgUExBVEZPUk0oSU9TKQogICAgIC8vIEZJWE1FOiBEZWxheWVkIHByb2Nlc3MgbGF1bmNoIGlz
IGN1cnJlbnRseSBkaXNhYmxlZCBvbiBpT1MgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgKHJkYXI6
Ly9wcm9ibGVtLzQ5MDc0MTMxKS4KICAgICBib29sIG1faXNEZWxheWVkV2ViUHJvY2Vzc0xhdW5j
aERpc2FibGVkIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKaW5kZXggZTdhOGNkY2IzMzczNTFlM2Y5ZGViMjNlOGZkYTcwYTlmOTM0ZjljZC4u
Y2M0MzU5YTdhY2M5OTk1OTUwNjZiNGFmYzk2ZDdjZDVhNDc5MDQ2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0zMzIsNiArMzMyLDExIEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1
bmNoT3B0aW9ucyYgbGF1bmNoT3B0CiAgICAgaWYgKGlzUHJld2FybWVkKCkpCiAgICAgICAgIGxh
dW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKCJpcy1wcmV3YXJtZWQiX3Ms
ICIxIl9zKTsKIAorI2lmIFBMQVRGT1JNKFBMQVlTVEFUSU9OKQorICAgIGxhdW5jaE9wdGlvbnMu
cHJvY2Vzc1BhdGggPSBtX3Byb2Nlc3NQb29sLT53ZWJQcm9jZXNzUGF0aCgpOworICAgIGxhdW5j
aE9wdGlvbnMudXNlcklkID0gbV9wcm9jZXNzUG9vbC0+dXNlcklkKCk7CisjZW5kaWYKKwogICAg
IGlmIChwcm9jZXNzUG9vbCgpLnNob3VsZE1ha2VOZXh0V2ViUHJvY2Vzc0xhdW5jaEZhaWxGb3JU
ZXN0aW5nKCkpIHsKICAgICAgICAgcHJvY2Vzc1Bvb2woKS5zZXRTaG91bGRNYWtlTmV4dFdlYlBy
b2Nlc3NMYXVuY2hGYWlsRm9yVGVzdGluZyhmYWxzZSk7CiAgICAgICAgIGxhdW5jaE9wdGlvbnMu
c2hvdWxkTWFrZVByb2Nlc3NMYXVuY2hGYWlsRm9yVGVzdGluZyA9IHRydWU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRW50cnlQb2ludC9wbGF5c3RhdGlvbi9XZWJQcm9j
ZXNzTWFpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRW50cnlQb2ludC9wbGF5c3Rh
dGlvbi9XZWJQcm9jZXNzTWFpbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWNjMGVhN2ZjZmMwOTRlMzc3OTY4
YmQ0Njg4Y2Y1ZTg5ZTkyMDAxMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9FbnRyeVBvaW50L3BsYXlzdGF0aW9uL1dlYlByb2Nlc3NNYWluLmNwcApAQCAtMCww
ICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50
ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJQcm9jZXNzTWFpbi5oIgorCisjaW5jbHVkZSA8ZGxmY24uaD4KKyNpbmNsdWRlIDxwcm9j
ZXNzLWluaXRpYWxpemF0aW9uL25rLXdlYnByb2Nlc3MuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgor
I2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCitpbnQgbWFpbihpbnQg
YXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgaWYgKGFyZ2MgPCAyKSB7CisgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiVW5leHBlY3RlZCBhcmd1bWVudCBjb3VudCAlZFxuIiwgYXJnYyk7CisgICAg
ICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKyAgICB9CisKKyAgICBkbG9wZW4oImxpYnBuZzE2Iiwg
UlRMRF9OT1cpOworICAgIGRsb3BlbigibGliaWN1IiwgUlRMRF9OT1cpOworICAgIGRsb3Blbigi
bGliZnJlZXR5cGUiLCBSVExEX05PVyk7CisgICAgZGxvcGVuKCJsaWJmb250Y29uZmlnIiwgUlRM
RF9OT1cpOworICAgIGRsb3BlbigibGliaGFyZmJ1enoiLCBSVExEX05PVyk7CisgICAgZGxvcGVu
KCJsaWJjYWlybyIsIFJUTERfTk9XKTsKKyAgICBkbG9wZW4oImxpYlNjZU5LV2ViS2l0UmVxdWly
ZW1lbnRzIiwgUlRMRF9OT1cpOworICAgIGRsb3BlbigibGliSmF2YVNjcmlwdENvcmUiLCBSVExE
X05PVyk7CisgICAgZGxvcGVuKCJsaWJXZWJLaXQiLCBSVExEX05PVyk7CisKKyAgICBjaGFyKiBj
b3JlUHJvY2Vzc0lkZW50aWZpZXIgPSBhcmd2WzFdOworCisgICAgY2hhciBjb25uZWN0aW9uSWRl
bnRpZmllclsxNl07CisgICAgc25wcmludGYoY29ubmVjdGlvbklkZW50aWZpZXIsIHNpemVvZihj
b25uZWN0aW9uSWRlbnRpZmllciksICIlZCIsIFBsYXlTdGF0aW9uOjpnZXRDb25uZWN0aW9uSWRl
bnRpZmllcigpKTsKKworICAgIGNoYXIgcHJvZ3JhbVtdID0gImR1bW15IjsKKyAgICBjaGFyKiBp
bnRlcm5hbEFyZ3ZbXSA9IHsKKyAgICAgICAgcHJvZ3JhbSwKKyAgICAgICAgY29yZVByb2Nlc3NJ
ZGVudGlmaWVyLAorICAgICAgICBjb25uZWN0aW9uSWRlbnRpZmllciwKKyAgICAgICAgMAorICAg
IH07CisgICAgcmV0dXJuIFdlYktpdDo6V2ViUHJvY2Vzc01haW4oc2l6ZW9mKGludGVybmFsQXJn
dikgLyBzaXplb2YoY2hhciopLCBpbnRlcm5hbEFyZ3YpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL3BsYXlzdGF0aW9uL0luamVjdGVkQnVu
ZGxlUGxheVN0YXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL3BsYXlzdGF0aW9uL0luamVjdGVkQnVuZGxlUGxheVN0YXRpb24uY3BwCmluZGV4IDRiZmUw
MmNlMmRiOTJkODgyZTMyNDdmZjhhNGE2MTBhZWJlYmE0YTMuLmVlMDJkZGIwNjMyYTk4YmNjNjk0
MTUzMWEzYzRhOWFmNWZiMTEzZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9wbGF5c3RhdGlvbi9JbmplY3RlZEJ1bmRsZVBsYXlTdGF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvcGxheXN0YXRp
b24vSW5qZWN0ZWRCdW5kbGVQbGF5U3RhdGlvbi5jcHAKQEAgLTI2LDE1ICsyNiwzNSBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCiAKKyNpbmNsdWRl
ICJXS0J1bmRsZUFQSUNhc3QuaCIKKyNpbmNsdWRlICJXS0J1bmRsZUluaXRpYWxpemUuaCIKKyNp
bmNsdWRlICJsaWJyYXJ5LWJ1bmRsZS5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3Vz
aW5nIG5hbWVzcGFjZSBXVEY7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1ib29sIEluamVjdGVk
QnVuZGxlOjppbml0aWFsaXplKGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmLCBB
UEk6Ok9iamVjdCogaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkKK2Jvb2wgSW5qZWN0ZWRCdW5kbGU6
OmluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVy
cywgQVBJOjpPYmplY3QqIGluaXRpYWxpemF0aW9uVXNlckRhdGEpCiB7Ci0gICAgcmV0dXJuIGZh
bHNlOworICAgIGF1dG8gYnVuZGxlID0gTGlicmFyeUJ1bmRsZTo6Y3JlYXRlKG1fcGF0aC51dGY4
KCkuZGF0YSgpKTsKKyAgICBtX3BsYXRmb3JtQnVuZGxlID0gYnVuZGxlOworICAgIGlmICghbV9w
bGF0Zm9ybUJ1bmRsZSkgeworICAgICAgICBwcmludGYoIlBsYXlTdGF0aW9uOjpCdW5kbGU6OmNy
ZWF0ZSBmYWlsZWRcbiIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIFdLQnVu
ZGxlSW5pdGlhbGl6ZUZ1bmN0aW9uUHRyIGluaXRpYWxpemVGdW5jdGlvbiA9IHJlaW50ZXJwcmV0
X2Nhc3Q8V0tCdW5kbGVJbml0aWFsaXplRnVuY3Rpb25QdHI+KGJ1bmRsZS0+cmVzb2x2ZSgiV0tC
dW5kbGVJbml0aWFsaXplIikpOworICAgIGlmICghaW5pdGlhbGl6ZUZ1bmN0aW9uKSB7CisgICAg
ICAgIHByaW50ZigiUGxheVN0YXRpb246OkJ1bmRsZTo6cmVzb2x2ZSBmYWlsZWRcbiIpOworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGluaXRpYWxpemVGdW5jdGlvbih0b0FQSSh0
aGlzKSwgdG9BUEkoaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkpOworICAgIHJldHVybiB0cnVlOwog
fQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRCdW5kbGVQYXJhbWV0ZXIoV1RGOjpTdHJpbmcg
Y29uc3QmLCBJUEM6OkRhdGFSZWZlcmVuY2UgY29uc3QmKQogeworCiB9CiAKIHZvaWQgSW5qZWN0
ZWRCdW5kbGU6OnNldEJ1bmRsZVBhcmFtZXRlcnMoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVk
U3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRl
ZFN1cmZhY2UuY3BwCmluZGV4IDEzMzA2NzFmNGEyOTgzMmE0MWYxZTgyNzAwNzIyNGEwNmY4ZjJh
YjUuLmE4NGVlYTQyYmQ2NDI1NTJmYmFiZDMyZDIzYWU4NTRiYjI4YmJhMzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRTdXJmYWNl
LmNwcApAQCAtNTgsNyArNTgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QWNjZWxlcmF0ZWRTdXJmYWNl
PiBBY2NlbGVyYXRlZFN1cmZhY2U6OmNyZWF0ZShXZWJQYWdlJiB3ZWJQYWdlLAogICAgIGlmIChQ
bGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBlKCkgPT0gUGxhdGZvcm1EaXNwbGF5
OjpUeXBlOjpYMTEpCiAgICAgICAgIHJldHVybiBBY2NlbGVyYXRlZFN1cmZhY2VYMTE6OmNyZWF0
ZSh3ZWJQYWdlLCBjbGllbnQpOwogI2VuZGlmCi0jaWYgVVNFKExJQldQRSkKKyNpZiBVU0UoV1BF
X1JFTkRFUkVSKQogICAgIGlmIChQbGF0Zm9ybURpc3BsYXk6OnNoYXJlZERpc3BsYXkoKS50eXBl
KCkgPT0gUGxhdGZvcm1EaXNwbGF5OjpUeXBlOjpXUEUpCiAgICAgICAgIHJldHVybiBBY2NlbGVy
YXRlZFN1cmZhY2VMaWJXUEU6OmNyZWF0ZSh3ZWJQYWdlLCBjbGllbnQpOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1BsYXlTdGF0aW9uLmNtYWtlIGIvU291cmNlL2Nt
YWtlL09wdGlvbnNQbGF5U3RhdGlvbi5jbWFrZQppbmRleCA5ZWE2ODBlMDQyOTc4M2E3ZDZlZDUz
ZWQxMGIzZTllNjJhNzdmMTJiLi42YWM4MDU1ZTI0NjZhNmUxMTlmMTNiZTY5NjBiMWI2ZTZkNTRm
ZTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc1BsYXlTdGF0aW9uLmNtYWtlCisr
KyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zUGxheVN0YXRpb24uY21ha2UKQEAgLTU5LDYgKzU5LDEw
IEBAIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9UTFNfREVCVUcgIkVuYWJsZSBUTFMga2V5
IGxvZyBzdXBwb3J0IiBQUklWQVRFIE9GRikKICMgUmVlbmFibGUgYWZ0ZXIgdXBkYXRpbmcgZm9u
dGNvbmZpZwogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZBUklBVElP
Tl9GT05UUyBQUklWQVRFIE9GRikKIAorIyBFbmFibGUgaW4gdGhlIGZ1dHVyZQorV0VCS0lUX09Q
VElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJIFBSSVZBVEUgT0ZG
KQorV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0NPTlRFWFRfTUVOVVMg
UFJJVkFURSBPRkYpCisKICMgTm8gc3VwcG9ydCBwbGFubmVkCiBXRUJLSVRfT1BUSU9OX0RFRkFV
TFRfUE9SVF9WQUxVRShFTkFCTEVfRlRQRElSIFBSSVZBVEUgT0ZGKQogV0VCS0lUX09QVElPTl9E
RUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0dFT0xPQ0FUSU9OIFBSSVZBVEUgT0ZGKQpAQCAtMTAz
LDYgKzEwNywxNiBAQCBsaXN0KEFQUEVORCBDTUFLRV9QUkVGSVhfUEFUSCAke1dFQktJVF9MSUJS
QVJJRVNfRElSfSkKIAogZmluZF9saWJyYXJ5KENfU1REX0xJQlJBUlkgYykKIGZpbmRfbGlicmFy
eShLRVJORUxfTElCUkFSWSBrZXJuZWwpCitmaW5kX3BhY2thZ2UoV2ViS2l0UmVxdWlyZW1lbnRz
IFJFUVVJUkVECisgICAgQ09NUE9ORU5UUworICAgICAgICBKUEVHCisgICAgICAgIExpYlBTTAor
ICAgICAgICBMaWJYbWwyCisgICAgICAgIFByb2Nlc3NMYXVuY2hlcgorICAgICAgICBTUUxpdGUz
CisgICAgICAgIFpMSUIKKyAgICAgICAgbGlid3BlCispCiAKIGZpbmRfcGFja2FnZShDYWlybyBS
RVFVSVJFRCkKIGZpbmRfcGFja2FnZShDVVJMIFJFUVVJUkVEKQpAQCAtMTExLDE2ICsxMjUsMTcg
QEAgZmluZF9wYWNrYWdlKEZvbnRjb25maWcgUkVRVUlSRUQpCiBmaW5kX3BhY2thZ2UoRnJlZXR5
cGUgUkVRVUlSRUQpCiBmaW5kX3BhY2thZ2UoSGFyZkJ1enogUkVRVUlSRUQgQ09NUE9ORU5UUyBJ
Q1UpCiBmaW5kX3BhY2thZ2UoSUNVIDYwLjIgUkVRVUlSRUQgQ09NUE9ORU5UUyBkYXRhIGkxOG4g
dWMpCi1maW5kX3BhY2thZ2UoSlBFRyBSRVFVSVJFRCkKLWZpbmRfcGFja2FnZShMaWJQU0wgUkVR
VUlSRUQpCi1maW5kX3BhY2thZ2UoTGliWG1sMiBSRVFVSVJFRCkKIGZpbmRfcGFja2FnZShPcGVu
U1NMIFJFUVVJUkVEKQogZmluZF9wYWNrYWdlKFBORyBSRVFVSVJFRCkKLWZpbmRfcGFja2FnZShT
UUxpdGUzIFJFUVVJUkVEKQogZmluZF9wYWNrYWdlKFRocmVhZHMgUkVRVUlSRUQpCiBmaW5kX3Bh
Y2thZ2UoV2ViUCBSRVFVSVJFRCBDT01QT05FTlRTIGRlbXV4KQotZmluZF9wYWNrYWdlKFdQRSBS
RVFVSVJFRCkKLWZpbmRfcGFja2FnZShaTElCIFJFUVVJUkVEKQorCitzZXQoQ01BS0VfQ19TVEFO
REFSRF9MSUJSQVJJRVMKKyAgICAiJHtDTUFLRV9DX1NUQU5EQVJEX0xJQlJBUklFU30gJHtDX1NU
RF9MSUJSQVJZfSIKKyAgKQorc2V0KENNQUtFX0NYWF9TVEFOREFSRF9MSUJSQVJJRVMKKyAgICAi
JHtDTUFLRV9DWFhfU1RBTkRBUkRfTElCUkFSSUVTfSAke0NfU1REX0xJQlJBUll9IgorICApCiAK
ICMgVE9ETzogQWRkIGEgY2hlY2sgZm9yIEhBVkVfUlNBX1BTUyBmb3Igc3VwcG9ydCBvZiBDcnlw
dG9BbGdvcml0aG1SU0FfUFNTCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDY2MzUKQEAgLTEzMyw3ICsxNDgsNyBAQCBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChV
U0VfRlJFRVRZUEUgT04pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfSEFSRkJVWlogT04p
CiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfTElCV1BFIE9OKQogU0VUX0FORF9FWFBPU0Vf
VE9fQlVJTEQoVVNFX09QRU5TU0wgT04pCi1TRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfV1BF
X1JFTkRFUkVSIE9OKQorU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1dQRV9SRU5ERVJFUiBP
RkYpCiAKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9JTlNQRUNUT1JfU09DS0VUX1NFUlZF
UiAke0VOQUJMRV9SRU1PVEVfSU5TUEVDVE9SfSkKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVT
RV9VTklYX0RPTUFJTl9TT0NLRVRTIE9OKQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IGE2YzY5OWI5ZTk5NDU3MGJhMGJiNjQ5OWJiOTc4Y2JkOGU3
OGJiYzEuLjNjM2M3NTY3NjNmZjYwMTYxODU5ZTdhNTNmMWQxOWUzYjNmNTVjOGUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBA
QAorMjAyMC0wNS0xNCAgWW9zaGlha2kgSml0c3VrYXdhICA8eW9zaGlha2kuaml0c3VrYXdhQHNv
bnkuY29tPgorCisgICAgICAgIFtQbGF5U3RhdGlvbl0gQWRkIG1pbmltYWwgV0tWaWV3IEFQSSB0
byBlbmFibGUgVGVzdFdlYktpdEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjExODY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIG1pbmltYWwgV0tWaWV3IEFQSSB0byBlbmFibGUgVGVzdFdlYktp
dEFQSQorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtl
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3Lmg6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9wbGF5c3RhdGlvbi9QbGF0Zm9ybVV0aWxpdGllc1BsYXlTdGF0aW9uLmNw
cDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZUluamVjdGVkQnVuZGxlUGF0
aCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSk6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9wbGF5c3RhdGlvbi9QbGF0Zm9ybVdlYlZpZXdQbGF5
U3RhdGlvbi5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQbGF0Zm9ybVdlYlZpZXc6OlBs
YXRmb3JtV2ViVmlldyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQbGF0Zm9ybVdlYlZpZXc6
On5QbGF0Zm9ybVdlYlZpZXcpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGxhdGZvcm1XZWJW
aWV3Ojppbml0aWFsaXplKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlBsYXRmb3JtV2ViVmll
dzo6cmVzaXplVG8pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGxhdGZvcm1XZWJWaWV3Ojpw
YWdlIGNvbnN0KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlBsYXRmb3JtV2ViVmlldzo6c2lt
dWxhdGVTcGFjZWJhcktleVByZXNzKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlBsYXRmb3Jt
V2ViVmlldzo6c2ltdWxhdGVNb3VzZU1vdmUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGxh
dGZvcm1XZWJWaWV3OjpzaW11bGF0ZVJpZ2h0Q2xpY2spOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6UGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZUJ1dHRvbkNsaWNrKToKKyAgICAgICAgQWRkIFBs
YXlTdGF0aW9uIFBsYXRmb3JtIHN1cHBvcnQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdC9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICBVc2UgdGhlIHNhbWUgZXhwZWN0ZWQgZGVmYXVsdCBmb250IHByZWZlcmVu
Y2VzIGFzIEdUSydzLiAKKwogMjAyMC0wNS0xMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtpT1MgU2ltdWxhdG9yXSBUZXN0V2ViS2l0QVBJ
Ll9XS0Rvd25sb2FkLlJlc3VtZSBpcyBhIGZsYWt5IGNyYXNoCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKaW5kZXggODk4NDI2N2NkYjk3OWIxMzI5ODQy
MmU4NTQ5Yzc3MjQ3M2E2NTBhMi4uYTRkZjE5NzQ2YjM4MGZkOWU2M2E1ODlhY2UzMjBkNjBhOWVm
YTI3MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVBsYXlTdGF0aW9u
LmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFr
ZQpAQCAtNDgsNiArNDgsMTIgQEAgaWYgKEVOQUJMRV9XRUJLSVQpCiAgICAgICAgIHBsYXlzdGF0
aW9uL1BsYXRmb3JtVXRpbGl0aWVzUGxheVN0YXRpb24uY3BwCiAgICAgICAgIHBsYXlzdGF0aW9u
L1BsYXRmb3JtV2ViVmlld1BsYXlTdGF0aW9uLmNwcAogICAgICkKKworICAgICMgRXhjbHVkZSB0
ZXN0cyB3aGljaCBkb24ndCBmaW5pc2guCisgICAgbGlzdChSRU1PVkVfSVRFTSBUZXN0V2ViS2l0
X1NPVVJDRVMKKyAgICAgICAgVGVzdHMvV2ViS2l0L0ZvcmNlUmVwYWludC5jcHAKKyAgICAgICAg
VGVzdHMvV2ViS2l0L0dlb2xvY2F0aW9uLmNwcAorICAgICkKIGVuZGlmICgpCiAKIApAQCAtNTUs
MyArNjEsNyBAQCBlbmRpZiAoKQogaWYgKCR7Q01BS0VfR0VORVJBVE9SfSBNQVRDSEVTICJWaXN1
YWwgU3R1ZGlvIikKICAgICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoVGVzdFdURiBUZXN0V2ViQ29y
ZSBUZXN0V2ViS2l0IFBST1BFUlRJRVMgVlNfREVCVUdHRVJfV09SS0lOR19ESVJFQ1RPUlkgIiR7
Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfSIpCiBlbmRpZiAoKQorCithZGRfZGVmaW5p
dGlvbnMoCisgICAgLURURVNUX1dFQktJVF9SRVNPVVJDRVNfRElSPVwiJHtUT09MU19ESVJ9L1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0XCIKKykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvUGxhdGZvcm1XZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2Vi
Vmlldy5oCmluZGV4IDc3Y2YxODY5YTU1ZjU2YWRjMTVlNTFjOWNkYzVmNTdjMzhlOTVlMTYuLmQ4
MjY1ZDJiOWUwNmNhNzdmNmZjM2Y2NTliN2MyY2I2YWQ1ZjNhNWQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9QbGF0Zm9ybVdlYlZpZXcuaApAQCAtNjAsNyArNjAsNyBAQCB0eXBlZGVmIFdQRVRvb2xpbmdC
YWNrZW5kczo6SGVhZGxlc3NWaWV3QmFja2VuZCAqUGxhdGZvcm1XaW5kb3c7CiB0eXBlZGVmIFdL
Vmlld1JlZiBQbGF0Zm9ybVdLVmlldzsKIHR5cGVkZWYgSFdORCBQbGF0Zm9ybVdpbmRvdzsKICNl
bGlmIFBMQVRGT1JNKFBMQVlTVEFUSU9OKQotdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybVdLVmlldzsK
K3R5cGVkZWYgV0tWaWV3UmVmIFBsYXRmb3JtV0tWaWV3OwogdHlwZWRlZiB2b2lkKiBQbGF0Zm9y
bVdpbmRvdzsKICNlbmRpZgogdHlwZWRlZiB1aW50MzJfdCBXS0V2ZW50TW9kaWZpZXJzOwpAQCAt
ODcsNyArODcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaW11bGF0ZUFsdEtleVByZXNzKCk7CiAg
ICAgdm9pZCBzaW11bGF0ZVJpZ2h0Q2xpY2sodW5zaWduZWQgeCwgdW5zaWduZWQgeSk7CiAgICAg
dm9pZCBzaW11bGF0ZU1vdXNlTW92ZSh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCBXS0V2ZW50TW9k
aWZpZXJzID0gMCk7Ci0jaWYgUExBVEZPUk0oTUFDKQorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExB
VEZPUk0oUExBWVNUQVRJT04pCiAgICAgdm9pZCBzaW11bGF0ZUJ1dHRvbkNsaWNrKFdLRXZlbnRN
b3VzZUJ1dHRvbiwgdW5zaWduZWQgeCwgdW5zaWduZWQgeSwgV0tFdmVudE1vZGlmaWVycyk7CiAj
ZW5kaWYKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQvV0tQ
cmVmZXJlbmNlcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XS1ByZWZl
cmVuY2VzLmNwcAppbmRleCAyOGUzMjMwMmI4NzNhOThhNDFhYjczYzIyYTE0YzczN2Q2MGZhMzZl
Li5jNTY1MDRiZjQ5YzFhNDgyNmI4MDg3MjY0MWQ0ZGVmZjdjZmRkMDI0IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XS1ByZWZlcmVuY2VzLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XS1ByZWZlcmVuY2VzLmNwcApAQCAtNDQs
NyArNDQsNyBAQCBURVNUKFdlYktpdCwgV0tQcmVmZXJlbmNlc0Jhc2ljKQogCiBURVNUKFdlYktp
dCwgV0tQcmVmZXJlbmNlc0RlZmF1bHRzKQogewotI2lmIFBMQVRGT1JNKEdUSykKKyNpZiBQTEFU
Rk9STShHVEspIHx8IFBMQVRGT1JNKFBMQVlTVEFUSU9OKQogICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBleHBlY3RlZFN0YW5kYXJkRm9udEZhbWlseSA9ICJUaW1lcyI7CiAgICAgc3RhdGljIGNvbnN0
IGNoYXIqIGV4cGVjdGVkRml4ZWRGb250RmFtaWx5ID0gIkNvdXJpZXIgTmV3IjsKICAgICBzdGF0
aWMgY29uc3QgY2hhciogZXhwZWN0ZWRTZXJpZkZvbnRGYW1pbHkgPSAiVGltZXMiOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9wbGF5c3RhdGlvbi9QbGF0Zm9ybVV0aWxpdGllc1Bs
YXlTdGF0aW9uLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvcGxheXN0YXRpb24vUGxhdGZvcm1V
dGlsaXRpZXNQbGF5U3RhdGlvbi5jcHAKaW5kZXggZDdiMjc2YzNhMjc0NGY0OGVlMDU3ZDYyMzBi
YmRkOTQ1NDU3NDZhNy4uYzNlNmUyMDllOTg2Mjk5NzFiMmY4YzdjYmYwM2I3NDJiMGI0ZjljYyAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9wbGF5c3RhdGlvbi9QbGF0Zm9ybVV0aWxp
dGllc1BsYXlTdGF0aW9uLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3BsYXlzdGF0aW9u
L1BsYXRmb3JtVXRpbGl0aWVzUGxheVN0YXRpb24uY3BwCkBAIC0zNCwxNCArMzQsMTQgQEAgbmFt
ZXNwYWNlIFV0aWwgewogCiBXS1N0cmluZ1JlZiBjcmVhdGVJbmplY3RlZEJ1bmRsZVBhdGgoKQog
ewotICAgIHJldHVybiBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiaW5qZWN0ZWRidW5k
bGUiKTsKKyAgICByZXR1cm4gV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIi9hcHAwL2xp
YlRlc3RXZWJLaXRBUElJbmplY3RlZEJ1bmRsZS5zcHJ4Iik7CiB9CiAKIFdLVVJMUmVmIGNyZWF0
ZVVSTEZvclJlc291cmNlKGNvbnN0IGNoYXIqIHJlc291cmNlLCBjb25zdCBjaGFyKiBleHRlbnNp
b24pCiB7Ci0gICAgU3RyaW5nIGZpbGVuYW1lID0gbWFrZVN0cmluZyhyZXNvdXJjZSwgJy4nLCBl
eHRlbnNpb24pOwotICAgIGF1dG8gdXJsID0gVVJMOjpmaWxlVVJMV2l0aEZpbGVTeXN0ZW1QYXRo
KGZpbGVuYW1lKTsKLSAgICByZXR1cm4gV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcodXJsLnN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIGNoYXIgdXJsWzUxMl07IC8vIFN1ZmZpY2llbnQg
YnVmZmVyIHNpemUgZm9yIHRoZSBwcmVmaXggYW5kIHRoZSBhY3R1YWwgcGF0aC4KKyAgICBzbnBy
aW50Zih1cmwsIHNpemVvZih1cmwpLCAiZmlsZTovLy9ob3N0LyVzLyVzLiVzIiwgVEVTVF9XRUJL
SVRfUkVTT1VSQ0VTX0RJUiwgcmVzb3VyY2UsIGV4dGVuc2lvbik7CisgICAgcmV0dXJuIFdLVVJM
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKHVybCk7CiB9CiAKIFdLVVJMUmVmIFVSTEZvck5vbkV4aXN0
ZW50UmVzb3VyY2UoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9wbGF5c3RhdGlv
bi9QbGF0Zm9ybVdlYlZpZXdQbGF5U3RhdGlvbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3Bs
YXlzdGF0aW9uL1BsYXRmb3JtV2ViVmlld1BsYXlTdGF0aW9uLmNwcAppbmRleCA3MmExMjQwNjJj
NWQ2MzBmMzYwNjVmZTAwMDJiMTZmNWZlZGI3NDAxLi5mYThlNDg2MGMyMTc1M2FjMTdlOGRhNmZl
NzJlYWI3OThiOTBmMzdmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL3BsYXlzdGF0
aW9uL1BsYXRmb3JtV2ViVmlld1BsYXlTdGF0aW9uLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL3BsYXlzdGF0aW9uL1BsYXRmb3JtV2ViVmlld1BsYXlTdGF0aW9uLmNwcApAQCAtMjYsNTUg
KzI2LDc5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3
LmgiCiAKLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKyNpbmNsdWRlIDxLZXlib2FyZEV2ZW50
cy5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0NvbnRleHRDb25maWd1cmF0aW9uUGxheVN0YXRpb24u
aD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tQYWdlQ29uZmlndXJhdGlvblJlZi5oPgorI2luY2x1ZGUg
PFdlYktpdC9XS1JldGFpblB0ci5oPgorI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQyX0MuaD4KIAot
UGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91
cFJlZikKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKK1BsYXRmb3JtV2ViVmlldzo6UGxhdGZv
cm1XZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3Jv
dXBSZWYpCiB7Ci19CisgICAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gY29u
ZmlndXJhdGlvbiA9IGFkb3B0V0soV0tQYWdlQ29uZmlndXJhdGlvbkNyZWF0ZSgpKTsKKyAgICBX
S1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4dChjb25maWd1cmF0aW9uLmdldCgpLCBjb250ZXh0
UmVmKTsKKyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0UGFnZUdyb3VwKGNvbmZpZ3VyYXRpb24u
Z2V0KCksIHBhZ2VHcm91cFJlZik7CiAKLVBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3
KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYpCi17CisgICAgaW5pdGlhbGl6ZShjb25maWd1cmF0aW9u
LmdldCgpKTsKIH0KIAotUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlUmVm
KQorUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJl
ZiBjb25maWd1cmF0aW9uKQogeworICAgIGluaXRpYWxpemUoY29uZmlndXJhdGlvbik7CiB9CiAK
LVBsYXRmb3JtV2ViVmlldzo6flBsYXRmb3JtV2ViVmlldygpCitQbGF0Zm9ybVdlYlZpZXc6OlBs
YXRmb3JtV2ViVmlldyhXS1BhZ2VSZWYgcmVsYXRlZFBhZ2UpCiB7CisgICAgV0tSZXRhaW5QdHI8
V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gY29uZmlndXJhdGlvbiA9IGFkb3B0V0soV0tQYWdlQ29u
ZmlndXJhdGlvbkNyZWF0ZSgpKTsKKyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4dChj
b25maWd1cmF0aW9uLmdldCgpLCBXS1BhZ2VHZXRDb250ZXh0KHJlbGF0ZWRQYWdlKSk7CisgICAg
V0tQYWdlQ29uZmlndXJhdGlvblNldFBhZ2VHcm91cChjb25maWd1cmF0aW9uLmdldCgpLCBXS1Bh
Z2VHZXRQYWdlR3JvdXAocmVsYXRlZFBhZ2UpKTsKKyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0
UmVsYXRlZFBhZ2UoY29uZmlndXJhdGlvbi5nZXQoKSwgcmVsYXRlZFBhZ2UpOworCisgICAgaW5p
dGlhbGl6ZShjb25maWd1cmF0aW9uLmdldCgpKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVdlYlZpZXc6
OmluaXRpYWxpemUoV0tQYWdlQ29uZmlndXJhdGlvblJlZikKK1BsYXRmb3JtV2ViVmlldzo6flBs
YXRmb3JtV2ViVmlldygpCiB7CisgICAgV0tQYWdlQ2xvc2UocGFnZSgpKTsKKyAgICBXS1JlbGVh
c2UobV92aWV3KTsKIH0KIAotV0tQYWdlUmVmIFBsYXRmb3JtV2ViVmlldzo6cGFnZSgpIGNvbnN0
Cit2b2lkIFBsYXRmb3JtV2ViVmlldzo6aW5pdGlhbGl6ZShXS1BhZ2VDb25maWd1cmF0aW9uUmVm
IGNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgbV92aWV3ID0gV0tW
aWV3Q3JlYXRlKGNvbmZpZ3VyYXRpb24pOworICAgIHJlc2l6ZVRvKDgwMCwgNjAwKTsKIH0KIAot
dm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnJlc2l6ZVRvKHVuc2lnbmVkLCB1bnNpZ25lZCkKK3ZvaWQg
UGxhdGZvcm1XZWJWaWV3OjpyZXNpemVUbyh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0
KQogeworICAgIFdLVmlld1NldFNpemUobV92aWV3LCBXS1NpemVNYWtlKHdpZHRoLCBoZWlnaHQp
KTsKIH0KIAotdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmZvY3VzKCkKK1dLUGFnZVJlZiBQbGF0Zm9y
bVdlYlZpZXc6OnBhZ2UoKSBjb25zdAogeworICAgIHJldHVybiBXS1ZpZXdHZXRQYWdlKG1fdmll
dyk7CiB9CiAKIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZVNwYWNlYmFyS2V5UHJlc3Mo
KQogeworICAgIFdLVmlld0hhbmRsZUtleWJvYXJkRXZlbnQobV92aWV3LCBXS0tleWJvYXJkRXZl
bnRNYWtlKGtXS0V2ZW50S2V5RG93biwga1dLSW5wdXRUeXBlTm9ybWFsLCAiICIsIDEsIGtleUlk
ZW50aWZpZXJGb3JLZXlDb2RlKDB4MjApLCAweDIwLCAtMSwgMCwgMCkpOworICAgIFdLVmlld0hh
bmRsZUtleWJvYXJkRXZlbnQobV92aWV3LCBXS0tleWJvYXJkRXZlbnRNYWtlKGtXS0V2ZW50S2V5
VXAsIGtXS0lucHV0VHlwZU5vcm1hbCwgIiAiLCAxLCBrZXlJZGVudGlmaWVyRm9yS2V5Q29kZSgw
eDIwKSwgMHgyMCwgLTEsIDAsIDApKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVs
YXRlQWx0S2V5UHJlc3MoKQordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlTW91c2VNb3Zl
KHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzKQogewor
ICAgIFdLVmlld0hhbmRsZU1vdXNlRXZlbnQobV92aWV3LCBXS01vdXNlRXZlbnRNYWtlKGtXS0V2
ZW50TW91c2VNb3ZlLCBrV0tFdmVudE1vdXNlQnV0dG9uTm9CdXR0b24sIFdLUG9pbnRNYWtlKHgs
IHkpLCAwLCBtb2RpZmllcnMpKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRl
TW91c2VNb3ZlKHVuc2lnbmVkLCB1bnNpZ25lZCwgV0tFdmVudE1vZGlmaWVycykKK3ZvaWQgUGxh
dGZvcm1XZWJWaWV3OjpzaW11bGF0ZVJpZ2h0Q2xpY2sodW5zaWduZWQgeCwgdW5zaWduZWQgeSkK
IHsKKyAgICBzaW11bGF0ZUJ1dHRvbkNsaWNrKGtXS0V2ZW50TW91c2VCdXR0b25SaWdodEJ1dHRv
biwgeCwgeSwgMCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZVJpZ2h0Q2xp
Y2sodW5zaWduZWQsIHVuc2lnbmVkKQordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlQnV0
dG9uQ2xpY2soV0tFdmVudE1vdXNlQnV0dG9uIGJ1dHRvbiwgdW5zaWduZWQgeCwgdW5zaWduZWQg
eSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMpCiB7CisgICAgV0tWaWV3SGFuZGxlTW91c2VF
dmVudChtX3ZpZXcsIFdLTW91c2VFdmVudE1ha2Uoa1dLRXZlbnRNb3VzZURvd24sIGJ1dHRvbiwg
V0tQb2ludE1ha2UoeCwgeSksIDAsIG1vZGlmaWVycykpOworICAgIFdLVmlld0hhbmRsZU1vdXNl
RXZlbnQobV92aWV3LCBXS01vdXNlRXZlbnRNYWtlKGtXS0V2ZW50TW91c2VVcCwgYnV0dG9uLCBX
S1BvaW50TWFrZSh4LCB5KSwgMCwgbW9kaWZpZXJzKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxYjZh
MGNhOTZlZGE4YjVkNGI2NjVjZmYwNmZmNDBjYjc5YzdiMTBiLi43NGI3ZmI5NWFlNDliMDcwNTg4
ODJhNGJiYzJkM2E0ODIyZDM4ODZlIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDUtMTQgIFlvc2hpYWtpIEppdHN1a2F3YSAgPHlv
c2hpYWtpLmppdHN1a2F3YUBzb255LmNvbT4KKworICAgICAgICBbUGxheVN0YXRpb25dIEFkZCBt
aW5pbWFsIFdLVmlldyBBUEkgdG8gZW5hYmxlIFRlc3RXZWJLaXRBUEkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTg2OAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBtaW5pbWFsIFdLVmlldyBBUEkg
dG8gZW5hYmxlIFRlc3RXZWJLaXRBUEkKKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25z
UGxheVN0YXRpb24uY21ha2U6CisgICAgICAgIERpc2FibGUgRnVsbFNjcmVlbiBBUEkgYW5kIENv
bnRleHRNZW51cworCiAyMDIwLTA1LTEwICBCYXN1a2UgU3V6dWtpICA8YmFzdWtlLnN1enVraUBz
b255LmNvbT4KIAogICAgICAgICBBZGQgRU5BQkxFX1BFUklPRElDX01FTU9SWV9NT05JVE9SIGZs
YWcuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399831</attachid>
            <date>2020-05-20 05:42:13 -0700</date>
            <delta_ts>2020-05-20 23:34:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211868-20200520214211.patch</filename>
            <type>text/plain</type>
            <size>91712</size>
            <attacher name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY5NmI0NDRkMzAwNzY4YTFiMWY4MGVm
MmU1NGM2Mzc2NmY5ZDc1ODcuLmI5N2FhMWIyZTFmMWVmN2E0MzVlZDk4MDE0NTNjMWI4NjE3MjY1
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDUtMjAgIFlvc2hpYWtpIEppdHN1a2F3YSAg
PHlvc2hpYWtpLmppdHN1a2F3YUBzb255LmNvbT4KKworICAgICAgICBbUGxheVN0YXRpb25dIEFk
ZCBtaW5pbWFsIFdLVmlldyBBUEkgdG8gZW5hYmxlIFRlc3RXZWJLaXRBUEkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTg2OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBUZXN0V2ViS2l0QVBJ
CisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZToKKyAgICAgICAgTGlu
ayBsaWJjIGFzIGEgc3lzdGVtIGxpYnJhcnkuCisKIDIwMjAtMDUtMTIgIFJvc3MgS2lyc2xpbmcg
IDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIEZpeCBleGlzdGluZyB1c2FnZSBv
ZiBmaW5hbC9vdmVycmlkZS92aXJ0dWFsIGluIEpTQyBhbmQgV1RGCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTlm
NGFkY2QzZDdlYTk5ZWY0ZTgzZWNmNmQxNjFlMDY4OGIxOWZlMC4uYjVjZGFhYWI5NDJkZWE5ZGJi
M2ZiNGRiYzMwNGYwN2ExNzFhMmYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIw
LTA1LTIwICBZb3NoaWFraSBKaXRzdWthd2EgIDx5b3NoaWFraS5qaXRzdWthd2FAc29ueS5jb20+
CisKKyAgICAgICAgW1BsYXlTdGF0aW9uXSBBZGQgbWluaW1hbCBXS1ZpZXcgQVBJIHRvIGVuYWJs
ZSBUZXN0V2ViS2l0QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTE4NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBFbmFibGUgVGVzdFdlYktpdEFQSQorCisgICAgICAgICogUGxhdGZvcm1QbGF5U3Rh
dGlvbi5jbWFrZToKKyAgICAgICAgQWRkIFdlYktpdFJlcXVpcmVtZW50cyBsaWJyYXJ5IHRvIFdl
YkNvcmVfQ29weVNoYXJlZExpYnMuCisKIDIwMjAtMDUtMTIgIE1pY2hhZWwgQ2F0YW56YXJvICA8
bWNhdGFuemFyb0Bnbm9tZS5vcmc+CiAKICAgICAgICAgLVdhdHRyaWJ1dGUgd2FybmluZyBpbiBC
cmVha0xpbmVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxNWExZmE5YWI0YjU4OThmNDFjNzk2OTZmNzdiMTRm
NjAzMDg1OWJiLi40ZDUxNmRkN2RhY2E1NzI1OTU2OGZkYjcyY2UwN2ZmNTZhMTY5NDMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0NCBAQAorMjAyMC0wNS0yMCAgWW9zaGlha2kgSml0c3VrYXdhICA8
eW9zaGlha2kuaml0c3VrYXdhQHNvbnkuY29tPgorCisgICAgICAgIFtQbGF5U3RhdGlvbl0gQWRk
IG1pbmltYWwgV0tWaWV3IEFQSSB0byBlbmFibGUgVGVzdFdlYktpdEFQSQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExODY4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIFRlc3RXZWJLaXRBUEkK
KworICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgICogUGxhdGZv
cm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjpwbGF0Zm9ybUludmFsaWRhdGUpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpvcGVuKToK
KyAgICAgICAgQWRkIFNvY2tldE1vbml0b3IgdG8gbW9uaXRvciByZWNlaXZlZCBtZXNzYWdlcy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNw
cDoKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oOgorICAgICAg
ICBBZGQgUGxheVN0YXRpb24gc3BlY2lmaWMgbWVtYmVyczogV2ViUHJvY2VzcyBhbmQgTmV0d29y
a1Byb2Nlc3MgcGF0aHMsIGFuZCB1c2VyIElELgorCisgICAgICAgICogVUlQcm9jZXNzL0xhdW5j
aGVyL1Byb2Nlc3NMYXVuY2hlci5oOgorICAgICAgICBBZGQgUGxheVN0YXRpb24gc3BlY2lmaWMg
bWVtYmVyczogUHJvY2VzcyBwYXRoIGFuZCB1c2VyIElELgorCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvRW50cnlQb2ludC9wbGF5c3RhdGlvbi9OZXR3b3JrUHJvY2Vzc01haW4uY3BwOiBDb3Bp
ZWQgZnJvbSBUb29sc1xUZXN0V2ViS2l0QVBJXHBsYXlzdGF0aW9uXG1haW4uY3BwLgorICAgICAg
ICAobG9hZExpYnJhcnlPckV4aXQpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogUGxhdGZv
cm1QbGF5U3RhdGlvbi5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvcGxheXN0YXRpb24v
V0tFdmVudFBsYXlTdGF0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXS0tleWJvYXJkRXZlbnRN
YWtlKToKKyAgICAgICAgKFdLTW91c2VFdmVudE1ha2UpOgorICAgICAgICAoV0tXaGVlbEV2ZW50
TWFrZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL3BsYXlzdGF0aW9uL1dLRXZlbnRQbGF5U3Rh
dGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tB
UElDYXN0UGxheVN0YXRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6dG9BUEk8Pik6CisgICAgICAg
IChXZWJLaXQ6OnRvSW1wbDw+KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRp
b24vV0tDb250ZXh0Q29uZmlndXJhdGlvblBsYXlTdGF0aW9uLmNwcDogQ29waWVkIGZyb20gVG9v
bHNcVGVzdFdlYktpdEFQSVxwbGF5c3RhdGlvblxQbGF0Zm9ybVV0aWxpdGllc1BsYXlTdGF0aW9u
LmNwcC4KKyAgICAgICAgKFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRXZWJQcm9jZXNzUGF0aCk6
CisgICAgICAgIChXS0NvbnRleHRDb25maWd1cmF0aW9uQ29weVdlYlByb2Nlc3NQYXRoKToKKyAg
ICAgICAgKFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXROZXR3b3JrUHJvY2Vzc1BhdGgpOgorICAg
ICAgICAoV0tDb250ZXh0Q29uZmlndXJhdGlvbkNvcHlOZXR3b3JrUHJvY2Vzc1BhdGgpOgorICAg
ICAgICAoV0tDb250ZXh0Q29uZmlndXJhdGlvblNldFVzZXJJZCk6CisgICAgICAgIChXS0NvbnRl
eHRDb25maWd1cmF0aW9uR2V0VXNlcklkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvcGxh
eXN0YXRpb24vV0tDb250ZXh0Q29uZmlndXJhdGlvblBsYXlTdGF0aW9uLmg6IENvcGllZCBmcm9t
IFNvdXJjZVxXZWJLaXRcVUlQcm9jZXNzXEFQSVxDXHBsYXlzdGF0aW9uXFdLVmlldy5oLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9XS1BhZ2VQcml2YXRlUGxheVN0YXRp
b24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLUGFnZVNldFNpemUpOgorICAgICAgICAoV0tQYWdl
SGFuZGxlS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXS1BhZ2VIYW5kbGVNb3VzZUV2ZW50KToK
KyAgICAgICAgKFdLUGFnZUhhbmRsZVdoZWVsRXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQy9wbGF5c3RhdGlvbi9XS1BhZ2VQcml2YXRlUGxheVN0YXRpb24uaDogQ29waWVkIGZyb20g
U291cmNlXFdlYktpdFxVSVByb2Nlc3NcQVBJXENccGxheXN0YXRpb25cV0tWaWV3LmguCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL3BsYXlzdGF0aW9uL1dLVmlldy5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZVxXZWJLaXRcV2ViUHJvY2Vzc1xJbmplY3RlZEJ1bmRsZVxwbGF5c3RhdGlvblxJbmpl
Y3RlZEJ1bmRsZVBsYXlTdGF0aW9uLmNwcC4KKyAgICAgICAgKFdLVmlld0NyZWF0ZSk6CisgICAg
ICAgIChXS1ZpZXdHZXRQYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRp
b24vV0tWaWV3Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0xhdW5jaGVyL3BsYXlzdGF0aW9uL1By
b2Nlc3NMYXVuY2hlclBsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6ZGVmYXVsdFBy
b2Nlc3NQYXRoKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpsYXVuY2hQcm9j
ZXNzKToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjp0ZXJtaW5hdGVQcm9jZXNz
KToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc0xhdW5jaGVyOjpwbGF0Zm9ybUludmFsaWRhdGUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
OjpnZXRMYXVuY2hPcHRpb25zKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcGxheXN0YXRpb24vUGFn
ZUNsaWVudEltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OlBhZ2VDbGllbnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNyZWF0
ZURyYXdpbmdBcmVhUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2V0
Vmlld05lZWRzRGlzcGxheSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpyZXF1
ZXN0U2Nyb2xsKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnZpZXdTY3JvbGxQ
b3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp2aWV3U2l6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUpOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aXNWaWV3Rm9jdXNlZCk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OmlzVmlld0luV2luZG93KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OnByb2Nlc3NEaWRFeGl0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmRpZFJlbGF1bmNoUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBs
OjpwYWdlQ2xvc2VkKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnByZWZlcmVu
Y2VzRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnRvb2xUaXBD
aGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZENvbW1pdExvYWRG
b3JNYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aGFuZGxlRG93
bmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZENoYW5n
ZUNvbnRlbnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNldEN1cnNv
cik6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRDdXJzb3JIaWRkZW5VbnRp
bE1vdXNlTW92ZXMpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdl
Vmlld3BvcnRQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnJl
Z2lzdGVyRWRpdENvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y2xl
YXJBbGxFZGl0Q29tbWFuZHMpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y2Fu
VW5kb1JlZG8pOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZXhlY3V0ZVVuZG9S
ZWRvKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OndoZWVsRXZlbnRXYXNOb3RI
YW5kbGVkQnlXZWJDb3JlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNvbnZl
cnRUb0RldmljZVNwYWNlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNvbnZl
cnRUb1VzZXJTcGFjZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzY3JlZW5U
b1Jvb3RWaWV3KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnJvb3RWaWV3VG9T
Y3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0eVNj
cmVlblRvUm9vdFZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cm9vdFZp
ZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4pOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6ZG9uZVdpdGhLZXlFdmVudCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpj
cmVhdGVQb3B1cE1lbnVQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpl
bnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OmV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsOjp1cGRhdGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpmdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xp
ZW50KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZEZpbmlzaExvYWRpbmdE
YXRhRm9yQ3VzdG9tQ29udGVudFByb3ZpZGVyKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVu
dEltcGw6Om5hdmlnYXRpb25HZXN0dXJlRGlkQmVnaW4pOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbDo6bmF2aWdhdGlvbkdlc3R1cmVXaWxsRW5kKToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6Om5hdmlnYXRpb25HZXN0dXJlRGlkRW5kKToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OndpbGxSZWNvcmROYXZpZ2F0aW9uU25hcHNob3QpOgorICAgICAg
ICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlkUmVtb3ZlTmF2aWdhdGlvbkdlc3R1cmVTbmFw
c2hvdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JNYWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50
SW1wbDo6ZGlkRmluaXNoTG9hZEZvck1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRJbXBsOjpkaWRGYWlsTG9hZEZvck1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yTWFpbkZyYW1lKToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZENoYW5nZUJhY2tncm91bmRDb2xvcik6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1BsYXlpbmdBdWRpb1dpbGxDaGFu
Z2UpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aXNQbGF5aW5nQXVkaW9EaWRD
aGFuZ2UpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cmVmVmlldyk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkZXJlZlZpZXcpOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbDo6ZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGw6OnVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvcGxheXN0YXRpb24vUGFnZUNsaWVudEltcGwuaDogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL3BsYXlzdGF0aW9uL1dlYlByb2Nlc3NQb29sUGxheVN0YXRpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXpl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcGxheXN0YXRpb24vV2ViVmlldy5jcHA6IENvcGllZCBm
cm9tIFNvdXJjZVxXZWJLaXRcVUlQcm9jZXNzXHBsYXlzdGF0aW9uXFdlYlByb2Nlc3NQb29sUGxh
eVN0YXRpb24uY3BwLgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpjcmVhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3OjpXZWJWaWV3KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6
fldlYlZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojppc0FjdGl2ZSBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmlzRm9jdXNlZCBjb25zdCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXc6OmlzVmlzaWJsZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL3BsYXlz
dGF0aW9uL1dlYlZpZXcuaDogQ29waWVkIGZyb20gU291cmNlXFdlYktpdFxXZWJQcm9jZXNzXElu
amVjdGVkQnVuZGxlXHBsYXlzdGF0aW9uXEluamVjdGVkQnVuZGxlUGxheVN0YXRpb24uY3BwLgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpwYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0Vu
dHJ5UG9pbnQvcGxheXN0YXRpb24vV2ViUHJvY2Vzc01haW4uY3BwOiBDb3BpZWQgZnJvbSBUb29s
c1xUZXN0V2ViS2l0QVBJXHBsYXlzdGF0aW9uXG1haW4uY3BwLgorICAgICAgICAobG9hZExpYnJh
cnlPckV4aXQpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9wbGF5c3RhdGlvbi9JbmplY3RlZEJ1bmRsZVBsYXlTdGF0aW9uLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZTo6c2V0QnVuZGxlUGFyYW1ldGVyKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QWNj
ZWxlcmF0ZWRTdXJmYWNlOjpjcmVhdGUpOgorCiAyMDIwLTA1LTEyICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBSZXdvcmsgZHJhZyBh
bmQgZHJvcCBoYW5kbGluZyBpbiBwcmVwYXJhdGlvbiBmb3IgR1RLNApkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZSBiL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtUGxheVN0YXRpb24uY21ha2UKaW5kZXggOWFmNjgyZDFkOTQ1NzM5MDVlMjkyNTBhYTRj
ZTUyMGY5OWIwOGZmNS4uMzAxNjA4ZjczNTUzMzhlYzU5ZjI1YjdiMjlhZGViMWI2ZmRjZWYyOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCkBAIC0xOCw3ICsxOCw2
IEBAIGxpc3QoQVBQRU5EIFdURl9TT1VSQ0VTCiApCiAKIGxpc3QoQVBQRU5EIFdURl9MSUJSQVJJ
RVMKLSAgICAke0NfU1REX0xJQlJBUll9CiAgICAgJHtLRVJORUxfTElCUkFSWX0KICAgICBUaHJl
YWRzOjpUaHJlYWRzCiApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlT
dGF0aW9uLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQpp
bmRleCA0MDU3N2ZkMTE5M2JjYjNmMjgyY2UzZTlhYTczMjMxMzBlMTFjYzg5Li40NWI2YzQ5NzBk
OGFjNGMzNDZlNDcyOTBkZjQxMDRkOTA3MjNmNGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3Jt
UGxheVN0YXRpb24uY21ha2UKQEAgLTk2LDUgKzk2LDYgQEAgUExBWVNUQVRJT05fQ09QWV9TSEFS
RURfTElCUkFSSUVTKFdlYkNvcmVfQ29weVNoYXJlZExpYnMKICAgICAgICAgJHtKUEVHX0xJQlJB
UklFU30KICAgICAgICAgJHtPUEVOU1NMX0xJQlJBUklFU30KICAgICAgICAgJHtQTkdfTElCUkFS
SUVTfQorICAgICAgICAke1dlYktpdFJlcXVpcmVtZW50c19MSUJSQVJZfQogICAgICAgICAke1dl
YlBfTElCUkFSSUVTfQogKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9FbnRyeVBvaW50L3BsYXlzdGF0aW9uL05ldHdvcmtQcm9jZXNzTWFpbi5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvcGxheXN0YXRpb24vTmV0d29ya1Byb2Nl
c3NNYWluLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOGI4OGZlOTAwMzY5NDJmNzQ1YWNjMjU5YTM3MWRhZTc2
Nzc3ZjhmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9F
bnRyeVBvaW50L3BsYXlzdGF0aW9uL05ldHdvcmtQcm9jZXNzTWFpbi5jcHAKQEAgLTAsMCArMSw3
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFp
bm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTmV0
d29ya1Byb2Nlc3NNYWluLmgiCisKKyNpbmNsdWRlIDxkbGZjbi5oPgorI2luY2x1ZGUgPHByb2Nl
c3MtaW5pdGlhbGl6YXRpb24vbmstbmV0d29ya3Byb2Nlc3MuaD4KKyNpbmNsdWRlIDxzdGRpby5o
PgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCitzdGF0aWMgdm9p
ZCBsb2FkTGlicmFyeU9yRXhpdChjb25zdCBjaGFyKiBuYW1lKQoreworICAgIGlmICghZGxvcGVu
KG5hbWUsIFJUTERfTk9XKSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBs
b2FkICVzLlxuIiwgbmFtZSk7CisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKyAgICB9Cit9
CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICBpZiAoYXJnYyA8IDIp
IHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJVbmV4cGVjdGVkIGFyZ3VtZW50IGNvdW50ICVk
XG4iLCBhcmdjKTsKKyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOworICAgIH0KKworICAgIGlm
ICghKChkbG9wZW4oImxpYmNyeXB0byIsIFJUTERfTk9XKSAmJiBkbG9wZW4oImxpYnNzbCIsIFJU
TERfTk9XKSkgfHwgZGxvcGVuKCJMaWJyZVNTTCIsIFJUTERfTk9XKSkpIHsKKyAgICAgICAgZnBy
aW50ZihzdGRlcnIsICJGYWlsZWQgdG8gbG9hZCBTU0wgbGlicmFyeS5cbiIpOworICAgICAgICBl
eGl0KEVYSVRfRkFJTFVSRSk7CisgICAgfQorICAgIGxvYWRMaWJyYXJ5T3JFeGl0KCJsaWJjdXJs
Iik7CisgICAgbG9hZExpYnJhcnlPckV4aXQoImxpYmljdSIpOworICAgIGxvYWRMaWJyYXJ5T3JF
eGl0KCJsaWJTY2VOS1dlYktpdFJlcXVpcmVtZW50cyIpOworICAgIGxvYWRMaWJyYXJ5T3JFeGl0
KCJsaWJKYXZhU2NyaXB0Q29yZSIpOworICAgIGxvYWRMaWJyYXJ5T3JFeGl0KCJsaWJXZWJLaXQi
KTsKKworICAgIGNoYXIqIGNvcmVQcm9jZXNzSWRlbnRpZmllciA9IGFyZ3ZbMV07CisKKyAgICBj
aGFyIGNvbm5lY3Rpb25JZGVudGlmaWVyWzE2XTsKKyAgICBzbnByaW50Zihjb25uZWN0aW9uSWRl
bnRpZmllciwgc2l6ZW9mKGNvbm5lY3Rpb25JZGVudGlmaWVyKSwgIiVkIiwgUGxheVN0YXRpb246
OmdldENvbm5lY3Rpb25JZGVudGlmaWVyKCkpOworCisgICAgY2hhciBwcm9ncmFtW10gPSAiZHVt
bXkiOworICAgIGNoYXIqIGludGVybmFsQXJndltdID0geworICAgICAgICBwcm9ncmFtLAorICAg
ICAgICBjb3JlUHJvY2Vzc0lkZW50aWZpZXIsCisgICAgICAgIGNvbm5lY3Rpb25JZGVudGlmaWVy
LAorICAgICAgICAwCisgICAgfTsKKyAgICByZXR1cm4gV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc01h
aW4oc2l6ZW9mKGludGVybmFsQXJndikgLyBzaXplb2YoY2hhciopLCBpbnRlcm5hbEFyZ3YpOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCmluZGV4IDg1OTE1ZjhiYmFl
MDA1MzExZDg0MjczMWRkNWY4MTU1OGE5MWZkM2EuLmYxYWQwMTAwNGYzYzZkODU0N2I0OGQwZTYy
MDVhYTU4NDAzZGVmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nv
bm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmgK
QEAgLTQwOSw2ICs0MDksOSBAQCBwcml2YXRlOgogICAgIEdTb2NrZXRNb25pdG9yIG1fcmVhZFNv
Y2tldE1vbml0b3I7CiAgICAgR1NvY2tldE1vbml0b3IgbV93cml0ZVNvY2tldE1vbml0b3I7CiAj
ZW5kaWYKKyNpZiBQTEFURk9STShQTEFZU1RBVElPTikKKyAgICBSZWZQdHI8V1RGOjpUaHJlYWQ+
IG1fc29ja2V0TW9uaXRvcjsKKyNlbmRpZgogI2VsaWYgT1MoREFSV0lOKQogICAgIC8vIENhbGxl
ZCBvbiB0aGUgY29ubmVjdGlvbiBxdWV1ZS4KICAgICB2b2lkIHJlY2VpdmVTb3VyY2VFdmVudEhh
bmRsZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL3VuaXgvQ29u
bmVjdGlvblVuaXguY3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0
aW9uVW5peC5jcHAKaW5kZXggZGMwMzA0YzlhZjA1ZDMzM2ZkMmUyYmIyODBkMjZjMzA4MzZhOTI5
My4uNzZkYzIzZjA0YzI2ZWU4NTU5YjA5MGQxMzc0YTM2YWIwZDAwNTEwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAKQEAgLTEy
MCw2ICsxMjAsMTMgQEAgdm9pZCBDb25uZWN0aW9uOjpwbGF0Zm9ybUludmFsaWRhdGUoKQogICAg
IG1fd3JpdGVTb2NrZXRNb25pdG9yLnN0b3AoKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oUExB
WVNUQVRJT04pCisgICAgaWYgKG1fc29ja2V0TW9uaXRvcikgeworICAgICAgICBtX3NvY2tldE1v
bml0b3ItPmRldGFjaCgpOworICAgICAgICBtX3NvY2tldE1vbml0b3IgPSBudWxscHRyOworICAg
IH0KKyNlbmRpZgorCiAgICAgbV9zb2NrZXREZXNjcmlwdG9yID0gLTE7CiAgICAgbV9pc0Nvbm5l
Y3RlZCA9IGZhbHNlOwogfQpAQCAtMzYxLDYgKzM2OCwyNyBAQCBib29sIENvbm5lY3Rpb246Om9w
ZW4oKQogICAgIH0pOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShQTEFZU1RBVElPTikKKyAgICBt
X3NvY2tldE1vbml0b3IgPSBUaHJlYWQ6OmNyZWF0ZSgiU29ja2V0TW9uaXRvciIsIFtwcm90ZWN0
ZWRUaGlzXSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIGludCBmZDsKKyAgICAgICAgICAgIHdo
aWxlICgoZmQgPSBwcm90ZWN0ZWRUaGlzLT5tX3NvY2tldERlc2NyaXB0b3IpICE9IC0xKSB7Cisg
ICAgICAgICAgICAgICAgaW50IG1heEZkID0gZmQ7CisgICAgICAgICAgICAgICAgZmRfc2V0IGZk
U2V0OworICAgICAgICAgICAgICAgIEZEX1pFUk8oJmZkU2V0KTsKKyAgICAgICAgICAgICAgICBG
RF9TRVQoZmQsICZmZFNldCk7CisKKyAgICAgICAgICAgICAgICBpZiAoLTEgIT0gc2VsZWN0KG1h
eEZkICsgMSwgJmZkU2V0LCAwLCAwLCAwKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoRkRf
SVNTRVQoZmQsICZmZFNldCkpCisgICAgICAgICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5yZWFkeVJlYWRIYW5kbGVyKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
CisgICAgICAgIH0KKyAgICB9KTsKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorCiAgICAgLy8g
U2NoZWR1bGUgYSBjYWxsIHRvIHJlYWR5UmVhZEhhbmRsZXIuIERhdGEgbWF5IGhhdmUgYXJyaXZl
ZCBiZWZvcmUgaW5zdGFsbGF0aW9uIG9mIHRoZSBzaWduYWwgaGFuZGxlci4KICAgICBtX2Nvbm5l
Y3Rpb25RdWV1ZS0+ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXNdIHsKICAgICAgICAgcHJvdGVjdGVk
VGhpcy0+cmVhZHlSZWFkSGFuZGxlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybVBsYXlTdGF0aW9uLmNtYWtlIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybVBsYXlTdGF0aW9u
LmNtYWtlCmluZGV4IDNhNGYxNTYzNDJiYmU2ZGI0ZWEwMzRkY2FlMWNmY2QyYjE2YTBlYjEuLjBi
MGQ5ZjhkMzEyMjkxNjFmM2JkY2Q1MTJiYzMxNzAxZjVkZmE4MGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtUGxheVN0YXRpb24uY21ha2UKQEAgLTEsOSArMSwzIEBACi1zZXQoV2ViS2l0X09VVFBV
VF9OQU1FIFNjZVdlYktpdCkKLXNldChXZWJQcm9jZXNzX09VVFBVVF9OQU1FIFdlYktpdFdlYlBy
b2Nlc3MpCi1zZXQoTmV0d29ya1Byb2Nlc3NfT1VUUFVUX05BTUUgV2ViS2l0TmV0d29ya1Byb2Nl
c3MpCi1zZXQoR1BVUHJvY2Vzc19PVVRQVVRfTkFNRSBXZWJLaXRHUFVQcm9jZXNzKQotc2V0KFBs
dWdpblByb2Nlc3NfT1VUUFVUX05BTUUgV2ViS2l0UGx1Z2luUHJvY2VzcykKLQogaW5jbHVkZShI
ZWFkZXJzLmNtYWtlKQogCiBhZGRfZGVmaW5pdGlvbnMoLURCVUlMRElOR19XRUJLSVQpCkBAIC0x
MSwxMSArNSwxMSBAQCBhZGRfZGVmaW5pdGlvbnMoLURCVUlMRElOR19XRUJLSVQpCiBzZXQoV2Vi
S2l0X1VTRV9QUkVGSVhfSEVBREVSIE9OKQogCiBsaXN0KEFQUEVORCBXZWJQcm9jZXNzX1NPVVJD
RVMKLSAgICBXZWJQcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9XZWJQcm9jZXNzTWFpbi5jcHAKKyAg
ICBXZWJQcm9jZXNzL0VudHJ5UG9pbnQvcGxheXN0YXRpb24vV2ViUHJvY2Vzc01haW4uY3BwCiAp
CiAKIGxpc3QoQVBQRU5EIE5ldHdvcmtQcm9jZXNzX1NPVVJDRVMKLSAgICBOZXR3b3JrUHJvY2Vz
cy9FbnRyeVBvaW50L3VuaXgvTmV0d29ya1Byb2Nlc3NNYWluLmNwcAorICAgIE5ldHdvcmtQcm9j
ZXNzL0VudHJ5UG9pbnQvcGxheXN0YXRpb24vTmV0d29ya1Byb2Nlc3NNYWluLmNwcAogKQogCiBs
aXN0KEFQUEVORCBHUFVQcm9jZXNzX1NPVVJDRVMKQEAgLTU3LDYgKzUxLDggQEAgbGlzdChBUFBF
TkQgV2ViS2l0X1NPVVJDRVMKIAogICAgIFNoYXJlZC9BUEkvYy9jdXJsL1dLQ2VydGlmaWNhdGVJ
bmZvQ3VybC5jcHAKIAorICAgIFNoYXJlZC9BUEkvYy9wbGF5c3RhdGlvbi9XS0V2ZW50UGxheVN0
YXRpb24uY3BwCisKICAgICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzU2NlbmUuY3BwCiAgICAgU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvU2ltcGxlVmll
d3BvcnRDb250cm9sbGVyLmNwcAogCkBAIC05MCw2ICs4NiwxMCBAQCBsaXN0KEFQUEVORCBXZWJL
aXRfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLUHJvdGVjdGlvblNwYWNlQ3Vy
bC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvY3VybC9XS1dlYnNpdGVEYXRhU3RvcmVSZWZDdXJs
LmNwcAogCisgICAgVUlQcm9jZXNzL0FQSS9DL3BsYXlzdGF0aW9uL1dLQ29udGV4dENvbmZpZ3Vy
YXRpb25QbGF5U3RhdGlvbi5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tQ
YWdlUHJpdmF0ZVBsYXlTdGF0aW9uLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlv
bi9XS1ZpZXcuY3BwCisKICAgICBVSVByb2Nlc3MvQXV0b21hdGlvbi9jYWlyby9XZWJBdXRvbWF0
aW9uU2Vzc2lvbkNhaXJvLmNwcAogCiAgICAgVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuY3BwCkBAIC0xMDQsOCArMTA0LDEw
IEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAKICAgICBVSVByb2Nlc3MvbGlid3BlL1dl
YlBhc3RlYm9hcmRQcm94eUxpYldQRS5jcHAKIAorICAgIFVJUHJvY2Vzcy9wbGF5c3RhdGlvbi9Q
YWdlQ2xpZW50SW1wbC5jcHAKICAgICBVSVByb2Nlc3MvcGxheXN0YXRpb24vV2ViUGFnZVByb3h5
UGxheVN0YXRpb24uY3BwCiAgICAgVUlQcm9jZXNzL3BsYXlzdGF0aW9uL1dlYlByb2Nlc3NQb29s
UGxheVN0YXRpb24uY3BwCisgICAgVUlQcm9jZXNzL3BsYXlzdGF0aW9uL1dlYlZpZXcuY3BwCiAK
ICAgICBXZWJQcm9jZXNzL0dQVS9tZWRpYS9wbGF5c3RhdGlvbi9WaWRlb0xheWVyUmVtb3RlUGxh
eVN0YXRpb24uY3BwCiAKQEAgLTEzOCw2ICsxNDAsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXRfSU5D
TFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9jdXJs
IgogICAgICIke1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbiIKICAgICAi
JHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcyIKKyAgICAiJHtXRUJL
SVRfRElSfS9VSVByb2Nlc3MvcGxheXN0YXRpb24iCiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJsIgogICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3Mv
V2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzIgogICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nl
c3MvV2ViUGFnZS9saWJ3cGUiCkBAIC0xNTAsMTAgKzE1MywxMyBAQCBsaXN0KEFQUEVORCBXZWJL
aXRfUFVCTElDX0ZSQU1FV09SS19IRUFERVJTCiAgICAgU2hhcmVkL0FQSS9jL2N1cmwvV0tDZXJ0
aWZpY2F0ZUluZm9DdXJsLmgKIAogICAgIFNoYXJlZC9BUEkvYy9wbGF5c3RhdGlvbi9XS0Jhc2VQ
bGF5U3RhdGlvbi5oCisgICAgU2hhcmVkL0FQSS9jL3BsYXlzdGF0aW9uL1dLRXZlbnRQbGF5U3Rh
dGlvbi5oCiAKICAgICBVSVByb2Nlc3MvQVBJL0MvY3VybC9XS1Byb3RlY3Rpb25TcGFjZUN1cmwu
aAogICAgIFVJUHJvY2Vzcy9BUEkvQy9jdXJsL1dLV2Vic2l0ZURhdGFTdG9yZVJlZkN1cmwuaAog
CisgICAgVUlQcm9jZXNzL0FQSS9DL3BsYXlzdGF0aW9uL1dLQ29udGV4dENvbmZpZ3VyYXRpb25Q
bGF5U3RhdGlvbi5oCisgICAgVUlQcm9jZXNzL0FQSS9DL3BsYXlzdGF0aW9uL1dLUGFnZVByaXZh
dGVQbGF5U3RhdGlvbi5oCiAgICAgVUlQcm9jZXNzL0FQSS9DL3BsYXlzdGF0aW9uL1dLVmlldy5o
CiApCiAKQEAgLTE2Myw0ICsxNjksNSBAQCBsaXN0KEFQUEVORCBXZWJLaXRfUFVCTElDX0ZSQU1F
V09SS19IRUFERVJTCiBsaXN0KEFQUEVORCBXZWJLaXRfUFJJVkFURV9MSUJSQVJJRVMKICAgICAk
PFRBUkdFVF9PQkpFQ1RTOlBBTD4KICAgICAkPFRBUkdFVF9PQkpFQ1RTOldlYkNvcmU+CisgICAg
V2ViS2l0UmVxdWlyZW1lbnRzOjpQcm9jZXNzTGF1bmNoZXIKICkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL3BsYXlzdGF0aW9uL1dLRXZlbnRQbGF5U3RhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9wbGF5c3RhdGlvbi9XS0V2ZW50UGxheVN0YXRp
b24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmIxNWM0Y2Q0YWMyMTQ0ZTEyZWYzNWRmYTQ0ZDg0ZDFiYTQ4ODAz
YmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9wbGF5c3Rh
dGlvbi9XS0V2ZW50UGxheVN0YXRpb24uY3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLRXZlbnRQbGF5U3RhdGlvbi5o
IgorCitXS0tleWJvYXJkRXZlbnQgV0tLZXlib2FyZEV2ZW50TWFrZShXS0V2ZW50VHlwZSB0eXBl
LCBXS0lucHV0VHlwZSBpbnB1dFR5cGUsIGNvbnN0IGNoYXIqIHRleHQsIHVpbnQzMl90IGxlbmd0
aCwgY29uc3QgY2hhcioga2V5SWRlbnRpZmllciwgaW50MzJfdCB2aXJ0dWFsS2V5Q29kZSwgaW50
MzJfdCBjYXJldE9mZnNldCwgdWludDMyX3QgYXR0cmlidXRlcywgdWludDMyX3QgbW9kaWZpZXJz
KQoreworICAgIFdLS2V5Ym9hcmRFdmVudCBrZXlib2FyZEV2ZW50OworICAgIGtleWJvYXJkRXZl
bnQudHlwZSA9IHR5cGU7CisgICAga2V5Ym9hcmRFdmVudC52aXJ0dWFsS2V5Q29kZSA9IHZpcnR1
YWxLZXlDb2RlOworICAgIGtleWJvYXJkRXZlbnQubW9kaWZpZXJzID0gbW9kaWZpZXJzOworICAg
IGtleWJvYXJkRXZlbnQuY2FyZXRPZmZzZXQgPSBjYXJldE9mZnNldDsKKworICAgIC8vIHNlZSBo
dHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvI2tleXMtSU1FCisgICAgaWYg
KGlucHV0VHlwZSA9PSBrV0tJbnB1dFR5cGVTZXRDb21wb3NpdGlvbikKKyAgICAgICAga2V5Ym9h
cmRFdmVudC5rZXlJZGVudGlmaWVyID0gIkNvbnZlcnQiOworICAgIGVsc2UgaWYgKGlucHV0VHlw
ZSA9PSBrV0tJbnB1dFR5cGVDb25maXJtQ29tcG9zaXRpb24pCisgICAgICAgIGtleWJvYXJkRXZl
bnQua2V5SWRlbnRpZmllciA9ICJBY2NlcHQiOworICAgIGVsc2UgaWYgKGlucHV0VHlwZSA9PSBr
V0tJbnB1dFR5cGVDYW5jZWxDb21wb3NpdGlvbikKKyAgICAgICAga2V5Ym9hcmRFdmVudC5rZXlJ
ZGVudGlmaWVyID0gIkNhbmNlbCI7CisgICAgZWxzZQorICAgICAgICBrZXlib2FyZEV2ZW50Lmtl
eUlkZW50aWZpZXIgPSBrZXlJZGVudGlmaWVyOworCisgICAgaWYgKGxlbmd0aCA+IDApIHsKKyAg
ICAgICAga2V5Ym9hcmRFdmVudC50ZXh0ID0gdGV4dDsKKyAgICAgICAga2V5Ym9hcmRFdmVudC5s
ZW5ndGggPSBsZW5ndGg7CisgICAgfSBlbHNlIHsKKyAgICAgICAga2V5Ym9hcmRFdmVudC50ZXh0
ID0gbnVsbHB0cjsKKyAgICAgICAga2V5Ym9hcmRFdmVudC5sZW5ndGggPSAwOworICAgIH0KKwor
ICAgIHJldHVybiBrZXlib2FyZEV2ZW50OworfQorCitXS01vdXNlRXZlbnQgV0tNb3VzZUV2ZW50
TWFrZShXS0V2ZW50VHlwZSB0eXBlLCBXS0V2ZW50TW91c2VCdXR0b24gYnV0dG9uLCBXS1BvaW50
IHBvc2l0aW9uLCBpbnQzMl90IGNsaWNrQ291bnQsIHVpbnQzMl90IG1vZGlmaWVycykKK3sKKyAg
ICBXS01vdXNlRXZlbnQgbW91c2VFdmVudDsKKyAgICBtb3VzZUV2ZW50LnR5cGUgPSB0eXBlOwor
ICAgIG1vdXNlRXZlbnQuYnV0dG9uID0gYnV0dG9uOworICAgIG1vdXNlRXZlbnQucG9zaXRpb24g
PSBwb3NpdGlvbjsKKyAgICBtb3VzZUV2ZW50LmNsaWNrQ291bnQgPSBjbGlja0NvdW50OworICAg
IG1vdXNlRXZlbnQubW9kaWZpZXJzID0gbW9kaWZpZXJzOworICAgIHJldHVybiBtb3VzZUV2ZW50
OworfQorCitXS1doZWVsRXZlbnQgV0tXaGVlbEV2ZW50TWFrZShXS0V2ZW50VHlwZSB0eXBlLCBX
S1BvaW50IHBvc2l0aW9uLCBXS1NpemUgZGVsdGEsIFdLU2l6ZSB3aGVlbFRpY2tzLCB1aW50MzJf
dCBtb2RpZmllcnMpCit7CisgICAgV0tXaGVlbEV2ZW50IHdoZWVsRXZlbnQ7CisgICAgd2hlZWxF
dmVudC50eXBlID0gdHlwZTsKKyAgICB3aGVlbEV2ZW50LnBvc2l0aW9uID0gcG9zaXRpb247Cisg
ICAgd2hlZWxFdmVudC5kZWx0YSA9IGRlbHRhOworICAgIHdoZWVsRXZlbnQud2hlZWxUaWNrcyA9
IHdoZWVsVGlja3M7CisgICAgd2hlZWxFdmVudC5tb2RpZmllcnMgPSBtb2RpZmllcnM7CisgICAg
cmV0dXJuIHdoZWVsRXZlbnQ7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9wbGF5c3RhdGlvbi9XS0V2ZW50UGxheVN0YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9jL3BsYXlzdGF0aW9uL1dLRXZlbnRQbGF5U3RhdGlvbi5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlh
MjBiYjZmNjEyYzc2ZThkNGEyYmVhNzMzYjRmYWY4NDI2ZjMzNGEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9wbGF5c3RhdGlvbi9XS0V2ZW50UGxheVN0YXRp
b24uaApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IElu
dGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tFdmVudC5oPgor
I2luY2x1ZGUgPFdlYktpdC9XS0dlb21ldHJ5Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0
ZXJuICJDIiB7CisjZW5kaWYKKworZW51bSB7CisgICAga1dLRXZlbnROb1R5cGUgPSAtMSwKKwor
ICAgIC8vIFdlYk1vdXNlRXZlbnQKKyAgICBrV0tFdmVudE1vdXNlRG93biwKKyAgICBrV0tFdmVu
dE1vdXNlVXAsCisgICAga1dLRXZlbnRNb3VzZU1vdmUsCisgICAga1dLRXZlbnRNb3VzZUZvcmNl
Q2hhbmdlZCwKKyAgICBrV0tFdmVudE1vdXNlRm9yY2VEb3duLAorICAgIGtXS0V2ZW50TW91c2VG
b3JjZVVwLAorCisgICAgLy8gV2ViV2hlZWxFdmVudAorICAgIGtXS0V2ZW50V2hlZWwsCisKKyAg
ICAvLyBXZWJLZXlib2FyZEV2ZW50CisgICAga1dLRXZlbnRLZXlEb3duLAorICAgIGtXS0V2ZW50
S2V5VXAKK307Cit0eXBlZGVmIGludDMyX3QgV0tFdmVudFR5cGU7CisKK3N0cnVjdCBXS0tleWJv
YXJkRXZlbnQgeworICAgIFdLRXZlbnRUeXBlIHR5cGU7CisgICAgY29uc3QgY2hhciogdGV4dDsK
KyAgICBpbnQzMl90IGxlbmd0aDsKKyAgICBjb25zdCBjaGFyKiBrZXlJZGVudGlmaWVyOworICAg
IHVpbnQzMl90IG1vZGlmaWVyczsKKyAgICBpbnQzMl90IHZpcnR1YWxLZXlDb2RlOworICAgIGlu
dDMyX3QgY2FyZXRPZmZzZXQ7Cit9OwordHlwZWRlZiBzdHJ1Y3QgV0tLZXlib2FyZEV2ZW50IFdL
S2V5Ym9hcmRFdmVudDsKKworZW51bSB7CisgICAga1dLSW5wdXRUeXBlTm9ybWFsLAorICAgIGtX
S0lucHV0VHlwZVNldENvbXBvc2l0aW9uLAorICAgIGtXS0lucHV0VHlwZUNvbmZpcm1Db21wb3Np
dGlvbiwKKyAgICBrV0tJbnB1dFR5cGVDYW5jZWxDb21wb3NpdGlvbiwKK307Cit0eXBlZGVmIHVp
bnQ4X3QgV0tJbnB1dFR5cGU7CisKK3N0cnVjdCBXS01vdXNlRXZlbnQgeworICAgIFdLRXZlbnRU
eXBlIHR5cGU7CisgICAgV0tFdmVudE1vdXNlQnV0dG9uIGJ1dHRvbjsKKyAgICBXS1BvaW50IHBv
c2l0aW9uOworICAgIGludDMyX3QgY2xpY2tDb3VudDsKKyAgICB1aW50MzJfdCBtb2RpZmllcnM7
Cit9OwordHlwZWRlZiBzdHJ1Y3QgV0tNb3VzZUV2ZW50IFdLTW91c2VFdmVudDsKKworc3RydWN0
IFdLV2hlZWxFdmVudCB7CisgICAgV0tFdmVudFR5cGUgdHlwZTsKKyAgICBXS1BvaW50IHBvc2l0
aW9uOworICAgIFdLU2l6ZSBkZWx0YTsKKyAgICBXS1NpemUgd2hlZWxUaWNrczsKKyAgICB1aW50
MzJfdCBtb2RpZmllcnM7Cit9OwordHlwZWRlZiBzdHJ1Y3QgV0tXaGVlbEV2ZW50IFdLV2hlZWxF
dmVudDsKKworV0tfRVhQT1JUIFdLS2V5Ym9hcmRFdmVudCBXS0tleWJvYXJkRXZlbnRNYWtlKFdL
RXZlbnRUeXBlIHR5cGUsIFdLSW5wdXRUeXBlIGlucHV0VHlwZSwgY29uc3QgY2hhciogdGV4dCwg
dWludDMyX3QgbGVuZ3RoLCBjb25zdCBjaGFyKiBrZXlJZGVudGlmaWVyLCBpbnQzMl90IHZpcnR1
YWxLZXlDb2RlLCBpbnQzMl90IGNhcmV0T2Zmc2V0LCB1aW50MzJfdCBhdHRyaWJ1dGVzLCB1aW50
MzJfdCBtb2RpZmllcnMpOworCitXS19FWFBPUlQgV0tNb3VzZUV2ZW50IFdLTW91c2VFdmVudE1h
a2UoV0tFdmVudFR5cGUgdHlwZSwgV0tFdmVudE1vdXNlQnV0dG9uIGJ1dHRvbiwgV0tQb2ludCBw
b3NpdGlvbiwgaW50MzJfdCBjbGlja0NvdW50LCB1aW50MzJfdCBtb2RpZmllcnMpOworCitXS19F
WFBPUlQgV0tXaGVlbEV2ZW50IFdLV2hlZWxFdmVudE1ha2UoV0tFdmVudFR5cGUgdHlwZSwgV0tQ
b2ludCBwb3NpdGlvbiwgV0tTaXplIGRlbHRhLCBXS1NpemUgd2hlZWxUaWNrcywgdWludDMyX3Qg
bW9kaWZpZXJzKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5jcHAKaW5kZXggYTY1ZjA2NmY5ODEzZThmNTQ2NzNjOGYzMzQ4ODUzYzE3YTZkZjYwZC4u
MTg1ODVmNjFiYjZlY2FiZWMzOWZmMGMwM2I4NjJjNjU4NTZkY2EyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5jcHAKQEAgLTcxLDcgKzcxLDExIEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+
IFByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSgpCiAjaWYgUExBVEZPUk0oR1RLKSAmJiAh
VVNFKEdUSzQpCiAgICAgY29weS0+bV91c2VTeXN0ZW1BcHBlYXJhbmNlRm9yU2Nyb2xsYmFycyA9
IG1fdXNlU3lzdGVtQXBwZWFyYW5jZUZvclNjcm9sbGJhcnM7CiAjZW5kaWYKLQorI2lmIFBMQVRG
T1JNKFBMQVlTVEFUSU9OKQorICAgIGNvcHktPm1fd2ViUHJvY2Vzc1BhdGggPSB0aGlzLT5tX3dl
YlByb2Nlc3NQYXRoOworICAgIGNvcHktPm1fbmV0d29ya1Byb2Nlc3NQYXRoID0gdGhpcy0+bV9u
ZXR3b3JrUHJvY2Vzc1BhdGg7CisgICAgY29weS0+bV91c2VySWQgPSB0aGlzLT5tX3VzZXJJZDsK
KyNlbmRpZgogICAgIHJldHVybiBjb3B5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKaW5kZXggZWNi
ZjI0NTVhMWUxMDJiNTk2MjQ0ZjE0OWU4NmVmM2ZmYzY4YjdkMi4uNjQ5MjQ5MDJmMTk4MTE3OTI1
MzdhMTVhMzJlZDRkNzA2ZGFmOTY3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaApAQCAtMTM2LDYgKzEz
NiwxNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRVc2VTeXN0ZW1BcHBlYXJhbmNlRm9yU2Nyb2xs
YmFycyhib29sIHVzZVN5c3RlbUFwcGVhcmFuY2VGb3JTY3JvbGxiYXJzKSB7IG1fdXNlU3lzdGVt
QXBwZWFyYW5jZUZvclNjcm9sbGJhcnMgPSB1c2VTeXN0ZW1BcHBlYXJhbmNlRm9yU2Nyb2xsYmFy
czsgfQogI2VuZGlmCiAKKyNpZiBQTEFURk9STShQTEFZU1RBVElPTikKKyAgICBjb25zdCBXVEY6
OlN0cmluZyYgd2ViUHJvY2Vzc1BhdGgoKSBjb25zdCB7IHJldHVybiBtX3dlYlByb2Nlc3NQYXRo
OyB9CisgICAgdm9pZCBzZXRXZWJQcm9jZXNzUGF0aChjb25zdCBXVEY6OlN0cmluZyYgd2ViUHJv
Y2Vzc1BhdGgpIHsgbV93ZWJQcm9jZXNzUGF0aCA9IHdlYlByb2Nlc3NQYXRoOyB9CisKKyAgICBj
b25zdCBXVEY6OlN0cmluZyYgbmV0d29ya1Byb2Nlc3NQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9u
ZXR3b3JrUHJvY2Vzc1BhdGg7IH0KKyAgICB2b2lkIHNldE5ldHdvcmtQcm9jZXNzUGF0aChjb25z
dCBXVEY6OlN0cmluZyYgbmV0d29ya1Byb2Nlc3NQYXRoKSB7IG1fbmV0d29ya1Byb2Nlc3NQYXRo
ID0gbmV0d29ya1Byb2Nlc3NQYXRoOyB9CisKKyAgICBpbnQzMl90IHVzZXJJZCgpIGNvbnN0IHsg
cmV0dXJuIG1fdXNlcklkOyB9CisgICAgdm9pZCBzZXRVc2VySWQoY29uc3QgaW50MzJfdCB1c2Vy
SWQpIHsgbV91c2VySWQgPSB1c2VySWQ7IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdURjo6
U3RyaW5nIG1faW5qZWN0ZWRCdW5kbGVQYXRoOwogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9j
dXN0b21DbGFzc2VzRm9yUGFyYW1ldGVyQ29kZXI7CkBAIC0xNjUsNiArMTc2LDExIEBAIHByaXZh
dGU6CiAjaWYgUExBVEZPUk0oR1RLKSAmJiAhVVNFKEdUSzQpCiAgICAgYm9vbCBtX3VzZVN5c3Rl
bUFwcGVhcmFuY2VGb3JTY3JvbGxiYXJzIHsgZmFsc2UgfTsKICNlbmRpZgorI2lmIFBMQVRGT1JN
KFBMQVlTVEFUSU9OKQorICAgIFdURjo6U3RyaW5nIG1fd2ViUHJvY2Vzc1BhdGg7CisgICAgV1RG
OjpTdHJpbmcgbV9uZXR3b3JrUHJvY2Vzc1BhdGg7CisgICAgaW50MzJfdCBtX3VzZXJJZCB7IC0x
IH07CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tBUElDYXN0UGxheVN0YXRpb24u
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3BsYXlzdGF0aW9uL1dLQVBJQ2FzdFBs
YXlTdGF0aW9uLmgKaW5kZXggMjJlZmQ4NWQxYmE3Nzg3NjhjNTBhYjE4OWU5NzkyYzc0MDdlODg0
Yy4uYjVkNTEwZTdjYTQzNGFjYzg3ZDA3YzcyOWY4NzlhNjlkYmVjZDBkNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tBUElDYXN0UGxheVN0
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9X
S0FQSUNhc3RQbGF5U3RhdGlvbi5oCkBAIC0zMCw0ICszMCwyNCBAQAogI2Vycm9yICJQbGVhc2Ug
I2luY2x1ZGUgXCJXS0FQSUNhc3QuaFwiIGluc3RlYWQgb2YgdGhpcyBmaWxlIGRpcmVjdGx5LiIK
ICNlbmRpZgogCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVmlldzsKKworV0tfQURE
X0FQSV9NQVBQSU5HKFdLVmlld1JlZiwgV2ViVmlldykKKwordGVtcGxhdGU8PgoraW5saW5lIFdL
Vmlld1JlZiB0b0FQSTw+KFdlYlZpZXcqIHZpZXcpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0
X2Nhc3Q8V0tWaWV3UmVmPihzdGF0aWNfY2FzdDx2b2lkKj4odmlldykpOworfQorCit0ZW1wbGF0
ZTw+CitpbmxpbmUgV2ViVmlldyogdG9JbXBsPD4oV0tWaWV3UmVmIHZpZXcpCit7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFdlYlZpZXcqPihzdGF0aWNfY2FzdDx2b2lkKj4oY29uc3RfY2FzdDx0
eXBlbmFtZSBzdGQ6OnJlbW92ZV9jb25zdDx0eXBlbmFtZSBzdGQ6OnJlbW92ZV9wb2ludGVyPFdL
Vmlld1JlZj46OnR5cGU+Ojp0eXBlKj4odmlldykpKTsKK30KKworfQorCiAjZW5kaWYgLyogV0tB
UElDYXN0UGxheVN0YXRpb25faCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvcGxheXN0YXRpb24vV0tDb250ZXh0Q29uZmlndXJhdGlvblBsYXlTdGF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3BsYXlzdGF0aW9uL1dLQ29udGV4dENv
bmZpZ3VyYXRpb25QbGF5U3RhdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTllYzVmYTU5MmI5NjZiZGI1
ZGZkM2RkNGNkZDhjZTBhMjU3OWRlZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9DL3BsYXlzdGF0aW9uL1dLQ29udGV4dENvbmZpZ3VyYXRpb25QbGF5U3Rh
dGlvbi5jcHAKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255
IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV0tDb250ZXh0Q29uZmlndXJhdGlvblBsYXlTdGF0aW9uLmgiCisK
KyNpbmNsdWRlICJBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKKwordm9pZCBXS0NvbnRleHRDb25maWd1cmF0aW9uU2V0V2ViUHJvY2Vzc1BhdGgo
V0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uLCBXS1N0cmluZ1JlZiB3ZWJQ
cm9jZXNzUGF0aCkKK3sKKyAgICB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworICAgIHRvSW1wbChj
b25maWd1cmF0aW9uKS0+c2V0V2ViUHJvY2Vzc1BhdGgodG9JbXBsKHdlYlByb2Nlc3NQYXRoKS0+
c3RyaW5nKCkpOworfQorCitXS1N0cmluZ1JlZiBXS0NvbnRleHRDb25maWd1cmF0aW9uQ29weVdl
YlByb2Nlc3NQYXRoKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbikKK3sK
KyAgICB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0lt
cGwoY29uZmlndXJhdGlvbiktPndlYlByb2Nlc3NQYXRoKCkpOworfQorCit2b2lkIFdLQ29udGV4
dENvbmZpZ3VyYXRpb25TZXROZXR3b3JrUHJvY2Vzc1BhdGgoV0tDb250ZXh0Q29uZmlndXJhdGlv
blJlZiBjb25maWd1cmF0aW9uLCBXS1N0cmluZ1JlZiBuZXR3b3JrUHJvY2Vzc1BhdGgpCit7Cisg
ICAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKyAgICB0b0ltcGwoY29uZmlndXJhdGlvbiktPnNl
dE5ldHdvcmtQcm9jZXNzUGF0aCh0b0ltcGwobmV0d29ya1Byb2Nlc3NQYXRoKS0+c3RyaW5nKCkp
OworfQorCitXS1N0cmluZ1JlZiBXS0NvbnRleHRDb25maWd1cmF0aW9uQ29weU5ldHdvcmtQcm9j
ZXNzUGF0aChXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pCit7CisgICAg
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKyAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGNv
bmZpZ3VyYXRpb24pLT5uZXR3b3JrUHJvY2Vzc1BhdGgoKSk7Cit9CisKK3ZvaWQgV0tDb250ZXh0
Q29uZmlndXJhdGlvblNldFVzZXJJZChXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3Vy
YXRpb24sIGludDMyX3QgdXNlcklkKQoreworICAgIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Cisg
ICAgdG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5zZXRVc2VySWQodXNlcklkKTsKK30KKworaW50MzJf
dCBXS0NvbnRleHRDb25maWd1cmF0aW9uR2V0VXNlcklkKFdLQ29udGV4dENvbmZpZ3VyYXRpb25S
ZWYgY29uZmlndXJhdGlvbikKK3sKKyAgICB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworICAgIHJl
dHVybiB0b0ltcGwoY29uZmlndXJhdGlvbiktPnVzZXJJZCgpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tDb250ZXh0Q29uZmlndXJh
dGlvblBsYXlTdGF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3Rh
dGlvbi9XS0NvbnRleHRDb25maWd1cmF0aW9uUGxheVN0YXRpb24uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZWQw
OGI4ZGNjMzE5MDRjYTZmZDlkNmUyMDVkZDI5MTU3ODU2ZTI4Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tDb250ZXh0Q29uZmln
dXJhdGlvblBsYXlTdGF0aW9uLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJL
aXQvV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZi5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4
dGVybiAiQyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dENvbmZpZ3VyYXRp
b25TZXRXZWJQcm9jZXNzUGF0aChXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRp
b24sIFdLU3RyaW5nUmVmIHdlYlByb2Nlc3NQYXRoKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBX
S0NvbnRleHRDb25maWd1cmF0aW9uQ29weVdlYlByb2Nlc3NQYXRoKFdLQ29udGV4dENvbmZpZ3Vy
YXRpb25SZWYgY29uZmlndXJhdGlvbik7CisKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dENvbmZp
Z3VyYXRpb25TZXROZXR3b3JrUHJvY2Vzc1BhdGgoV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBj
b25maWd1cmF0aW9uLCBXS1N0cmluZ1JlZiBuZXR3b3JrUHJvY2Vzc1BhdGgpOworV0tfRVhQT1JU
IFdLU3RyaW5nUmVmIFdLQ29udGV4dENvbmZpZ3VyYXRpb25Db3B5TmV0d29ya1Byb2Nlc3NQYXRo
KFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CisKK1dLX0VYUE9SVCB2
b2lkIFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRVc2VySWQoV0tDb250ZXh0Q29uZmlndXJhdGlv
blJlZiBjb25maWd1cmF0aW9uLCBpbnQzMl90IHVzZXJJZCk7CitXS19FWFBPUlQgaW50MzJfdCBX
S0NvbnRleHRDb25maWd1cmF0aW9uR2V0VXNlcklkKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYg
Y29uZmlndXJhdGlvbik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9XS1BhZ2VQcml2
YXRlUGxheVN0YXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvcGxheXN0
YXRpb24vV0tQYWdlUHJpdmF0ZVBsYXlTdGF0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNmE4Y2QwOGY4
N2E0MWU2Zjc5ZGRlNTRiMGRjNmNmN2QyNzFkMGUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tQYWdlUHJpdmF0ZVBsYXlTdGF0
aW9uLmNwcApAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255
IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV0tQYWdlUHJpdmF0ZVBsYXlTdGF0aW9uLmgiCisKKyNpbmNsdWRl
ICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiTmF0aXZlV2ViTW91c2VFdmVu
dC5oIgorI2luY2x1ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJXZWJFdmVu
dEZhY3RvcnkuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlIDx3cGUvd3Bl
Lmg+CisKK3ZvaWQgV0tQYWdlU2V0U2l6ZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTaXplIHNpemUp
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXS1BhZ2VIYW5kbGVLZXlib2Fy
ZEV2ZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBXS0tleWJvYXJkRXZlbnQgZXZlbnQpCit7CisgICAg
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworICAgIHdwZV9pbnB1dF9rZXlib2FyZF9ldmVudCB3
cGVFdmVudDsKKyAgICB3cGVFdmVudC50aW1lID0gMDsKKyAgICB3cGVFdmVudC5rZXlfY29kZSA9
IGV2ZW50LnZpcnR1YWxLZXlDb2RlOworICAgIHdwZUV2ZW50LmhhcmR3YXJlX2tleV9jb2RlID0g
ZXZlbnQudmlydHVhbEtleUNvZGU7CisgICAgd3BlRXZlbnQubW9kaWZpZXJzID0gMDsgLy8gVE9E
TzogSGFuZGxlIG1vZGlmaWVycy4KKyAgICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHsKKyAgICBjYXNl
IGtXS0V2ZW50S2V5RG93bjoKKyAgICAgICAgd3BlRXZlbnQucHJlc3NlZCA9IHRydWU7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2Uga1dLRXZlbnRLZXlVcDoKKyAgICAgICAgd3BlRXZlbnQucHJl
c3NlZCA9IGZhbHNlOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE5hdGl2ZVdl
YktleWJvYXJkRXZlbnQ6OkhhbmRsZWRCeUlucHV0TWV0aG9kIGhhbmRsZWRCeUlucHV0TWV0aG9k
ID0gTmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6SGFuZGxlZEJ5SW5wdXRNZXRob2Q6Ok5vOworICAg
IE9wdGlvbmFsPFZlY3RvcjxXZWJDb3JlOjpDb21wb3NpdGlvblVuZGVybGluZT4+IHByZWVkaXRV
bmRlcmxpbmVzOworICAgIE9wdGlvbmFsPEVkaXRpbmdSYW5nZT4gcHJlZWRpdFNlbGVjdGlvblJh
bmdlOworICAgIHRvSW1wbChwYWdlUmVmKS0+aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRpdmVXZWJL
ZXlib2FyZEV2ZW50KCZ3cGVFdmVudCwgIiIsIGhhbmRsZWRCeUlucHV0TWV0aG9kLCBXVEZNb3Zl
KHByZWVkaXRVbmRlcmxpbmVzKSwgV1RGTW92ZShwcmVlZGl0U2VsZWN0aW9uUmFuZ2UpKSk7Cit9
CisKK3ZvaWQgV0tQYWdlSGFuZGxlTW91c2VFdmVudChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tNb3Vz
ZUV2ZW50IGV2ZW50KQoreworICAgIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKKyAgICB3cGVf
aW5wdXRfcG9pbnRlcl9ldmVudCB3cGVFdmVudDsKKworICAgIHN3aXRjaCAoZXZlbnQudHlwZSkg
eworICAgIGNhc2Uga1dLRXZlbnRNb3VzZURvd246CisgICAgY2FzZSBrV0tFdmVudE1vdXNlVXA6
CisgICAgICAgIHdwZUV2ZW50LnR5cGUgPSB3cGVfaW5wdXRfcG9pbnRlcl9ldmVudF90eXBlX2J1
dHRvbjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrV0tFdmVudE1vdXNlTW92ZToKKyAgICAg
ICAgd3BlRXZlbnQudHlwZSA9IHdwZV9pbnB1dF9wb2ludGVyX2V2ZW50X3R5cGVfbW90aW9uOwor
ICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN3aXRjaCAoZXZlbnQuYnV0dG9uKSB7
CisgICAgY2FzZSBrV0tFdmVudE1vdXNlQnV0dG9uTGVmdEJ1dHRvbjoKKyAgICAgICAgd3BlRXZl
bnQuYnV0dG9uID0gMTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrV0tFdmVudE1vdXNlQnV0
dG9uTWlkZGxlQnV0dG9uOgorICAgICAgICB3cGVFdmVudC5idXR0b24gPSAzOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIGtXS0V2ZW50TW91c2VCdXR0b25SaWdodEJ1dHRvbjoKKyAgICAgICAg
d3BlRXZlbnQuYnV0dG9uID0gMjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrV0tFdmVudE1v
dXNlQnV0dG9uTm9CdXR0b246CisgICAgICAgIHdwZUV2ZW50LmJ1dHRvbiA9IDA7CisgICAgICAg
IGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIHdwZUV2ZW50LnRpbWUgPSAwOworICAgIHdwZUV2ZW50
LnggPSBldmVudC5wb3NpdGlvbi54OworICAgIHdwZUV2ZW50LnkgPSBldmVudC5wb3NpdGlvbi55
OworICAgIHdwZUV2ZW50LnN0YXRlID0gMDsKKyAgICB3cGVFdmVudC5tb2RpZmllcnMgPSAwOyAv
LyBUT0RPOiBIYW5kbGUgbW9kaWZpZXJzLgorCisgICAgY29uc3QgZmxvYXQgZGV2aWNlU2NhbGVG
YWN0b3IgPSAxOworCisgICAgdG9JbXBsKHBhZ2VSZWYpLT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2
ZVdlYk1vdXNlRXZlbnQoJndwZUV2ZW50LCBkZXZpY2VTY2FsZUZhY3RvcikpOworfQorCit2b2lk
IFdLUGFnZUhhbmRsZVdoZWVsRXZlbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLV2hlZWxFdmVudCBl
dmVudCkKK3sKKyAgICB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCisgICAgd3BlX2lucHV0X2F4
aXNfMmRfZXZlbnQgd3BlRXZlbnQ7CisgICAgd3BlRXZlbnQuYmFzZS50eXBlID0gKHdwZV9pbnB1
dF9heGlzX2V2ZW50X3R5cGUpKHdwZV9pbnB1dF9heGlzX2V2ZW50X3R5cGVfbW90aW9uX3Ntb290
aCB8IHdwZV9pbnB1dF9heGlzX2V2ZW50X3R5cGVfbWFza18yZCk7CisgICAgd3BlRXZlbnQuYmFz
ZS50aW1lID0gMDsKKyAgICB3cGVFdmVudC5iYXNlLnggPSBldmVudC5wb3NpdGlvbi54OworICAg
IHdwZUV2ZW50LmJhc2UueSA9IGV2ZW50LnBvc2l0aW9uLnk7CisgICAgd3BlRXZlbnQuYmFzZS5h
eGlzID0gMDsKKyAgICB3cGVFdmVudC5iYXNlLnZhbHVlID0gMDsKKyAgICB3cGVFdmVudC5iYXNl
Lm1vZGlmaWVycyA9IDA7IC8vIFRPRE86IEhhbmRsZSBtb2RpZmllcnMuCisgICAgd3BlRXZlbnQu
eF9heGlzID0gZXZlbnQuZGVsdGEud2lkdGg7CisgICAgd3BlRXZlbnQueF9heGlzID0gZXZlbnQu
ZGVsdGEuaGVpZ2h0OworCisgICAgY29uc3QgZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IgPSAxOwor
CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVsRXZl
bnQoJndwZUV2ZW50LmJhc2UsIGRldmljZVNjYWxlRmFjdG9yLCBXZWJXaGVlbEV2ZW50OjpQaGFz
ZTo6UGhhc2VOb25lLCBXZWJXaGVlbEV2ZW50OjpQaGFzZTo6UGhhc2VOb25lKSk7Cit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9XS1BhZ2VQ
cml2YXRlUGxheVN0YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3BsYXlz
dGF0aW9uL1dLUGFnZVByaXZhdGVQbGF5U3RhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZkMmFmMzVlMzFk
YTc3NzhmZDY0MDdmZGZmMzM1ZjllOTdiMWEyNjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9XS1BhZ2VQcml2YXRlUGxheVN0YXRp
b24uaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50
ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0V2ZW50UGxheVN0
YXRpb24uaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitX
S19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRTaXplKFdLUGFnZVJlZiBwYWdlLCBXS1NpemUgc2l6ZSk7
CisKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZUhhbmRsZUtleWJvYXJkRXZlbnQoV0tQYWdlUmVmIHBh
Z2UsIFdLS2V5Ym9hcmRFdmVudCk7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VIYW5kbGVNb3VzZUV2
ZW50KFdLUGFnZVJlZiBwYWdlLCBXS01vdXNlRXZlbnQpOworV0tfRVhQT1JUIHZvaWQgV0tQYWdl
SGFuZGxlV2hlZWxFdmVudChXS1BhZ2VSZWYgcGFnZSwgV0tXaGVlbEV2ZW50KTsKKworI2lmZGVm
IF9fY3BsdXNwbHVzCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL3BsYXlzdGF0aW9uL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9wbGF5c3RhdGlvbi9XS1ZpZXcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjMGZjOWQ0ZWNlZWNm
NWU4YmE5NmEwNDFjMjI0MzcwNTIwNzc3OTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9XS1ZpZXcuY3BwCkBAIC0wLDAgKzEsNDMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5t
ZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLVmll
dy5oIgorCisjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKKyNpbmNsdWRlICJXZWJWaWV3LmgiCisKK1dLVmlld1JlZiBXS1ZpZXdDcmVhdGUo
V0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uKQoreworICAgIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CisgICAgcmV0dXJuIHRvQVBJKFdlYlZpZXc6OmNyZWF0ZSgqdG9JbXBsKGNv
bmZpZ3VyYXRpb24pKS5sZWFrUmVmKCkpOworfQorCitXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShX
S1ZpZXdSZWYgdmlld1JlZikKK3sKKyAgICB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworICAgIHJl
dHVybiB0b0FQSSh0b0ltcGwodmlld1JlZiktPnBhZ2UoKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9XS1ZpZXcuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3BsYXlzdGF0aW9uL1dLVmlldy5oCmluZGV4IDMyNDY3M2Iy
OTQxZjczZWU5NGIyMjUzMDgzZDMxZDAxODQ2NTM4N2EuLmM1ZWU0NDczMjVhMGY4NWYwNWJhZDFi
NjkyNjUyOGIxZTZlOTY3MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL3BsYXlzdGF0aW9uL1dLVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL3BsYXlzdGF0aW9uL1dLVmlldy5oCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXS1ZpZXdfaAotI2RlZmluZSBX
S1ZpZXdfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CiAKQEAg
LTMyLDggKzMxLDkgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKK1dLX0VYUE9SVCBXS1ZpZXdS
ZWYgV0tWaWV3Q3JlYXRlKFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CitX
S19FWFBPUlQgV0tQYWdlUmVmIFdLVmlld0dldFBhZ2UoV0tWaWV3UmVmIHZpZXcpOworCiAjaWZk
ZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgotCi0jZW5kaWYgLyogV0tWaWV3X2ggKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKaW5k
ZXggNzZhOTA0YjZjM2Q5NWU5MjA2ZDA5MTc3MDZkNjcyZDhkNzE2MjFmYy4uMjI1MTA5MzNlZjBj
NjM2MTI3YjIxNjllNzk3ZTIwNzJiZGZiZTA3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKQEAgLTg0LDYgKzg0LDExIEBAIHB1
YmxpYzoKICNpZiBFTkFCTEUoREVWRUxPUEVSX01PREUpCiAgICAgICAgIFN0cmluZyBwcm9jZXNz
Q21kUHJlZml4OwogI2VuZGlmCisjZW5kaWYKKworI2lmIFBMQVRGT1JNKFBMQVlTVEFUSU9OKQor
ICAgICAgICBTdHJpbmcgcHJvY2Vzc1BhdGg7CisgICAgICAgIGludDMyX3QgdXNlcklkIHsgLTEg
fTsKICNlbmRpZgogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0xhdW5jaGVyL3BsYXlzdGF0aW9uL1Byb2Nlc3NMYXVuY2hlclBsYXlTdGF0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL3BsYXlzdGF0aW9uL1Byb2Nlc3NMYXVuY2hl
clBsYXlTdGF0aW9uLmNwcAppbmRleCA1NGU2MTBkY2ZjNGE3Mjc5ZjE3YWJhN2RlZDFkMGI4M2Uy
NzhkOTFhLi5iZWIwNzk1M2ExYjhhMjViMzI4YTdmYjNlYjVjNjkyODRiNjU2NmNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9wbGF5c3RhdGlvbi9Qcm9jZXNz
TGF1bmNoZXJQbGF5U3RhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1
bmNoZXIvcGxheXN0YXRpb24vUHJvY2Vzc0xhdW5jaGVyUGxheVN0YXRpb24uY3BwCkBAIC0yOSwx
OCArMjksODAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQcm9jZXNzTGF1bmNo
ZXIuaCIKIAorI2luY2x1ZGUgPHByb2Nlc3MtbGF1bmNoZXIuaD4KKyNpbmNsdWRlIDxzdGRpbnQu
aD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCisjZGVm
aW5lIE1BS0VfUFJPQ0VTU19QQVRIKHgpICIvYXBwMC8iICN4ICJQcm9jZXNzLnNlbGYiCitzdGF0
aWMgY29uc3QgY2hhciogZGVmYXVsdFByb2Nlc3NQYXRoKFByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vz
c1R5cGUgcHJvY2Vzc1R5cGUpCit7CisgICAgc3dpdGNoIChwcm9jZXNzVHlwZSkgeworICAgIGNh
c2UgUHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlwZTo6TmV0d29yazoKKyAgICAgICAgcmV0dXJu
IE1BS0VfUFJPQ0VTU19QQVRIKE5ldHdvcmspOworI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKKyAg
ICBjYXNlIFByb2Nlc3NMYXVuY2hlcjo6UHJvY2Vzc1R5cGU6OkdQVToKKyAgICAgICAgcmV0dXJu
IE1BS0VfUFJPQ0VTU19QQVRIKEdQVSk7CisjZW5kaWYKKyAgICBjYXNlIFByb2Nlc3NMYXVuY2hl
cjo6UHJvY2Vzc1R5cGU6OldlYjoKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gTUFLRV9Q
Uk9DRVNTX1BBVEgoV2ViKTsKKyAgICB9Cit9CisKIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjpsYXVu
Y2hQcm9jZXNzKCkKIHsKKyAgICBJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgc2VydmVySWRl
bnRpZmllcjsKKyAgICBJUEM6OkNvbm5lY3Rpb246OlNvY2tldFBhaXIgc29ja2V0UGFpciA9IElQ
Qzo6Q29ubmVjdGlvbjo6Y3JlYXRlUGxhdGZvcm1Db25uZWN0aW9uKElQQzo6Q29ubmVjdGlvbjo6
Q29ubmVjdGlvbk9wdGlvbnM6OlNldENsb2V4ZWNPblNlcnZlcik7CisKKyAgICBpbnQgc2VuZEJ1
ZlNpemUgPSAzMiAqIDEwMjQ7CisgICAgc2V0c29ja29wdChzb2NrZXRQYWlyLnNlcnZlciwgU09M
X1NPQ0tFVCwgU09fU05EQlVGLCAmc2VuZEJ1ZlNpemUsIDQpOworICAgIHNldHNvY2tvcHQoc29j
a2V0UGFpci5jbGllbnQsIFNPTF9TT0NLRVQsIFNPX1NOREJVRiwgJnNlbmRCdWZTaXplLCA0KTsK
KworICAgIGludCByZWN2QnVmU2l6ZSA9IDMyICogMTAyNDsKKyAgICBzZXRzb2Nrb3B0KHNvY2tl
dFBhaXIuc2VydmVyLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsICZyZWN2QnVmU2l6ZSwgNCk7Cisg
ICAgc2V0c29ja29wdChzb2NrZXRQYWlyLmNsaWVudCwgU09MX1NPQ0tFVCwgU09fUkNWQlVGLCAm
cmVjdkJ1ZlNpemUsIDQpOworCisgICAgY2hhciBjb3JlUHJvY2Vzc0lkZW50aWZpZXJTdHJpbmdb
MTZdOworICAgIHNucHJpbnRmKGNvcmVQcm9jZXNzSWRlbnRpZmllclN0cmluZywgc2l6ZW9mIGNv
cmVQcm9jZXNzSWRlbnRpZmllclN0cmluZywgIiVsZCIsIG1fbGF1bmNoT3B0aW9ucy5wcm9jZXNz
SWRlbnRpZmllci50b1VJbnQ2NCgpKTsKKworICAgIGNoYXIqIGFyZ3ZbXSA9IHsKKyAgICAgICAg
Y29yZVByb2Nlc3NJZGVudGlmaWVyU3RyaW5nLAorICAgICAgICBudWxscHRyCisgICAgfTsKKwor
ICAgIFBsYXlTdGF0aW9uOjpMYXVuY2hQYXJhbSBwYXJhbSB7IHNvY2tldFBhaXIuY2xpZW50LCBt
X2xhdW5jaE9wdGlvbnMudXNlcklkIH07CisgICAgaW50MzJfdCBhcHBMb2NhbFBpZCA9IFBsYXlT
dGF0aW9uOjpsYXVuY2hQcm9jZXNzKAorICAgICAgICAhbV9sYXVuY2hPcHRpb25zLnByb2Nlc3NQ
YXRoLmlzRW1wdHkoKSA/IG1fbGF1bmNoT3B0aW9ucy5wcm9jZXNzUGF0aC51dGY4KCkuZGF0YSgp
IDogZGVmYXVsdFByb2Nlc3NQYXRoKG1fbGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSksCisgICAg
ICAgIGFyZ3YsIHBhcmFtKTsKKyAgICBpZiAoYXBwTG9jYWxQaWQgPCAwKSB7CisjaWZuZGVmIE5E
RUJVRworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBsYXVuY2ggcHJvY2Vzcy4g
ZXJyPTB4JTA4eCBwYXRoPSVzXG4iLCBhcHBMb2NhbFBpZCwgbV9sYXVuY2hPcHRpb25zLnByb2Nl
c3NQYXRoLnV0ZjgoKS5kYXRhKCkpOworI2VuZGlmCisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgY2xvc2Uoc29ja2V0UGFpci5jbGllbnQpOworICAgIHNlcnZlcklkZW50aWZpZXIgPSBzb2Nr
ZXRQYWlyLnNlcnZlcjsKKworICAgIC8vIFdlJ3ZlIGZpbmlzaGVkIGxhdW5jaGluZyB0aGUgcHJv
Y2VzcywgbWVzc2FnZSBiYWNrIHRvIHRoZSBtYWluIHJ1biBsb29wLgorICAgIFJlZlB0cjxQcm9j
ZXNzTGF1bmNoZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFs9XSB7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZEZpbmlzaExhdW5jaGluZ1By
b2Nlc3MoYXBwTG9jYWxQaWQsIHNlcnZlcklkZW50aWZpZXIpOworICAgIH0pOwogfQogCiB2b2lk
IFByb2Nlc3NMYXVuY2hlcjo6dGVybWluYXRlUHJvY2VzcygpCiB7CisgICAgaWYgKCFtX3Byb2Nl
c3NJZGVudGlmaWVyKQorICAgICAgICByZXR1cm47CisKKyAgICBQbGF5U3RhdGlvbjo6dGVybWlu
YXRlUHJvY2VzcyhtX3Byb2Nlc3NJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBQcm9jZXNzTGF1bmNo
ZXI6OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiB7CisgICAgbV9wcm9jZXNzSWRlbnRpZmllciA9IDA7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggMzZmN2M0NWYw
YmRhYTUyYjVkOGYxMTAyYWEzOGI2ZTc5YTVkNjg0MC4uNWU5ODI5NDcwMjllZTc1YzdkMzVjYmU3
NjExNDEzMzEzNmViZGZmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xMDksNiArMTA5LDExIEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6
OkxhdW5jaE9wdGlvbnMmIGxhdW5jCiAgICAgICAgIHByb2Nlc3NQb29sKCkuc2V0U2hvdWxkTWFr
ZU5leHROZXR3b3JrUHJvY2Vzc0xhdW5jaEZhaWxGb3JUZXN0aW5nKGZhbHNlKTsKICAgICAgICAg
bGF1bmNoT3B0aW9ucy5zaG91bGRNYWtlUHJvY2Vzc0xhdW5jaEZhaWxGb3JUZXN0aW5nID0gdHJ1
ZTsKICAgICB9CisKKyNpZiBQTEFURk9STShQTEFZU1RBVElPTikKKyAgICBsYXVuY2hPcHRpb25z
LnByb2Nlc3NQYXRoID0gbV9wcm9jZXNzUG9vbC5uZXR3b3JrUHJvY2Vzc1BhdGgoKTsKKyAgICBs
YXVuY2hPcHRpb25zLnVzZXJJZCA9IG1fcHJvY2Vzc1Bvb2wudXNlcklkKCk7CisjZW5kaWYKIH0K
IAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpjb25uZWN0aW9uV2lsbE9wZW4oSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgKaW5kZXggMTkzOGY1YTBhZmU4ZmNiZjk4YzYzZTFlNTEwMmFlYWI3N2MzY2NlMC4uYzE2YjIy
OTFlNmQ5NmQ3YWExOGYwNWMzYTk2ZTYzZDIwZDVkMzRhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC01MzYsNiArNTM2LDEyIEBAIHB1YmxpYzoKICAgICB2
b2lkIG5vdGlmeVByZWZlcmVuY2VzQ2hhbmdlZChjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIGVuY29kZWRWYWx1ZSk7CiAjZW5k
aWYKIAorI2lmIFBMQVRGT1JNKFBMQVlTVEFUSU9OKQorICAgIGNvbnN0IFN0cmluZyYgd2ViUHJv
Y2Vzc1BhdGgoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkUGF0aHMud2ViUHJvY2Vzc1BhdGg7
IH0KKyAgICBjb25zdCBTdHJpbmcmIG5ldHdvcmtQcm9jZXNzUGF0aCgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzb2x2ZWRQYXRocy5uZXR3b3JrUHJvY2Vzc1BhdGg7IH0KKyAgICBpbnQzMl90IHVzZXJJ
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlcklkOyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB2
b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogCkBAIC03NjMsNiArNzY5LDExIEBAIHByaXZhdGU6
CiAgICAgICAgIFN0cmluZyBjb250YWluZXJUZW1wb3JhcnlEaXJlY3Rvcnk7CiAjZW5kaWYKIAor
I2lmIFBMQVRGT1JNKFBMQVlTVEFUSU9OKQorICAgICAgICBTdHJpbmcgd2ViUHJvY2Vzc1BhdGg7
CisgICAgICAgIFN0cmluZyBuZXR3b3JrUHJvY2Vzc1BhdGg7CisjZW5kaWYKKwogICAgICAgICBW
ZWN0b3I8U3RyaW5nPiBhZGRpdGlvbmFsV2ViUHJvY2Vzc1NhbmRib3hFeHRlbnNpb25QYXRoczsK
ICAgICB9OwogICAgIFBhdGhzIG1fcmVzb2x2ZWRQYXRoczsKQEAgLTgwMCw2ICs4MTEsMTAgQEAg
cHJpdmF0ZToKICAgICB9OwogICAgIE9wdGlvbmFsPEF1ZGlibGVNZWRpYUFjdGl2aXR5PiBtX2F1
ZGlibGVNZWRpYUFjdGl2aXR5OwogCisjaWYgUExBVEZPUk0oUExBWVNUQVRJT04pCisgICAgaW50
MzJfdCBtX3VzZXJJZCB7IC0xIH07CisjZW5kaWYKKwogI2lmIFBMQVRGT1JNKElPUykKICAgICAv
LyBGSVhNRTogRGVsYXllZCBwcm9jZXNzIGxhdW5jaCBpcyBjdXJyZW50bHkgZGlzYWJsZWQgb24g
aU9TIGZvciBwZXJmb3JtYW5jZSByZWFzb25zIChyZGFyOi8vcHJvYmxlbS80OTA3NDEzMSkuCiAg
ICAgYm9vbCBtX2lzRGVsYXllZFdlYlByb2Nlc3NMYXVuY2hEaXNhYmxlZCB7IHRydWUgfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IGU3YThjZGNi
MzM3MzUxZTNmOWRlYjIzZThmZGE3MGE5ZjkzNGY5Y2QuLmNjNDM1OWE3YWNjOTk5NTk1MDY2YjRh
ZmM5NmQ3Y2Q1YTQ3OTA0NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcApAQCAtMzMyLDYgKzMzMiwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6Z2V0
TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdAog
ICAgIGlmIChpc1ByZXdhcm1lZCgpKQogICAgICAgICBsYXVuY2hPcHRpb25zLmV4dHJhSW5pdGlh
bGl6YXRpb25EYXRhLmFkZCgiaXMtcHJld2FybWVkIl9zLCAiMSJfcyk7CiAKKyNpZiBQTEFURk9S
TShQTEFZU1RBVElPTikKKyAgICBsYXVuY2hPcHRpb25zLnByb2Nlc3NQYXRoID0gbV9wcm9jZXNz
UG9vbC0+d2ViUHJvY2Vzc1BhdGgoKTsKKyAgICBsYXVuY2hPcHRpb25zLnVzZXJJZCA9IG1fcHJv
Y2Vzc1Bvb2wtPnVzZXJJZCgpOworI2VuZGlmCisKICAgICBpZiAocHJvY2Vzc1Bvb2woKS5zaG91
bGRNYWtlTmV4dFdlYlByb2Nlc3NMYXVuY2hGYWlsRm9yVGVzdGluZygpKSB7CiAgICAgICAgIHBy
b2Nlc3NQb29sKCkuc2V0U2hvdWxkTWFrZU5leHRXZWJQcm9jZXNzTGF1bmNoRmFpbEZvclRlc3Rp
bmcoZmFsc2UpOwogICAgICAgICBsYXVuY2hPcHRpb25zLnNob3VsZE1ha2VQcm9jZXNzTGF1bmNo
RmFpbEZvclRlc3RpbmcgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvcGxheXN0YXRpb24vUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvcGxheXN0YXRpb24vUGFnZUNsaWVudEltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5YmI1OGQ5YWUx
ZmEwNDczZDI5YTk1NDc4Yzc3MDk0MTgxOTdkZmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9wbGF5c3RhdGlvbi9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTAsMCAr
MSwyOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRl
cnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlBhZ2VDbGllbnRJbXBsLmgiCisKKyNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0
ZWRHcmFwaGljcy5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgIldlYlZp
ZXcuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1BhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50
SW1wbChXZWJWaWV3JiB2aWV3KQorICAgIDogbV92aWV3KHZpZXcpCit7Cit9CisKKy8vIFBhZ2VD
bGllbnQncyBwdXJlIHZpcnR1YWwgZnVuY3Rpb25zCitzdGQ6OnVuaXF1ZV9wdHI8RHJhd2luZ0Fy
ZWFQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoV2ViUHJvY2Vz
c1Byb3h5JiBwcm9jZXNzUHJveHkpCit7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RHJhd2luZ0Fy
ZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M+KCptX3ZpZXcucGFnZSgpLCBwcm9jZXNzUHJveHkp
OworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdl
YkNvcmU6OlJlZ2lvbiYgcmVnaW9uKQoreworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpyZXF1
ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgc2Nyb2xsT3JpZ2luKQoreworfQorCitXZWJDb3JlOjpGbG9h
dFBvaW50IFBhZ2VDbGllbnRJbXBsOjp2aWV3U2Nyb2xsUG9zaXRpb24oKQoreworICAgIHJldHVy
biBXZWJDb3JlOjpGbG9hdFBvaW50IHsgfTsKK30KKworV2ViQ29yZTo6SW50U2l6ZSBQYWdlQ2xp
ZW50SW1wbDo6dmlld1NpemUoKQoreworICAgIHJldHVybiBXZWJDb3JlOjpJbnRTaXplIHsgfTsK
K30KKworYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3V2luZG93QWN0aXZlKCkKK3sKKyAgICBy
ZXR1cm4gbV92aWV3LmlzQWN0aXZlKCk7Cit9CisKK2Jvb2wgUGFnZUNsaWVudEltcGw6OmlzVmll
d0ZvY3VzZWQoKQoreworICAgIHJldHVybiBtX3ZpZXcuaXNGb2N1c2VkKCk7Cit9CisKK2Jvb2wg
UGFnZUNsaWVudEltcGw6OmlzVmlld1Zpc2libGUoKQoreworICAgIHJldHVybiBtX3ZpZXcuaXNW
aXNpYmxlKCk7Cit9CisKK2Jvb2wgUGFnZUNsaWVudEltcGw6OmlzVmlld0luV2luZG93KCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFBhZ2VD
bGllbnRJbXBsOjpwcm9jZXNzRGlkRXhpdCgpCit7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6
OmRpZFJlbGF1bmNoUHJvY2VzcygpCit7Cit9Cit2b2lkIFBhZ2VDbGllbnRJbXBsOjpwYWdlQ2xv
c2VkKCkKK3sKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6cHJlZmVyZW5jZXNEaWRDaGFuZ2Uo
KQoreworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjp0b29sVGlwQ2hhbmdlZChjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmKQoreworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDb21t
aXRMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgdXNlQ3VzdG9t
Q29udGVudFByb3ZpZGVyKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgUGFn
ZUNsaWVudEltcGw6OmhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5JikKK3sKK30K
Kwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlQ29udGVudFNpemUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBh
Z2VDbGllbnRJbXBsOjpzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJiBjdXJzb3IpCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0Q3Vy
c29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wpCit7Cit9CisKK3ZvaWQgUGFnZUNsaWVudElt
cGw6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0
dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnJlZ2lz
dGVyRWRpdENvbW1hbmQoUmVmPFdlYkVkaXRDb21tYW5kUHJveHk+JiYsIFVuZG9PclJlZG8pCit7
Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmNsZWFyQWxsRWRpdENvbW1hbmRzKCkKK3sKK30K
KworYm9vbCBQYWdlQ2xpZW50SW1wbDo6Y2FuVW5kb1JlZG8oVW5kb09yUmVkbykKK3sKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmV4ZWN1dGVVbmRvUmVkbyhV
bmRvT3JSZWRvKQoreworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjp3aGVlbEV2ZW50V2FzTm90
SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JikKK3sKK30KKworV2Vi
Q29yZTo6RmxvYXRSZWN0IFBhZ2VDbGllbnRJbXBsOjpjb252ZXJ0VG9EZXZpY2VTcGFjZShjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgcmV0dXJuIHJlY3Q7Cit9CisKK1dl
YkNvcmU6OkZsb2F0UmVjdCBQYWdlQ2xpZW50SW1wbDo6Y29udmVydFRvVXNlclNwYWNlKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICByZXR1cm4gcmVjdDsKK30KKworV2Vi
Q29yZTo6SW50UG9pbnQgUGFnZUNsaWVudEltcGw6OnNjcmVlblRvUm9vdFZpZXcoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIHBvaW50KQoreworICAgIHJldHVybiBwb2ludDsKK30KKworV2ViQ29y
ZTo6SW50UmVjdCBQYWdlQ2xpZW50SW1wbDo6cm9vdFZpZXdUb1NjcmVlbihjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiByZWN0KQoreworICAgIHJldHVybiByZWN0OworfQorCitXZWJDb3JlOjpJbnRQ
b2ludCBQYWdlQ2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHBvaW50KQoreworICAgIHJldHVybiBzY3JlZW5Ub1Jvb3RWaWV3
KHBvaW50KTsKK30KKworV2ViQ29yZTo6SW50UmVjdCBQYWdlQ2xpZW50SW1wbDo6cm9vdFZpZXdU
b0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKK3sKKyAg
ICByZXR1cm4gcm9vdFZpZXdUb1NjcmVlbihyZWN0KTsgICAgCit9CisKK3ZvaWQgUGFnZUNsaWVu
dEltcGw6OmRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYgZXZl
bnQsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVwTWVu
dVByb3h5KFdlYlBhZ2VQcm94eSYgIHBhZ2VQcm94eSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIHJldHVybiB7IH07Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmVudGVyQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkKK3sK
KyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpleGl0QWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgUGFnZUNsaWVudEltcGw6OnVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNv
bnN0IExheWVyVHJlZUNvbnRleHQmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKKyNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCitXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50
JiBQYWdlQ2xpZW50SW1wbDo6ZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCgpCit7CisgICAg
cmV0dXJuICooV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCopdGhpczsKK30KKyNlbmRp
ZgorCisvLyBDdXN0b20gcmVwcmVzZW50YXRpb25zLgordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlk
RmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJikKK3sKK30KKwordm9p
ZCBQYWdlQ2xpZW50SW1wbDo6bmF2aWdhdGlvbkdlc3R1cmVEaWRCZWdpbigpCit7Cit9CisKK3Zv
aWQgUGFnZUNsaWVudEltcGw6Om5hdmlnYXRpb25HZXN0dXJlV2lsbEVuZChib29sIHdpbGxOYXZp
Z2F0ZSwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpCit7Cit9CisKK3ZvaWQgUGFnZUNsaWVudElt
cGw6Om5hdmlnYXRpb25HZXN0dXJlRGlkRW5kKGJvb2wgd2lsbE5hdmlnYXRlLCBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtJikKK3sKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6bmF2aWdhdGlvbkdl
c3R1cmVEaWRFbmQoKQoreworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjp3aWxsUmVjb3JkTmF2
aWdhdGlvblNuYXBzaG90KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKQoreworfQorCit2b2lkIFBh
Z2VDbGllbnRJbXBsOjpkaWRSZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KCkKK3sKK30K
Kwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9y
TWFpbkZyYW1lKCkKK3sKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkRmluaXNoTG9hZEZv
ck1haW5GcmFtZSgpCit7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpZEZhaWxMb2FkRm9y
TWFpbkZyYW1lKCkKK3sKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkU2FtZURvY3VtZW50
TmF2aWdhdGlvbkZvck1haW5GcmFtZShTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSkKK3sKK30K
Kwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlQmFja2dyb3VuZENvbG9yKCkKK3sKK30K
Kwordm9pZCBQYWdlQ2xpZW50SW1wbDo6aXNQbGF5aW5nQXVkaW9XaWxsQ2hhbmdlKCkKK3sKK30K
Kwordm9pZCBQYWdlQ2xpZW50SW1wbDo6aXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKQoreworfQor
Cit2b2lkIFBhZ2VDbGllbnRJbXBsOjpyZWZWaWV3KCkKK3sKK30KKwordm9pZCBQYWdlQ2xpZW50
SW1wbDo6ZGVyZWZWaWV3KCkKK3sKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUmVzdG9y
ZVNjcm9sbFBvc2l0aW9uKCkKK3sKK30KKworV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91dERp
cmVjdGlvbiBQYWdlQ2xpZW50SW1wbDo6dXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbigpCit7
CisgICAgcmV0dXJuIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxUUjsK
K30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdl
YkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorewor
ICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6OkRl
bmllZEZvckdlc3R1cmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3BsYXlzdGF0aW9uL1BhZ2VDbGllbnRJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9wbGF5c3RhdGlvbi9QYWdlQ2xpZW50SW1wbC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFiOGYyNGE4NGMwYjA5OGVlOGYxYTI4NDY1Zjk3YzRhMGQyZGI5N2MKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9wbGF5c3RhdGlvbi9QYWdlQ2xpZW50
SW1wbC5oCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkg
SW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3Mg
RHJhd2luZ0FyZWFQcm94eTsKK2NsYXNzIFdlYlZpZXc7CisKK2NsYXNzIFBhZ2VDbGllbnRJbXBs
IDogcHVibGljIFBhZ2VDbGllbnQKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgLCBw
dWJsaWMgV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudAorI2VuZGlmCit7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgUGFnZUNsaWVudEltcGwoV2ViVmll
dyYpOworCitwcml2YXRlOgorICAgIC8vIENyZWF0ZSBhIG5ldyBkcmF3aW5nIGFyZWEgcHJveHkg
Zm9yIHRoZSBnaXZlbiBwYWdlLgorICAgIHN0ZDo6dW5pcXVlX3B0cjxEcmF3aW5nQXJlYVByb3h5
PiBjcmVhdGVEcmF3aW5nQXJlYVByb3h5KFdlYlByb2Nlc3NQcm94eSYpIG92ZXJyaWRlOworCisg
ICAgLy8gVGVsbCB0aGUgdmlldyB0byBpbnZhbGlkYXRlIHRoZSBnaXZlbiByZWdpb24uIFRoZSBy
ZWdpb24gaXMgaW4gdmlldyBjb29yZGluYXRlcy4KKyAgICB2b2lkIHNldFZpZXdOZWVkc0Rpc3Bs
YXkoY29uc3QgV2ViQ29yZTo6UmVnaW9uJikgb3ZlcnJpZGU7CisKKyAgICAvLyBUZWxsIHRoZSB2
aWV3IHRvIHNjcm9sbCB0byB0aGUgZ2l2ZW4gcG9zaXRpb24sIGFuZCB3aGV0aGVyIHRoaXMgd2Fz
IGEgcHJvZ3JhbW1hdGljIHNjcm9sbC4KKyAgICB2b2lkIHJlcXVlc3RTY3JvbGwoY29uc3QgV2Vi
Q29yZTo6RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBzY3JvbGxPcmlnaW4pIG92ZXJyaWRlOworCisgICAgLy8gUmV0dXJuIHRoZSBjdXJyZW50IHNj
cm9sbCBwb3NpdGlvbiAobm90IG5lY2Vzc2FyaWx5IHRoZSBzYW1lIGFzIHRoZSBXZWJDb3JlIHNj
cm9sbCBwb3NpdGlvbiwgYmVjYXVzZSBvZiBzY2FsaW5nLCBpbnNldHMgZXRjLikKKyAgICBXZWJD
b3JlOjpGbG9hdFBvaW50IHZpZXdTY3JvbGxQb3NpdGlvbigpIG92ZXJyaWRlOworCisgICAgLy8g
UmV0dXJuIHRoZSBzaXplIG9mIHRoZSB2aWV3IHRoZSBwYWdlIGlzIGFzc29jaWF0ZWQgd2l0aC4K
KyAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBSZXR1
cm4gd2hldGhlciB0aGUgdmlldydzIGNvbnRhaW5pbmcgd2luZG93IGlzIGFjdGl2ZS4KKyAgICBi
b29sIGlzVmlld1dpbmRvd0FjdGl2ZSgpIG92ZXJyaWRlOworCisgICAgLy8gUmV0dXJuIHdoZXRo
ZXIgdGhlIHZpZXcgaXMgZm9jdXNlZC4KKyAgICBib29sIGlzVmlld0ZvY3VzZWQoKSBvdmVycmlk
ZTsKKworICAgIC8vIFJldHVybiB3aGV0aGVyIHRoZSB2aWV3IGlzIHZpc2libGUuCisgICAgYm9v
bCBpc1ZpZXdWaXNpYmxlKCkgb3ZlcnJpZGU7CisKKyAgICAvLyBSZXR1cm4gd2hldGhlciB0aGUg
dmlldyBpcyBpbiBhIHdpbmRvdy4KKyAgICBib29sIGlzVmlld0luV2luZG93KCkgb3ZlcnJpZGU7
CisKKyAgICB2b2lkIHByb2Nlc3NEaWRFeGl0KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRSZWxh
dW5jaFByb2Nlc3MoKSBvdmVycmlkZTsKKyAgICB2b2lkIHBhZ2VDbG9zZWQoKSBvdmVycmlkZTsK
KworICAgIHZvaWQgcHJlZmVyZW5jZXNEaWRDaGFuZ2UoKSBvdmVycmlkZTsKKworICAgIHZvaWQg
dG9vbFRpcENoYW5nZWQoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisK
KyAgICB2b2lkIGRpZENvbW1pdExvYWRGb3JNYWluRnJhbWUoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgYm9vbCB1c2VDdXN0b21Db250ZW50UHJvdmlkZXIpIG92ZXJyaWRlOworCisgICAgdm9pZCBo
YW5kbGVEb3dubG9hZFJlcXVlc3QoRG93bmxvYWRQcm94eSYpIG92ZXJyaWRlOworCisgICAgdm9p
ZCBkaWRDaGFuZ2VDb250ZW50U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJikgb3ZlcnJpZGU7
CisKKyAgICB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKSBvdmVycmlkZTsK
KyAgICB2b2lkIHNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhib29sKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3
cG9ydEF0dHJpYnV0ZXMmKSBvdmVycmlkZTsKKworICAgIHZvaWQgcmVnaXN0ZXJFZGl0Q29tbWFu
ZChSZWY8V2ViRWRpdENvbW1hbmRQcm94eT4mJiwgVW5kb09yUmVkbykgb3ZlcnJpZGU7CisgICAg
dm9pZCBjbGVhckFsbEVkaXRDb21tYW5kcygpIG92ZXJyaWRlOworICAgIGJvb2wgY2FuVW5kb1Jl
ZG8oVW5kb09yUmVkbykgb3ZlcnJpZGU7CisgICAgdm9pZCBleGVjdXRlVW5kb1JlZG8oVW5kb09y
UmVkbykgb3ZlcnJpZGU7CisgICAgdm9pZCB3aGVlbEV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29y
ZShjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50Jikgb3ZlcnJpZGU7CisKKyAgICBXZWJDb3JlOjpG
bG9hdFJlY3QgY29udmVydFRvRGV2aWNlU3BhY2UoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikg
b3ZlcnJpZGU7CisgICAgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb1VzZXJTcGFjZShjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmKSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBz
Y3JlZW5Ub1Jvb3RWaWV3KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jikgb3ZlcnJpZGU7CisgICAg
V2ViQ29yZTo6SW50UmVjdCByb290Vmlld1RvU2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KSBvdmVycmlkZTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBhY2Nlc3NpYmlsaXR5U2NyZWVuVG9S
b290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIG92ZXJyaWRlOworICAgIFdlYkNvcmU6
OkludFJlY3Qgcm9vdFZpZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpIG92ZXJyaWRlOworCisgICAgdm9pZCBkb25lV2l0aEtleUV2ZW50KGNvbnN0IE5hdGl2
ZVdlYktleWJvYXJkRXZlbnQmLCBib29sIHdhc0V2ZW50SGFuZGxlZCkgb3ZlcnJpZGU7CisKKyAg
ICBSZWZQdHI8V2ViUG9wdXBNZW51UHJveHk+IGNyZWF0ZVBvcHVwTWVudVByb3h5KFdlYlBhZ2VQ
cm94eSYpIG92ZXJyaWRlOworCisgICAgdm9pZCBlbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdN
b2RlKGNvbnN0IExheWVyVHJlZUNvbnRleHQmKSBvdmVycmlkZTsKKyAgICB2b2lkIGV4aXRBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYpIG92ZXJyaWRlOwor
CisgICAgLy8gQXV4aWxpYXJ5IENsaWVudCBDcmVhdGlvbgorI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKKyAgICBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50JiBmdWxsU2NyZWVuTWFu
YWdlclByb3h5Q2xpZW50KCkgb3ZlcnJpZGU7CisjZW5kaWYKKworICAgIC8vIEN1c3RvbSByZXBy
ZXNlbnRhdGlvbnMuCisgICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRl
bnRQcm92aWRlcihjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBJUEM6OkRh
dGFSZWZlcmVuY2UmKSBvdmVycmlkZTsKKworICAgIHZvaWQgbmF2aWdhdGlvbkdlc3R1cmVEaWRC
ZWdpbigpIG92ZXJyaWRlOworICAgIHZvaWQgbmF2aWdhdGlvbkdlc3R1cmVXaWxsRW5kKGJvb2wg
d2lsbE5hdmlnYXRlLCBXZWJCYWNrRm9yd2FyZExpc3RJdGVtJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBuYXZpZ2F0aW9uR2VzdHVyZURpZEVuZChib29sIHdpbGxOYXZpZ2F0ZSwgV2ViQmFja0Zvcndh
cmRMaXN0SXRlbSYpIG92ZXJyaWRlOworICAgIHZvaWQgbmF2aWdhdGlvbkdlc3R1cmVEaWRFbmQo
KSBvdmVycmlkZTsKKyAgICB2b2lkIHdpbGxSZWNvcmROYXZpZ2F0aW9uU25hcHNob3QoV2ViQmFj
a0ZvcndhcmRMaXN0SXRlbSYpIG92ZXJyaWRlOworICAgIHZvaWQgZGlkUmVtb3ZlTmF2aWdhdGlv
bkdlc3R1cmVTbmFwc2hvdCgpIG92ZXJyaWRlOworCisgICAgdm9pZCBkaWRGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JNYWluRnJhbWUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEZpbmlz
aExvYWRGb3JNYWluRnJhbWUoKSBvdmVycmlkZTsKKyAgICB2b2lkIGRpZEZhaWxMb2FkRm9yTWFp
bkZyYW1lKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9y
TWFpbkZyYW1lKFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlKSBvdmVycmlkZTsKKworICAgIHZv
aWQgZGlkQ2hhbmdlQmFja2dyb3VuZENvbG9yKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBpc1BsYXlp
bmdBdWRpb1dpbGxDaGFuZ2UoKSBvdmVycmlkZTsKKyAgICB2b2lkIGlzUGxheWluZ0F1ZGlvRGlk
Q2hhbmdlKCkgb3ZlcnJpZGU7CisKKyAgICB2b2lkIHJlZlZpZXcoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGRlcmVmVmlldygpIG92ZXJyaWRlOworCisgICAgdm9pZCBkaWRSZXN0b3JlU2Nyb2xsUG9z
aXRpb24oKSBvdmVycmlkZTsKKworICAgIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJl
Y3Rpb24gdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbigpIG92ZXJyaWRlOworCisgICAgdm9p
ZCByZXF1ZXN0RE9NUGFzdGVBY2Nlc3MoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFN0
cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6RE9NUGFzdGVBY2Nlc3NSZXNw
b25zZSk+JiYpIGZpbmFsOworCisgICAgV2ViVmlldyYgbV92aWV3OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9wbGF5c3Rh
dGlvbi9XZWJQcm9jZXNzUG9vbFBsYXlTdGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL3BsYXlzdGF0aW9uL1dlYlByb2Nlc3NQb29sUGxheVN0YXRpb24uY3BwCmluZGV4IGY2ZGZl
Mzc3ZGM4YTFmNzQ5YzFiN2ExMmY2YzFiOTQwMjc2NjBjNzcuLmJhNTM3M2U4ZTk2MjJlOTAxNzI2
NjQ5NjYwYzY0OWRlMDBhZWJhZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3BsYXlzdGF0aW9uL1dlYlByb2Nlc3NQb29sUGxheVN0YXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL3BsYXlzdGF0aW9uL1dlYlByb2Nlc3NQb29sUGxheVN0YXRpb24uY3Bw
CkBAIC0zMCw2ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpwbGF0Zm9ybUluaXRpYWxpemUoKQogeworICAgIG1fdXNlcklkID0gbV9jb25maWd1cmF0
aW9uLT51c2VySWQoKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFs
aXplTmV0d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvcGxheXN0YXRpb24vV2ViVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9wbGF5c3RhdGlvbi9XZWJWaWV3LmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iYjNjZjA2MzJhMWNjNmY4MGY0ODFkZGYyNDRlNjY1ZTg0YmJmOTM3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvcGxheXN0YXRpb24vV2ViVmlldy5jcHAK
QEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0
aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViVmlldy5oIgorCisjaW5jbHVkZSAiQVBJUGFnZUNvbmZpZ3VyYXRpb24uaCIK
KyNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCisjaW5jbHVkZSAiRHJhd2luZ0FyZWFQcm94
eUNvb3JkaW5hdGVkR3JhcGhpY3MuaCIKKyNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKKyNpbmNs
dWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvRE9NUGFzdGVBY2Nlc3MuaD4KKyNpbmNsdWRlIDxXZWJLaXQv
V0tFdmVudFBsYXlTdGF0aW9uLmg+CisjaW5jbHVkZSA8Y2Fpcm8uaD4KKworbmFtZXNwYWNlIFdl
YktpdCB7CisKK1JlZlB0cjxXZWJWaWV3PiBXZWJWaWV3OjpjcmVhdGUoY29uc3QgQVBJOjpQYWdl
Q29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJWaWV3KGNvbmZpZ3VyYXRpb24pKTsKK30KKworV2ViVmlldzo6V2ViVmlldyhjb25zdCBB
UEk6OlBhZ2VDb25maWd1cmF0aW9uJiBjb25mKQorICAgIDogbV9wYWdlQ2xpZW50KG1ha2VVbmlx
dWU8UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBj
b25mLmNvcHkoKTsKKyAgICBhdXRvKiBwb29sID0gY29uZmlndXJhdGlvbi0+cHJvY2Vzc1Bvb2wo
KTsKKyAgICBtX3BhZ2UgPSBwb29sLT5jcmVhdGVXZWJQYWdlKCptX3BhZ2VDbGllbnQsIFdURk1v
dmUoY29uZmlndXJhdGlvbikpOworCisgICAgbV9wYWdlLT5pbml0aWFsaXplV2ViUGFnZSgpOwor
fQorCitXZWJWaWV3Ojp+V2ViVmlldygpCit7Cit9CisKK2Jvb2wgV2ViVmlldzo6aXNBY3RpdmUo
KSBjb25zdAoreworICAgIHJldHVybiBtX2FjdGl2ZTsKK30KKworYm9vbCBXZWJWaWV3Ojppc0Zv
Y3VzZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2ZvY3VzZWQ7Cit9CisKK2Jvb2wgV2ViVmll
dzo6aXNWaXNpYmxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV92aXNpYmxlOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3Bs
YXlzdGF0aW9uL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3BsYXlzdGF0aW9u
L1dlYlZpZXcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hY2Y5ZDgwYjU4NmI1ZDgwZTRkYmFmYjNlOTQ5MWJlOWQ3
NWRiMGZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvcGxheXN0
YXRpb24vV2ViVmlldy5oCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlICJQYWdlQ2xpZW50SW1w
bC5oIgorI2luY2x1ZGUgIlBhZ2VMb2FkU3RhdGUuaCIKKyNpbmNsdWRlICJXS1ZpZXcuaCIKKyNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKworbmFtZXNwYWNlIEFQSSB7CitjbGFzcyBWaWV3Q2xp
ZW50OworY2xhc3MgVmlld1BvcHVwTWVudUNsaWVudDsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFdlYlZpZXcgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpU
eXBlOjpWaWV3PiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAg
c3RhdGljIFJlZlB0cjxXZWJWaWV3PiBjcmVhdGUoY29uc3QgQVBJOjpQYWdlQ29uZmlndXJhdGlv
biYpOworICAgIHZpcnR1YWwgfldlYlZpZXcoKTsKKworICAgIFdlYlBhZ2VQcm94eSogcGFnZSgp
IHsgcmV0dXJuIG1fcGFnZS5nZXQoKTsgfQorCisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0Owor
ICAgIGJvb2wgaXNGb2N1c2VkKCkgY29uc3Q7CisgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdDsK
KworcHJpdmF0ZToKKyAgICBXZWJWaWV3KGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mKTsK
KworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsPiBtX3BhZ2VDbGll
bnQ7CisgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gbV9wYWdlOworCisgICAgYm9vbCBtX2FjdGl2
ZSB7IGZhbHNlIH07CisgICAgYm9vbCBtX2ZvY3VzZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV92
aXNpYmxlIHsgZmFsc2UgfTsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgYm9vbCBt
X2lzRnVsbFNjcmVlbiB7IGZhbHNlIH07CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0VudHJ5UG9pbnQvcGxh
eXN0YXRpb24vV2ViUHJvY2Vzc01haW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0Vu
dHJ5UG9pbnQvcGxheXN0YXRpb24vV2ViUHJvY2Vzc01haW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5M2Mz
MWYzNDU4OGU5ODhhNDk3YmQ1ODQ2ZjdlMmNjMTE1MTgyNzAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvRW50cnlQb2ludC9wbGF5c3RhdGlvbi9XZWJQcm9jZXNz
TWFpbi5jcHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255
IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV2ViUHJvY2Vzc01haW4uaCIKKworI2luY2x1ZGUgPGRsZmNuLmg+
CisjaW5jbHVkZSA8cHJvY2Vzcy1pbml0aWFsaXphdGlvbi9uay13ZWJwcm9jZXNzLmg+CisjaW5j
bHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4K
Kworc3RhdGljIHZvaWQgbG9hZExpYnJhcnlPckV4aXQoY29uc3QgY2hhciogbmFtZSkKK3sKKyAg
ICBpZiAoIWRsb3BlbihuYW1lLCBSVExEX05PVykpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIs
ICJGYWlsZWQgdG8gbG9hZCAlcy5cbiIsIG5hbWUpOworICAgICAgICBleGl0KEVYSVRfRkFJTFVS
RSk7CisgICAgfQorfQorCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAg
aWYgKGFyZ2MgPCAyKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiVW5leHBlY3RlZCBhcmd1
bWVudCBjb3VudCAlZFxuIiwgYXJnYyk7CisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKyAg
ICB9CisKKyAgICBsb2FkTGlicmFyeU9yRXhpdCgibGlicG5nMTYiKTsKKyAgICBsb2FkTGlicmFy
eU9yRXhpdCgibGliaWN1Iik7CisgICAgbG9hZExpYnJhcnlPckV4aXQoImxpYmZyZWV0eXBlIik7
CisgICAgbG9hZExpYnJhcnlPckV4aXQoImxpYmZvbnRjb25maWciKTsKKyAgICBsb2FkTGlicmFy
eU9yRXhpdCgibGliaGFyZmJ1enoiKTsKKyAgICBsb2FkTGlicmFyeU9yRXhpdCgibGliY2Fpcm8i
KTsKKyAgICBsb2FkTGlicmFyeU9yRXhpdCgibGliU2NlTktXZWJLaXRSZXF1aXJlbWVudHMiKTsK
KyAgICBsb2FkTGlicmFyeU9yRXhpdCgibGliSmF2YVNjcmlwdENvcmUiKTsKKyAgICBsb2FkTGli
cmFyeU9yRXhpdCgibGliV2ViS2l0Iik7CisKKyAgICBjaGFyKiBjb3JlUHJvY2Vzc0lkZW50aWZp
ZXIgPSBhcmd2WzFdOworCisgICAgY2hhciBjb25uZWN0aW9uSWRlbnRpZmllclsxNl07CisgICAg
c25wcmludGYoY29ubmVjdGlvbklkZW50aWZpZXIsIHNpemVvZihjb25uZWN0aW9uSWRlbnRpZmll
ciksICIlZCIsIFBsYXlTdGF0aW9uOjpnZXRDb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKworICAg
IGNoYXIgcHJvZ3JhbVtdID0gImR1bW15IjsKKyAgICBjaGFyKiBpbnRlcm5hbEFyZ3ZbXSA9IHsK
KyAgICAgICAgcHJvZ3JhbSwKKyAgICAgICAgY29yZVByb2Nlc3NJZGVudGlmaWVyLAorICAgICAg
ICBjb25uZWN0aW9uSWRlbnRpZmllciwKKyAgICAgICAgMAorICAgIH07CisgICAgcmV0dXJuIFdl
YktpdDo6V2ViUHJvY2Vzc01haW4oc2l6ZW9mKGludGVybmFsQXJndikgLyBzaXplb2YoY2hhciop
LCBpbnRlcm5hbEFyZ3YpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL3BsYXlzdGF0aW9uL0luamVjdGVkQnVuZGxlUGxheVN0YXRpb24uY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL3BsYXlzdGF0aW9uL0lu
amVjdGVkQnVuZGxlUGxheVN0YXRpb24uY3BwCmluZGV4IDRiZmUwMmNlMmRiOTJkODgyZTMyNDdm
ZjhhNGE2MTBhZWJlYmE0YTMuLjFjYTExZTYxNmIyZGExNWJlNzBiODk3YTllZTM0ODRlZGNiYjJj
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9w
bGF5c3RhdGlvbi9JbmplY3RlZEJ1bmRsZVBsYXlTdGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvcGxheXN0YXRpb24vSW5qZWN0ZWRCdW5kbGVQ
bGF5U3RhdGlvbi5jcHAKQEAgLTI2LDE1ICsyNiwzMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCiAKKyNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3Qu
aCIKKyNpbmNsdWRlICJXS0J1bmRsZUluaXRpYWxpemUuaCIKKyNpbmNsdWRlICJsaWJyYXJ5LWJ1
bmRsZS5oIgorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotYm9vbCBJbmplY3RlZEJ1bmRsZTo6aW5p
dGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiwgQVBJOjpPYmplY3Qq
IGluaXRpYWxpemF0aW9uVXNlckRhdGEpCitib29sIEluamVjdGVkQnVuZGxlOjppbml0aWFsaXpl
KGNvbnN0IFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIEFQSTo6T2Jq
ZWN0KiBpbml0aWFsaXphdGlvblVzZXJEYXRhKQogewotICAgIHJldHVybiBmYWxzZTsKKyAgICBh
dXRvIGJ1bmRsZSA9IExpYnJhcnlCdW5kbGU6OmNyZWF0ZShtX3BhdGgudXRmOCgpLmRhdGEoKSk7
CisgICAgbV9wbGF0Zm9ybUJ1bmRsZSA9IGJ1bmRsZTsKKyAgICBpZiAoIW1fcGxhdGZvcm1CdW5k
bGUpIHsKKyAgICAgICAgcHJpbnRmKCJQbGF5U3RhdGlvbjo6QnVuZGxlOjpjcmVhdGUgZmFpbGVk
XG4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBXS0J1bmRsZUluaXRpYWxp
emVGdW5jdGlvblB0ciBpbml0aWFsaXplRnVuY3Rpb24gPSByZWludGVycHJldF9jYXN0PFdLQnVu
ZGxlSW5pdGlhbGl6ZUZ1bmN0aW9uUHRyPihidW5kbGUtPnJlc29sdmUoIldLQnVuZGxlSW5pdGlh
bGl6ZSIpKTsKKyAgICBpZiAoIWluaXRpYWxpemVGdW5jdGlvbikgeworICAgICAgICBwcmludGYo
IlBsYXlTdGF0aW9uOjpCdW5kbGU6OnJlc29sdmUgZmFpbGVkXG4iKTsKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICBpbml0aWFsaXplRnVuY3Rpb24odG9BUEkodGhpcyksIHRvQVBJ
KGluaXRpYWxpemF0aW9uVXNlckRhdGEpKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBJ
bmplY3RlZEJ1bmRsZTo6c2V0QnVuZGxlUGFyYW1ldGVyKFdURjo6U3RyaW5nIGNvbnN0JiwgSVBD
OjpEYXRhUmVmZXJlbmNlIGNvbnN0JikKIHsKKwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpz
ZXRCdW5kbGVQYXJhbWV0ZXJzKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZFN1cmZhY2UuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRTdXJmYWNlLmNw
cAppbmRleCAxMzMwNjcxZjRhMjk4MzJhNDFmMWU4MjcwMDcyMjRhMDZmOGYyYWI1Li5hODRlZWE0
MmJkNjQyNTUyZmJhYmQzMmQyM2FlODU0YmIyOGJiYTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAKQEAgLTU4
LDcgKzU4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZT4gQWNjZWxlcmF0
ZWRTdXJmYWNlOjpjcmVhdGUoV2ViUGFnZSYgd2ViUGFnZSwKICAgICBpZiAoUGxhdGZvcm1EaXNw
bGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDEx
KQogICAgICAgICByZXR1cm4gQWNjZWxlcmF0ZWRTdXJmYWNlWDExOjpjcmVhdGUod2ViUGFnZSwg
Y2xpZW50KTsKICNlbmRpZgotI2lmIFVTRShMSUJXUEUpCisjaWYgVVNFKFdQRV9SRU5ERVJFUikK
ICAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRm
b3JtRGlzcGxheTo6VHlwZTo6V1BFKQogICAgICAgICByZXR1cm4gQWNjZWxlcmF0ZWRTdXJmYWNl
TGliV1BFOjpjcmVhdGUod2ViUGFnZSwgY2xpZW50KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL2NtYWtlL09wdGlvbnNQbGF5U3RhdGlvbi5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25z
UGxheVN0YXRpb24uY21ha2UKaW5kZXggOWVhNjgwZTA0Mjk3ODNhN2Q2ZWQ1M2VkMTBiM2U5ZTYy
YTc3ZjEyYi4uNmFjODA1NWUyNDY2YTZlMTE5ZjEzYmU2OTYwYjFiNmU2ZDU0ZmU0NiAxMDA2NDQK
LS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNQbGF5U3RhdGlvbi5jbWFrZQorKysgYi9Tb3VyY2Uv
Y21ha2UvT3B0aW9uc1BsYXlTdGF0aW9uLmNtYWtlCkBAIC01OSw2ICs1OSwxMCBAQCBXRUJLSVRf
T1BUSU9OX0RFRklORShFTkFCTEVfVExTX0RFQlVHICJFbmFibGUgVExTIGtleSBsb2cgc3VwcG9y
dCIgUFJJVkFURSBPRkYpCiAjIFJlZW5hYmxlIGFmdGVyIHVwZGF0aW5nIGZvbnRjb25maWcKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WQVJJQVRJT05fRk9OVFMgUFJJ
VkFURSBPRkYpCiAKKyMgRW5hYmxlIGluIHRoZSBmdXR1cmUKK1dFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSBQUklWQVRFIE9GRikKK1dFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9DT05URVhUX01FTlVTIFBSSVZBVEUgT0ZG
KQorCiAjIE5vIHN1cHBvcnQgcGxhbm5lZAogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFM
VUUoRU5BQkxFX0ZUUERJUiBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JU
X1ZBTFVFKEVOQUJMRV9HRU9MT0NBVElPTiBQUklWQVRFIE9GRikKQEAgLTEwMyw2ICsxMDcsMTYg
QEAgbGlzdChBUFBFTkQgQ01BS0VfUFJFRklYX1BBVEggJHtXRUJLSVRfTElCUkFSSUVTX0RJUn0p
CiAKIGZpbmRfbGlicmFyeShDX1NURF9MSUJSQVJZIGMpCiBmaW5kX2xpYnJhcnkoS0VSTkVMX0xJ
QlJBUlkga2VybmVsKQorZmluZF9wYWNrYWdlKFdlYktpdFJlcXVpcmVtZW50cyBSRVFVSVJFRAor
ICAgIENPTVBPTkVOVFMKKyAgICAgICAgSlBFRworICAgICAgICBMaWJQU0wKKyAgICAgICAgTGli
WG1sMgorICAgICAgICBQcm9jZXNzTGF1bmNoZXIKKyAgICAgICAgU1FMaXRlMworICAgICAgICBa
TElCCisgICAgICAgIGxpYndwZQorKQogCiBmaW5kX3BhY2thZ2UoQ2Fpcm8gUkVRVUlSRUQpCiBm
aW5kX3BhY2thZ2UoQ1VSTCBSRVFVSVJFRCkKQEAgLTExMSwxNiArMTI1LDE3IEBAIGZpbmRfcGFj
a2FnZShGb250Y29uZmlnIFJFUVVJUkVEKQogZmluZF9wYWNrYWdlKEZyZWV0eXBlIFJFUVVJUkVE
KQogZmluZF9wYWNrYWdlKEhhcmZCdXp6IFJFUVVJUkVEIENPTVBPTkVOVFMgSUNVKQogZmluZF9w
YWNrYWdlKElDVSA2MC4yIFJFUVVJUkVEIENPTVBPTkVOVFMgZGF0YSBpMThuIHVjKQotZmluZF9w
YWNrYWdlKEpQRUcgUkVRVUlSRUQpCi1maW5kX3BhY2thZ2UoTGliUFNMIFJFUVVJUkVEKQotZmlu
ZF9wYWNrYWdlKExpYlhtbDIgUkVRVUlSRUQpCiBmaW5kX3BhY2thZ2UoT3BlblNTTCBSRVFVSVJF
RCkKIGZpbmRfcGFja2FnZShQTkcgUkVRVUlSRUQpCi1maW5kX3BhY2thZ2UoU1FMaXRlMyBSRVFV
SVJFRCkKIGZpbmRfcGFja2FnZShUaHJlYWRzIFJFUVVJUkVEKQogZmluZF9wYWNrYWdlKFdlYlAg
UkVRVUlSRUQgQ09NUE9ORU5UUyBkZW11eCkKLWZpbmRfcGFja2FnZShXUEUgUkVRVUlSRUQpCi1m
aW5kX3BhY2thZ2UoWkxJQiBSRVFVSVJFRCkKKworc2V0KENNQUtFX0NfU1RBTkRBUkRfTElCUkFS
SUVTCisgICAgIiR7Q01BS0VfQ19TVEFOREFSRF9MSUJSQVJJRVN9ICR7Q19TVERfTElCUkFSWX0i
CisgICkKK3NldChDTUFLRV9DWFhfU1RBTkRBUkRfTElCUkFSSUVTCisgICAgIiR7Q01BS0VfQ1hY
X1NUQU5EQVJEX0xJQlJBUklFU30gJHtDX1NURF9MSUJSQVJZfSIKKyAgKQogCiAjIFRPRE86IEFk
ZCBhIGNoZWNrIGZvciBIQVZFX1JTQV9QU1MgZm9yIHN1cHBvcnQgb2YgQ3J5cHRvQWxnb3JpdGht
UlNBX1BTUwogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NjM1
CkBAIC0xMzMsNyArMTQ4LDcgQEAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0ZSRUVUWVBF
IE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0hBUkZCVVpaIE9OKQogU0VUX0FORF9F
WFBPU0VfVE9fQlVJTEQoVVNFX0xJQldQRSBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVT
RV9PUEVOU1NMIE9OKQotU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1dQRV9SRU5ERVJFUiBP
TikKK1NFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9XUEVfUkVOREVSRVIgT0ZGKQogCiBTRVRf
QU5EX0VYUE9TRV9UT19CVUlMRChVU0VfSU5TUEVDVE9SX1NPQ0tFVF9TRVJWRVIgJHtFTkFCTEVf
UkVNT1RFX0lOU1BFQ1RPUn0pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfVU5JWF9ET01B
SU5fU09DS0VUUyBPTikKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBhNmM2OTliOWU5OTQ1NzBiYTBiYjY0OTliYjk3OGNiZDhlNzhiYmMxLi4xOTRj
ZTI2N2MwYjYxODc2OWVmMDc4ZDAzMTQ4ZTE1ZGM3ZjI2NGZlIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDUt
MjAgIFlvc2hpYWtpIEppdHN1a2F3YSAgPHlvc2hpYWtpLmppdHN1a2F3YUBzb255LmNvbT4KKwor
ICAgICAgICBbUGxheVN0YXRpb25dIEFkZCBtaW5pbWFsIFdLVmlldyBBUEkgdG8gZW5hYmxlIFRl
c3RXZWJLaXRBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxMTg2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEVuYWJsZSBUZXN0V2ViS2l0QVBJCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRm
b3JtUGxheVN0YXRpb24uY21ha2U6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdl
YlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL3BsYXlzdGF0aW9uL1BsYXRmb3JtVXRp
bGl0aWVzUGxheVN0YXRpb24uY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6Y3Jl
YXRlSW5qZWN0ZWRCdW5kbGVQYXRoKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNy
ZWF0ZVVSTEZvclJlc291cmNlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL3BsYXlzdGF0aW9u
L1BsYXRmb3JtV2ViVmlld1BsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OlBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlBsYXRmb3JtV2ViVmlldzo6flBsYXRmb3JtV2ViVmlldyk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpQbGF0Zm9ybVdlYlZpZXc6OmluaXRpYWxpemUpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6UGxhdGZvcm1XZWJWaWV3OjpyZXNpemVUbyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpQbGF0Zm9ybVdlYlZpZXc6OnBhZ2UgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
UGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZVNwYWNlYmFyS2V5UHJlc3MpOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6UGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZU1vdXNlTW92ZSk6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlUmlnaHRDbGljayk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlQnV0dG9uQ2xp
Y2spOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvcGxheXN0YXRpb24vbWFpbi5jcHA6CisgICAg
ICAgIChsb2FkTGlicmFyeU9yRXhpdCk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgQWRkIFBs
YXlTdGF0aW9uIFBsYXRmb3JtIHN1cHBvcnQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdC9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICBVc2UgdGhlIHNhbWUgZXhwZWN0ZWQgZGVmYXVsdCBmb250IHByZWZlcmVu
Y2VzIGFzIEdUSydzLgorCiAyMDIwLTA1LTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW2lPUyBTaW11bGF0b3JdIFRlc3RXZWJLaXRBUEku
X1dLRG93bmxvYWQuUmVzdW1lIGlzIGEgZmxha3kgY3Jhc2gKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQppbmRleCA4OTg0MjY3Y2RiOTc5YjEzMjk4NDIy
ZTg1NDljNzcyNDczYTY1MGEyLi5hNGRmMTk3NDZiMzgwZmQ5ZTYzYTU4OWFjZTMyMGQ2MGE5ZWZh
MjcxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtUGxheVN0YXRpb24u
Y21ha2UKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtl
CkBAIC00OCw2ICs0OCwxMiBAQCBpZiAoRU5BQkxFX1dFQktJVCkKICAgICAgICAgcGxheXN0YXRp
b24vUGxhdGZvcm1VdGlsaXRpZXNQbGF5U3RhdGlvbi5jcHAKICAgICAgICAgcGxheXN0YXRpb24v
UGxhdGZvcm1XZWJWaWV3UGxheVN0YXRpb24uY3BwCiAgICAgKQorCisgICAgIyBFeGNsdWRlIHRl
c3RzIHdoaWNoIGRvbid0IGZpbmlzaC4KKyAgICBsaXN0KFJFTU9WRV9JVEVNIFRlc3RXZWJLaXRf
U09VUkNFUworICAgICAgICBUZXN0cy9XZWJLaXQvRm9yY2VSZXBhaW50LmNwcAorICAgICAgICBU
ZXN0cy9XZWJLaXQvR2VvbG9jYXRpb24uY3BwCisgICAgKQogZW5kaWYgKCkKIAogCkBAIC01NSwz
ICs2MSw3IEBAIGVuZGlmICgpCiBpZiAoJHtDTUFLRV9HRU5FUkFUT1J9IE1BVENIRVMgIlZpc3Vh
bCBTdHVkaW8iKQogICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhUZXN0V1RGIFRlc3RXZWJDb3Jl
IFRlc3RXZWJLaXQgUFJPUEVSVElFUyBWU19ERUJVR0dFUl9XT1JLSU5HX0RJUkVDVE9SWSAiJHtD
TUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUll9IikKIGVuZGlmICgpCisKK2FkZF9kZWZpbml0
aW9ucygKKyAgICAtRFRFU1RfV0VCS0lUX1JFU09VUkNFU19ESVI9XCIke1RPT0xTX0RJUn0vVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRcIgorKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9QbGF0Zm9ybVdlYlZpZXcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJW
aWV3LmgKaW5kZXggNzdjZjE4NjlhNTVmNTZhZGMxNWU1MWM5Y2RjNWY1N2MzOGU5NWUxNi4uZDgy
NjVkMmI5ZTA2Y2E3N2Y2ZmMzZjY1OWI3YzJjYjZhZDVmM2E1ZCAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1BsYXRmb3JtV2ViVmlldy5oCkBAIC02MCw3ICs2MCw3IEBAIHR5cGVkZWYgV1BFVG9vbGluZ0Jh
Y2tlbmRzOjpIZWFkbGVzc1ZpZXdCYWNrZW5kICpQbGF0Zm9ybVdpbmRvdzsKIHR5cGVkZWYgV0tW
aWV3UmVmIFBsYXRmb3JtV0tWaWV3OwogdHlwZWRlZiBIV05EIFBsYXRmb3JtV2luZG93OwogI2Vs
aWYgUExBVEZPUk0oUExBWVNUQVRJT04pCi10eXBlZGVmIHZvaWQqIFBsYXRmb3JtV0tWaWV3Owor
dHlwZWRlZiBXS1ZpZXdSZWYgUGxhdGZvcm1XS1ZpZXc7CiB0eXBlZGVmIHZvaWQqIFBsYXRmb3Jt
V2luZG93OwogI2VuZGlmCiB0eXBlZGVmIHVpbnQzMl90IFdLRXZlbnRNb2RpZmllcnM7CkBAIC04
Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNpbXVsYXRlQWx0S2V5UHJlc3MoKTsKICAg
ICB2b2lkIHNpbXVsYXRlUmlnaHRDbGljayh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5KTsKICAgICB2
b2lkIHNpbXVsYXRlTW91c2VNb3ZlKHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIFdLRXZlbnRNb2Rp
ZmllcnMgPSAwKTsKLSNpZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShQTEFZU1RBVElPTikKICAgICB2b2lkIHNpbXVsYXRlQnV0dG9uQ2xpY2soV0tFdmVudE1v
dXNlQnV0dG9uLCB1bnNpZ25lZCB4LCB1bnNpZ25lZCB5LCBXS0V2ZW50TW9kaWZpZXJzKTsKICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XS1By
ZWZlcmVuY2VzLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1dLUHJlZmVy
ZW5jZXMuY3BwCmluZGV4IDI4ZTMyMzAyYjg3M2E5OGE0MWFiNzNjMjJhMTRjNzM3ZDYwZmEzNmUu
LmM1NjUwNGJmNDljMWE0ODI2YjgwODcyNjQxZDRkZWZmN2NmZGQwMjQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1dLUHJlZmVyZW5jZXMuY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1dLUHJlZmVyZW5jZXMuY3BwCkBAIC00NCw3
ICs0NCw3IEBAIFRFU1QoV2ViS2l0LCBXS1ByZWZlcmVuY2VzQmFzaWMpCiAKIFRFU1QoV2ViS2l0
LCBXS1ByZWZlcmVuY2VzRGVmYXVsdHMpCiB7Ci0jaWYgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRG
T1JNKEdUSykgfHwgUExBVEZPUk0oUExBWVNUQVRJT04pCiAgICAgc3RhdGljIGNvbnN0IGNoYXIq
IGV4cGVjdGVkU3RhbmRhcmRGb250RmFtaWx5ID0gIlRpbWVzIjsKICAgICBzdGF0aWMgY29uc3Qg
Y2hhciogZXhwZWN0ZWRGaXhlZEZvbnRGYW1pbHkgPSAiQ291cmllciBOZXciOwogICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBleHBlY3RlZFNlcmlmRm9udEZhbWlseSA9ICJUaW1lcyI7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3BsYXlzdGF0aW9uL1BsYXRmb3JtVXRpbGl0aWVzUGxh
eVN0YXRpb24uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9wbGF5c3RhdGlvbi9QbGF0Zm9ybVV0
aWxpdGllc1BsYXlTdGF0aW9uLmNwcAppbmRleCBkN2IyNzZjM2EyNzQ0ZjQ4ZWUwNTdkNjIzMGJi
ZGQ5NDU0NTc0NmE3Li5jM2U2ZTIwOWU5ODYyOTk3MWIyZjhjN2NiZjAzYjc0MmIwYjRmOWNjIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL3BsYXlzdGF0aW9uL1BsYXRmb3JtVXRpbGl0
aWVzUGxheVN0YXRpb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvcGxheXN0YXRpb24v
UGxhdGZvcm1VdGlsaXRpZXNQbGF5U3RhdGlvbi5jcHAKQEAgLTM0LDE0ICszNCwxNCBAQCBuYW1l
c3BhY2UgVXRpbCB7CiAKIFdLU3RyaW5nUmVmIGNyZWF0ZUluamVjdGVkQnVuZGxlUGF0aCgpCiB7
Ci0gICAgcmV0dXJuIFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJpbmplY3RlZGJ1bmRs
ZSIpOworICAgIHJldHVybiBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiL2FwcDAvbGli
VGVzdFdlYktpdEFQSUluamVjdGVkQnVuZGxlLnNwcngiKTsKIH0KIAogV0tVUkxSZWYgY3JlYXRl
VVJMRm9yUmVzb3VyY2UoY29uc3QgY2hhciogcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGV4dGVuc2lv
bikKIHsKLSAgICBTdHJpbmcgZmlsZW5hbWUgPSBtYWtlU3RyaW5nKHJlc291cmNlLCAnLicsIGV4
dGVuc2lvbik7Ci0gICAgYXV0byB1cmwgPSBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgo
ZmlsZW5hbWUpOwotICAgIHJldHVybiBXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1cmwuc3Ry
aW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgY2hhciB1cmxbNTEyXTsgLy8gU3VmZmljaWVudCBi
dWZmZXIgc2l6ZSBmb3IgdGhlIHByZWZpeCBhbmQgdGhlIGFjdHVhbCBwYXRoLgorICAgIHNucHJp
bnRmKHVybCwgc2l6ZW9mKHVybCksICJmaWxlOi8vL2hvc3QvJXMvJXMuJXMiLCBURVNUX1dFQktJ
VF9SRVNPVVJDRVNfRElSLCByZXNvdXJjZSwgZXh0ZW5zaW9uKTsKKyAgICByZXR1cm4gV0tVUkxD
cmVhdGVXaXRoVVRGOENTdHJpbmcodXJsKTsKIH0KIAogV0tVUkxSZWYgVVJMRm9yTm9uRXhpc3Rl
bnRSZXNvdXJjZSgpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3BsYXlzdGF0aW9u
L1BsYXRmb3JtV2ViVmlld1BsYXlTdGF0aW9uLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvcGxh
eXN0YXRpb24vUGxhdGZvcm1XZWJWaWV3UGxheVN0YXRpb24uY3BwCmluZGV4IDcyYTEyNDA2MmM1
ZDYzMGYzNjA2NWZlMDAwMmIxNmY1ZmVkYjc0MDEuLjBmNTk3NmJiOWVlZmU4OGJmOTY1YTY1MGE4
ZDE3NWFlNDNiNDA0YmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvcGxheXN0YXRp
b24vUGxhdGZvcm1XZWJWaWV3UGxheVN0YXRpb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvcGxheXN0YXRpb24vUGxhdGZvcm1XZWJWaWV3UGxheVN0YXRpb24uY3BwCkBAIC0yNiw1NSAr
MjYsODAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcu
aCIKIAotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworI2luY2x1ZGUgPEtleWJvYXJkRXZlbnRz
Lmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLQ29udGV4dENvbmZpZ3VyYXRpb25QbGF5U3RhdGlvbi5o
PgorI2luY2x1ZGUgPFdlYktpdC9XS1BhZ2VDb25maWd1cmF0aW9uUmVmLmg+CisjaW5jbHVkZSA8
V2ViS2l0L1dLUGFnZVByaXZhdGVQbGF5U3RhdGlvbi5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1Jl
dGFpblB0ci5oPgorI2luY2x1ZGUgPFdlYktpdC9XZWJLaXQyX0MuaD4KIAotUGxhdGZvcm1XZWJW
aWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZikKK25hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKK1BsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdL
Q29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCiB7Ci19
CisgICAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gY29uZmlndXJhdGlvbiA9
IGFkb3B0V0soV0tQYWdlQ29uZmlndXJhdGlvbkNyZWF0ZSgpKTsKKyAgICBXS1BhZ2VDb25maWd1
cmF0aW9uU2V0Q29udGV4dChjb25maWd1cmF0aW9uLmdldCgpLCBjb250ZXh0UmVmKTsKKyAgICBX
S1BhZ2VDb25maWd1cmF0aW9uU2V0UGFnZUdyb3VwKGNvbmZpZ3VyYXRpb24uZ2V0KCksIHBhZ2VH
cm91cFJlZik7CiAKLVBsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLUGFnZUNvbmZp
Z3VyYXRpb25SZWYpCi17CisgICAgaW5pdGlhbGl6ZShjb25maWd1cmF0aW9uLmdldCgpKTsKIH0K
IAotUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlUmVmKQorUGxhdGZvcm1X
ZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0
aW9uKQogeworICAgIGluaXRpYWxpemUoY29uZmlndXJhdGlvbik7CiB9CiAKLVBsYXRmb3JtV2Vi
Vmlldzo6flBsYXRmb3JtV2ViVmlldygpCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmll
dyhXS1BhZ2VSZWYgcmVsYXRlZFBhZ2UpCiB7CisgICAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmln
dXJhdGlvblJlZj4gY29uZmlndXJhdGlvbiA9IGFkb3B0V0soV0tQYWdlQ29uZmlndXJhdGlvbkNy
ZWF0ZSgpKTsKKyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4dChjb25maWd1cmF0aW9u
LmdldCgpLCBXS1BhZ2VHZXRDb250ZXh0KHJlbGF0ZWRQYWdlKSk7CisgICAgV0tQYWdlQ29uZmln
dXJhdGlvblNldFBhZ2VHcm91cChjb25maWd1cmF0aW9uLmdldCgpLCBXS1BhZ2VHZXRQYWdlR3Jv
dXAocmVsYXRlZFBhZ2UpKTsKKyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0UmVsYXRlZFBhZ2Uo
Y29uZmlndXJhdGlvbi5nZXQoKSwgcmVsYXRlZFBhZ2UpOworCisgICAgaW5pdGlhbGl6ZShjb25m
aWd1cmF0aW9uLmdldCgpKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmluaXRpYWxpemUo
V0tQYWdlQ29uZmlndXJhdGlvblJlZikKK1BsYXRmb3JtV2ViVmlldzo6flBsYXRmb3JtV2ViVmll
dygpCiB7CisgICAgV0tQYWdlQ2xvc2UocGFnZSgpKTsKKyAgICBXS1JlbGVhc2UobV92aWV3KTsK
IH0KIAotV0tQYWdlUmVmIFBsYXRmb3JtV2ViVmlldzo6cGFnZSgpIGNvbnN0Cit2b2lkIFBsYXRm
b3JtV2ViVmlldzo6aW5pdGlhbGl6ZShXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRp
b24pCiB7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgbV92aWV3ID0gV0tWaWV3Q3JlYXRlKGNv
bmZpZ3VyYXRpb24pOworICAgIHJlc2l6ZVRvKDgwMCwgNjAwKTsKIH0KIAotdm9pZCBQbGF0Zm9y
bVdlYlZpZXc6OnJlc2l6ZVRvKHVuc2lnbmVkLCB1bnNpZ25lZCkKK3ZvaWQgUGxhdGZvcm1XZWJW
aWV3OjpyZXNpemVUbyh1bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQogeworICAgIFdL
UGFnZVNldFNpemUocGFnZSgpLCBXS1NpemVNYWtlKHdpZHRoLCBoZWlnaHQpKTsKIH0KIAotdm9p
ZCBQbGF0Zm9ybVdlYlZpZXc6OmZvY3VzKCkKK1dLUGFnZVJlZiBQbGF0Zm9ybVdlYlZpZXc6OnBh
Z2UoKSBjb25zdAogeworICAgIHJldHVybiBXS1ZpZXdHZXRQYWdlKG1fdmlldyk7CiB9CiAKIHZv
aWQgUGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZVNwYWNlYmFyS2V5UHJlc3MoKQogeworICAgIFdL
UGFnZUhhbmRsZUtleWJvYXJkRXZlbnQocGFnZSgpLCBXS0tleWJvYXJkRXZlbnRNYWtlKGtXS0V2
ZW50S2V5RG93biwga1dLSW5wdXRUeXBlTm9ybWFsLCAiICIsIDEsIGtleUlkZW50aWZpZXJGb3JL
ZXlDb2RlKDB4MjApLCAweDIwLCAtMSwgMCwgMCkpOworICAgIFdLUGFnZUhhbmRsZUtleWJvYXJk
RXZlbnQocGFnZSgpLCBXS0tleWJvYXJkRXZlbnRNYWtlKGtXS0V2ZW50S2V5VXAsIGtXS0lucHV0
VHlwZU5vcm1hbCwgIiAiLCAxLCBrZXlJZGVudGlmaWVyRm9yS2V5Q29kZSgweDIwKSwgMHgyMCwg
LTEsIDAsIDApKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlQWx0S2V5UHJl
c3MoKQordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlTW91c2VNb3ZlKHVuc2lnbmVkIHgs
IHVuc2lnbmVkIHksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzKQogeworICAgIFdLUGFnZUhh
bmRsZU1vdXNlRXZlbnQocGFnZSgpLCBXS01vdXNlRXZlbnRNYWtlKGtXS0V2ZW50TW91c2VNb3Zl
LCBrV0tFdmVudE1vdXNlQnV0dG9uTm9CdXR0b24sIFdLUG9pbnRNYWtlKHgsIHkpLCAwLCBtb2Rp
ZmllcnMpKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlTW91c2VNb3ZlKHVu
c2lnbmVkLCB1bnNpZ25lZCwgV0tFdmVudE1vZGlmaWVycykKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3
OjpzaW11bGF0ZVJpZ2h0Q2xpY2sodW5zaWduZWQgeCwgdW5zaWduZWQgeSkKIHsKKyAgICBzaW11
bGF0ZUJ1dHRvbkNsaWNrKGtXS0V2ZW50TW91c2VCdXR0b25SaWdodEJ1dHRvbiwgeCwgeSwgMCk7
CiB9CiAKLXZvaWQgUGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZVJpZ2h0Q2xpY2sodW5zaWduZWQs
IHVuc2lnbmVkKQordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlQnV0dG9uQ2xpY2soV0tF
dmVudE1vdXNlQnV0dG9uIGJ1dHRvbiwgdW5zaWduZWQgeCwgdW5zaWduZWQgeSwgV0tFdmVudE1v
ZGlmaWVycyBtb2RpZmllcnMpCiB7CisgICAgV0tQYWdlSGFuZGxlTW91c2VFdmVudChwYWdlKCks
IFdLTW91c2VFdmVudE1ha2Uoa1dLRXZlbnRNb3VzZURvd24sIGJ1dHRvbiwgV0tQb2ludE1ha2Uo
eCwgeSksIDAsIG1vZGlmaWVycykpOworICAgIFdLUGFnZUhhbmRsZU1vdXNlRXZlbnQocGFnZSgp
LCBXS01vdXNlRXZlbnRNYWtlKGtXS0V2ZW50TW91c2VVcCwgYnV0dG9uLCBXS1BvaW50TWFrZSh4
LCB5KSwgMCwgbW9kaWZpZXJzKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvcGxheXN0YXRpb24vbWFpbi5jcHAgYi9U
b29scy9UZXN0V2ViS2l0QVBJL3BsYXlzdGF0aW9uL21haW4uY3BwCmluZGV4IDIxZmIzYzQwNmMy
OWVmYzgwMjI0NzMyZjM5MmRlZWZiOGE4ZjE2OTQuLmRhMmQ5ZDBlNThjMjQ2YjAwNGM1MTJiMzNh
NGU0MTI1NGYwMDY4YjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvcGxheXN0YXRp
b24vbWFpbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9wbGF5c3RhdGlvbi9tYWluLmNw
cApAQCAtMjgsMjIgKzI4LDMzIEBACiAjaW5jbHVkZSAicHJvY2Vzcy1pbml0aWFsaXphdGlvbi9u
ay10ZXN0d2Via2l0YXBpLmgiCiAjaW5jbHVkZSA8ZGxmY24uaD4KIAorc3RhdGljIHZvaWQgbG9h
ZExpYnJhcnlPckV4aXQoY29uc3QgY2hhciogbmFtZSkKK3sKKyAgICBpZiAoIWRsb3BlbihuYW1l
LCBSVExEX05PVykpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gbG9hZCAl
cy5cbiIsIG5hbWUpOworICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CisgICAgfQorfQorCiBp
bnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7Ci0gICAgZGxvcGVuKCJsaWJpY3UiLCBS
VExEX05PVyk7CisgICAgbG9hZExpYnJhcnlPckV4aXQoImxpYmljdSIpOwogI2lmIGRlZmluZWQo
QlVJTERJTkdfVGVzdFdlYkNvcmUpIHx8IGRlZmluZWQoQlVJTERJTkdfVGVzdFdlYktpdCkKLSAg
ICBkbG9wZW4oImxpYnBuZzE2IiwgUlRMRF9OT1cpOwotICAgIGRsb3BlbigibGliZm9udGNvbmZp
ZyIsIFJUTERfTk9XKTsKLSAgICBkbG9wZW4oImxpYmZyZWV0eXBlIiwgUlRMRF9OT1cpOwotICAg
IGRsb3BlbigibGliaGFyZmJ1enoiLCBSVExEX05PVyk7Ci0gICAgZGxvcGVuKCJsaWJjYWlybyIs
IFJUTERfTk9XKTsKLSAgICBkbG9wZW4oImxpYlNjZU5LV2ViS2l0UmVxdWlyZW1lbnRzIiwgUlRM
RF9OT1cpOwotICAgIGRsb3BlbigibGliSmF2YVNjcmlwdENvcmUiLCBSVExEX05PVyk7CisgICAg
bG9hZExpYnJhcnlPckV4aXQoImxpYnBuZzE2Iik7CisgICAgbG9hZExpYnJhcnlPckV4aXQoImxp
YmZvbnRjb25maWciKTsKKyAgICBsb2FkTGlicmFyeU9yRXhpdCgibGliZnJlZXR5cGUiKTsKKyAg
ICBsb2FkTGlicmFyeU9yRXhpdCgibGliaGFyZmJ1enoiKTsKKyAgICBsb2FkTGlicmFyeU9yRXhp
dCgibGliY2Fpcm8iKTsKKyAgICBsb2FkTGlicmFyeU9yRXhpdCgibGliU2NlTktXZWJLaXRSZXF1
aXJlbWVudHMiKTsKKyAgICBsb2FkTGlicmFyeU9yRXhpdCgibGliSmF2YVNjcmlwdENvcmUiKTsK
ICNlbmRpZgogI2lmIGRlZmluZWQoQlVJTERJTkdfVGVzdFdlYktpdCkKLSAgICAoZGxvcGVuKCJs
aWJjcnlwdG8iLCBSVExEX05PVykgJiYgZGxvcGVuKCJsaWJzc2wiLCBSVExEX05PVykpIHx8IGRs
b3BlbigiTGlicmVTU0wiLCBSVExEX05PVyk7Ci0gICAgZGxvcGVuKCJsaWJjdXJsIiwgUlRMRF9O
T1cpOwotICAgIGRsb3BlbigibGliV2ViS2l0IiwgUlRMRF9OT1cpOworICAgIGlmICghKChkbG9w
ZW4oImxpYmNyeXB0byIsIFJUTERfTk9XKSAmJiBkbG9wZW4oImxpYnNzbCIsIFJUTERfTk9XKSkg
fHwgZGxvcGVuKCJMaWJyZVNTTCIsIFJUTERfTk9XKSkpIHsKKyAgICAgICAgZnByaW50ZihzdGRl
cnIsICJGYWlsZWQgdG8gbG9hZCBTU0wgbGlicmFyeS5cbiIpOworICAgICAgICBleGl0KEVYSVRf
RkFJTFVSRSk7CisgICAgfQorICAgIGxvYWRMaWJyYXJ5T3JFeGl0KCJsaWJjdXJsIik7CisgICAg
bG9hZExpYnJhcnlPckV4aXQoImxpYldlYktpdCIpOwogI2VuZGlmCiAgICAgcmV0dXJuIFRlc3RX
ZWJLaXRBUEk6OlRlc3RzQ29udHJvbGxlcjo6c2luZ2xldG9uKCkucnVuKGFyZ2MsIGFyZ3YpID8g
RVhJVF9TVUNDRVNTIDogRVhJVF9GQUlMVVJFOwogfQpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIv
Q2hhbmdlTG9nCmluZGV4IDFiNmEwY2E5NmVkYThiNWQ0YjY2NWNmZjA2ZmY0MGNiNzljN2IxMGIu
LmFkYjJhMzg3ODg2OTg3MzBjOGFlZGM5NjA5NTg3MmY4N2I1Yzk4MTYgMTAwNjQ0Ci0tLSBhL0No
YW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wNS0yMCAgWW9z
aGlha2kgSml0c3VrYXdhICA8eW9zaGlha2kuaml0c3VrYXdhQHNvbnkuY29tPgorCisgICAgICAg
IFtQbGF5U3RhdGlvbl0gQWRkIG1pbmltYWwgV0tWaWV3IEFQSSB0byBlbmFibGUgVGVzdFdlYktp
dEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEx
ODY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5h
YmxlIFRlc3RXZWJLaXRBUEkKKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zUGxheVN0
YXRpb24uY21ha2U6CisgICAgICAgIERpc2FibGUgRnVsbFNjcmVlbiBBUEkgYW5kIENvbnRleHRN
ZW51cy4KKwogMjAyMC0wNS0xMCAgQmFzdWtlIFN1enVraSAgPGJhc3VrZS5zdXp1a2lAc29ueS5j
b20+CiAKICAgICAgICAgQWRkIEVOQUJMRV9QRVJJT0RJQ19NRU1PUllfTU9OSVRPUiBmbGFnLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399937</attachid>
            <date>2020-05-20 23:34:54 -0700</date>
            <delta_ts>2020-05-21 12:52:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211868-20200521153452.patch</filename>
            <type>text/plain</type>
            <size>91553</size>
            <attacher name="Yoshiaki Jitsukawa">yoshiaki.jitsukawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY5NmI0NDRkMzAwNzY4YTFiMWY4MGVm
MmU1NGM2Mzc2NmY5ZDc1ODcuLmI5N2FhMWIyZTFmMWVmN2E0MzVlZDk4MDE0NTNjMWI4NjE3MjY1
M2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjAtMDUtMjAgIFlvc2hpYWtpIEppdHN1a2F3YSAg
PHlvc2hpYWtpLmppdHN1a2F3YUBzb255LmNvbT4KKworICAgICAgICBbUGxheVN0YXRpb25dIEFk
ZCBtaW5pbWFsIFdLVmlldyBBUEkgdG8gZW5hYmxlIFRlc3RXZWJLaXRBUEkKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTg2OAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBUZXN0V2ViS2l0QVBJ
CisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZToKKyAgICAgICAgTGlu
ayBsaWJjIGFzIGEgc3lzdGVtIGxpYnJhcnkuCisKIDIwMjAtMDUtMTIgIFJvc3MgS2lyc2xpbmcg
IDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIEZpeCBleGlzdGluZyB1c2FnZSBv
ZiBmaW5hbC9vdmVycmlkZS92aXJ0dWFsIGluIEpTQyBhbmQgV1RGCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTlm
NGFkY2QzZDdlYTk5ZWY0ZTgzZWNmNmQxNjFlMDY4OGIxOWZlMC4uYjVjZGFhYWI5NDJkZWE5ZGJi
M2ZiNGRiYzMwNGYwN2ExNzFhMmYyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIw
LTA1LTIwICBZb3NoaWFraSBKaXRzdWthd2EgIDx5b3NoaWFraS5qaXRzdWthd2FAc29ueS5jb20+
CisKKyAgICAgICAgW1BsYXlTdGF0aW9uXSBBZGQgbWluaW1hbCBXS1ZpZXcgQVBJIHRvIGVuYWJs
ZSBUZXN0V2ViS2l0QVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTE4NjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBFbmFibGUgVGVzdFdlYktpdEFQSQorCisgICAgICAgICogUGxhdGZvcm1QbGF5U3Rh
dGlvbi5jbWFrZToKKyAgICAgICAgQWRkIFdlYktpdFJlcXVpcmVtZW50cyBsaWJyYXJ5IHRvIFdl
YkNvcmVfQ29weVNoYXJlZExpYnMuCisKIDIwMjAtMDUtMTIgIE1pY2hhZWwgQ2F0YW56YXJvICA8
bWNhdGFuemFyb0Bnbm9tZS5vcmc+CiAKICAgICAgICAgLVdhdHRyaWJ1dGUgd2FybmluZyBpbiBC
cmVha0xpbmVzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxNWExZmE5YWI0YjU4OThmNDFjNzk2OTZmNzdiMTRm
NjAzMDg1OWJiLi41NWJmNjQzMDAxZTFkYWNjMGJjMTNiZGYzNDM2NmZmZjJkM2RmMTRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE0MyBAQAorMjAyMC0wNS0yMCAgWW9zaGlha2kgSml0c3VrYXdhICA8
eW9zaGlha2kuaml0c3VrYXdhQHNvbnkuY29tPgorCisgICAgICAgIFtQbGF5U3RhdGlvbl0gQWRk
IG1pbmltYWwgV0tWaWV3IEFQSSB0byBlbmFibGUgVGVzdFdlYktpdEFQSQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjExODY4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRW5hYmxlIFRlc3RXZWJLaXRBUEkK
KworICAgICAgICAqIFBsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmg6CisgICAgICAgICogUGxhdGZv
cm0vSVBDL3VuaXgvQ29ubmVjdGlvblVuaXguY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9u
OjpwbGF0Zm9ybUludmFsaWRhdGUpOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpvcGVuKToK
KyAgICAgICAgQWRkIFNvY2tldE1vbml0b3IgdG8gbW9uaXRvciByZWNlaXZlZCBtZXNzYWdlcy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNw
cDoKKyAgICAgICAgKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oOgorICAgICAg
ICBBZGQgUGxheVN0YXRpb24gc3BlY2lmaWMgbWVtYmVyczogV2ViUHJvY2VzcyBhbmQgTmV0d29y
a1Byb2Nlc3MgcGF0aHMsIGFuZCB1c2VyIElELgorCisgICAgICAgICogVUlQcm9jZXNzL0xhdW5j
aGVyL1Byb2Nlc3NMYXVuY2hlci5oOgorICAgICAgICBBZGQgUGxheVN0YXRpb24gc3BlY2lmaWMg
bWVtYmVyczogUHJvY2VzcyBwYXRoIGFuZCB1c2VyIElELgorCisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvRW50cnlQb2ludC9wbGF5c3RhdGlvbi9OZXR3b3JrUHJvY2Vzc01haW4uY3BwOiBDb3Bp
ZWQgZnJvbSBUb29sc1xUZXN0V2ViS2l0QVBJXHBsYXlzdGF0aW9uXG1haW4uY3BwLgorICAgICAg
ICAobG9hZExpYnJhcnlPckV4aXQpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogUGxhdGZv
cm1QbGF5U3RhdGlvbi5jbWFrZToKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvcGxheXN0YXRpb24v
V0tFdmVudFBsYXlTdGF0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXS0tleWJvYXJkRXZlbnRN
YWtlKToKKyAgICAgICAgKFdLTW91c2VFdmVudE1ha2UpOgorICAgICAgICAoV0tXaGVlbEV2ZW50
TWFrZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL3BsYXlzdGF0aW9uL1dLRXZlbnRQbGF5U3Rh
dGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tB
UElDYXN0UGxheVN0YXRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6dG9BUEk8Pik6CisgICAgICAg
IChXZWJLaXQ6OnRvSW1wbDw+KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRp
b24vV0tDb250ZXh0Q29uZmlndXJhdGlvblBsYXlTdGF0aW9uLmNwcDogQ29waWVkIGZyb20gVG9v
bHNcVGVzdFdlYktpdEFQSVxwbGF5c3RhdGlvblxQbGF0Zm9ybVV0aWxpdGllc1BsYXlTdGF0aW9u
LmNwcC4KKyAgICAgICAgKFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRXZWJQcm9jZXNzUGF0aCk6
CisgICAgICAgIChXS0NvbnRleHRDb25maWd1cmF0aW9uQ29weVdlYlByb2Nlc3NQYXRoKToKKyAg
ICAgICAgKFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXROZXR3b3JrUHJvY2Vzc1BhdGgpOgorICAg
ICAgICAoV0tDb250ZXh0Q29uZmlndXJhdGlvbkNvcHlOZXR3b3JrUHJvY2Vzc1BhdGgpOgorICAg
ICAgICAoV0tDb250ZXh0Q29uZmlndXJhdGlvblNldFVzZXJJZCk6CisgICAgICAgIChXS0NvbnRl
eHRDb25maWd1cmF0aW9uR2V0VXNlcklkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvcGxh
eXN0YXRpb24vV0tDb250ZXh0Q29uZmlndXJhdGlvblBsYXlTdGF0aW9uLmg6IENvcGllZCBmcm9t
IFNvdXJjZVxXZWJLaXRcVUlQcm9jZXNzXEFQSVxDXHBsYXlzdGF0aW9uXFdLVmlldy5oLgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9XS1BhZ2VQcml2YXRlUGxheVN0YXRp
b24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLUGFnZUhhbmRsZUtleWJvYXJkRXZlbnQpOgorICAg
ICAgICAoV0tQYWdlSGFuZGxlTW91c2VFdmVudCk6CisgICAgICAgIChXS1BhZ2VIYW5kbGVXaGVl
bEV2ZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tQYWdlUHJp
dmF0ZVBsYXlTdGF0aW9uLmg6IENvcGllZCBmcm9tIFNvdXJjZVxXZWJLaXRcVUlQcm9jZXNzXEFQ
SVxDXHBsYXlzdGF0aW9uXFdLVmlldy5oLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9wbGF5
c3RhdGlvbi9XS1ZpZXcuY3BwOiBDb3BpZWQgZnJvbSBTb3VyY2VcV2ViS2l0XFdlYlByb2Nlc3Nc
SW5qZWN0ZWRCdW5kbGVccGxheXN0YXRpb25cSW5qZWN0ZWRCdW5kbGVQbGF5U3RhdGlvbi5jcHAu
CisgICAgICAgIChXS1ZpZXdDcmVhdGUpOgorICAgICAgICAoV0tWaWV3R2V0UGFnZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL3BsYXlzdGF0aW9uL1dLVmlldy5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9MYXVuY2hlci9wbGF5c3RhdGlvbi9Qcm9jZXNzTGF1bmNoZXJQbGF5U3RhdGlvbi5j
cHA6CisgICAgICAgIChXZWJLaXQ6OmRlZmF1bHRQcm9jZXNzUGF0aCk6CisgICAgICAgIChXZWJL
aXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlBy
b2Nlc3NMYXVuY2hlcjo6dGVybWluYXRlUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nl
c3NMYXVuY2hlcjo6cGxhdGZvcm1JbnZhbGlkYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyk6CisgICAg
ICAgICogVUlQcm9jZXNzL3BsYXlzdGF0aW9uL1BhZ2VDbGllbnRJbXBsLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpQYWdlQ2xpZW50SW1wbCk6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNldFZpZXdOZWVkc0Rpc3BsYXkpOgorICAgICAg
ICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cmVxdWVzdFNjcm9sbCk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsOjp2aWV3U2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpQYWdlQ2xpZW50SW1wbDo6dmlld1NpemUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50
SW1wbDo6aXNWaWV3V2luZG93QWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmlzVmlld0ZvY3VzZWQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aXNW
aWV3VmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdJbldp
bmRvdyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpwcm9jZXNzRGlkRXhpdCk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRSZWxhdW5jaFByb2Nlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cGFnZUNsb3NlZCk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpwcmVmZXJlbmNlc0RpZENoYW5nZSk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp0b29sVGlwQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6
OlBhZ2VDbGllbnRJbXBsOjpkaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lKToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGw6OmhhbmRsZURvd25sb2FkUmVxdWVzdCk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VDb250ZW50U2l6ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRDdXJzb3IpOgorICAgICAgICAoV2ViS2l0OjpQYWdl
Q2xpZW50SW1wbDo6c2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKToKKyAgICAgICAgKFdl
YktpdDo6UGFnZUNsaWVudEltcGw6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpyZWdpc3RlckVkaXRDb21tYW5kKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNsZWFyQWxsRWRpdENvbW1hbmRzKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmNhblVuZG9SZWRvKToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUNsaWVudEltcGw6OmV4ZWN1dGVVbmRvUmVkbyk6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjp3aGVlbEV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZSk6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjb252ZXJ0VG9EZXZpY2VTcGFjZSk6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpjb252ZXJ0VG9Vc2VyU3BhY2UpOgorICAgICAgICAo
V2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2NyZWVuVG9Sb290Vmlldyk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRJbXBsOjpyb290Vmlld1RvU2NyZWVuKToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OmFjY2Vzc2liaWxpdHlTY3JlZW5Ub1Jvb3RWaWV3KToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKToK
KyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRvbmVXaXRoS2V5RXZlbnQpOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6Y3JlYXRlUG9wdXBNZW51UHJveHkpOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5n
TW9kZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpleGl0QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6dXBkYXRl
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50
SW1wbDo6ZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjpkaWRGaW5pc2hMb2FkaW5nRGF0YUZvckN1c3RvbUNvbnRlbnRQcm92aWRl
cik6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpuYXZpZ2F0aW9uR2VzdHVyZURp
ZEJlZ2luKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6Om5hdmlnYXRpb25HZXN0
dXJlV2lsbEVuZCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpuYXZpZ2F0aW9u
R2VzdHVyZURpZEVuZCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp3aWxsUmVj
b3JkTmF2aWdhdGlvblNuYXBzaG90KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6
OmRpZFJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3QpOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlQ2xpZW50SW1wbDo6ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yTWFpbkZyYW1l
KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZEZpbmlzaExvYWRGb3JNYWlu
RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlkRmFpbExvYWRGb3JN
YWluRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlkU2FtZURvY3Vt
ZW50TmF2aWdhdGlvbkZvck1haW5GcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJ
bXBsOjpkaWRDaGFuZ2VCYWNrZ3JvdW5kQ29sb3IpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50SW1wbDo6aXNQbGF5aW5nQXVkaW9XaWxsQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6UGFn
ZUNsaWVudEltcGw6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OnJlZlZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6ZGVyZWZWaWV3KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZFJlc3Rv
cmVTY3JvbGxQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp1c2Vy
SW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OnJlcXVlc3RET01QYXN0ZUFjY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL3BsYXlzdGF0
aW9uL1BhZ2VDbGllbnRJbXBsLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9wbGF5c3Rh
dGlvbi9XZWJQcm9jZXNzUG9vbFBsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZSk6CisgICAgICAgICogVUlQcm9jZXNzL3Bs
YXlzdGF0aW9uL1BsYXlTdGF0aW9uV2ViVmlldy5jcHA6IENvcGllZCBmcm9tIFNvdXJjZVxXZWJL
aXRcVUlQcm9jZXNzXHBsYXlzdGF0aW9uXFdlYlByb2Nlc3NQb29sUGxheVN0YXRpb24uY3BwLgor
ICAgICAgICAoV2ViS2l0OjpQbGF5U3RhdGlvbldlYlZpZXc6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlBsYXlTdGF0aW9uV2ViVmlldzo6UGxheVN0YXRpb25XZWJWaWV3KToKKyAgICAgICAg
KFdlYktpdDo6UGxheVN0YXRpb25XZWJWaWV3Ojp+UGxheVN0YXRpb25XZWJWaWV3KToKKyAgICAg
ICAgKFdlYktpdDo6UGxheVN0YXRpb25XZWJWaWV3Ojppc0FjdGl2ZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlBsYXlTdGF0aW9uV2ViVmlldzo6aXNGb2N1c2VkIGNvbnN0KToKKyAgICAgICAg
KFdlYktpdDo6UGxheVN0YXRpb25XZWJWaWV3Ojppc1Zpc2libGUgY29uc3QpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9wbGF5c3RhdGlvbi9QbGF5U3RhdGlvbldlYlZpZXcuaDogQ29waWVkIGZyb20g
U291cmNlXFdlYktpdFxXZWJQcm9jZXNzXEluamVjdGVkQnVuZGxlXHBsYXlzdGF0aW9uXEluamVj
dGVkQnVuZGxlUGxheVN0YXRpb24uY3BwLgorICAgICAgICAoV2ViS2l0OjpQbGF5U3RhdGlvbldl
YlZpZXc6OnBhZ2UpOgorICAgICAgICAqIFdlYlByb2Nlc3MvRW50cnlQb2ludC9wbGF5c3RhdGlv
bi9XZWJQcm9jZXNzTWFpbi5jcHA6IENvcGllZCBmcm9tIFRvb2xzXFRlc3RXZWJLaXRBUElccGxh
eXN0YXRpb25cbWFpbi5jcHAuCisgICAgICAgIChsb2FkTGlicmFyeU9yRXhpdCk6CisgICAgICAg
IChtYWluKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL3BsYXlzdGF0aW9u
L0luamVjdGVkQnVuZGxlUGxheVN0YXRpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpz
ZXRCdW5kbGVQYXJhbWV0ZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVy
YXRlZFN1cmZhY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpBY2NlbGVyYXRlZFN1cmZhY2U6OmNy
ZWF0ZSk6CisKIDIwMjAtMDUtMTIgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHVEtdIFJld29yayBkcmFnIGFuZCBkcm9wIGhhbmRsaW5nIGlu
IHByZXBhcmF0aW9uIGZvciBHVEs0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9QbGF0Zm9y
bVBsYXlTdGF0aW9uLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1QbGF5U3RhdGlvbi5j
bWFrZQppbmRleCA5YWY2ODJkMWQ5NDU3MzkwNWUyOTI1MGFhNGNlNTIwZjk5YjA4ZmY1Li4zMDE2
MDhmNzM1NTMzOGVjNTlmMjViN2IyOWFkZWIxYjZmZGNlZjI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCisrKyBiL1NvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtUGxheVN0YXRpb24uY21ha2UKQEAgLTE4LDcgKzE4LDYgQEAgbGlzdChBUFBFTkQgV1RG
X1NPVVJDRVMKICkKIAogbGlzdChBUFBFTkQgV1RGX0xJQlJBUklFUwotICAgICR7Q19TVERfTElC
UkFSWX0KICAgICAke0tFUk5FTF9MSUJSQVJZfQogICAgIFRocmVhZHM6OlRocmVhZHMKICkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCmluZGV4IDQwNTc3ZmQxMTkzYmNi
M2YyODJjZTNlOWFhNzMyMzEzMGUxMWNjODkuLjQ1YjZjNDk3MGQ4YWM0YzM0NmU0NzI5MGRmNDEw
NGQ5MDcyM2Y0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtUGxheVN0YXRp
b24uY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1QbGF5U3RhdGlvbi5jbWFrZQpA
QCAtOTYsNSArOTYsNiBAQCBQTEFZU1RBVElPTl9DT1BZX1NIQVJFRF9MSUJSQVJJRVMoV2ViQ29y
ZV9Db3B5U2hhcmVkTGlicwogICAgICAgICAke0pQRUdfTElCUkFSSUVTfQogICAgICAgICAke09Q
RU5TU0xfTElCUkFSSUVTfQogICAgICAgICAke1BOR19MSUJSQVJJRVN9CisgICAgICAgICR7V2Vi
S2l0UmVxdWlyZW1lbnRzX0xJQlJBUll9CiAgICAgICAgICR7V2ViUF9MSUJSQVJJRVN9CiApCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvcGxheXN0
YXRpb24vTmV0d29ya1Byb2Nlc3NNYWluLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvRW50cnlQb2ludC9wbGF5c3RhdGlvbi9OZXR3b3JrUHJvY2Vzc01haW4uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmU4Yjg4ZmU5MDAzNjk0MmY3NDVhY2MyNTlhMzcxZGFlNzY3NzdmOGYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvcGxheXN0YXRp
b24vTmV0d29ya1Byb2Nlc3NNYWluLmNwcApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc01haW4uaCIK
KworI2luY2x1ZGUgPGRsZmNuLmg+CisjaW5jbHVkZSA8cHJvY2Vzcy1pbml0aWFsaXphdGlvbi9u
ay1uZXR3b3JrcHJvY2Vzcy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGli
Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKK3N0YXRpYyB2b2lkIGxvYWRMaWJyYXJ5T3JFeGl0
KGNvbnN0IGNoYXIqIG5hbWUpCit7CisgICAgaWYgKCFkbG9wZW4obmFtZSwgUlRMRF9OT1cpKSB7
CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIGxvYWQgJXMuXG4iLCBuYW1lKTsK
KyAgICAgICAgZXhpdChFWElUX0ZBSUxVUkUpOworICAgIH0KK30KKworaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIqKiBhcmd2KQoreworICAgIGlmIChhcmdjIDwgMikgeworICAgICAgICBmcHJpbnRm
KHN0ZGVyciwgIlVuZXhwZWN0ZWQgYXJndW1lbnQgY291bnQgJWRcbiIsIGFyZ2MpOworICAgICAg
ICBleGl0KEVYSVRfRkFJTFVSRSk7CisgICAgfQorCisgICAgaWYgKCEoKGRsb3BlbigibGliY3J5
cHRvIiwgUlRMRF9OT1cpICYmIGRsb3BlbigibGlic3NsIiwgUlRMRF9OT1cpKSB8fCBkbG9wZW4o
IkxpYnJlU1NMIiwgUlRMRF9OT1cpKSkgeworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxl
ZCB0byBsb2FkIFNTTCBsaWJyYXJ5LlxuIik7CisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsK
KyAgICB9CisgICAgbG9hZExpYnJhcnlPckV4aXQoImxpYmN1cmwiKTsKKyAgICBsb2FkTGlicmFy
eU9yRXhpdCgibGliaWN1Iik7CisgICAgbG9hZExpYnJhcnlPckV4aXQoImxpYlNjZU5LV2ViS2l0
UmVxdWlyZW1lbnRzIik7CisgICAgbG9hZExpYnJhcnlPckV4aXQoImxpYkphdmFTY3JpcHRDb3Jl
Iik7CisgICAgbG9hZExpYnJhcnlPckV4aXQoImxpYldlYktpdCIpOworCisgICAgY2hhciogY29y
ZVByb2Nlc3NJZGVudGlmaWVyID0gYXJndlsxXTsKKworICAgIGNoYXIgY29ubmVjdGlvbklkZW50
aWZpZXJbMTZdOworICAgIHNucHJpbnRmKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzaXplb2YoY29u
bmVjdGlvbklkZW50aWZpZXIpLCAiJWQiLCBQbGF5U3RhdGlvbjo6Z2V0Q29ubmVjdGlvbklkZW50
aWZpZXIoKSk7CisKKyAgICBjaGFyIHByb2dyYW1bXSA9ICJkdW1teSI7CisgICAgY2hhciogaW50
ZXJuYWxBcmd2W10gPSB7CisgICAgICAgIHByb2dyYW0sCisgICAgICAgIGNvcmVQcm9jZXNzSWRl
bnRpZmllciwKKyAgICAgICAgY29ubmVjdGlvbklkZW50aWZpZXIsCisgICAgICAgIDAKKyAgICB9
OworICAgIHJldHVybiBXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzTWFpbihzaXplb2YoaW50ZXJuYWxB
cmd2KSAvIHNpemVvZihjaGFyKiksIGludGVybmFsQXJndik7Cit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9Db25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy9Db25uZWN0aW9uLmgKaW5kZXggODU5MTVmOGJiYWUwMDUzMTFkODQyNzMxZGQ1Zjgx
NTU4YTkxZmQzYS4uZjFhZDAxMDA0ZjNjNmQ4NTQ3YjQ4ZDBlNjIwNWFhNTg0MDNkZWZlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uaApAQCAtNDA5LDYgKzQwOSw5IEBA
IHByaXZhdGU6CiAgICAgR1NvY2tldE1vbml0b3IgbV9yZWFkU29ja2V0TW9uaXRvcjsKICAgICBH
U29ja2V0TW9uaXRvciBtX3dyaXRlU29ja2V0TW9uaXRvcjsKICNlbmRpZgorI2lmIFBMQVRGT1JN
KFBMQVlTVEFUSU9OKQorICAgIFJlZlB0cjxXVEY6OlRocmVhZD4gbV9zb2NrZXRNb25pdG9yOwor
I2VuZGlmCiAjZWxpZiBPUyhEQVJXSU4pCiAgICAgLy8gQ2FsbGVkIG9uIHRoZSBjb25uZWN0aW9u
IHF1ZXVlLgogICAgIHZvaWQgcmVjZWl2ZVNvdXJjZUV2ZW50SGFuZGxlcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvdW5peC9Db25uZWN0aW9uVW5peC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAppbmRleCBk
YzAzMDRjOWFmMDVkMzMzZmQyZTJiYjI4MGQyNmMzMDgzNmE5MjkzLi43NmRjMjNmMDRjMjZlZTg1
NTliMDkwZDEzNzRhMzZhYjBkMDA1MTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRm
b3JtL0lQQy91bml4L0Nvbm5lY3Rpb25Vbml4LmNwcApAQCAtMTIwLDYgKzEyMCwxMyBAQCB2b2lk
IENvbm5lY3Rpb246OnBsYXRmb3JtSW52YWxpZGF0ZSgpCiAgICAgbV93cml0ZVNvY2tldE1vbml0
b3Iuc3RvcCgpOwogI2VuZGlmCiAKKyNpZiBQTEFURk9STShQTEFZU1RBVElPTikKKyAgICBpZiAo
bV9zb2NrZXRNb25pdG9yKSB7CisgICAgICAgIG1fc29ja2V0TW9uaXRvci0+ZGV0YWNoKCk7Cisg
ICAgICAgIG1fc29ja2V0TW9uaXRvciA9IG51bGxwdHI7CisgICAgfQorI2VuZGlmCisKICAgICBt
X3NvY2tldERlc2NyaXB0b3IgPSAtMTsKICAgICBtX2lzQ29ubmVjdGVkID0gZmFsc2U7CiB9CkBA
IC0zNjEsNiArMzY4LDI3IEBAIGJvb2wgQ29ubmVjdGlvbjo6b3BlbigpCiAgICAgfSk7CiAjZW5k
aWYKIAorI2lmIFBMQVRGT1JNKFBMQVlTVEFUSU9OKQorICAgIG1fc29ja2V0TW9uaXRvciA9IFRo
cmVhZDo6Y3JlYXRlKCJTb2NrZXRNb25pdG9yIiwgW3Byb3RlY3RlZFRoaXNdIHsKKyAgICAgICAg
eworICAgICAgICAgICAgaW50IGZkOworICAgICAgICAgICAgd2hpbGUgKChmZCA9IHByb3RlY3Rl
ZFRoaXMtPm1fc29ja2V0RGVzY3JpcHRvcikgIT0gLTEpIHsKKyAgICAgICAgICAgICAgICBpbnQg
bWF4RmQgPSBmZDsKKyAgICAgICAgICAgICAgICBmZF9zZXQgZmRTZXQ7CisgICAgICAgICAgICAg
ICAgRkRfWkVSTygmZmRTZXQpOworICAgICAgICAgICAgICAgIEZEX1NFVChmZCwgJmZkU2V0KTsK
KworICAgICAgICAgICAgICAgIGlmICgtMSAhPSBzZWxlY3QobWF4RmQgKyAxLCAmZmRTZXQsIDAs
IDAsIDApKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChGRF9JU1NFVChmZCwgJmZkU2V0KSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPnJlYWR5UmVhZEhhbmRsZXIo
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgfQorICAgIH0p
OworICAgIHJldHVybiB0cnVlOworI2VuZGlmCisKICAgICAvLyBTY2hlZHVsZSBhIGNhbGwgdG8g
cmVhZHlSZWFkSGFuZGxlci4gRGF0YSBtYXkgaGF2ZSBhcnJpdmVkIGJlZm9yZSBpbnN0YWxsYXRp
b24gb2YgdGhlIHNpZ25hbCBoYW5kbGVyLgogICAgIG1fY29ubmVjdGlvblF1ZXVlLT5kaXNwYXRj
aChbcHJvdGVjdGVkVGhpc10gewogICAgICAgICBwcm90ZWN0ZWRUaGlzLT5yZWFkeVJlYWRIYW5k
bGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtUGxheVN0YXRpb24uY21h
a2UgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKaW5kZXggM2E0ZjE1
NjM0MmJiZTZkYjRlYTAzNGRjYWUxY2ZjZDJiMTZhMGViMS4uOWM0ZDliZGFiZjk2MGZhYmViZjk5
OGU0MTBmNTBjNzZmOWI4ZGRmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybVBs
YXlTdGF0aW9uLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm1QbGF5U3RhdGlvbi5j
bWFrZQpAQCAtMSw5ICsxLDMgQEAKLXNldChXZWJLaXRfT1VUUFVUX05BTUUgU2NlV2ViS2l0KQot
c2V0KFdlYlByb2Nlc3NfT1VUUFVUX05BTUUgV2ViS2l0V2ViUHJvY2VzcykKLXNldChOZXR3b3Jr
UHJvY2Vzc19PVVRQVVRfTkFNRSBXZWJLaXROZXR3b3JrUHJvY2VzcykKLXNldChHUFVQcm9jZXNz
X09VVFBVVF9OQU1FIFdlYktpdEdQVVByb2Nlc3MpCi1zZXQoUGx1Z2luUHJvY2Vzc19PVVRQVVRf
TkFNRSBXZWJLaXRQbHVnaW5Qcm9jZXNzKQotCiBpbmNsdWRlKEhlYWRlcnMuY21ha2UpCiAKIGFk
ZF9kZWZpbml0aW9ucygtREJVSUxESU5HX1dFQktJVCkKQEAgLTExLDExICs1LDExIEBAIGFkZF9k
ZWZpbml0aW9ucygtREJVSUxESU5HX1dFQktJVCkKIHNldChXZWJLaXRfVVNFX1BSRUZJWF9IRUFE
RVIgT04pCiAKIGxpc3QoQVBQRU5EIFdlYlByb2Nlc3NfU09VUkNFUwotICAgIFdlYlByb2Nlc3Mv
RW50cnlQb2ludC91bml4L1dlYlByb2Nlc3NNYWluLmNwcAorICAgIFdlYlByb2Nlc3MvRW50cnlQ
b2ludC9wbGF5c3RhdGlvbi9XZWJQcm9jZXNzTWFpbi5jcHAKICkKIAogbGlzdChBUFBFTkQgTmV0
d29ya1Byb2Nlc3NfU09VUkNFUwotICAgIE5ldHdvcmtQcm9jZXNzL0VudHJ5UG9pbnQvdW5peC9O
ZXR3b3JrUHJvY2Vzc01haW4uY3BwCisgICAgTmV0d29ya1Byb2Nlc3MvRW50cnlQb2ludC9wbGF5
c3RhdGlvbi9OZXR3b3JrUHJvY2Vzc01haW4uY3BwCiApCiAKIGxpc3QoQVBQRU5EIEdQVVByb2Nl
c3NfU09VUkNFUwpAQCAtNTcsNiArNTEsOCBAQCBsaXN0KEFQUEVORCBXZWJLaXRfU09VUkNFUwog
CiAgICAgU2hhcmVkL0FQSS9jL2N1cmwvV0tDZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcAogCisgICAg
U2hhcmVkL0FQSS9jL3BsYXlzdGF0aW9uL1dLRXZlbnRQbGF5U3RhdGlvbi5jcHAKKwogICAgIFNo
YXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKICAg
ICBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9TaW1wbGVWaWV3cG9ydENvbnRyb2xsZXIuY3Bw
CiAKQEAgLTkwLDYgKzg2LDEwIEBAIGxpc3QoQVBQRU5EIFdlYktpdF9TT1VSQ0VTCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL2N1cmwvV0tQcm90ZWN0aW9uU3BhY2VDdXJsLmNwcAogICAgIFVJUHJvY2Vz
cy9BUEkvQy9jdXJsL1dLV2Vic2l0ZURhdGFTdG9yZVJlZkN1cmwuY3BwCiAKKyAgICBVSVByb2Nl
c3MvQVBJL0MvcGxheXN0YXRpb24vV0tDb250ZXh0Q29uZmlndXJhdGlvblBsYXlTdGF0aW9uLmNw
cAorICAgIFVJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9XS1BhZ2VQcml2YXRlUGxheVN0YXRp
b24uY3BwCisgICAgVUlQcm9jZXNzL0FQSS9DL3BsYXlzdGF0aW9uL1dLVmlldy5jcHAKKwogICAg
IFVJUHJvY2Vzcy9BdXRvbWF0aW9uL2NhaXJvL1dlYkF1dG9tYXRpb25TZXNzaW9uQ2Fpcm8uY3Bw
CiAKICAgICBVSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9EcmF3aW5nQXJlYVByb3h5Q29v
cmRpbmF0ZWRHcmFwaGljcy5jcHAKQEAgLTEwNCw2ICsxMDQsOCBAQCBsaXN0KEFQUEVORCBXZWJL
aXRfU09VUkNFUwogCiAgICAgVUlQcm9jZXNzL2xpYndwZS9XZWJQYXN0ZWJvYXJkUHJveHlMaWJX
UEUuY3BwCiAKKyAgICBVSVByb2Nlc3MvcGxheXN0YXRpb24vUGFnZUNsaWVudEltcGwuY3BwCisg
ICAgVUlQcm9jZXNzL3BsYXlzdGF0aW9uL1BsYXlTdGF0aW9uV2ViVmlldy5jcHAKICAgICBVSVBy
b2Nlc3MvcGxheXN0YXRpb24vV2ViUGFnZVByb3h5UGxheVN0YXRpb24uY3BwCiAgICAgVUlQcm9j
ZXNzL3BsYXlzdGF0aW9uL1dlYlByb2Nlc3NQb29sUGxheVN0YXRpb24uY3BwCiAKQEAgLTEzOCw2
ICsxNDAsNyBAQCBsaXN0KEFQUEVORCBXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIk
e1dFQktJVF9ESVJ9L1VJUHJvY2Vzcy9BUEkvQy9jdXJsIgogICAgICIke1dFQktJVF9ESVJ9L1VJ
UHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbiIKICAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcyIKKyAgICAiJHtXRUJLSVRfRElSfS9VSVByb2Nlc3MvcGxheXN0
YXRpb24iCiAgICAgIiR7V0VCS0lUX0RJUn0vV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9jdXJs
IgogICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBo
aWNzIgogICAgICIke1dFQktJVF9ESVJ9L1dlYlByb2Nlc3MvV2ViUGFnZS9saWJ3cGUiCkBAIC0x
NTAsMTAgKzE1MywxMyBAQCBsaXN0KEFQUEVORCBXZWJLaXRfUFVCTElDX0ZSQU1FV09SS19IRUFE
RVJTCiAgICAgU2hhcmVkL0FQSS9jL2N1cmwvV0tDZXJ0aWZpY2F0ZUluZm9DdXJsLmgKIAogICAg
IFNoYXJlZC9BUEkvYy9wbGF5c3RhdGlvbi9XS0Jhc2VQbGF5U3RhdGlvbi5oCisgICAgU2hhcmVk
L0FQSS9jL3BsYXlzdGF0aW9uL1dLRXZlbnRQbGF5U3RhdGlvbi5oCiAKICAgICBVSVByb2Nlc3Mv
QVBJL0MvY3VybC9XS1Byb3RlY3Rpb25TcGFjZUN1cmwuaAogICAgIFVJUHJvY2Vzcy9BUEkvQy9j
dXJsL1dLV2Vic2l0ZURhdGFTdG9yZVJlZkN1cmwuaAogCisgICAgVUlQcm9jZXNzL0FQSS9DL3Bs
YXlzdGF0aW9uL1dLQ29udGV4dENvbmZpZ3VyYXRpb25QbGF5U3RhdGlvbi5oCisgICAgVUlQcm9j
ZXNzL0FQSS9DL3BsYXlzdGF0aW9uL1dLUGFnZVByaXZhdGVQbGF5U3RhdGlvbi5oCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL3BsYXlzdGF0aW9uL1dLVmlldy5oCiApCiAKQEAgLTE2Myw0ICsxNjksNSBA
QCBsaXN0KEFQUEVORCBXZWJLaXRfUFVCTElDX0ZSQU1FV09SS19IRUFERVJTCiBsaXN0KEFQUEVO
RCBXZWJLaXRfUFJJVkFURV9MSUJSQVJJRVMKICAgICAkPFRBUkdFVF9PQkpFQ1RTOlBBTD4KICAg
ICAkPFRBUkdFVF9PQkpFQ1RTOldlYkNvcmU+CisgICAgV2ViS2l0UmVxdWlyZW1lbnRzOjpQcm9j
ZXNzTGF1bmNoZXIKICkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL3Bs
YXlzdGF0aW9uL1dLRXZlbnRQbGF5U3RhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9wbGF5c3RhdGlvbi9XS0V2ZW50UGxheVN0YXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxNWM0
Y2Q0YWMyMTQ0ZTEyZWYzNWRmYTQ0ZDg0ZDFiYTQ4ODAzYmIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9wbGF5c3RhdGlvbi9XS0V2ZW50UGxheVN0YXRpb24u
Y3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRl
cmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIldLRXZlbnRQbGF5U3RhdGlvbi5oIgorCitXS0tleWJvYXJkRXZlbnQgV0tL
ZXlib2FyZEV2ZW50TWFrZShXS0V2ZW50VHlwZSB0eXBlLCBXS0lucHV0VHlwZSBpbnB1dFR5cGUs
IGNvbnN0IGNoYXIqIHRleHQsIHVpbnQzMl90IGxlbmd0aCwgY29uc3QgY2hhcioga2V5SWRlbnRp
ZmllciwgaW50MzJfdCB2aXJ0dWFsS2V5Q29kZSwgaW50MzJfdCBjYXJldE9mZnNldCwgdWludDMy
X3QgYXR0cmlidXRlcywgdWludDMyX3QgbW9kaWZpZXJzKQoreworICAgIFdLS2V5Ym9hcmRFdmVu
dCBrZXlib2FyZEV2ZW50OworICAgIGtleWJvYXJkRXZlbnQudHlwZSA9IHR5cGU7CisgICAga2V5
Ym9hcmRFdmVudC52aXJ0dWFsS2V5Q29kZSA9IHZpcnR1YWxLZXlDb2RlOworICAgIGtleWJvYXJk
RXZlbnQubW9kaWZpZXJzID0gbW9kaWZpZXJzOworICAgIGtleWJvYXJkRXZlbnQuY2FyZXRPZmZz
ZXQgPSBjYXJldE9mZnNldDsKKworICAgIC8vIHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00t
TGV2ZWwtMy1FdmVudHMvI2tleXMtSU1FCisgICAgaWYgKGlucHV0VHlwZSA9PSBrV0tJbnB1dFR5
cGVTZXRDb21wb3NpdGlvbikKKyAgICAgICAga2V5Ym9hcmRFdmVudC5rZXlJZGVudGlmaWVyID0g
IkNvbnZlcnQiOworICAgIGVsc2UgaWYgKGlucHV0VHlwZSA9PSBrV0tJbnB1dFR5cGVDb25maXJt
Q29tcG9zaXRpb24pCisgICAgICAgIGtleWJvYXJkRXZlbnQua2V5SWRlbnRpZmllciA9ICJBY2Nl
cHQiOworICAgIGVsc2UgaWYgKGlucHV0VHlwZSA9PSBrV0tJbnB1dFR5cGVDYW5jZWxDb21wb3Np
dGlvbikKKyAgICAgICAga2V5Ym9hcmRFdmVudC5rZXlJZGVudGlmaWVyID0gIkNhbmNlbCI7Cisg
ICAgZWxzZQorICAgICAgICBrZXlib2FyZEV2ZW50LmtleUlkZW50aWZpZXIgPSBrZXlJZGVudGlm
aWVyOworCisgICAgaWYgKGxlbmd0aCA+IDApIHsKKyAgICAgICAga2V5Ym9hcmRFdmVudC50ZXh0
ID0gdGV4dDsKKyAgICAgICAga2V5Ym9hcmRFdmVudC5sZW5ndGggPSBsZW5ndGg7CisgICAgfSBl
bHNlIHsKKyAgICAgICAga2V5Ym9hcmRFdmVudC50ZXh0ID0gbnVsbHB0cjsKKyAgICAgICAga2V5
Ym9hcmRFdmVudC5sZW5ndGggPSAwOworICAgIH0KKworICAgIHJldHVybiBrZXlib2FyZEV2ZW50
OworfQorCitXS01vdXNlRXZlbnQgV0tNb3VzZUV2ZW50TWFrZShXS0V2ZW50VHlwZSB0eXBlLCBX
S0V2ZW50TW91c2VCdXR0b24gYnV0dG9uLCBXS1BvaW50IHBvc2l0aW9uLCBpbnQzMl90IGNsaWNr
Q291bnQsIHVpbnQzMl90IG1vZGlmaWVycykKK3sKKyAgICBXS01vdXNlRXZlbnQgbW91c2VFdmVu
dDsKKyAgICBtb3VzZUV2ZW50LnR5cGUgPSB0eXBlOworICAgIG1vdXNlRXZlbnQuYnV0dG9uID0g
YnV0dG9uOworICAgIG1vdXNlRXZlbnQucG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICBtb3VzZUV2
ZW50LmNsaWNrQ291bnQgPSBjbGlja0NvdW50OworICAgIG1vdXNlRXZlbnQubW9kaWZpZXJzID0g
bW9kaWZpZXJzOworICAgIHJldHVybiBtb3VzZUV2ZW50OworfQorCitXS1doZWVsRXZlbnQgV0tX
aGVlbEV2ZW50TWFrZShXS0V2ZW50VHlwZSB0eXBlLCBXS1BvaW50IHBvc2l0aW9uLCBXS1NpemUg
ZGVsdGEsIFdLU2l6ZSB3aGVlbFRpY2tzLCB1aW50MzJfdCBtb2RpZmllcnMpCit7CisgICAgV0tX
aGVlbEV2ZW50IHdoZWVsRXZlbnQ7CisgICAgd2hlZWxFdmVudC50eXBlID0gdHlwZTsKKyAgICB3
aGVlbEV2ZW50LnBvc2l0aW9uID0gcG9zaXRpb247CisgICAgd2hlZWxFdmVudC5kZWx0YSA9IGRl
bHRhOworICAgIHdoZWVsRXZlbnQud2hlZWxUaWNrcyA9IHdoZWVsVGlja3M7CisgICAgd2hlZWxF
dmVudC5tb2RpZmllcnMgPSBtb2RpZmllcnM7CisgICAgcmV0dXJuIHdoZWVsRXZlbnQ7Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9wbGF5c3RhdGlvbi9XS0V2ZW50
UGxheVN0YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL3BsYXlzdGF0aW9uL1dL
RXZlbnRQbGF5U3RhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhMjBiYjZmNjEyYzc2ZThkNGEyYmVhNzMz
YjRmYWY4NDI2ZjMzNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9wbGF5c3RhdGlvbi9XS0V2ZW50UGxheVN0YXRpb24uaApAQCAtMCwwICsxLDEwMSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQg
SW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2Uu
aD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tFdmVudC5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0dlb21l
dHJ5Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworZW51
bSB7CisgICAga1dLRXZlbnROb1R5cGUgPSAtMSwKKworICAgIC8vIFdlYk1vdXNlRXZlbnQKKyAg
ICBrV0tFdmVudE1vdXNlRG93biwKKyAgICBrV0tFdmVudE1vdXNlVXAsCisgICAga1dLRXZlbnRN
b3VzZU1vdmUsCisgICAga1dLRXZlbnRNb3VzZUZvcmNlQ2hhbmdlZCwKKyAgICBrV0tFdmVudE1v
dXNlRm9yY2VEb3duLAorICAgIGtXS0V2ZW50TW91c2VGb3JjZVVwLAorCisgICAgLy8gV2ViV2hl
ZWxFdmVudAorICAgIGtXS0V2ZW50V2hlZWwsCisKKyAgICAvLyBXZWJLZXlib2FyZEV2ZW50Cisg
ICAga1dLRXZlbnRLZXlEb3duLAorICAgIGtXS0V2ZW50S2V5VXAKK307Cit0eXBlZGVmIGludDMy
X3QgV0tFdmVudFR5cGU7CisKK3N0cnVjdCBXS0tleWJvYXJkRXZlbnQgeworICAgIFdLRXZlbnRU
eXBlIHR5cGU7CisgICAgY29uc3QgY2hhciogdGV4dDsKKyAgICBpbnQzMl90IGxlbmd0aDsKKyAg
ICBjb25zdCBjaGFyKiBrZXlJZGVudGlmaWVyOworICAgIHVpbnQzMl90IG1vZGlmaWVyczsKKyAg
ICBpbnQzMl90IHZpcnR1YWxLZXlDb2RlOworICAgIGludDMyX3QgY2FyZXRPZmZzZXQ7Cit9Owor
dHlwZWRlZiBzdHJ1Y3QgV0tLZXlib2FyZEV2ZW50IFdLS2V5Ym9hcmRFdmVudDsKKworZW51bSB7
CisgICAga1dLSW5wdXRUeXBlTm9ybWFsLAorICAgIGtXS0lucHV0VHlwZVNldENvbXBvc2l0aW9u
LAorICAgIGtXS0lucHV0VHlwZUNvbmZpcm1Db21wb3NpdGlvbiwKKyAgICBrV0tJbnB1dFR5cGVD
YW5jZWxDb21wb3NpdGlvbiwKK307Cit0eXBlZGVmIHVpbnQ4X3QgV0tJbnB1dFR5cGU7CisKK3N0
cnVjdCBXS01vdXNlRXZlbnQgeworICAgIFdLRXZlbnRUeXBlIHR5cGU7CisgICAgV0tFdmVudE1v
dXNlQnV0dG9uIGJ1dHRvbjsKKyAgICBXS1BvaW50IHBvc2l0aW9uOworICAgIGludDMyX3QgY2xp
Y2tDb3VudDsKKyAgICB1aW50MzJfdCBtb2RpZmllcnM7Cit9OwordHlwZWRlZiBzdHJ1Y3QgV0tN
b3VzZUV2ZW50IFdLTW91c2VFdmVudDsKKworc3RydWN0IFdLV2hlZWxFdmVudCB7CisgICAgV0tF
dmVudFR5cGUgdHlwZTsKKyAgICBXS1BvaW50IHBvc2l0aW9uOworICAgIFdLU2l6ZSBkZWx0YTsK
KyAgICBXS1NpemUgd2hlZWxUaWNrczsKKyAgICB1aW50MzJfdCBtb2RpZmllcnM7Cit9OwordHlw
ZWRlZiBzdHJ1Y3QgV0tXaGVlbEV2ZW50IFdLV2hlZWxFdmVudDsKKworV0tfRVhQT1JUIFdLS2V5
Ym9hcmRFdmVudCBXS0tleWJvYXJkRXZlbnRNYWtlKFdLRXZlbnRUeXBlIHR5cGUsIFdLSW5wdXRU
eXBlIGlucHV0VHlwZSwgY29uc3QgY2hhciogdGV4dCwgdWludDMyX3QgbGVuZ3RoLCBjb25zdCBj
aGFyKiBrZXlJZGVudGlmaWVyLCBpbnQzMl90IHZpcnR1YWxLZXlDb2RlLCBpbnQzMl90IGNhcmV0
T2Zmc2V0LCB1aW50MzJfdCBhdHRyaWJ1dGVzLCB1aW50MzJfdCBtb2RpZmllcnMpOworCitXS19F
WFBPUlQgV0tNb3VzZUV2ZW50IFdLTW91c2VFdmVudE1ha2UoV0tFdmVudFR5cGUgdHlwZSwgV0tF
dmVudE1vdXNlQnV0dG9uIGJ1dHRvbiwgV0tQb2ludCBwb3NpdGlvbiwgaW50MzJfdCBjbGlja0Nv
dW50LCB1aW50MzJfdCBtb2RpZmllcnMpOworCitXS19FWFBPUlQgV0tXaGVlbEV2ZW50IFdLV2hl
ZWxFdmVudE1ha2UoV0tFdmVudFR5cGUgdHlwZSwgV0tQb2ludCBwb3NpdGlvbiwgV0tTaXplIGRl
bHRhLCBXS1NpemUgd2hlZWxUaWNrcywgdWludDMyX3QgbW9kaWZpZXJzKTsKKworI2lmZGVmIF9f
Y3BsdXNwbHVzCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKaW5kZXggYTY1ZjA2NmY5
ODEzZThmNTQ2NzNjOGYzMzQ4ODUzYzE3YTZkZjYwZC4uMTg1ODVmNjFiYjZlY2FiZWMzOWZmMGMw
M2I4NjJjNjU4NTZkY2EyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAKQEAgLTcxLDcgKzcxLDEx
IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bjo6Y29weSgpCiAjaWYgUExBVEZPUk0oR1RLKSAmJiAhVVNFKEdUSzQpCiAgICAgY29weS0+bV91
c2VTeXN0ZW1BcHBlYXJhbmNlRm9yU2Nyb2xsYmFycyA9IG1fdXNlU3lzdGVtQXBwZWFyYW5jZUZv
clNjcm9sbGJhcnM7CiAjZW5kaWYKLQorI2lmIFBMQVRGT1JNKFBMQVlTVEFUSU9OKQorICAgIGNv
cHktPm1fd2ViUHJvY2Vzc1BhdGggPSB0aGlzLT5tX3dlYlByb2Nlc3NQYXRoOworICAgIGNvcHkt
Pm1fbmV0d29ya1Byb2Nlc3NQYXRoID0gdGhpcy0+bV9uZXR3b3JrUHJvY2Vzc1BhdGg7CisgICAg
Y29weS0+bV91c2VySWQgPSB0aGlzLT5tX3VzZXJJZDsKKyNlbmRpZgogICAgIHJldHVybiBjb3B5
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKaW5kZXggZWNiZjI0NTVhMWUxMDJiNTk2MjQ0ZjE0OWU4
NmVmM2ZmYzY4YjdkMi4uNjQ5MjQ5MDJmMTk4MTE3OTI1MzdhMTVhMzJlZDRkNzA2ZGFmOTY3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uaApAQCAtMTM2LDYgKzEzNiwxNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRVc2VTeXN0ZW1BcHBlYXJhbmNlRm9yU2Nyb2xsYmFycyhib29sIHVzZVN5c3RlbUFwcGVh
cmFuY2VGb3JTY3JvbGxiYXJzKSB7IG1fdXNlU3lzdGVtQXBwZWFyYW5jZUZvclNjcm9sbGJhcnMg
PSB1c2VTeXN0ZW1BcHBlYXJhbmNlRm9yU2Nyb2xsYmFyczsgfQogI2VuZGlmCiAKKyNpZiBQTEFU
Rk9STShQTEFZU1RBVElPTikKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgd2ViUHJvY2Vzc1BhdGgo
KSBjb25zdCB7IHJldHVybiBtX3dlYlByb2Nlc3NQYXRoOyB9CisgICAgdm9pZCBzZXRXZWJQcm9j
ZXNzUGF0aChjb25zdCBXVEY6OlN0cmluZyYgd2ViUHJvY2Vzc1BhdGgpIHsgbV93ZWJQcm9jZXNz
UGF0aCA9IHdlYlByb2Nlc3NQYXRoOyB9CisKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgbmV0d29y
a1Byb2Nlc3NQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9uZXR3b3JrUHJvY2Vzc1BhdGg7IH0KKyAg
ICB2b2lkIHNldE5ldHdvcmtQcm9jZXNzUGF0aChjb25zdCBXVEY6OlN0cmluZyYgbmV0d29ya1By
b2Nlc3NQYXRoKSB7IG1fbmV0d29ya1Byb2Nlc3NQYXRoID0gbmV0d29ya1Byb2Nlc3NQYXRoOyB9
CisKKyAgICBpbnQzMl90IHVzZXJJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlcklkOyB9CisgICAg
dm9pZCBzZXRVc2VySWQoY29uc3QgaW50MzJfdCB1c2VySWQpIHsgbV91c2VySWQgPSB1c2VySWQ7
IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIFdURjo6U3RyaW5nIG1faW5qZWN0ZWRCdW5kbGVQ
YXRoOwogICAgIFZlY3RvcjxXVEY6OlN0cmluZz4gbV9jdXN0b21DbGFzc2VzRm9yUGFyYW1ldGVy
Q29kZXI7CkBAIC0xNjUsNiArMTc2LDExIEBAIHByaXZhdGU6CiAjaWYgUExBVEZPUk0oR1RLKSAm
JiAhVVNFKEdUSzQpCiAgICAgYm9vbCBtX3VzZVN5c3RlbUFwcGVhcmFuY2VGb3JTY3JvbGxiYXJz
IHsgZmFsc2UgfTsKICNlbmRpZgorI2lmIFBMQVRGT1JNKFBMQVlTVEFUSU9OKQorICAgIFdURjo6
U3RyaW5nIG1fd2ViUHJvY2Vzc1BhdGg7CisgICAgV1RGOjpTdHJpbmcgbV9uZXR3b3JrUHJvY2Vz
c1BhdGg7CisgICAgaW50MzJfdCBtX3VzZXJJZCB7IC0xIH07CisjZW5kaWYKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Mv
cGxheXN0YXRpb24vV0tBUElDYXN0UGxheVN0YXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL3BsYXlzdGF0aW9uL1dLQVBJQ2FzdFBsYXlTdGF0aW9uLmgKaW5kZXggMjJlZmQ4
NWQxYmE3Nzg3NjhjNTBhYjE4OWU5NzkyYzc0MDdlODg0Yy4uNGMxYzY4NzUwNmRiNjdlZGYzZWQz
NmQ1YzdjNzg3NmFjMzFlZGQ3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvcGxheXN0YXRpb24vV0tBUElDYXN0UGxheVN0YXRpb24uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9XS0FQSUNhc3RQbGF5U3RhdGlvbi5oCkBA
IC0zMCw0ICszMCwyNCBAQAogI2Vycm9yICJQbGVhc2UgI2luY2x1ZGUgXCJXS0FQSUNhc3QuaFwi
IGluc3RlYWQgb2YgdGhpcyBmaWxlIGRpcmVjdGx5LiIKICNlbmRpZgogCituYW1lc3BhY2UgV2Vi
S2l0IHsKKworY2xhc3MgUGxheVN0YXRpb25XZWJWaWV3OworCitXS19BRERfQVBJX01BUFBJTkco
V0tWaWV3UmVmLCBQbGF5U3RhdGlvbldlYlZpZXcpCisKK3RlbXBsYXRlPD4KK2lubGluZSBXS1Zp
ZXdSZWYgdG9BUEk8PihQbGF5U3RhdGlvbldlYlZpZXcqIHZpZXcpCit7CisgICAgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8V0tWaWV3UmVmPihzdGF0aWNfY2FzdDx2b2lkKj4odmlldykpOworfQor
Cit0ZW1wbGF0ZTw+CitpbmxpbmUgUGxheVN0YXRpb25XZWJWaWV3KiB0b0ltcGw8PihXS1ZpZXdS
ZWYgdmlldykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UGxheVN0YXRpb25XZWJWaWV3Kj4o
c3RhdGljX2Nhc3Q8dm9pZCo+KGNvbnN0X2Nhc3Q8dHlwZW5hbWUgc3RkOjpyZW1vdmVfY29uc3Q8
dHlwZW5hbWUgc3RkOjpyZW1vdmVfcG9pbnRlcjxXS1ZpZXdSZWY+Ojp0eXBlPjo6dHlwZSo+KHZp
ZXcpKSk7Cit9CisKK30KKwogI2VuZGlmIC8qIFdLQVBJQ2FzdFBsYXlTdGF0aW9uX2ggKi8KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3BsYXlzdGF0aW9uL1dLQ29u
dGV4dENvbmZpZ3VyYXRpb25QbGF5U3RhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9wbGF5c3RhdGlvbi9XS0NvbnRleHRDb25maWd1cmF0aW9uUGxheVN0YXRpb24uY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjY4NmViMWIyMjNlMzY4ZTNlZGIzZDM5MWQzNzUxZTJlNjEwOWY2NTgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlv
bi9XS0NvbnRleHRDb25maWd1cmF0aW9uUGxheVN0YXRpb24uY3BwCkBAIC0wLDAgKzEsNjAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50
IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldLQ29udGV4
dENvbmZpZ3VyYXRpb25QbGF5U3RhdGlvbi5oIgorCisjaW5jbHVkZSAiQVBJUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisKK3ZvaWQgV0tDb250ZXh0
Q29uZmlndXJhdGlvblNldFdlYlByb2Nlc3NQYXRoKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYg
Y29uZmlndXJhdGlvbiwgV0tTdHJpbmdSZWYgd2ViUHJvY2Vzc1BhdGgpCit7CisgICAgV2ViS2l0
Ojp0b0ltcGwoY29uZmlndXJhdGlvbiktPnNldFdlYlByb2Nlc3NQYXRoKFdlYktpdDo6dG9JbXBs
KHdlYlByb2Nlc3NQYXRoKS0+c3RyaW5nKCkpOworfQorCitXS1N0cmluZ1JlZiBXS0NvbnRleHRD
b25maWd1cmF0aW9uQ29weVdlYlByb2Nlc3NQYXRoKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYg
Y29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShXZWJLaXQ6
OnRvSW1wbChjb25maWd1cmF0aW9uKS0+d2ViUHJvY2Vzc1BhdGgoKSk7Cit9CisKK3ZvaWQgV0tD
b250ZXh0Q29uZmlndXJhdGlvblNldE5ldHdvcmtQcm9jZXNzUGF0aChXS0NvbnRleHRDb25maWd1
cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdLU3RyaW5nUmVmIG5ldHdvcmtQcm9jZXNzUGF0aCkK
K3sKKyAgICBXZWJLaXQ6OnRvSW1wbChjb25maWd1cmF0aW9uKS0+c2V0TmV0d29ya1Byb2Nlc3NQ
YXRoKFdlYktpdDo6dG9JbXBsKG5ldHdvcmtQcm9jZXNzUGF0aCktPnN0cmluZygpKTsKK30KKwor
V0tTdHJpbmdSZWYgV0tDb250ZXh0Q29uZmlndXJhdGlvbkNvcHlOZXR3b3JrUHJvY2Vzc1BhdGgo
V0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uKQoreworICAgIHJldHVybiBX
ZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6dG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5uZXR3b3Jr
UHJvY2Vzc1BhdGgoKSk7Cit9CisKK3ZvaWQgV0tDb250ZXh0Q29uZmlndXJhdGlvblNldFVzZXJJ
ZChXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIGludDMyX3QgdXNlcklk
KQoreworICAgIFdlYktpdDo6dG9JbXBsKGNvbmZpZ3VyYXRpb24pLT5zZXRVc2VySWQodXNlcklk
KTsKK30KKworaW50MzJfdCBXS0NvbnRleHRDb25maWd1cmF0aW9uR2V0VXNlcklkKFdLQ29udGV4
dENvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gV2ViS2l0Ojp0
b0ltcGwoY29uZmlndXJhdGlvbiktPnVzZXJJZCgpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tDb250ZXh0Q29uZmlndXJhdGlvblBs
YXlTdGF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9X
S0NvbnRleHRDb25maWd1cmF0aW9uUGxheVN0YXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZWQwOGI4ZGNj
MzE5MDRjYTZmZDlkNmUyMDVkZDI5MTU3ODU2ZTI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tDb250ZXh0Q29uZmlndXJhdGlv
blBsYXlTdGF0aW9uLmgKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQvV0tD
b250ZXh0Q29uZmlndXJhdGlvblJlZi5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAi
QyIgeworI2VuZGlmCisKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dENvbmZpZ3VyYXRpb25TZXRX
ZWJQcm9jZXNzUGF0aChXS0NvbnRleHRDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24sIFdL
U3RyaW5nUmVmIHdlYlByb2Nlc3NQYXRoKTsKK1dLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS0NvbnRl
eHRDb25maWd1cmF0aW9uQ29weVdlYlByb2Nlc3NQYXRoKFdLQ29udGV4dENvbmZpZ3VyYXRpb25S
ZWYgY29uZmlndXJhdGlvbik7CisKK1dLX0VYUE9SVCB2b2lkIFdLQ29udGV4dENvbmZpZ3VyYXRp
b25TZXROZXR3b3JrUHJvY2Vzc1BhdGgoV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBjb25maWd1
cmF0aW9uLCBXS1N0cmluZ1JlZiBuZXR3b3JrUHJvY2Vzc1BhdGgpOworV0tfRVhQT1JUIFdLU3Ry
aW5nUmVmIFdLQ29udGV4dENvbmZpZ3VyYXRpb25Db3B5TmV0d29ya1Byb2Nlc3NQYXRoKFdLQ29u
dGV4dENvbmZpZ3VyYXRpb25SZWYgY29uZmlndXJhdGlvbik7CisKK1dLX0VYUE9SVCB2b2lkIFdL
Q29udGV4dENvbmZpZ3VyYXRpb25TZXRVc2VySWQoV0tDb250ZXh0Q29uZmlndXJhdGlvblJlZiBj
b25maWd1cmF0aW9uLCBpbnQzMl90IHVzZXJJZCk7CitXS19FWFBPUlQgaW50MzJfdCBXS0NvbnRl
eHRDb25maWd1cmF0aW9uR2V0VXNlcklkKFdLQ29udGV4dENvbmZpZ3VyYXRpb25SZWYgY29uZmln
dXJhdGlvbik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9XS1BhZ2VQcml2YXRlUGxh
eVN0YXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24v
V0tQYWdlUHJpdmF0ZVBsYXlTdGF0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNzA2OGI2ZWQ4YTkxMmVl
Nzg0ZWVkNTQ5YjVmNjAyNzc2N2RiOGY5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tQYWdlUHJpdmF0ZVBsYXlTdGF0aW9uLmNw
cApAQCAtMCwwICsxLDEzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVy
YWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV0tQYWdlUHJpdmF0ZVBsYXlTdGF0aW9uLmgiCisKKyNpbmNsdWRlICJOYXRp
dmVXZWJLZXlib2FyZEV2ZW50LmgiCisjaW5jbHVkZSAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgor
I2luY2x1ZGUgIk5hdGl2ZVdlYldoZWVsRXZlbnQuaCIKKyNpbmNsdWRlICJXZWJFdmVudEZhY3Rv
cnkuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlIDx3cGUvd3BlLmg+CisK
K3ZvaWQgV0tQYWdlU2V0U2l6ZShXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTaXplIHNpemUpCit7Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXS1BhZ2VIYW5kbGVLZXlib2FyZEV2ZW50
KFdLUGFnZVJlZiBwYWdlUmVmLCBXS0tleWJvYXJkRXZlbnQgZXZlbnQpCit7CisgICAgdXNpbmcg
V2ViS2l0OjpOYXRpdmVXZWJLZXlib2FyZEV2ZW50OworCisgICAgd3BlX2lucHV0X2tleWJvYXJk
X2V2ZW50IHdwZUV2ZW50OworICAgIHdwZUV2ZW50LnRpbWUgPSAwOworICAgIHdwZUV2ZW50Lmtl
eV9jb2RlID0gZXZlbnQudmlydHVhbEtleUNvZGU7CisgICAgd3BlRXZlbnQuaGFyZHdhcmVfa2V5
X2NvZGUgPSBldmVudC52aXJ0dWFsS2V5Q29kZTsKKyAgICB3cGVFdmVudC5tb2RpZmllcnMgPSAw
OyAvLyBUT0RPOiBIYW5kbGUgbW9kaWZpZXJzLgorICAgIHN3aXRjaCAoZXZlbnQudHlwZSkgewor
ICAgIGNhc2Uga1dLRXZlbnRLZXlEb3duOgorICAgICAgICB3cGVFdmVudC5wcmVzc2VkID0gdHJ1
ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBrV0tFdmVudEtleVVwOgorICAgICAgICB3cGVF
dmVudC5wcmVzc2VkID0gZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
TmF0aXZlV2ViS2V5Ym9hcmRFdmVudDo6SGFuZGxlZEJ5SW5wdXRNZXRob2QgaGFuZGxlZEJ5SW5w
dXRNZXRob2QgPSBOYXRpdmVXZWJLZXlib2FyZEV2ZW50OjpIYW5kbGVkQnlJbnB1dE1ldGhvZDo6
Tm87CisgICAgT3B0aW9uYWw8VmVjdG9yPFdlYkNvcmU6OkNvbXBvc2l0aW9uVW5kZXJsaW5lPj4g
cHJlZWRpdFVuZGVybGluZXM7CisgICAgT3B0aW9uYWw8V2ViS2l0OjpFZGl0aW5nUmFuZ2U+IHBy
ZWVkaXRTZWxlY3Rpb25SYW5nZTsKKyAgICBXZWJLaXQ6OnRvSW1wbChwYWdlUmVmKS0+aGFuZGxl
S2V5Ym9hcmRFdmVudChOYXRpdmVXZWJLZXlib2FyZEV2ZW50KCZ3cGVFdmVudCwgIiIsIGhhbmRs
ZWRCeUlucHV0TWV0aG9kLCBXVEZNb3ZlKHByZWVkaXRVbmRlcmxpbmVzKSwgV1RGTW92ZShwcmVl
ZGl0U2VsZWN0aW9uUmFuZ2UpKSk7Cit9CisKK3ZvaWQgV0tQYWdlSGFuZGxlTW91c2VFdmVudChX
S1BhZ2VSZWYgcGFnZVJlZiwgV0tNb3VzZUV2ZW50IGV2ZW50KQoreworICAgIHVzaW5nIFdlYktp
dDo6TmF0aXZlV2ViTW91c2VFdmVudDsKKworICAgIHdwZV9pbnB1dF9wb2ludGVyX2V2ZW50IHdw
ZUV2ZW50OworCisgICAgc3dpdGNoIChldmVudC50eXBlKSB7CisgICAgY2FzZSBrV0tFdmVudE1v
dXNlRG93bjoKKyAgICBjYXNlIGtXS0V2ZW50TW91c2VVcDoKKyAgICAgICAgd3BlRXZlbnQudHlw
ZSA9IHdwZV9pbnB1dF9wb2ludGVyX2V2ZW50X3R5cGVfYnV0dG9uOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIGtXS0V2ZW50TW91c2VNb3ZlOgorICAgICAgICB3cGVFdmVudC50eXBlID0gd3Bl
X2lucHV0X3BvaW50ZXJfZXZlbnRfdHlwZV9tb3Rpb247CisgICAgICAgIGJyZWFrOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgc3dpdGNoIChldmVudC5idXR0b24pIHsKKyAgICBjYXNlIGtXS0V2ZW50TW91
c2VCdXR0b25MZWZ0QnV0dG9uOgorICAgICAgICB3cGVFdmVudC5idXR0b24gPSAxOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIGtXS0V2ZW50TW91c2VCdXR0b25NaWRkbGVCdXR0b246CisgICAg
ICAgIHdwZUV2ZW50LmJ1dHRvbiA9IDM7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Uga1dLRXZl
bnRNb3VzZUJ1dHRvblJpZ2h0QnV0dG9uOgorICAgICAgICB3cGVFdmVudC5idXR0b24gPSAyOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIGtXS0V2ZW50TW91c2VCdXR0b25Ob0J1dHRvbjoKKyAg
ICAgICAgd3BlRXZlbnQuYnV0dG9uID0gMDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgd3BlRXZlbnQudGltZSA9IDA7CisgICAgd3BlRXZlbnQueCA9IGV2ZW50LnBvc2l0aW9uLng7
CisgICAgd3BlRXZlbnQueSA9IGV2ZW50LnBvc2l0aW9uLnk7CisgICAgd3BlRXZlbnQuc3RhdGUg
PSAwOworICAgIHdwZUV2ZW50Lm1vZGlmaWVycyA9IDA7IC8vIFRPRE86IEhhbmRsZSBtb2RpZmll
cnMuCisKKyAgICBjb25zdCBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IDE7CisKKyAgICBXZWJL
aXQ6OnRvSW1wbChwYWdlUmVmKS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50
KCZ3cGVFdmVudCwgZGV2aWNlU2NhbGVGYWN0b3IpKTsKK30KKwordm9pZCBXS1BhZ2VIYW5kbGVX
aGVlbEV2ZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBXS1doZWVsRXZlbnQgZXZlbnQpCit7CisgICAg
dXNpbmcgV2ViS2l0OjpXZWJXaGVlbEV2ZW50OworICAgIHVzaW5nIFdlYktpdDo6TmF0aXZlV2Vi
V2hlZWxFdmVudDsKKworICAgIHdwZV9pbnB1dF9heGlzXzJkX2V2ZW50IHdwZUV2ZW50OworICAg
IHdwZUV2ZW50LmJhc2UudHlwZSA9ICh3cGVfaW5wdXRfYXhpc19ldmVudF90eXBlKSh3cGVfaW5w
dXRfYXhpc19ldmVudF90eXBlX21vdGlvbl9zbW9vdGggfCB3cGVfaW5wdXRfYXhpc19ldmVudF90
eXBlX21hc2tfMmQpOworICAgIHdwZUV2ZW50LmJhc2UudGltZSA9IDA7CisgICAgd3BlRXZlbnQu
YmFzZS54ID0gZXZlbnQucG9zaXRpb24ueDsKKyAgICB3cGVFdmVudC5iYXNlLnkgPSBldmVudC5w
b3NpdGlvbi55OworICAgIHdwZUV2ZW50LmJhc2UuYXhpcyA9IDA7CisgICAgd3BlRXZlbnQuYmFz
ZS52YWx1ZSA9IDA7CisgICAgd3BlRXZlbnQuYmFzZS5tb2RpZmllcnMgPSAwOyAvLyBUT0RPOiBI
YW5kbGUgbW9kaWZpZXJzLgorICAgIHdwZUV2ZW50LnhfYXhpcyA9IGV2ZW50LmRlbHRhLndpZHRo
OworICAgIHdwZUV2ZW50LnhfYXhpcyA9IGV2ZW50LmRlbHRhLmhlaWdodDsKKworICAgIGNvbnN0
IGZsb2F0IGRldmljZVNjYWxlRmFjdG9yID0gMTsKKworICAgIFdlYktpdDo6dG9JbXBsKHBhZ2VS
ZWYpLT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVsRXZlbnQoJndwZUV2ZW50LmJhc2Us
IGRldmljZVNjYWxlRmFjdG9yLCBXZWJXaGVlbEV2ZW50OjpQaGFzZTo6UGhhc2VOb25lLCBXZWJX
aGVlbEV2ZW50OjpQaGFzZTo6UGhhc2VOb25lKSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9XS1BhZ2VQcml2YXRlUGxheVN0YXRpb24u
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL3BsYXlzdGF0aW9uL1dLUGFnZVByaXZh
dGVQbGF5U3RhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5ZDYxOGU1ZjM5N2Y0ZDgxYWU2ZDhjZTQyYzk4
YzdhZTMyZjhkYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9wbGF5c3RhdGlvbi9XS1BhZ2VQcml2YXRlUGxheVN0YXRpb24uaApAQCAtMCwwICsxLDQx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlu
bWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8V2ViS2l0L1dL
QmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdC9XS0V2ZW50UGxheVN0YXRpb24uaD4KKworI2lmZGVm
IF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgdm9pZCBXS1Bh
Z2VIYW5kbGVLZXlib2FyZEV2ZW50KFdLUGFnZVJlZiBwYWdlLCBXS0tleWJvYXJkRXZlbnQpOwor
V0tfRVhQT1JUIHZvaWQgV0tQYWdlSGFuZGxlTW91c2VFdmVudChXS1BhZ2VSZWYgcGFnZSwgV0tN
b3VzZUV2ZW50KTsKK1dLX0VYUE9SVCB2b2lkIFdLUGFnZUhhbmRsZVdoZWVsRXZlbnQoV0tQYWdl
UmVmIHBhZ2UsIFdLV2hlZWxFdmVudCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9wbGF5c3RhdGlvbi9X
S1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tW
aWV3LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xYmU1Mjk2ODg1YTEyM2Y4Mzg5N2NkYThhMzFmNzgyMTIzNDYz
MDVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvcGxh
eXN0YXRpb24vV0tWaWV3LmNwcApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS1ZpZXcuaCIKKworI2luY2x1ZGUgIkFQSVBh
Z2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAiUGxheVN0YXRpb25XZWJWaWV3LmgiCisjaW5j
bHVkZSAiV0tBUElDYXN0LmgiCisKK1dLVmlld1JlZiBXS1ZpZXdDcmVhdGUoV0tQYWdlQ29uZmln
dXJhdGlvblJlZiBjb25maWd1cmF0aW9uKQoreworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdl
YktpdDo6UGxheVN0YXRpb25XZWJWaWV3OjpjcmVhdGUoKldlYktpdDo6dG9JbXBsKGNvbmZpZ3Vy
YXRpb24pKS5sZWFrUmVmKCkpOworfQorCitXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdS
ZWYgdmlld1JlZikKK3sKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OnRvSW1wbCh2
aWV3UmVmKS0+cGFnZSgpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL3BsYXlzdGF0aW9uL1dLVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvcGxheXN0YXRpb24vV0tWaWV3LmgKaW5kZXggMzI0NjczYjI5NDFmNzNlZTk0YjIyNTMwODNk
MzFkMDE4NDY1Mzg3YS4uYzVlZTQ0NzMyNWEwZjg1ZjA1YmFkMWI2OTI2NTI4YjFlNmU5NjcxMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tW
aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvcGxheXN0YXRpb24vV0tW
aWV3LmgKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi0jaWZuZGVmIFdLVmlld19oCi0jZGVmaW5lIFdLVmlld19oCisjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KIApAQCAtMzIsOCArMzEsOSBAQAogZXh0
ZXJuICJDIiB7CiAjZW5kaWYKIAorV0tfRVhQT1JUIFdLVmlld1JlZiBXS1ZpZXdDcmVhdGUoV0tQ
YWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uKTsKK1dLX0VYUE9SVCBXS1BhZ2VSZWYg
V0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYgdmlldyk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQog
I2VuZGlmCi0KLSNlbmRpZiAvKiBXS1ZpZXdfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAppbmRleCA3NmE5MDRiNmMzZDk1ZTky
MDZkMDkxNzcwNmQ2NzJkOGQ3MTYyMWZjLi4yMjUxMDkzM2VmMGM2MzYxMjdiMjE2OWU3OTdlMjA3
MmJkZmJlMDc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Q
cm9jZXNzTGF1bmNoZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Q
cm9jZXNzTGF1bmNoZXIuaApAQCAtODQsNiArODQsMTEgQEAgcHVibGljOgogI2lmIEVOQUJMRShE
RVZFTE9QRVJfTU9ERSkKICAgICAgICAgU3RyaW5nIHByb2Nlc3NDbWRQcmVmaXg7CiAjZW5kaWYK
KyNlbmRpZgorCisjaWYgUExBVEZPUk0oUExBWVNUQVRJT04pCisgICAgICAgIFN0cmluZyBwcm9j
ZXNzUGF0aDsKKyAgICAgICAgaW50MzJfdCB1c2VySWQgeyAtMSB9OwogI2VuZGlmCiAgICAgfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIvcGxheXN0YXRp
b24vUHJvY2Vzc0xhdW5jaGVyUGxheVN0YXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTGF1bmNoZXIvcGxheXN0YXRpb24vUHJvY2Vzc0xhdW5jaGVyUGxheVN0YXRpb24uY3BwCmlu
ZGV4IDU0ZTYxMGRjZmM0YTcyNzlmMTdhYmE3ZGVkMWQwYjgzZTI3OGQ5MWEuLmJlYjA3OTUzYTFi
OGEyNWIzMjhhN2ZiM2ViNWM2OTI4NGI2NTY2Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0xhdW5jaGVyL3BsYXlzdGF0aW9uL1Byb2Nlc3NMYXVuY2hlclBsYXlTdGF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9wbGF5c3RhdGlvbi9Q
cm9jZXNzTGF1bmNoZXJQbGF5U3RhdGlvbi5jcHAKQEAgLTI5LDE4ICsyOSw4MCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgogCisjaW5jbHVkZSA8
cHJvY2Vzcy1sYXVuY2hlci5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN5cy9z
b2NrZXQuaD4KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKKyNkZWZpbmUgTUFLRV9QUk9DRVNTX1BB
VEgoeCkgIi9hcHAwLyIgI3ggIlByb2Nlc3Muc2VsZiIKK3N0YXRpYyBjb25zdCBjaGFyKiBkZWZh
dWx0UHJvY2Vzc1BhdGgoUHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlwZSBwcm9jZXNzVHlwZSkK
K3sKKyAgICBzd2l0Y2ggKHByb2Nlc3NUeXBlKSB7CisgICAgY2FzZSBQcm9jZXNzTGF1bmNoZXI6
OlByb2Nlc3NUeXBlOjpOZXR3b3JrOgorICAgICAgICByZXR1cm4gTUFLRV9QUk9DRVNTX1BBVEgo
TmV0d29yayk7CisjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQorICAgIGNhc2UgUHJvY2Vzc0xhdW5j
aGVyOjpQcm9jZXNzVHlwZTo6R1BVOgorICAgICAgICByZXR1cm4gTUFLRV9QUk9DRVNTX1BBVEgo
R1BVKTsKKyNlbmRpZgorICAgIGNhc2UgUHJvY2Vzc0xhdW5jaGVyOjpQcm9jZXNzVHlwZTo6V2Vi
OgorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBNQUtFX1BST0NFU1NfUEFUSChXZWIpOwor
ICAgIH0KK30KKwogdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogeworICAg
IElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBzZXJ2ZXJJZGVudGlmaWVyOworICAgIElQQzo6
Q29ubmVjdGlvbjo6U29ja2V0UGFpciBzb2NrZXRQYWlyID0gSVBDOjpDb25uZWN0aW9uOjpjcmVh
dGVQbGF0Zm9ybUNvbm5lY3Rpb24oSVBDOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uT3B0aW9uczo6
U2V0Q2xvZXhlY09uU2VydmVyKTsKKworICAgIGludCBzZW5kQnVmU2l6ZSA9IDMyICogMTAyNDsK
KyAgICBzZXRzb2Nrb3B0KHNvY2tldFBhaXIuc2VydmVyLCBTT0xfU09DS0VULCBTT19TTkRCVUYs
ICZzZW5kQnVmU2l6ZSwgNCk7CisgICAgc2V0c29ja29wdChzb2NrZXRQYWlyLmNsaWVudCwgU09M
X1NPQ0tFVCwgU09fU05EQlVGLCAmc2VuZEJ1ZlNpemUsIDQpOworCisgICAgaW50IHJlY3ZCdWZT
aXplID0gMzIgKiAxMDI0OworICAgIHNldHNvY2tvcHQoc29ja2V0UGFpci5zZXJ2ZXIsIFNPTF9T
T0NLRVQsIFNPX1JDVkJVRiwgJnJlY3ZCdWZTaXplLCA0KTsKKyAgICBzZXRzb2Nrb3B0KHNvY2tl
dFBhaXIuY2xpZW50LCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsICZyZWN2QnVmU2l6ZSwgNCk7CisK
KyAgICBjaGFyIGNvcmVQcm9jZXNzSWRlbnRpZmllclN0cmluZ1sxNl07CisgICAgc25wcmludGYo
Y29yZVByb2Nlc3NJZGVudGlmaWVyU3RyaW5nLCBzaXplb2YgY29yZVByb2Nlc3NJZGVudGlmaWVy
U3RyaW5nLCAiJWxkIiwgbV9sYXVuY2hPcHRpb25zLnByb2Nlc3NJZGVudGlmaWVyLnRvVUludDY0
KCkpOworCisgICAgY2hhciogYXJndltdID0geworICAgICAgICBjb3JlUHJvY2Vzc0lkZW50aWZp
ZXJTdHJpbmcsCisgICAgICAgIG51bGxwdHIKKyAgICB9OworCisgICAgUGxheVN0YXRpb246Okxh
dW5jaFBhcmFtIHBhcmFtIHsgc29ja2V0UGFpci5jbGllbnQsIG1fbGF1bmNoT3B0aW9ucy51c2Vy
SWQgfTsKKyAgICBpbnQzMl90IGFwcExvY2FsUGlkID0gUGxheVN0YXRpb246OmxhdW5jaFByb2Nl
c3MoCisgICAgICAgICFtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1BhdGguaXNFbXB0eSgpID8gbV9s
YXVuY2hPcHRpb25zLnByb2Nlc3NQYXRoLnV0ZjgoKS5kYXRhKCkgOiBkZWZhdWx0UHJvY2Vzc1Bh
dGgobV9sYXVuY2hPcHRpb25zLnByb2Nlc3NUeXBlKSwKKyAgICAgICAgYXJndiwgcGFyYW0pOwor
ICAgIGlmIChhcHBMb2NhbFBpZCA8IDApIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIGZwcmlu
dGYoc3RkZXJyLCAiRmFpbGVkIHRvIGxhdW5jaCBwcm9jZXNzLiBlcnI9MHglMDh4IHBhdGg9JXNc
biIsIGFwcExvY2FsUGlkLCBtX2xhdW5jaE9wdGlvbnMucHJvY2Vzc1BhdGgudXRmOCgpLmRhdGEo
KSk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjbG9zZShzb2NrZXRQYWly
LmNsaWVudCk7CisgICAgc2VydmVySWRlbnRpZmllciA9IHNvY2tldFBhaXIuc2VydmVyOworCisg
ICAgLy8gV2UndmUgZmluaXNoZWQgbGF1bmNoaW5nIHRoZSBwcm9jZXNzLCBtZXNzYWdlIGJhY2sg
dG8gdGhlIG1haW4gcnVuIGxvb3AuCisgICAgUmVmUHRyPFByb2Nlc3NMYXVuY2hlcj4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goWz1dIHsKKyAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+ZGlkRmluaXNoTGF1bmNoaW5nUHJvY2VzcyhhcHBMb2NhbFBpZCwg
c2VydmVySWRlbnRpZmllcik7CisgICAgfSk7CiB9CiAKIHZvaWQgUHJvY2Vzc0xhdW5jaGVyOjp0
ZXJtaW5hdGVQcm9jZXNzKCkKIHsKKyAgICBpZiAoIW1fcHJvY2Vzc0lkZW50aWZpZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIFBsYXlTdGF0aW9uOjp0ZXJtaW5hdGVQcm9jZXNzKG1fcHJvY2Vz
c0lkZW50aWZpZXIpOwogfQogCiB2b2lkIFByb2Nlc3NMYXVuY2hlcjo6cGxhdGZvcm1JbnZhbGlk
YXRlKCkKIHsKKyAgICBtX3Byb2Nlc3NJZGVudGlmaWVyID0gMDsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzNmY3YzQ1ZjBiZGFhNTJiNWQ4ZjExMDJhYTM4
YjZlNzlhNWQ2ODQwLi41ZTk4Mjk0NzAyOWVlNzVjN2QzNWNiZTc2MTE0MTMzMTM2ZWJkZmY1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNz
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5jcHAKQEAgLTEwOSw2ICsxMDksMTEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpnZXRMYXVuY2hPcHRpb25zKFByb2Nlc3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1
bmMKICAgICAgICAgcHJvY2Vzc1Bvb2woKS5zZXRTaG91bGRNYWtlTmV4dE5ldHdvcmtQcm9jZXNz
TGF1bmNoRmFpbEZvclRlc3RpbmcoZmFsc2UpOwogICAgICAgICBsYXVuY2hPcHRpb25zLnNob3Vs
ZE1ha2VQcm9jZXNzTGF1bmNoRmFpbEZvclRlc3RpbmcgPSB0cnVlOwogICAgIH0KKworI2lmIFBM
QVRGT1JNKFBMQVlTVEFUSU9OKQorICAgIGxhdW5jaE9wdGlvbnMucHJvY2Vzc1BhdGggPSBtX3By
b2Nlc3NQb29sLm5ldHdvcmtQcm9jZXNzUGF0aCgpOworICAgIGxhdW5jaE9wdGlvbnMudXNlcklk
ID0gbV9wcm9jZXNzUG9vbC51c2VySWQoKTsKKyNlbmRpZgogfQogCiB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OmNvbm5lY3Rpb25XaWxsT3BlbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAppbmRleCAxOTM4ZjVhMGFm
ZThmY2JmOThjNjNlMWU1MTAyYWVhYjc3YzNjY2UwLi5jMTZiMjI5MWU2ZDk2ZDdhYTE4ZjA1YzNh
OTZlNjNkMjBkNWQzNGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29s
LmgKQEAgLTUzNiw2ICs1MzYsMTIgQEAgcHVibGljOgogICAgIHZvaWQgbm90aWZ5UHJlZmVyZW5j
ZXNDaGFuZ2VkKGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3Qg
T3B0aW9uYWw8U3RyaW5nPiYgZW5jb2RlZFZhbHVlKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0o
UExBWVNUQVRJT04pCisgICAgY29uc3QgU3RyaW5nJiB3ZWJQcm9jZXNzUGF0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzb2x2ZWRQYXRocy53ZWJQcm9jZXNzUGF0aDsgfQorICAgIGNvbnN0IFN0cmlu
ZyYgbmV0d29ya1Byb2Nlc3NQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZFBhdGhzLm5l
dHdvcmtQcm9jZXNzUGF0aDsgfQorICAgIGludDMyX3QgdXNlcklkKCkgY29uc3QgeyByZXR1cm4g
bV91c2VySWQ7IH0KKyNlbmRpZgorCiBwcml2YXRlOgogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFs
aXplKCk7CiAKQEAgLTc2Myw2ICs3NjksMTEgQEAgcHJpdmF0ZToKICAgICAgICAgU3RyaW5nIGNv
bnRhaW5lclRlbXBvcmFyeURpcmVjdG9yeTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oUExBWVNU
QVRJT04pCisgICAgICAgIFN0cmluZyB3ZWJQcm9jZXNzUGF0aDsKKyAgICAgICAgU3RyaW5nIG5l
dHdvcmtQcm9jZXNzUGF0aDsKKyNlbmRpZgorCiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IGFkZGl0
aW9uYWxXZWJQcm9jZXNzU2FuZGJveEV4dGVuc2lvblBhdGhzOwogICAgIH07CiAgICAgUGF0aHMg
bV9yZXNvbHZlZFBhdGhzOwpAQCAtODAwLDYgKzgxMSwxMCBAQCBwcml2YXRlOgogICAgIH07CiAg
ICAgT3B0aW9uYWw8QXVkaWJsZU1lZGlhQWN0aXZpdHk+IG1fYXVkaWJsZU1lZGlhQWN0aXZpdHk7
CiAKKyNpZiBQTEFURk9STShQTEFZU1RBVElPTikKKyAgICBpbnQzMl90IG1fdXNlcklkIHsgLTEg
fTsKKyNlbmRpZgorCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIEZJWE1FOiBEZWxheWVkIHBy
b2Nlc3MgbGF1bmNoIGlzIGN1cnJlbnRseSBkaXNhYmxlZCBvbiBpT1MgZm9yIHBlcmZvcm1hbmNl
IHJlYXNvbnMgKHJkYXI6Ly9wcm9ibGVtLzQ5MDc0MTMxKS4KICAgICBib29sIG1faXNEZWxheWVk
V2ViUHJvY2Vzc0xhdW5jaERpc2FibGVkIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggZTdhOGNkY2IzMzczNTFlM2Y5ZGViMjNlOGZk
YTcwYTlmOTM0ZjljZC4uY2M0MzU5YTdhY2M5OTk1OTUwNjZiNGFmYzk2ZDdjZDVhNDc5MDQ2OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0zMzIs
NiArMzMyLDExIEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpnZXRMYXVuY2hPcHRpb25zKFByb2Nl
c3NMYXVuY2hlcjo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoT3B0CiAgICAgaWYgKGlzUHJld2FybWVk
KCkpCiAgICAgICAgIGxhdW5jaE9wdGlvbnMuZXh0cmFJbml0aWFsaXphdGlvbkRhdGEuYWRkKCJp
cy1wcmV3YXJtZWQiX3MsICIxIl9zKTsKIAorI2lmIFBMQVRGT1JNKFBMQVlTVEFUSU9OKQorICAg
IGxhdW5jaE9wdGlvbnMucHJvY2Vzc1BhdGggPSBtX3Byb2Nlc3NQb29sLT53ZWJQcm9jZXNzUGF0
aCgpOworICAgIGxhdW5jaE9wdGlvbnMudXNlcklkID0gbV9wcm9jZXNzUG9vbC0+dXNlcklkKCk7
CisjZW5kaWYKKwogICAgIGlmIChwcm9jZXNzUG9vbCgpLnNob3VsZE1ha2VOZXh0V2ViUHJvY2Vz
c0xhdW5jaEZhaWxGb3JUZXN0aW5nKCkpIHsKICAgICAgICAgcHJvY2Vzc1Bvb2woKS5zZXRTaG91
bGRNYWtlTmV4dFdlYlByb2Nlc3NMYXVuY2hGYWlsRm9yVGVzdGluZyhmYWxzZSk7CiAgICAgICAg
IGxhdW5jaE9wdGlvbnMuc2hvdWxkTWFrZVByb2Nlc3NMYXVuY2hGYWlsRm9yVGVzdGluZyA9IHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9wbGF5c3RhdGlvbi9QYWdl
Q2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9wbGF5c3RhdGlvbi9QYWdl
Q2xpZW50SW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzk5YWNkMmI5NTJlMmY1NDI3Mzg5Zjc2MzRiZWNj
MTQwOGQ3MzA5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3Bs
YXlzdGF0aW9uL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtMCwwICsxLDI5NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIK
KworI2luY2x1ZGUgIkRyYXdpbmdBcmVhUHJveHlDb29yZGluYXRlZEdyYXBoaWNzLmgiCisjaW5j
bHVkZSAiUGxheVN0YXRpb25XZWJWaWV3LmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitQYWdlQ2xpZW50SW1wbDo6UGFnZUNsaWVudEltcGwoUGxh
eVN0YXRpb25XZWJWaWV3JiB2aWV3KQorICAgIDogbV92aWV3KHZpZXcpCit7Cit9CisKKy8vIFBh
Z2VDbGllbnQncyBwdXJlIHZpcnR1YWwgZnVuY3Rpb25zCitzdGQ6OnVuaXF1ZV9wdHI8RHJhd2lu
Z0FyZWFQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZURyYXdpbmdBcmVhUHJveHkoV2ViUHJv
Y2Vzc1Byb3h5JiBwcm9jZXNzUHJveHkpCit7CisgICAgcmV0dXJuIG1ha2VVbmlxdWU8RHJhd2lu
Z0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3M+KCptX3ZpZXcucGFnZSgpLCBwcm9jZXNzUHJv
eHkpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0
IFdlYkNvcmU6OlJlZ2lvbiYgcmVnaW9uKQoreworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpy
ZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYgc2Nyb2xsT3JpZ2luKQoreworfQorCitXZWJDb3JlOjpG
bG9hdFBvaW50IFBhZ2VDbGllbnRJbXBsOjp2aWV3U2Nyb2xsUG9zaXRpb24oKQoreworICAgIHJl
dHVybiBXZWJDb3JlOjpGbG9hdFBvaW50IHsgfTsKK30KKworV2ViQ29yZTo6SW50U2l6ZSBQYWdl
Q2xpZW50SW1wbDo6dmlld1NpemUoKQoreworICAgIHJldHVybiBXZWJDb3JlOjpJbnRTaXplIHsg
fTsKK30KKworYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3V2luZG93QWN0aXZlKCkKK3sKKyAg
ICByZXR1cm4gbV92aWV3LmlzQWN0aXZlKCk7Cit9CisKK2Jvb2wgUGFnZUNsaWVudEltcGw6Omlz
Vmlld0ZvY3VzZWQoKQoreworICAgIHJldHVybiBtX3ZpZXcuaXNGb2N1c2VkKCk7Cit9CisKK2Jv
b2wgUGFnZUNsaWVudEltcGw6OmlzVmlld1Zpc2libGUoKQoreworICAgIHJldHVybiBtX3ZpZXcu
aXNWaXNpYmxlKCk7Cit9CisKK2Jvb2wgUGFnZUNsaWVudEltcGw6OmlzVmlld0luV2luZG93KCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFBh
Z2VDbGllbnRJbXBsOjpwcm9jZXNzRGlkRXhpdCgpCit7Cit9CisKK3ZvaWQgUGFnZUNsaWVudElt
cGw6OmRpZFJlbGF1bmNoUHJvY2VzcygpCit7Cit9Cit2b2lkIFBhZ2VDbGllbnRJbXBsOjpwYWdl
Q2xvc2VkKCkKK3sKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6cHJlZmVyZW5jZXNEaWRDaGFu
Z2UoKQoreworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjp0b29sVGlwQ2hhbmdlZChjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmKQoreworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRD
b21taXRMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgdXNlQ3Vz
dG9tQ29udGVudFByb3ZpZGVyKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQg
UGFnZUNsaWVudEltcGw6OmhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5JikKK3sK
K30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlQ29udGVudFNpemUoY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lk
IFBhZ2VDbGllbnRJbXBsOjpzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJiBjdXJzb3Ip
Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0
Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wpCit7Cit9CisKK3ZvaWQgUGFnZUNsaWVu
dEltcGw6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9y
dEF0dHJpYnV0ZXMmIGF0dHJpYnV0ZXMpCit7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnJl
Z2lzdGVyRWRpdENvbW1hbmQoUmVmPFdlYkVkaXRDb21tYW5kUHJveHk+JiYsIFVuZG9PclJlZG8p
Cit7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmNsZWFyQWxsRWRpdENvbW1hbmRzKCkKK3sK
K30KKworYm9vbCBQYWdlQ2xpZW50SW1wbDo6Y2FuVW5kb1JlZG8oVW5kb09yUmVkbykKK3sKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmV4ZWN1dGVVbmRvUmVk
byhVbmRvT3JSZWRvKQoreworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjp3aGVlbEV2ZW50V2Fz
Tm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JikKK3sKK30KKwor
V2ViQ29yZTo6RmxvYXRSZWN0IFBhZ2VDbGllbnRJbXBsOjpjb252ZXJ0VG9EZXZpY2VTcGFjZShj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHJlY3QpCit7CisgICAgcmV0dXJuIHJlY3Q7Cit9CisK
K1dlYkNvcmU6OkZsb2F0UmVjdCBQYWdlQ2xpZW50SW1wbDo6Y29udmVydFRvVXNlclNwYWNlKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgcmVjdCkKK3sKKyAgICByZXR1cm4gcmVjdDsKK30KKwor
V2ViQ29yZTo6SW50UG9pbnQgUGFnZUNsaWVudEltcGw6OnNjcmVlblRvUm9vdFZpZXcoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHBvaW50KQoreworICAgIHJldHVybiBwb2ludDsKK30KKworV2Vi
Q29yZTo6SW50UmVjdCBQYWdlQ2xpZW50SW1wbDo6cm9vdFZpZXdUb1NjcmVlbihjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiByZWN0KQoreworICAgIHJldHVybiByZWN0OworfQorCitXZWJDb3JlOjpJ
bnRQb2ludCBQYWdlQ2xpZW50SW1wbDo6YWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZpZXcoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50KQoreworICAgIHJldHVybiBzY3JlZW5Ub1Jvb3RW
aWV3KHBvaW50KTsKK30KKworV2ViQ29yZTo6SW50UmVjdCBQYWdlQ2xpZW50SW1wbDo6cm9vdFZp
ZXdUb0FjY2Vzc2liaWxpdHlTY3JlZW4oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCkKK3sK
KyAgICByZXR1cm4gcm9vdFZpZXdUb1NjcmVlbihyZWN0KTsgICAgCit9CisKK3ZvaWQgUGFnZUNs
aWVudEltcGw6OmRvbmVXaXRoS2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYg
ZXZlbnQsIGJvb2wgd2FzRXZlbnRIYW5kbGVkKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUGFnZUNsaWVudEltcGw6OmNyZWF0ZVBvcHVw
TWVudVByb3h5KFdlYlBhZ2VQcm94eSYgIHBhZ2VQcm94eSkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIHJldHVybiB7IH07Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmVudGVyQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgY29udGV4dCkK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpleGl0
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9
CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2Rl
KGNvbnN0IExheWVyVHJlZUNvbnRleHQmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
KyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCitXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xp
ZW50JiBQYWdlQ2xpZW50SW1wbDo6ZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCgpCit7Cisg
ICAgcmV0dXJuICooV2ViRnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCopdGhpczsKK30KKyNl
bmRpZgorCisvLyBDdXN0b20gcmVwcmVzZW50YXRpb25zLgordm9pZCBQYWdlQ2xpZW50SW1wbDo6
ZGlkRmluaXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5n
JiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJikKK3sKK30KKwor
dm9pZCBQYWdlQ2xpZW50SW1wbDo6bmF2aWdhdGlvbkdlc3R1cmVEaWRCZWdpbigpCit7Cit9CisK
K3ZvaWQgUGFnZUNsaWVudEltcGw6Om5hdmlnYXRpb25HZXN0dXJlV2lsbEVuZChib29sIHdpbGxO
YXZpZ2F0ZSwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSYpCit7Cit9CisKK3ZvaWQgUGFnZUNsaWVu
dEltcGw6Om5hdmlnYXRpb25HZXN0dXJlRGlkRW5kKGJvb2wgd2lsbE5hdmlnYXRlLCBXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtJikKK3sKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6bmF2aWdhdGlv
bkdlc3R1cmVEaWRFbmQoKQoreworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjp3aWxsUmVjb3Jk
TmF2aWdhdGlvblNuYXBzaG90KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKQoreworfQorCit2b2lk
IFBhZ2VDbGllbnRJbXBsOjpkaWRSZW1vdmVOYXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90KCkKK3sK
K30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
Rm9yTWFpbkZyYW1lKCkKK3sKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkRmluaXNoTG9h
ZEZvck1haW5GcmFtZSgpCit7Cit9CisKK3ZvaWQgUGFnZUNsaWVudEltcGw6OmRpZEZhaWxMb2Fk
Rm9yTWFpbkZyYW1lKCkKK3sKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkU2FtZURvY3Vt
ZW50TmF2aWdhdGlvbkZvck1haW5GcmFtZShTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSkKK3sK
K30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlQmFja2dyb3VuZENvbG9yKCkKK3sK
K30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6aXNQbGF5aW5nQXVkaW9XaWxsQ2hhbmdlKCkKK3sK
K30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6aXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKQorewor
fQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpyZWZWaWV3KCkKK3sKK30KKwordm9pZCBQYWdlQ2xp
ZW50SW1wbDo6ZGVyZWZWaWV3KCkKK3sKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUmVz
dG9yZVNjcm9sbFBvc2l0aW9uKCkKK3sKK30KKworV2ViQ29yZTo6VXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbiBQYWdlQ2xpZW50SW1wbDo6dXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbigp
Cit7CisgICAgcmV0dXJuIFdlYkNvcmU6OlVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb246OkxU
UjsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVxdWVzdERPTVBhc3RlQWNjZXNzKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQor
eworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2U6
OkRlbmllZEZvckdlc3R1cmUpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3BsYXlzdGF0aW9uL1BhZ2VDbGllbnRJbXBsLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9wbGF5c3RhdGlvbi9QYWdlQ2xpZW50SW1wbC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjliZmUxNjJlM2NkNTFlOGE5NTYyMGE3M2UwZTFlOTg4Yjc2MTVjYjcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9wbGF5c3RhdGlvbi9QYWdlQ2xp
ZW50SW1wbC5oCkBAIC0wLDAgKzEsMTQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIFNv
bnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xh
c3MgRHJhd2luZ0FyZWFQcm94eTsKK2NsYXNzIFBsYXlTdGF0aW9uV2ViVmlldzsKKworY2xhc3Mg
UGFnZUNsaWVudEltcGwgOiBwdWJsaWMgUGFnZUNsaWVudAorI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKKyAgICAsIHB1YmxpYyBXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5Q2xpZW50CisjZW5k
aWYKK3sKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBQYWdlQ2xp
ZW50SW1wbChQbGF5U3RhdGlvbldlYlZpZXcmKTsKKworcHJpdmF0ZToKKyAgICAvLyBDcmVhdGUg
YSBuZXcgZHJhd2luZyBhcmVhIHByb3h5IGZvciB0aGUgZ2l2ZW4gcGFnZS4KKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8RHJhd2luZ0FyZWFQcm94eT4gY3JlYXRlRHJhd2luZ0FyZWFQcm94eShXZWJQcm9j
ZXNzUHJveHkmKSBmaW5hbDsKKworICAgIC8vIFRlbGwgdGhlIHZpZXcgdG8gaW52YWxpZGF0ZSB0
aGUgZ2l2ZW4gcmVnaW9uLiBUaGUgcmVnaW9uIGlzIGluIHZpZXcgY29vcmRpbmF0ZXMuCisgICAg
dm9pZCBzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYpIGZpbmFsOwor
CisgICAgLy8gVGVsbCB0aGUgdmlldyB0byBzY3JvbGwgdG8gdGhlIGdpdmVuIHBvc2l0aW9uLCBh
bmQgd2hldGhlciB0aGlzIHdhcyBhIHByb2dyYW1tYXRpYyBzY3JvbGwuCisgICAgdm9pZCByZXF1
ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYgc2Nyb2xsT3JpZ2luKSBmaW5hbDsKKworICAgIC8vIFJldHVy
biB0aGUgY3VycmVudCBzY3JvbGwgcG9zaXRpb24gKG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBh
cyB0aGUgV2ViQ29yZSBzY3JvbGwgcG9zaXRpb24sIGJlY2F1c2Ugb2Ygc2NhbGluZywgaW5zZXRz
IGV0Yy4pCisgICAgV2ViQ29yZTo6RmxvYXRQb2ludCB2aWV3U2Nyb2xsUG9zaXRpb24oKSBmaW5h
bDsKKworICAgIC8vIFJldHVybiB0aGUgc2l6ZSBvZiB0aGUgdmlldyB0aGUgcGFnZSBpcyBhc3Nv
Y2lhdGVkIHdpdGguCisgICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSgpIGZpbmFsOworCisg
ICAgLy8gUmV0dXJuIHdoZXRoZXIgdGhlIHZpZXcncyBjb250YWluaW5nIHdpbmRvdyBpcyBhY3Rp
dmUuCisgICAgYm9vbCBpc1ZpZXdXaW5kb3dBY3RpdmUoKSBmaW5hbDsKKworICAgIC8vIFJldHVy
biB3aGV0aGVyIHRoZSB2aWV3IGlzIGZvY3VzZWQuCisgICAgYm9vbCBpc1ZpZXdGb2N1c2VkKCkg
ZmluYWw7CisKKyAgICAvLyBSZXR1cm4gd2hldGhlciB0aGUgdmlldyBpcyB2aXNpYmxlLgorICAg
IGJvb2wgaXNWaWV3VmlzaWJsZSgpIGZpbmFsOworCisgICAgLy8gUmV0dXJuIHdoZXRoZXIgdGhl
IHZpZXcgaXMgaW4gYSB3aW5kb3cuCisgICAgYm9vbCBpc1ZpZXdJbldpbmRvdygpIGZpbmFsOwor
CisgICAgdm9pZCBwcm9jZXNzRGlkRXhpdCgpIGZpbmFsOworICAgIHZvaWQgZGlkUmVsYXVuY2hQ
cm9jZXNzKCkgZmluYWw7CisgICAgdm9pZCBwYWdlQ2xvc2VkKCkgZmluYWw7CisKKyAgICB2b2lk
IHByZWZlcmVuY2VzRGlkQ2hhbmdlKCkgZmluYWw7CisKKyAgICB2b2lkIHRvb2xUaXBDaGFuZ2Vk
KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpIGZpbmFsOworCisgICAgdm9pZCBkaWRDb21t
aXRMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvb2wgdXNlQ3VzdG9t
Q29udGVudFByb3ZpZGVyKSBmaW5hbDsKKworICAgIHZvaWQgaGFuZGxlRG93bmxvYWRSZXF1ZXN0
KERvd25sb2FkUHJveHkmKSBmaW5hbDsKKworICAgIHZvaWQgZGlkQ2hhbmdlQ29udGVudFNpemUo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIGZpbmFsOworCisgICAgdm9pZCBzZXRDdXJzb3IoY29u
c3QgV2ViQ29yZTo6Q3Vyc29yJikgZmluYWw7CisgICAgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRp
bE1vdXNlTW92ZXMoYm9vbCkgZmluYWw7CisgICAgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3Bl
cnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJikgZmluYWw7CisKKyAgICB2
b2lkIHJlZ2lzdGVyRWRpdENvbW1hbmQoUmVmPFdlYkVkaXRDb21tYW5kUHJveHk+JiYsIFVuZG9P
clJlZG8pIGZpbmFsOworICAgIHZvaWQgY2xlYXJBbGxFZGl0Q29tbWFuZHMoKSBmaW5hbDsKKyAg
ICBib29sIGNhblVuZG9SZWRvKFVuZG9PclJlZG8pIGZpbmFsOworICAgIHZvaWQgZXhlY3V0ZVVu
ZG9SZWRvKFVuZG9PclJlZG8pIGZpbmFsOworICAgIHZvaWQgd2hlZWxFdmVudFdhc05vdEhhbmRs
ZWRCeVdlYkNvcmUoY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYpIGZpbmFsOworCisgICAgV2Vi
Q29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb0RldmljZVNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UmVjdCYpIGZpbmFsOworICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBjb252ZXJ0VG9Vc2VyU3BhY2Uo
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgZmluYWw7CisgICAgV2ViQ29yZTo6SW50UG9pbnQg
c2NyZWVuVG9Sb290Vmlldyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpIGZpbmFsOworICAgIFdl
YkNvcmU6OkludFJlY3Qgcm9vdFZpZXdUb1NjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikg
ZmluYWw7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgYWNjZXNzaWJpbGl0eVNjcmVlblRvUm9vdFZp
ZXcoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSBmaW5hbDsKKyAgICBXZWJDb3JlOjpJbnRSZWN0
IHJvb3RWaWV3VG9BY2Nlc3NpYmlsaXR5U2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKSBm
aW5hbDsKKworICAgIHZvaWQgZG9uZVdpdGhLZXlFdmVudChjb25zdCBOYXRpdmVXZWJLZXlib2Fy
ZEV2ZW50JiwgYm9vbCB3YXNFdmVudEhhbmRsZWQpIGZpbmFsOworCisgICAgUmVmUHRyPFdlYlBv
cHVwTWVudVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJQYWdlUHJveHkmKSBmaW5hbDsK
KworICAgIHZvaWQgZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRy
ZWVDb250ZXh0JikgZmluYWw7CisgICAgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01v
ZGUoKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGNv
bnN0IExheWVyVHJlZUNvbnRleHQmKSBmaW5hbDsKKworICAgIC8vIEF1eGlsaWFyeSBDbGllbnQg
Q3JlYXRpb24KKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgV2ViRnVsbFNjcmVlbk1h
bmFnZXJQcm94eUNsaWVudCYgZnVsbFNjcmVlbk1hbmFnZXJQcm94eUNsaWVudCgpIGZpbmFsOwor
I2VuZGlmCisKKyAgICAvLyBDdXN0b20gcmVwcmVzZW50YXRpb25zLgorICAgIHZvaWQgZGlkRmlu
aXNoTG9hZGluZ0RhdGFGb3JDdXN0b21Db250ZW50UHJvdmlkZXIoY29uc3QgU3RyaW5nJiBzdWdn
ZXN0ZWRGaWxlbmFtZSwgY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJikgZmluYWw7CisKKyAgICB2
b2lkIG5hdmlnYXRpb25HZXN0dXJlRGlkQmVnaW4oKSBmaW5hbDsKKyAgICB2b2lkIG5hdmlnYXRp
b25HZXN0dXJlV2lsbEVuZChib29sIHdpbGxOYXZpZ2F0ZSwgV2ViQmFja0ZvcndhcmRMaXN0SXRl
bSYpIGZpbmFsOworICAgIHZvaWQgbmF2aWdhdGlvbkdlc3R1cmVEaWRFbmQoYm9vbCB3aWxsTmF2
aWdhdGUsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKSBmaW5hbDsKKyAgICB2b2lkIG5hdmlnYXRp
b25HZXN0dXJlRGlkRW5kKCkgZmluYWw7CisgICAgdm9pZCB3aWxsUmVjb3JkTmF2aWdhdGlvblNu
YXBzaG90KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlbW92
ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3QoKSBmaW5hbDsKKworICAgIHZvaWQgZGlkRmlyc3RW
aXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9yTWFpbkZyYW1lKCkgZmluYWw7CisgICAgdm9pZCBkaWRG
aW5pc2hMb2FkRm9yTWFpbkZyYW1lKCkgZmluYWw7CisgICAgdm9pZCBkaWRGYWlsTG9hZEZvck1h
aW5GcmFtZSgpIGZpbmFsOworICAgIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvck1h
aW5GcmFtZShTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSkgZmluYWw7CisKKyAgICB2b2lkIGRp
ZENoYW5nZUJhY2tncm91bmRDb2xvcigpIGZpbmFsOworICAgIHZvaWQgaXNQbGF5aW5nQXVkaW9X
aWxsQ2hhbmdlKCkgZmluYWw7CisgICAgdm9pZCBpc1BsYXlpbmdBdWRpb0RpZENoYW5nZSgpIGZp
bmFsOworCisgICAgdm9pZCByZWZWaWV3KCkgZmluYWw7CisgICAgdm9pZCBkZXJlZlZpZXcoKSBm
aW5hbDsKKworICAgIHZvaWQgZGlkUmVzdG9yZVNjcm9sbFBvc2l0aW9uKCkgZmluYWw7CisKKyAg
ICBXZWJDb3JlOjpVc2VySW50ZXJmYWNlTGF5b3V0RGlyZWN0aW9uIHVzZXJJbnRlcmZhY2VMYXlv
dXREaXJlY3Rpb24oKSBmaW5hbDsKKworICAgIHZvaWQgcmVxdWVzdERPTVBhc3RlQWNjZXNzKGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OkRPTVBhc3RlQWNjZXNzUmVzcG9uc2UpPiYmKSBmaW5hbDsKKworICAgIFBs
YXlTdGF0aW9uV2ViVmlldyYgbV92aWV3OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9wbGF5c3RhdGlvbi9QbGF5U3RhdGlv
bldlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvcGxheXN0YXRpb24vUGxheVN0
YXRpb25XZWJWaWV3LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZWIxYTcyMjQyNWJmOTJjNTk0Y2NhZGQwOTBl
NmE4M2MxZGQ0NTEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
cGxheXN0YXRpb24vUGxheVN0YXRpb25XZWJWaWV3LmNwcApAQCAtMCwwICsxLDY5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIwIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF5U3RhdGlvbldl
YlZpZXcuaCIKKworI2luY2x1ZGUgIkFQSVBhZ2VDb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAi
RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MuaCIKKyNpbmNsdWRlICJXZWJQcm9j
ZXNzUG9vbC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworUmVmUHRyPFBsYXlTdGF0aW9uV2Vi
Vmlldz4gUGxheVN0YXRpb25XZWJWaWV3OjpjcmVhdGUoY29uc3QgQVBJOjpQYWdlQ29uZmlndXJh
dGlvbiYgY29uZmlndXJhdGlvbikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF5U3Rh
dGlvbldlYlZpZXcoY29uZmlndXJhdGlvbikpOworfQorCitQbGF5U3RhdGlvbldlYlZpZXc6OlBs
YXlTdGF0aW9uV2ViVmlldyhjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBjb25mKQorICAg
IDogbV9wYWdlQ2xpZW50KG1ha2VVbmlxdWU8UGFnZUNsaWVudEltcGw+KCp0aGlzKSkKK3sKKyAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBjb25mLmNvcHkoKTsKKyAgICBhdXRvKiBwb29sID0gY29u
ZmlndXJhdGlvbi0+cHJvY2Vzc1Bvb2woKTsKKyAgICBtX3BhZ2UgPSBwb29sLT5jcmVhdGVXZWJQ
YWdlKCptX3BhZ2VDbGllbnQsIFdURk1vdmUoY29uZmlndXJhdGlvbikpOworCisgICAgbV9wYWdl
LT5pbml0aWFsaXplV2ViUGFnZSgpOworfQorCitQbGF5U3RhdGlvbldlYlZpZXc6On5QbGF5U3Rh
dGlvbldlYlZpZXcoKQoreworfQorCitib29sIFBsYXlTdGF0aW9uV2ViVmlldzo6aXNBY3RpdmUo
KSBjb25zdAoreworICAgIHJldHVybiBtX2FjdGl2ZTsKK30KKworYm9vbCBQbGF5U3RhdGlvbldl
YlZpZXc6OmlzRm9jdXNlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZm9jdXNlZDsKK30KKwor
Ym9vbCBQbGF5U3RhdGlvbldlYlZpZXc6OmlzVmlzaWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fdmlzaWJsZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9wbGF5c3RhdGlvbi9QbGF5U3RhdGlvbldlYlZpZXcuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL3BsYXlzdGF0aW9uL1BsYXlTdGF0aW9uV2ViVmlldy5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjE3OTU3MzYzMGRjM2VlNTM1NGMxMjUzZGQ1MGUzMTYyY2ExN2Q1MzIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9wbGF5c3RhdGlvbi9QbGF5U3Rh
dGlvbldlYlZpZXcuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwu
aCIKKyNpbmNsdWRlICJXS1ZpZXcuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFBsYXlTdGF0aW9uV2ViVmlldyA6IHB1YmxpYyBBUEk6
Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlZpZXc+IHsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmUHRyPFBsYXlTdGF0aW9uV2ViVmll
dz4gY3JlYXRlKGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mKTsKKyAgICB2aXJ0dWFsIH5Q
bGF5U3RhdGlvbldlYlZpZXcoKTsKKworICAgIFdlYlBhZ2VQcm94eSogcGFnZSgpIHsgcmV0dXJu
IG1fcGFnZS5nZXQoKTsgfQorCisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0OworICAgIGJvb2wg
aXNGb2N1c2VkKCkgY29uc3Q7CisgICAgYm9vbCBpc1Zpc2libGUoKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBQbGF5U3RhdGlvbldlYlZpZXcoY29uc3QgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiYp
OworCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6UGFnZUNsaWVudEltcGw+IG1fcGFnZUNs
aWVudDsKKyAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBtX3BhZ2U7CisKKyAgICBib29sIG1fYWN0
aXZlIHsgZmFsc2UgfTsKKyAgICBib29sIG1fZm9jdXNlZCB7IGZhbHNlIH07CisgICAgYm9vbCBt
X3Zpc2libGUgeyBmYWxzZSB9OworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBib29s
IG1faXNGdWxsU2NyZWVuIHsgZmFsc2UgfTsKKyNlbmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9wbGF5c3RhdGlvbi9X
ZWJQcm9jZXNzUG9vbFBsYXlTdGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3Bs
YXlzdGF0aW9uL1dlYlByb2Nlc3NQb29sUGxheVN0YXRpb24uY3BwCmluZGV4IGY2ZGZlMzc3ZGM4
YTFmNzQ5YzFiN2ExMmY2YzFiOTQwMjc2NjBjNzcuLmJhNTM3M2U4ZTk2MjJlOTAxNzI2NjQ5NjYw
YzY0OWRlMDBhZWJhZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3BsYXlz
dGF0aW9uL1dlYlByb2Nlc3NQb29sUGxheVN0YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL3BsYXlzdGF0aW9uL1dlYlByb2Nlc3NQb29sUGxheVN0YXRpb24uY3BwCkBAIC0z
MCw2ICszMCw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiB2b2lkIFdlYlByb2Nlc3NQb29sOjpw
bGF0Zm9ybUluaXRpYWxpemUoKQogeworICAgIG1fdXNlcklkID0gbV9jb25maWd1cmF0aW9uLT51
c2VySWQoKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0
d29ya1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0VudHJ5UG9pbnQvcGxheXN0YXRpb24vV2ViUHJv
Y2Vzc01haW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0VudHJ5UG9pbnQvcGxheXN0
YXRpb24vV2ViUHJvY2Vzc01haW4uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE5M2MzMWYzNDU4OGU5ODhhNDk3
YmQ1ODQ2ZjdlMmNjMTE1MTgyNzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvRW50cnlQb2ludC9wbGF5c3RhdGlvbi9XZWJQcm9jZXNzTWFpbi5jcHAKQEAgLTAs
MCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBTb255IEludGVyYWN0aXZlIEVu
dGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViUHJvY2Vzc01haW4uaCIKKworI2luY2x1ZGUgPGRsZmNuLmg+CisjaW5jbHVkZSA8cHJv
Y2Vzcy1pbml0aWFsaXphdGlvbi9uay13ZWJwcm9jZXNzLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4K
KyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworc3RhdGljIHZvaWQg
bG9hZExpYnJhcnlPckV4aXQoY29uc3QgY2hhciogbmFtZSkKK3sKKyAgICBpZiAoIWRsb3Blbihu
YW1lLCBSVExEX05PVykpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gbG9h
ZCAlcy5cbiIsIG5hbWUpOworICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CisgICAgfQorfQor
CitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgaWYgKGFyZ2MgPCAyKSB7
CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiVW5leHBlY3RlZCBhcmd1bWVudCBjb3VudCAlZFxu
IiwgYXJnYyk7CisgICAgICAgIGV4aXQoRVhJVF9GQUlMVVJFKTsKKyAgICB9CisKKyAgICBsb2Fk
TGlicmFyeU9yRXhpdCgibGlicG5nMTYiKTsKKyAgICBsb2FkTGlicmFyeU9yRXhpdCgibGliaWN1
Iik7CisgICAgbG9hZExpYnJhcnlPckV4aXQoImxpYmZyZWV0eXBlIik7CisgICAgbG9hZExpYnJh
cnlPckV4aXQoImxpYmZvbnRjb25maWciKTsKKyAgICBsb2FkTGlicmFyeU9yRXhpdCgibGliaGFy
ZmJ1enoiKTsKKyAgICBsb2FkTGlicmFyeU9yRXhpdCgibGliY2Fpcm8iKTsKKyAgICBsb2FkTGli
cmFyeU9yRXhpdCgibGliU2NlTktXZWJLaXRSZXF1aXJlbWVudHMiKTsKKyAgICBsb2FkTGlicmFy
eU9yRXhpdCgibGliSmF2YVNjcmlwdENvcmUiKTsKKyAgICBsb2FkTGlicmFyeU9yRXhpdCgibGli
V2ViS2l0Iik7CisKKyAgICBjaGFyKiBjb3JlUHJvY2Vzc0lkZW50aWZpZXIgPSBhcmd2WzFdOwor
CisgICAgY2hhciBjb25uZWN0aW9uSWRlbnRpZmllclsxNl07CisgICAgc25wcmludGYoY29ubmVj
dGlvbklkZW50aWZpZXIsIHNpemVvZihjb25uZWN0aW9uSWRlbnRpZmllciksICIlZCIsIFBsYXlT
dGF0aW9uOjpnZXRDb25uZWN0aW9uSWRlbnRpZmllcigpKTsKKworICAgIGNoYXIgcHJvZ3JhbVtd
ID0gImR1bW15IjsKKyAgICBjaGFyKiBpbnRlcm5hbEFyZ3ZbXSA9IHsKKyAgICAgICAgcHJvZ3Jh
bSwKKyAgICAgICAgY29yZVByb2Nlc3NJZGVudGlmaWVyLAorICAgICAgICBjb25uZWN0aW9uSWRl
bnRpZmllciwKKyAgICAgICAgMAorICAgIH07CisgICAgcmV0dXJuIFdlYktpdDo6V2ViUHJvY2Vz
c01haW4oc2l6ZW9mKGludGVybmFsQXJndikgLyBzaXplb2YoY2hhciopLCBpbnRlcm5hbEFyZ3Yp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L3BsYXlzdGF0aW9uL0luamVjdGVkQnVuZGxlUGxheVN0YXRpb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL3BsYXlzdGF0aW9uL0luamVjdGVkQnVuZGxlUGxh
eVN0YXRpb24uY3BwCmluZGV4IDRiZmUwMmNlMmRiOTJkODgyZTMyNDdmZjhhNGE2MTBhZWJlYmE0
YTMuLjFjYTExZTYxNmIyZGExNWJlNzBiODk3YTllZTM0ODRlZGNiYjJjNjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9wbGF5c3RhdGlvbi9Jbmpl
Y3RlZEJ1bmRsZVBsYXlTdGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvcGxheXN0YXRpb24vSW5qZWN0ZWRCdW5kbGVQbGF5U3RhdGlvbi5jcHAK
QEAgLTI2LDE1ICsyNiwzMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluamVj
dGVkQnVuZGxlLmgiCiAKKyNpbmNsdWRlICJXS0J1bmRsZUFQSUNhc3QuaCIKKyNpbmNsdWRlICJX
S0J1bmRsZUluaXRpYWxpemUuaCIKKyNpbmNsdWRlICJsaWJyYXJ5LWJ1bmRsZS5oIgorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAotYm9vbCBJbmplY3RlZEJ1bmRsZTo6aW5pdGlhbGl6ZShjb25zdCBX
ZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiwgQVBJOjpPYmplY3QqIGluaXRpYWxpemF0aW9u
VXNlckRhdGEpCitib29sIEluamVjdGVkQnVuZGxlOjppbml0aWFsaXplKGNvbnN0IFdlYlByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMsIEFQSTo6T2JqZWN0KiBpbml0aWFsaXph
dGlvblVzZXJEYXRhKQogewotICAgIHJldHVybiBmYWxzZTsKKyAgICBhdXRvIGJ1bmRsZSA9IExp
YnJhcnlCdW5kbGU6OmNyZWF0ZShtX3BhdGgudXRmOCgpLmRhdGEoKSk7CisgICAgbV9wbGF0Zm9y
bUJ1bmRsZSA9IGJ1bmRsZTsKKyAgICBpZiAoIW1fcGxhdGZvcm1CdW5kbGUpIHsKKyAgICAgICAg
cHJpbnRmKCJQbGF5U3RhdGlvbjo6QnVuZGxlOjpjcmVhdGUgZmFpbGVkXG4iKTsKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBXS0J1bmRsZUluaXRpYWxpemVGdW5jdGlvblB0ciBp
bml0aWFsaXplRnVuY3Rpb24gPSByZWludGVycHJldF9jYXN0PFdLQnVuZGxlSW5pdGlhbGl6ZUZ1
bmN0aW9uUHRyPihidW5kbGUtPnJlc29sdmUoIldLQnVuZGxlSW5pdGlhbGl6ZSIpKTsKKyAgICBp
ZiAoIWluaXRpYWxpemVGdW5jdGlvbikgeworICAgICAgICBwcmludGYoIlBsYXlTdGF0aW9uOjpC
dW5kbGU6OnJlc29sdmUgZmFpbGVkXG4iKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
KyAgICBpbml0aWFsaXplRnVuY3Rpb24odG9BUEkodGhpcyksIHRvQVBJKGluaXRpYWxpemF0aW9u
VXNlckRhdGEpKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6
c2V0QnVuZGxlUGFyYW1ldGVyKFdURjo6U3RyaW5nIGNvbnN0JiwgSVBDOjpEYXRhUmVmZXJlbmNl
IGNvbnN0JikKIHsKKwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpzZXRCdW5kbGVQYXJhbWV0
ZXJzKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvQWNjZWxlcmF0ZWRTdXJmYWNlLmNwcAppbmRleCAxMzMwNjcx
ZjRhMjk4MzJhNDFmMWU4MjcwMDcyMjRhMDZmOGYyYWI1Li5hODRlZWE0MmJkNjQyNTUyZmJhYmQz
MmQyM2FlODU0YmIyOGJiYTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9BY2NlbGVyYXRlZFN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0FjY2VsZXJhdGVkU3VyZmFjZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgc3Rk
Ojp1bmlxdWVfcHRyPEFjY2VsZXJhdGVkU3VyZmFjZT4gQWNjZWxlcmF0ZWRTdXJmYWNlOjpjcmVh
dGUoV2ViUGFnZSYgd2ViUGFnZSwKICAgICBpZiAoUGxhdGZvcm1EaXNwbGF5OjpzaGFyZWREaXNw
bGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlwZTo6WDExKQogICAgICAgICByZXR1
cm4gQWNjZWxlcmF0ZWRTdXJmYWNlWDExOjpjcmVhdGUod2ViUGFnZSwgY2xpZW50KTsKICNlbmRp
ZgotI2lmIFVTRShMSUJXUEUpCisjaWYgVVNFKFdQRV9SRU5ERVJFUikKICAgICBpZiAoUGxhdGZv
cm1EaXNwbGF5OjpzaGFyZWREaXNwbGF5KCkudHlwZSgpID09IFBsYXRmb3JtRGlzcGxheTo6VHlw
ZTo6V1BFKQogICAgICAgICByZXR1cm4gQWNjZWxlcmF0ZWRTdXJmYWNlTGliV1BFOjpjcmVhdGUo
d2ViUGFnZSwgY2xpZW50KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlv
bnNQbGF5U3RhdGlvbi5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zUGxheVN0YXRpb24uY21h
a2UKaW5kZXggOWVhNjgwZTA0Mjk3ODNhN2Q2ZWQ1M2VkMTBiM2U5ZTYyYTc3ZjEyYi4uNmFjODA1
NWUyNDY2YTZlMTE5ZjEzYmU2OTYwYjFiNmU2ZDU0ZmU0NiAxMDA2NDQKLS0tIGEvU291cmNlL2Nt
YWtlL09wdGlvbnNQbGF5U3RhdGlvbi5jbWFrZQorKysgYi9Tb3VyY2UvY21ha2UvT3B0aW9uc1Bs
YXlTdGF0aW9uLmNtYWtlCkBAIC01OSw2ICs1OSwxMCBAQCBXRUJLSVRfT1BUSU9OX0RFRklORShF
TkFCTEVfVExTX0RFQlVHICJFbmFibGUgVExTIGtleSBsb2cgc3VwcG9ydCIgUFJJVkFURSBPRkYp
CiAjIFJlZW5hYmxlIGFmdGVyIHVwZGF0aW5nIGZvbnRjb25maWcKIFdFQktJVF9PUFRJT05fREVG
QVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WQVJJQVRJT05fRk9OVFMgUFJJVkFURSBPRkYpCiAKKyMg
RW5hYmxlIGluIHRoZSBmdXR1cmUKK1dFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVO
QUJMRV9GVUxMU0NSRUVOX0FQSSBQUklWQVRFIE9GRikKK1dFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9DT05URVhUX01FTlVTIFBSSVZBVEUgT0ZGKQorCiAjIE5vIHN1cHBv
cnQgcGxhbm5lZAogV0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0ZUUERJ
UiBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9H
RU9MT0NBVElPTiBQUklWQVRFIE9GRikKQEAgLTEwMyw2ICsxMDcsMTYgQEAgbGlzdChBUFBFTkQg
Q01BS0VfUFJFRklYX1BBVEggJHtXRUJLSVRfTElCUkFSSUVTX0RJUn0pCiAKIGZpbmRfbGlicmFy
eShDX1NURF9MSUJSQVJZIGMpCiBmaW5kX2xpYnJhcnkoS0VSTkVMX0xJQlJBUlkga2VybmVsKQor
ZmluZF9wYWNrYWdlKFdlYktpdFJlcXVpcmVtZW50cyBSRVFVSVJFRAorICAgIENPTVBPTkVOVFMK
KyAgICAgICAgSlBFRworICAgICAgICBMaWJQU0wKKyAgICAgICAgTGliWG1sMgorICAgICAgICBQ
cm9jZXNzTGF1bmNoZXIKKyAgICAgICAgU1FMaXRlMworICAgICAgICBaTElCCisgICAgICAgIGxp
YndwZQorKQogCiBmaW5kX3BhY2thZ2UoQ2Fpcm8gUkVRVUlSRUQpCiBmaW5kX3BhY2thZ2UoQ1VS
TCBSRVFVSVJFRCkKQEAgLTExMSwxNiArMTI1LDE3IEBAIGZpbmRfcGFja2FnZShGb250Y29uZmln
IFJFUVVJUkVEKQogZmluZF9wYWNrYWdlKEZyZWV0eXBlIFJFUVVJUkVEKQogZmluZF9wYWNrYWdl
KEhhcmZCdXp6IFJFUVVJUkVEIENPTVBPTkVOVFMgSUNVKQogZmluZF9wYWNrYWdlKElDVSA2MC4y
IFJFUVVJUkVEIENPTVBPTkVOVFMgZGF0YSBpMThuIHVjKQotZmluZF9wYWNrYWdlKEpQRUcgUkVR
VUlSRUQpCi1maW5kX3BhY2thZ2UoTGliUFNMIFJFUVVJUkVEKQotZmluZF9wYWNrYWdlKExpYlht
bDIgUkVRVUlSRUQpCiBmaW5kX3BhY2thZ2UoT3BlblNTTCBSRVFVSVJFRCkKIGZpbmRfcGFja2Fn
ZShQTkcgUkVRVUlSRUQpCi1maW5kX3BhY2thZ2UoU1FMaXRlMyBSRVFVSVJFRCkKIGZpbmRfcGFj
a2FnZShUaHJlYWRzIFJFUVVJUkVEKQogZmluZF9wYWNrYWdlKFdlYlAgUkVRVUlSRUQgQ09NUE9O
RU5UUyBkZW11eCkKLWZpbmRfcGFja2FnZShXUEUgUkVRVUlSRUQpCi1maW5kX3BhY2thZ2UoWkxJ
QiBSRVFVSVJFRCkKKworc2V0KENNQUtFX0NfU1RBTkRBUkRfTElCUkFSSUVTCisgICAgIiR7Q01B
S0VfQ19TVEFOREFSRF9MSUJSQVJJRVN9ICR7Q19TVERfTElCUkFSWX0iCisgICkKK3NldChDTUFL
RV9DWFhfU1RBTkRBUkRfTElCUkFSSUVTCisgICAgIiR7Q01BS0VfQ1hYX1NUQU5EQVJEX0xJQlJB
UklFU30gJHtDX1NURF9MSUJSQVJZfSIKKyAgKQogCiAjIFRPRE86IEFkZCBhIGNoZWNrIGZvciBI
QVZFX1JTQV9QU1MgZm9yIHN1cHBvcnQgb2YgQ3J5cHRvQWxnb3JpdGhtUlNBX1BTUwogIyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2NjM1CkBAIC0xMzMsNyArMTQ4
LDcgQEAgU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX0ZSRUVUWVBFIE9OKQogU0VUX0FORF9F
WFBPU0VfVE9fQlVJTEQoVVNFX0hBUkZCVVpaIE9OKQogU0VUX0FORF9FWFBPU0VfVE9fQlVJTEQo
VVNFX0xJQldQRSBPTikKIFNFVF9BTkRfRVhQT1NFX1RPX0JVSUxEKFVTRV9PUEVOU1NMIE9OKQot
U0VUX0FORF9FWFBPU0VfVE9fQlVJTEQoVVNFX1dQRV9SRU5ERVJFUiBPTikKK1NFVF9BTkRfRVhQ
T1NFX1RPX0JVSUxEKFVTRV9XUEVfUkVOREVSRVIgT0ZGKQogCiBTRVRfQU5EX0VYUE9TRV9UT19C
VUlMRChVU0VfSU5TUEVDVE9SX1NPQ0tFVF9TRVJWRVIgJHtFTkFCTEVfUkVNT1RFX0lOU1BFQ1RP
Un0pCiBTRVRfQU5EX0VYUE9TRV9UT19CVUlMRChVU0VfVU5JWF9ET01BSU5fU09DS0VUUyBPTikK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhNmM2
OTliOWU5OTQ1NzBiYTBiYjY0OTliYjk3OGNiZDhlNzhiYmMxLi4xOTRjZTI2N2MwYjYxODc2OWVm
MDc4ZDAzMTQ4ZTE1ZGM3ZjI2NGZlIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMjAtMDUtMjAgIFlvc2hpYWtpIEpp
dHN1a2F3YSAgPHlvc2hpYWtpLmppdHN1a2F3YUBzb255LmNvbT4KKworICAgICAgICBbUGxheVN0
YXRpb25dIEFkZCBtaW5pbWFsIFdLVmlldyBBUEkgdG8gZW5hYmxlIFRlc3RXZWJLaXRBUEkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTg2OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVuYWJsZSBUZXN0
V2ViS2l0QVBJCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtUGxheVN0YXRpb24u
Y21ha2U6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaDoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL3BsYXlzdGF0aW9uL1BsYXRmb3JtVXRpbGl0aWVzUGxheVN0YXRp
b24uY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VXRpbDo6Y3JlYXRlSW5qZWN0ZWRCdW5k
bGVQYXRoKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlV0aWw6OmNyZWF0ZVVSTEZvclJlc291
cmNlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL3BsYXlzdGF0aW9uL1BsYXRmb3JtV2ViVmll
d1BsYXlTdGF0aW9uLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlBsYXRmb3JtV2ViVmll
dzo6UGxhdGZvcm1XZWJWaWV3KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlBsYXRmb3JtV2Vi
Vmlldzo6flBsYXRmb3JtV2ViVmlldyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQbGF0Zm9y
bVdlYlZpZXc6OmluaXRpYWxpemUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGxhdGZvcm1X
ZWJWaWV3OjpyZXNpemVUbyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQbGF0Zm9ybVdlYlZp
ZXc6OnBhZ2UgY29uc3QpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGxhdGZvcm1XZWJWaWV3
OjpzaW11bGF0ZVNwYWNlYmFyS2V5UHJlc3MpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6UGxh
dGZvcm1XZWJWaWV3OjpzaW11bGF0ZU1vdXNlTW92ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjpQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlUmlnaHRDbGljayk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlQnV0dG9uQ2xpY2spOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvcGxheXN0YXRpb24vbWFpbi5jcHA6CisgICAgICAgIChsb2FkTGlicmFy
eU9yRXhpdCk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgQWRkIFBsYXlTdGF0aW9uIFBsYXRm
b3JtIHN1cHBvcnQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XS1By
ZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICBV
c2UgdGhlIHNhbWUgZXhwZWN0ZWQgZGVmYXVsdCBmb250IHByZWZlcmVuY2VzIGFzIEdUSydzLgor
CiAyMDIwLTA1LTEyICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgW2lPUyBTaW11bGF0b3JdIFRlc3RXZWJLaXRBUEkuX1dLRG93bmxvYWQuUmVz
dW1lIGlzIGEgZmxha3kgY3Jhc2gKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxh
dGZvcm1QbGF5U3RhdGlvbi5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1QbGF5
U3RhdGlvbi5jbWFrZQppbmRleCA4OTg0MjY3Y2RiOTc5YjEzMjk4NDIyZTg1NDljNzcyNDczYTY1
MGEyLi5hNGRmMTk3NDZiMzgwZmQ5ZTYzYTU4OWFjZTMyMGQ2MGE5ZWZhMjcxIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtUGxheVN0YXRpb24uY21ha2UKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVBsYXlTdGF0aW9uLmNtYWtlCkBAIC00OCw2ICs0OCwx
MiBAQCBpZiAoRU5BQkxFX1dFQktJVCkKICAgICAgICAgcGxheXN0YXRpb24vUGxhdGZvcm1VdGls
aXRpZXNQbGF5U3RhdGlvbi5jcHAKICAgICAgICAgcGxheXN0YXRpb24vUGxhdGZvcm1XZWJWaWV3
UGxheVN0YXRpb24uY3BwCiAgICAgKQorCisgICAgIyBFeGNsdWRlIHRlc3RzIHdoaWNoIGRvbid0
IGZpbmlzaC4KKyAgICBsaXN0KFJFTU9WRV9JVEVNIFRlc3RXZWJLaXRfU09VUkNFUworICAgICAg
ICBUZXN0cy9XZWJLaXQvRm9yY2VSZXBhaW50LmNwcAorICAgICAgICBUZXN0cy9XZWJLaXQvR2Vv
bG9jYXRpb24uY3BwCisgICAgKQogZW5kaWYgKCkKIAogCkBAIC01NSwzICs2MSw3IEBAIGVuZGlm
ICgpCiBpZiAoJHtDTUFLRV9HRU5FUkFUT1J9IE1BVENIRVMgIlZpc3VhbCBTdHVkaW8iKQogICAg
IHNldF90YXJnZXRfcHJvcGVydGllcyhUZXN0V1RGIFRlc3RXZWJDb3JlIFRlc3RXZWJLaXQgUFJP
UEVSVElFUyBWU19ERUJVR0dFUl9XT1JLSU5HX0RJUkVDVE9SWSAiJHtDTUFLRV9SVU5USU1FX09V
VFBVVF9ESVJFQ1RPUll9IikKIGVuZGlmICgpCisKK2FkZF9kZWZpbml0aW9ucygKKyAgICAtRFRF
U1RfV0VCS0lUX1JFU09VUkNFU19ESVI9XCIke1RPT0xTX0RJUn0vVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRcIgorKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdl
YlZpZXcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgKaW5kZXggNzdj
ZjE4NjlhNTVmNTZhZGMxNWU1MWM5Y2RjNWY1N2MzOGU5NWUxNi4uZDgyNjVkMmI5ZTA2Y2E3N2Y2
ZmMzZjY1OWI3YzJjYjZhZDVmM2E1ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Q
bGF0Zm9ybVdlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtV2ViVmll
dy5oCkBAIC02MCw3ICs2MCw3IEBAIHR5cGVkZWYgV1BFVG9vbGluZ0JhY2tlbmRzOjpIZWFkbGVz
c1ZpZXdCYWNrZW5kICpQbGF0Zm9ybVdpbmRvdzsKIHR5cGVkZWYgV0tWaWV3UmVmIFBsYXRmb3Jt
V0tWaWV3OwogdHlwZWRlZiBIV05EIFBsYXRmb3JtV2luZG93OwogI2VsaWYgUExBVEZPUk0oUExB
WVNUQVRJT04pCi10eXBlZGVmIHZvaWQqIFBsYXRmb3JtV0tWaWV3OwordHlwZWRlZiBXS1ZpZXdS
ZWYgUGxhdGZvcm1XS1ZpZXc7CiB0eXBlZGVmIHZvaWQqIFBsYXRmb3JtV2luZG93OwogI2VuZGlm
CiB0eXBlZGVmIHVpbnQzMl90IFdLRXZlbnRNb2RpZmllcnM7CkBAIC04Nyw3ICs4Nyw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNpbXVsYXRlQWx0S2V5UHJlc3MoKTsKICAgICB2b2lkIHNpbXVsYXRl
UmlnaHRDbGljayh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5KTsKICAgICB2b2lkIHNpbXVsYXRlTW91
c2VNb3ZlKHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIFdLRXZlbnRNb2RpZmllcnMgPSAwKTsKLSNp
ZiBQTEFURk9STShNQUMpCisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShQTEFZU1RBVElP
TikKICAgICB2b2lkIHNpbXVsYXRlQnV0dG9uQ2xpY2soV0tFdmVudE1vdXNlQnV0dG9uLCB1bnNp
Z25lZCB4LCB1bnNpZ25lZCB5LCBXS0V2ZW50TW9kaWZpZXJzKTsKICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdC9XS1ByZWZlcmVuY2VzLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0L1dLUHJlZmVyZW5jZXMuY3BwCmluZGV4
IDI4ZTMyMzAyYjg3M2E5OGE0MWFiNzNjMjJhMTRjNzM3ZDYwZmEzNmUuLmM1NjUwNGJmNDljMWE0
ODI2YjgwODcyNjQxZDRkZWZmN2NmZGQwMjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L1dLUHJlZmVyZW5jZXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0L1dLUHJlZmVyZW5jZXMuY3BwCkBAIC00NCw3ICs0NCw3IEBAIFRFU1Qo
V2ViS2l0LCBXS1ByZWZlcmVuY2VzQmFzaWMpCiAKIFRFU1QoV2ViS2l0LCBXS1ByZWZlcmVuY2Vz
RGVmYXVsdHMpCiB7Ci0jaWYgUExBVEZPUk0oR1RLKQorI2lmIFBMQVRGT1JNKEdUSykgfHwgUExB
VEZPUk0oUExBWVNUQVRJT04pCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGV4cGVjdGVkU3RhbmRh
cmRGb250RmFtaWx5ID0gIlRpbWVzIjsKICAgICBzdGF0aWMgY29uc3QgY2hhciogZXhwZWN0ZWRG
aXhlZEZvbnRGYW1pbHkgPSAiQ291cmllciBOZXciOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBl
eHBlY3RlZFNlcmlmRm9udEZhbWlseSA9ICJUaW1lcyI7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL3BsYXlzdGF0aW9uL1BsYXRmb3JtVXRpbGl0aWVzUGxheVN0YXRpb24uY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9wbGF5c3RhdGlvbi9QbGF0Zm9ybVV0aWxpdGllc1BsYXlTdGF0
aW9uLmNwcAppbmRleCBkN2IyNzZjM2EyNzQ0ZjQ4ZWUwNTdkNjIzMGJiZGQ5NDU0NTc0NmE3Li5j
M2U2ZTIwOWU5ODYyOTk3MWIyZjhjN2NiZjAzYjc0MmIwYjRmOWNjIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL3BsYXlzdGF0aW9uL1BsYXRmb3JtVXRpbGl0aWVzUGxheVN0YXRpb24u
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvcGxheXN0YXRpb24vUGxhdGZvcm1VdGlsaXRp
ZXNQbGF5U3RhdGlvbi5jcHAKQEAgLTM0LDE0ICszNCwxNCBAQCBuYW1lc3BhY2UgVXRpbCB7CiAK
IFdLU3RyaW5nUmVmIGNyZWF0ZUluamVjdGVkQnVuZGxlUGF0aCgpCiB7Ci0gICAgcmV0dXJuIFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJpbmplY3RlZGJ1bmRsZSIpOworICAgIHJldHVy
biBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiL2FwcDAvbGliVGVzdFdlYktpdEFQSUlu
amVjdGVkQnVuZGxlLnNwcngiKTsKIH0KIAogV0tVUkxSZWYgY3JlYXRlVVJMRm9yUmVzb3VyY2Uo
Y29uc3QgY2hhciogcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGV4dGVuc2lvbikKIHsKLSAgICBTdHJp
bmcgZmlsZW5hbWUgPSBtYWtlU3RyaW5nKHJlc291cmNlLCAnLicsIGV4dGVuc2lvbik7Ci0gICAg
YXV0byB1cmwgPSBVUkw6OmZpbGVVUkxXaXRoRmlsZVN5c3RlbVBhdGgoZmlsZW5hbWUpOwotICAg
IHJldHVybiBXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyh1cmwuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSk7CisgICAgY2hhciB1cmxbNTEyXTsgLy8gU3VmZmljaWVudCBidWZmZXIgc2l6ZSBmb3Ig
dGhlIHByZWZpeCBhbmQgdGhlIGFjdHVhbCBwYXRoLgorICAgIHNucHJpbnRmKHVybCwgc2l6ZW9m
KHVybCksICJmaWxlOi8vL2hvc3QvJXMvJXMuJXMiLCBURVNUX1dFQktJVF9SRVNPVVJDRVNfRElS
LCByZXNvdXJjZSwgZXh0ZW5zaW9uKTsKKyAgICByZXR1cm4gV0tVUkxDcmVhdGVXaXRoVVRGOENT
dHJpbmcodXJsKTsKIH0KIAogV0tVUkxSZWYgVVJMRm9yTm9uRXhpc3RlbnRSZXNvdXJjZSgpCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL3BsYXlzdGF0aW9uL1BsYXRmb3JtV2ViVmll
d1BsYXlTdGF0aW9uLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvcGxheXN0YXRpb24vUGxhdGZv
cm1XZWJWaWV3UGxheVN0YXRpb24uY3BwCmluZGV4IDcyYTEyNDA2MmM1ZDYzMGYzNjA2NWZlMDAw
MmIxNmY1ZmVkYjc0MDEuLmU0M2E0NjM3NGM4YWZiZmY2MTAyM2ZhMTc0M2NmMTc4ODkzYTMxMzcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvcGxheXN0YXRpb24vUGxhdGZvcm1XZWJW
aWV3UGxheVN0YXRpb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvcGxheXN0YXRpb24v
UGxhdGZvcm1XZWJWaWV3UGxheVN0YXRpb24uY3BwCkBAIC0yNiw1NSArMjYsODAgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKIAotbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgeworI2luY2x1ZGUgPEtleWJvYXJkRXZlbnRzLmg+CisjaW5jbHVkZSA8
V2ViS2l0L1dLQ29udGV4dENvbmZpZ3VyYXRpb25QbGF5U3RhdGlvbi5oPgorI2luY2x1ZGUgPFdl
YktpdC9XS1BhZ2VDb25maWd1cmF0aW9uUmVmLmg+CisjaW5jbHVkZSA8V2ViS2l0L1dLUGFnZVBy
aXZhdGVQbGF5U3RhdGlvbi5oPgorI2luY2x1ZGUgPFdlYktpdC9XS1JldGFpblB0ci5oPgorI2lu
Y2x1ZGUgPFdlYktpdC9XZWJLaXQyX0MuaD4KIAotUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdl
YlZpZXcoV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZikKK25hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKK1BsYXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiBjb250
ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCiB7Ci19CisgICAgV0tSZXRhaW5Q
dHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gY29uZmlndXJhdGlvbiA9IGFkb3B0V0soV0tQYWdl
Q29uZmlndXJhdGlvbkNyZWF0ZSgpKTsKKyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4
dChjb25maWd1cmF0aW9uLmdldCgpLCBjb250ZXh0UmVmKTsKKyAgICBXS1BhZ2VDb25maWd1cmF0
aW9uU2V0UGFnZUdyb3VwKGNvbmZpZ3VyYXRpb24uZ2V0KCksIHBhZ2VHcm91cFJlZik7CiAKLVBs
YXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLUGFnZUNvbmZpZ3VyYXRpb25SZWYpCi17
CisgICAgaW5pdGlhbGl6ZShjb25maWd1cmF0aW9uLmdldCgpKTsKIH0KIAotUGxhdGZvcm1XZWJW
aWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tQYWdlUmVmKQorUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9y
bVdlYlZpZXcoV0tQYWdlQ29uZmlndXJhdGlvblJlZiBjb25maWd1cmF0aW9uKQogeworICAgIGlu
aXRpYWxpemUoY29uZmlndXJhdGlvbik7CiB9CiAKLVBsYXRmb3JtV2ViVmlldzo6flBsYXRmb3Jt
V2ViVmlldygpCitQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS1BhZ2VSZWYgcmVs
YXRlZFBhZ2UpCiB7CisgICAgV0tSZXRhaW5QdHI8V0tQYWdlQ29uZmlndXJhdGlvblJlZj4gY29u
ZmlndXJhdGlvbiA9IGFkb3B0V0soV0tQYWdlQ29uZmlndXJhdGlvbkNyZWF0ZSgpKTsKKyAgICBX
S1BhZ2VDb25maWd1cmF0aW9uU2V0Q29udGV4dChjb25maWd1cmF0aW9uLmdldCgpLCBXS1BhZ2VH
ZXRDb250ZXh0KHJlbGF0ZWRQYWdlKSk7CisgICAgV0tQYWdlQ29uZmlndXJhdGlvblNldFBhZ2VH
cm91cChjb25maWd1cmF0aW9uLmdldCgpLCBXS1BhZ2VHZXRQYWdlR3JvdXAocmVsYXRlZFBhZ2Up
KTsKKyAgICBXS1BhZ2VDb25maWd1cmF0aW9uU2V0UmVsYXRlZFBhZ2UoY29uZmlndXJhdGlvbi5n
ZXQoKSwgcmVsYXRlZFBhZ2UpOworCisgICAgaW5pdGlhbGl6ZShjb25maWd1cmF0aW9uLmdldCgp
KTsKIH0KIAotdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmluaXRpYWxpemUoV0tQYWdlQ29uZmlndXJh
dGlvblJlZikKK1BsYXRmb3JtV2ViVmlldzo6flBsYXRmb3JtV2ViVmlldygpCiB7CisgICAgV0tQ
YWdlQ2xvc2UocGFnZSgpKTsKKyAgICBXS1JlbGVhc2UobV92aWV3KTsKIH0KIAotV0tQYWdlUmVm
IFBsYXRmb3JtV2ViVmlldzo6cGFnZSgpIGNvbnN0Cit2b2lkIFBsYXRmb3JtV2ViVmlldzo6aW5p
dGlhbGl6ZShXS1BhZ2VDb25maWd1cmF0aW9uUmVmIGNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgcmV0
dXJuIG51bGxwdHI7CisgICAgbV92aWV3ID0gV0tWaWV3Q3JlYXRlKGNvbmZpZ3VyYXRpb24pOwor
ICAgIHJlc2l6ZVRvKDgwMCwgNjAwKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnJlc2l6
ZVRvKHVuc2lnbmVkLCB1bnNpZ25lZCkKK3ZvaWQgUGxhdGZvcm1XZWJWaWV3OjpyZXNpemVUbyh1
bnNpZ25lZCB3aWR0aCwgdW5zaWduZWQgaGVpZ2h0KQogeworICAgIC8vIE5vdCBpbXBsZW1lbnRl
ZC4KIH0KIAotdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OmZvY3VzKCkKK1dLUGFnZVJlZiBQbGF0Zm9y
bVdlYlZpZXc6OnBhZ2UoKSBjb25zdAogeworICAgIHJldHVybiBXS1ZpZXdHZXRQYWdlKG1fdmll
dyk7CiB9CiAKIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZVNwYWNlYmFyS2V5UHJlc3Mo
KQogeworICAgIFdLUGFnZUhhbmRsZUtleWJvYXJkRXZlbnQocGFnZSgpLCBXS0tleWJvYXJkRXZl
bnRNYWtlKGtXS0V2ZW50S2V5RG93biwga1dLSW5wdXRUeXBlTm9ybWFsLCAiICIsIDEsIGtleUlk
ZW50aWZpZXJGb3JLZXlDb2RlKDB4MjApLCAweDIwLCAtMSwgMCwgMCkpOworICAgIFdLUGFnZUhh
bmRsZUtleWJvYXJkRXZlbnQocGFnZSgpLCBXS0tleWJvYXJkRXZlbnRNYWtlKGtXS0V2ZW50S2V5
VXAsIGtXS0lucHV0VHlwZU5vcm1hbCwgIiAiLCAxLCBrZXlJZGVudGlmaWVyRm9yS2V5Q29kZSgw
eDIwKSwgMHgyMCwgLTEsIDAsIDApKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVs
YXRlQWx0S2V5UHJlc3MoKQordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlTW91c2VNb3Zl
KHVuc2lnbmVkIHgsIHVuc2lnbmVkIHksIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzKQogewor
ICAgIFdLUGFnZUhhbmRsZU1vdXNlRXZlbnQocGFnZSgpLCBXS01vdXNlRXZlbnRNYWtlKGtXS0V2
ZW50TW91c2VNb3ZlLCBrV0tFdmVudE1vdXNlQnV0dG9uTm9CdXR0b24sIFdLUG9pbnRNYWtlKHgs
IHkpLCAwLCBtb2RpZmllcnMpKTsKIH0KIAotdm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRl
TW91c2VNb3ZlKHVuc2lnbmVkLCB1bnNpZ25lZCwgV0tFdmVudE1vZGlmaWVycykKK3ZvaWQgUGxh
dGZvcm1XZWJWaWV3OjpzaW11bGF0ZVJpZ2h0Q2xpY2sodW5zaWduZWQgeCwgdW5zaWduZWQgeSkK
IHsKKyAgICBzaW11bGF0ZUJ1dHRvbkNsaWNrKGtXS0V2ZW50TW91c2VCdXR0b25SaWdodEJ1dHRv
biwgeCwgeSwgMCk7CiB9CiAKLXZvaWQgUGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZVJpZ2h0Q2xp
Y2sodW5zaWduZWQsIHVuc2lnbmVkKQordm9pZCBQbGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlQnV0
dG9uQ2xpY2soV0tFdmVudE1vdXNlQnV0dG9uIGJ1dHRvbiwgdW5zaWduZWQgeCwgdW5zaWduZWQg
eSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMpCiB7CisgICAgV0tQYWdlSGFuZGxlTW91c2VF
dmVudChwYWdlKCksIFdLTW91c2VFdmVudE1ha2Uoa1dLRXZlbnRNb3VzZURvd24sIGJ1dHRvbiwg
V0tQb2ludE1ha2UoeCwgeSksIDAsIG1vZGlmaWVycykpOworICAgIFdLUGFnZUhhbmRsZU1vdXNl
RXZlbnQocGFnZSgpLCBXS01vdXNlRXZlbnRNYWtlKGtXS0V2ZW50TW91c2VVcCwgYnV0dG9uLCBX
S1BvaW50TWFrZSh4LCB5KSwgMCwgbW9kaWZpZXJzKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvcGxheXN0YXRpb24v
bWFpbi5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL3BsYXlzdGF0aW9uL21haW4uY3BwCmluZGV4
IDIxZmIzYzQwNmMyOWVmYzgwMjI0NzMyZjM5MmRlZWZiOGE4ZjE2OTQuLmRhMmQ5ZDBlNThjMjQ2
YjAwNGM1MTJiMzNhNGU0MTI1NGYwMDY4YjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvcGxheXN0YXRpb24vbWFpbi5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9wbGF5c3Rh
dGlvbi9tYWluLmNwcApAQCAtMjgsMjIgKzI4LDMzIEBACiAjaW5jbHVkZSAicHJvY2Vzcy1pbml0
aWFsaXphdGlvbi9uay10ZXN0d2Via2l0YXBpLmgiCiAjaW5jbHVkZSA8ZGxmY24uaD4KIAorc3Rh
dGljIHZvaWQgbG9hZExpYnJhcnlPckV4aXQoY29uc3QgY2hhciogbmFtZSkKK3sKKyAgICBpZiAo
IWRsb3BlbihuYW1lLCBSVExEX05PVykpIHsKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWls
ZWQgdG8gbG9hZCAlcy5cbiIsIG5hbWUpOworICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7Cisg
ICAgfQorfQorCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7Ci0gICAgZGxvcGVu
KCJsaWJpY3UiLCBSVExEX05PVyk7CisgICAgbG9hZExpYnJhcnlPckV4aXQoImxpYmljdSIpOwog
I2lmIGRlZmluZWQoQlVJTERJTkdfVGVzdFdlYkNvcmUpIHx8IGRlZmluZWQoQlVJTERJTkdfVGVz
dFdlYktpdCkKLSAgICBkbG9wZW4oImxpYnBuZzE2IiwgUlRMRF9OT1cpOwotICAgIGRsb3Blbigi
bGliZm9udGNvbmZpZyIsIFJUTERfTk9XKTsKLSAgICBkbG9wZW4oImxpYmZyZWV0eXBlIiwgUlRM
RF9OT1cpOwotICAgIGRsb3BlbigibGliaGFyZmJ1enoiLCBSVExEX05PVyk7Ci0gICAgZGxvcGVu
KCJsaWJjYWlybyIsIFJUTERfTk9XKTsKLSAgICBkbG9wZW4oImxpYlNjZU5LV2ViS2l0UmVxdWly
ZW1lbnRzIiwgUlRMRF9OT1cpOwotICAgIGRsb3BlbigibGliSmF2YVNjcmlwdENvcmUiLCBSVExE
X05PVyk7CisgICAgbG9hZExpYnJhcnlPckV4aXQoImxpYnBuZzE2Iik7CisgICAgbG9hZExpYnJh
cnlPckV4aXQoImxpYmZvbnRjb25maWciKTsKKyAgICBsb2FkTGlicmFyeU9yRXhpdCgibGliZnJl
ZXR5cGUiKTsKKyAgICBsb2FkTGlicmFyeU9yRXhpdCgibGliaGFyZmJ1enoiKTsKKyAgICBsb2Fk
TGlicmFyeU9yRXhpdCgibGliY2Fpcm8iKTsKKyAgICBsb2FkTGlicmFyeU9yRXhpdCgibGliU2Nl
TktXZWJLaXRSZXF1aXJlbWVudHMiKTsKKyAgICBsb2FkTGlicmFyeU9yRXhpdCgibGliSmF2YVNj
cmlwdENvcmUiKTsKICNlbmRpZgogI2lmIGRlZmluZWQoQlVJTERJTkdfVGVzdFdlYktpdCkKLSAg
ICAoZGxvcGVuKCJsaWJjcnlwdG8iLCBSVExEX05PVykgJiYgZGxvcGVuKCJsaWJzc2wiLCBSVExE
X05PVykpIHx8IGRsb3BlbigiTGlicmVTU0wiLCBSVExEX05PVyk7Ci0gICAgZGxvcGVuKCJsaWJj
dXJsIiwgUlRMRF9OT1cpOwotICAgIGRsb3BlbigibGliV2ViS2l0IiwgUlRMRF9OT1cpOworICAg
IGlmICghKChkbG9wZW4oImxpYmNyeXB0byIsIFJUTERfTk9XKSAmJiBkbG9wZW4oImxpYnNzbCIs
IFJUTERfTk9XKSkgfHwgZGxvcGVuKCJMaWJyZVNTTCIsIFJUTERfTk9XKSkpIHsKKyAgICAgICAg
ZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gbG9hZCBTU0wgbGlicmFyeS5cbiIpOworICAgICAg
ICBleGl0KEVYSVRfRkFJTFVSRSk7CisgICAgfQorICAgIGxvYWRMaWJyYXJ5T3JFeGl0KCJsaWJj
dXJsIik7CisgICAgbG9hZExpYnJhcnlPckV4aXQoImxpYldlYktpdCIpOwogI2VuZGlmCiAgICAg
cmV0dXJuIFRlc3RXZWJLaXRBUEk6OlRlc3RzQ29udHJvbGxlcjo6c2luZ2xldG9uKCkucnVuKGFy
Z2MsIGFyZ3YpID8gRVhJVF9TVUNDRVNTIDogRVhJVF9GQUlMVVJFOwogfQpkaWZmIC0tZ2l0IGEv
Q2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDFiNmEwY2E5NmVkYThiNWQ0YjY2NWNmZjA2ZmY0
MGNiNzljN2IxMGIuLmFkYjJhMzg3ODg2OTg3MzBjOGFlZGM5NjA5NTg3MmY4N2I1Yzk4MTYgMTAw
NjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAy
MC0wNS0yMCAgWW9zaGlha2kgSml0c3VrYXdhICA8eW9zaGlha2kuaml0c3VrYXdhQHNvbnkuY29t
PgorCisgICAgICAgIFtQbGF5U3RhdGlvbl0gQWRkIG1pbmltYWwgV0tWaWV3IEFQSSB0byBlbmFi
bGUgVGVzdFdlYktpdEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjExODY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRW5hYmxlIFRlc3RXZWJLaXRBUEkKKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9P
cHRpb25zUGxheVN0YXRpb24uY21ha2U6CisgICAgICAgIERpc2FibGUgRnVsbFNjcmVlbiBBUEkg
YW5kIENvbnRleHRNZW51cy4KKwogMjAyMC0wNS0xMCAgQmFzdWtlIFN1enVraSAgPGJhc3VrZS5z
dXp1a2lAc29ueS5jb20+CiAKICAgICAgICAgQWRkIEVOQUJMRV9QRVJJT0RJQ19NRU1PUllfTU9O
SVRPUiBmbGFnLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>